def validate_milestone_data(request, **kwargs):
    update_logging_context(request, {"milestone_id": "__new__"})
    model = type(request.plan).milestones.model_class
    milestone = validate_data(request, model)
    upload_objects_documents(
        request,
        request.validated["milestone"],
        route_kwargs={"milestone_id": request.validated["milestone"].id})
    return milestone
def validate_qualification_complaint_post_data(request):
    update_logging_context(request, {"post_id": "__new__"})
    validate_post_accreditation_level(request)
    model = type(request.tender).qualifications.model_class.complaints.model_class.posts.model_class
    post = validate_data(request, model)
    upload_objects_documents(
        request, request.validated["post"],
        route_kwargs={"post_id": request.validated["post"].id}
    )
    return post
Esempio n. 3
0
 def collection_post(self):
     milestone = self.request.validated["milestone"]
     self.request.context.date = milestone.dateModified
     self.request.context.milestones.append(milestone)
     upload_objects_documents(
         self.request,
         milestone,
         route_kwargs={"milestone_id": milestone.id},
     )
     if apply_patch(
             self.request,
             obj_name="agreement",
             data={"status": MILESTONE_CONTRACT_STATUSES[milestone.type]},
             src=self.request.validated["contract"].to_primitive()):
         self.request.response.status = 201
         return {"data": milestone.serialize("view")}
    def post(self):
        agreement = self.request.validated["agreement"]
        if not agreement.id:
            agreement_id = generate_id()
            agreement.id = agreement_id
        if not agreement.get("agreementID"):
            agreement.prettyID = generate_agreementID(get_now(), self.db,
                                                      self.server_id)

        # Unify when cfa moved from tenders to frameworks
        framework = self.request.validated.get("framework")
        if framework:
            agreement.submissionType = framework["frameworkType"]
            agreement.mode = framework.get("mode")
            upload_objects_documents(
                self.request,
                agreement,
                route_kwargs={"agreement_id": agreement.id},
                route_prefix=framework["frameworkType"])

        access = set_ownership(agreement, self.request)
        self.request.validated["agreement"] = agreement
        self.request.validated["agreement_src"] = {}
        if save_agreement(self.request):
            self.LOGGER.info(
                "Created agreement {} ({})".format(agreement.id,
                                                   agreement.agreementID),
                extra=context_unpack(
                    self.request,
                    {"MESSAGE_ID": "agreement_create"},
                    {
                        "agreement_id": agreement.id,
                        "agreementID": agreement.agreementID
                    },
                ),
            )
            self.request.response.status = 201
            self.request.response.headers["Location"] = self.request.route_url(
                "{}.Agreement".format(agreement.agreementType),
                agreement_id=agreement.id)
            return {"data": agreement.serialize("view"), "access": access}
 def post(self):
     """
     Creating new submission
     """
     submission_id = generate_id()
     submission = self.request.validated["submission"]
     submission.id = submission_id
     framework = self.request.validated["framework"]
     submission.submissionType = framework["frameworkType"]
     submission.mode = framework.get("mode")
     if self.request.json["data"].get("status") == "draft":
         submission.status = "draft"
     upload_objects_documents(self.request,
                              submission,
                              route_kwargs={"submission_id": submission.id},
                              route_prefix=framework["frameworkType"])
     access = set_ownership(submission, self.request)
     self.request.validated["submission"] = submission
     self.request.validated["submission_src"] = {}
     if save_submission(self.request):
         self.LOGGER.info(
             "Created submission {}".format(submission_id),
             extra=context_unpack(
                 self.request,
                 {"MESSAGE_ID": "submission_create"},
                 {
                     "submission_id": submission_id,
                     "submission_mode": submission.mode
                 },
             ),
         )
         self.request.response.status = 201
         self.request.response.headers["Location"] = self.request.route_url(
             "{}:Submissions".format(submission.submissionType),
             submission_id=submission_id)
         return {"data": submission.serialize("view"), "access": access}
    def collection_post(self):
        is_bulk = "document_bulk" in self.request.validated

        if is_bulk:
            documents = self.request.validated["document_bulk"]
            upload_objects_documents(self.request, documents)
        else:
            document = upload_file(self.request)
            documents = [document]

        for document in documents:
            document.author = self.request.authenticated_role

        getattr(self.context, self.container).extend(documents)

        self.pre_save()
        if self.save(self.request):
            for item in documents:
                self.LOGGER.info(
                    "Created {} document {}".format(self.context_pretty_name, document.id),
                    extra=context_unpack(
                        self.request,
                        {"MESSAGE_ID": "{}_document_create".format(self.context_name)},
                        {"document_id": document.id},
                    ),
                )
            self.request.response.status = 201

        if is_bulk:
            return {"data": [item.serialize("view") for item in documents]}
        else:
            document_route = self.request.matched_route.name.replace("collection_", "")
            self.request.response.headers["Location"] = self.request.current_route_url(
                _route_name=document_route, document_id=document.id, _query={}
            )
            return {"data": document.serialize("view")}
Esempio n. 7
0
    def post(self):
        """This API request is targeted to creating new Frameworks by procuring organizations.

        Creating new Framework
        -------------------

        Example request to create framework:

        .. sourcecode:: http

            POST /frameworks HTTP/1.1
            Host: example.com
            Accept: application/json

            {
              "data": {
                "description": "Назва предмета закупівлі",
                "classification": {
                  "scheme": "ДК021",
                  "description": "Mustard seeds",
                  "id": "03111600-8"
                },
                "title": "Узагальнена назва закупівлі",
                "qualificationPeriod": {
                  "endDate": "2021-02-07T14:33:22.129267+02:00"
                },
                "additionalClassifications": [
                  {
                    "scheme": "ДК003",
                    "id": "17.21.1",
                    "description": "папір і картон гофровані, паперова й картонна тара"
                  }
                ],
                "procuringEntity": {
                  "contactPoint": {
                    "telephone": "0440000000",
                    "email": "*****@*****.**",
                    "name": "Назва організації(ЦЗО)"
                  },
                  "identifier": {
                    "scheme": "UA-EDR",
                    "id": "40996564",
                    "legalName": "Назва організації(ЦЗО)"
                  },
                  "kind": "central",
                  "name": "Повна назва юридичної організації.",
                  "address": {
                    "countryName": "Україна",
                    "postalCode": "01220",
                    "region": "м. Київ",
                    "streetAddress": "вул. Банкова, 11, корпус 1",
                    "locality": "м. Київ"
                  }
                }
              }
            }

        This is what one should expect in response:

        .. sourcecode:: http

            HTTP/1.1 201 Created
            Location: http://localhost/api/0.1/frameworks/40b48e4878534db1bf228d5928f8f1d9
            Content-Type: application/json

            {
                "data": {
                    "status": "draft",
                    "description": "Назва предмета закупівлі",
                    "classification": {
                      "scheme": "ДК021",
                      "description": "Mustard seeds",
                      "id": "03111600-8"
                    },
                    "prettyID": "UA-F-2020-09-08-000001",
                    "qualificationPeriod": {
                      "endDate": "2021-02-07T14:33:22.129267+02:00"
                    },
                    "frameworkType": "electronicCatalogue",
                    "dateModified": "2020-09-08T01:00:00+03:00",
                    "date": "2020-09-08T01:00:00+03:00",
                    "additionalClassifications": [
                      {
                        "scheme": "ДК003",
                        "id": "17.21.1",
                        "description": "папір і картон гофровані, паперова й картонна тара"
                      }
                    ],
                    "procuringEntity": {
                      "contactPoint": {
                        "email": "*****@*****.**",
                        "telephone": "0440000000",
                        "name": "Назва організації(ЦЗО)"
                      },
                      "identifier": {
                        "scheme": "UA-EDR",
                        "id": "40996564",
                        "legalName": "Назва організації(ЦЗО)"
                      },
                      "name": "Повна назва юридичної організації.",
                      "kind": "central",
                      "address": {
                        "countryName": "Україна",
                        "postalCode": "01220",
                        "streetAddress": "вул. Банкова, 11, корпус 1",
                        "region": "м. Київ",
                        "locality": "м. Київ"
                      }
                    },
                    "owner": "broker",
                    "title": "Узагальнена назва закупівлі",
                    "id": "40b48e4878534db1bf228d5928f8f1d9"
                }
            }
        """
        framework_id = generate_id()
        framework = self.request.validated["framework"]
        framework.id = framework_id
        if not framework.get("prettyID"):
            framework.prettyID = generate_framework_pretty_id(
                get_now(), self.db, self.server_id)
        access = set_ownership(framework, self.request)
        upload_objects_documents(self.request,
                                 framework,
                                 route_kwargs={"framework_id": framework.id},
                                 route_prefix=framework["frameworkType"])
        self.request.validated["framework"] = framework
        self.request.validated["framework_src"] = {}
        if save_framework(self.request):
            self.LOGGER.info(
                "Created framework {} ({})".format(framework_id,
                                                   framework.prettyID),
                extra=context_unpack(
                    self.request,
                    {"MESSAGE_ID": "framework_create"},
                    {
                        "framework_id": framework_id,
                        "prettyID": framework.prettyID,
                        "framework_mode": framework.mode
                    },
                ),
            )
            self.request.response.status = 201
            self.request.response.headers["Location"] = self.request.route_url(
                "{}:Frameworks".format(framework.frameworkType),
                framework_id=framework_id)
            return {
                "data": framework.serialize(framework.status),
                "access": access
            }