Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/document of document option #15

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

scrubele
Copy link
Member

@scrubele scrubele commented May 11, 2020

Пов'язаність документів

Даний функціонал є частиною функціоналу підписання контракту постачальником.

Підсумок:

Для розширення системи функціоналом Е-Контрактингу у даному PR внесли наступні зміни:

  • Ввели тип підпорядкування documentOfdocument
  • Додали валідації validate_relatedItem_for_contract_document_uploading, validate_relatedItem_for_contract_document_uploading

Модель Document (Tender):

Для поєднання нових типів документів між собою було введено тип підпорядкування поля documentOfdocument, Він надасть можливість пов’язати між собою відповідні документи об'єкту Tender для генерації документу Contract.

documentOf = StringType(required=True, choices=[
"tender", "item", "lot", "document"], default="tender")

Для валідації прив'язаного документу змінили функціонал validate_related_item наступним чином:

if data.get("documentOf") == "document":
documents = get_all_nested_from_the_object("documents",tender) + get_all_nested_from_the_object("documents",parent)
if relatedItem not in [i.id for i in documents]:
raise ValidationError(u"relatedItem should be one of documents")

Даний функціонал перевіряє, чи документи є вкладені в межах одного об'єкту Tender, обмежує перехресну та зовнішню прив'язку документів .

У процедурі closeFrameworkAgreementSelectionUA було додано нову модель ContractDocument.

Валідації запитів:

Для реалізації прив'язаності документів під часу процecу Contract document signing, додана валідація для перевірки, чи відповідні документи належать об'єкту Contract:

Валідація викликається з TenderAwardContractDocumentResource, тому, в межах запиту parent завжди буде об'єкт Contract.

def validate_relatedItem_for_contract_document_uploading(request):
if "data" in request.validated:
data = request.validated["data"]
parent = data["__parent__"]
documents = []
if hasattr(parent, "documents"):
documents = parent.documents
elif hasattr(parent["__parent__"], "documents"):
documents = parent["__parent__"].documents
if data.get("documentOf") == "document" and data.get('relatedItem') not in [i.id for i in documents]:
raise_operation_error(
request, "relatedItem should be one of contract documents")

У процесі підисання контракту (Contract document signing) постачальнику (contarct_supplier):

  • заборонено прикріплювати нові документи до об'єкту Tender та Contract;
  • серед документів лише дозволено завантажувати ЄЦП у форматі application/pkcs7-signature.

Функціонал перевірки у наступній валідації:

def validate_contract_supplier_role_for_contract_document_uploading(request):
if request.authenticated_role in ("contract_supplier"):
if 'file' in request.validated:
raise_operation_error(
request, "Supplier can't {} contract documents".format(
OPERATIONS.get(request.method))
)
elif "data" in request.validated:
data = request.validated["data"]
if data["documentOf"] == "document":
if data["format"] != "application/pkcs7-signature":
raise_operation_error(
request, "Supplier can {} only 'application/pkcs7-signature' document format files".format(
OPERATIONS.get(request.method))
)
else:
raise_operation_error(
request, "Supplier can't {} {} documents".format(
OPERATIONS.get(request.method), data["documentOf"])
)
elif request.content_type != "application/pkcs7-signature":
raise_operation_error(
request, "Supplier can {} only 'application/pkcs7-signature' document format files".format(
OPERATIONS.get(request.method))
)

@scrubele scrubele force-pushed the feature/document-of-document-option branch from 5f2a658 to 80d3314 Compare May 11, 2020 12:23
@scrubele scrubele changed the base branch from upstream/master to master May 11, 2020 14:24
@pontostroy pontostroy force-pushed the master branch 3 times, most recently from b94b95c to ae3e356 Compare June 24, 2020 09:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant