def collection_post(self):
     """Post a complaint for award
     """
     tender = self.request.validated['tender']
     if tender.status not in ['active.qualification', 'active.awarded']:
         self.request.errors.add(
             'body', 'data',
             'Can\'t add complaint in current ({}) tender status'.format(
                 tender.status))
         self.request.errors.status = 403
         return
     if self.request.context.complaintPeriod and \
        (self.request.context.complaintPeriod.startDate and self.request.context.complaintPeriod.startDate > get_now() or
             self.request.context.complaintPeriod.endDate and self.request.context.complaintPeriod.endDate < get_now()):
         self.request.errors.add(
             'body', 'data', 'Can add complaint only in complaintPeriod')
         self.request.errors.status = 403
         return
     complaint_data = self.request.validated['data']
     complaint = Complaint(complaint_data)
     self.request.context.complaints.append(complaint)
     if save_tender(self.request):
         update_journal_handler_params({'complaint_id': complaint.id})
         LOGGER.info('Created tender award complaint {}'.format(
             complaint.id),
                     extra={'MESSAGE_ID': 'tender_award_complaint_create'})
         self.request.response.status = 201
         self.request.response.headers['Location'] = self.request.route_url(
             'Tender Award Complaints',
             tender_id=tender.id,
             award_id=self.request.validated['award_id'],
             complaint_id=complaint['id'])
         return {'data': complaint.serialize("view")}
 def collection_post(self):
     """Post a complaint for award
     """
     tender = self.request.validated['tender']
     if tender.status not in ['active.qualification', 'active.awarded']:
         self.request.errors.add('body', 'data', 'Can\'t add complaint in current tender status')
         self.request.errors.status = 403
         return
     complaint_data = self.request.validated['data']
     complaint = Complaint(complaint_data)
     self.request.validated['award'].complaints.append(complaint)
     save_tender(self.request)
     self.request.response.status = 201
     self.request.response.headers['Location'] = self.request.route_url('Tender Award Complaints', tender_id=tender.id, award_id=self.request.validated['award_id'], complaint_id=complaint['id'])
     return {'data': complaint.serialize("view")}
 def collection_post(self):
     """Post a complaint
     """
     tender = self.request.validated['tender']
     if tender.status not in ['active.enquiries', 'active.tendering', 'active.auction', 'active.qualification', 'active.awarded']:
         self.request.errors.add('body', 'data', 'Can\'t add complaint in current tender status')
         self.request.errors.status = 403
         return
     complaint_data = filter_data(self.request.validated['data'])
     complaint = Complaint(complaint_data)
     src = tender.serialize("plain")
     tender.complaints.append(complaint)
     save_tender(tender, src, self.request)
     self.request.response.status = 201
     self.request.response.headers['Location'] = self.request.route_url('Tender Complaints', tender_id=tender.id, id=complaint['id'])
     return {'data': complaint.serialize("view")}
 def collection_post(self):
     """Post a complaint
     """
     tender = self.request.validated['tender']
     if tender.status not in ['active.enquiries', 'active.tendering']:
         self.request.errors.add('body', 'data', 'Can\'t add complaint in current ({}) tender status'.format(tender.status))
         self.request.errors.status = 403
         return
     complaint_data = self.request.validated['data']
     complaint = Complaint(complaint_data)
     complaint.__parent__ = self.request.context
     tender.complaints.append(complaint)
     if save_tender(self.request):
         LOGGER.info('Created tender complaint {}'.format(complaint.id),
                     extra=context_unpack(self.request, {'MESSAGE_ID': 'tender_complaint_create'}, {'complaint_id': complaint.id}))
         self.request.response.status = 201
         self.request.response.headers['Location'] = self.request.route_url('Tender Complaints', tender_id=tender.id, complaint_id=complaint.id)
         return {'data': complaint.serialize("view")}
 def collection_post(self):
     """Post a complaint for award
     """
     tender = self.request.validated["tender"]
     if tender.status not in ["active.qualification", "active.awarded"]:
         self.request.errors.add(
             "body", "data", "Can't add complaint in current ({}) tender status".format(tender.status)
         )
         self.request.errors.status = 403
         return
     if any([i.status != "active" for i in tender.lots if i.id == self.request.context.lotID]):
         self.request.errors.add("body", "data", "Can add complaint only in active lot status")
         self.request.errors.status = 403
         return
     if self.request.context.complaintPeriod and (
         self.request.context.complaintPeriod.startDate
         and self.request.context.complaintPeriod.startDate > get_now()
         or self.request.context.complaintPeriod.endDate
         and self.request.context.complaintPeriod.endDate < get_now()
     ):
         self.request.errors.add("body", "data", "Can add complaint only in complaintPeriod")
         self.request.errors.status = 403
         return
     complaint_data = self.request.validated["data"]
     complaint = Complaint(complaint_data)
     complaint.__parent__ = self.request.context
     self.request.context.complaints.append(complaint)
     if save_tender(self.request):
         LOGGER.info(
             "Created tender award complaint {}".format(complaint.id),
             extra=context_unpack(
                 self.request, {"MESSAGE_ID": "tender_award_complaint_create"}, {"complaint_id": complaint.id}
             ),
         )
         self.request.response.status = 201
         self.request.response.headers["Location"] = self.request.route_url(
             "Tender Award Complaints",
             tender_id=tender.id,
             award_id=self.request.validated["award_id"],
             complaint_id=complaint["id"],
         )
         return {"data": complaint.serialize("view")}
Example #6
0
 def collection_post(self):
     """Post a complaint
     """
     tender = self.request.validated['tender']
     if tender.status not in [
             'active.enquiries', 'active.tendering', 'active.auction',
             'active.qualification', 'active.awarded'
     ]:
         self.request.errors.add(
             'body', 'data',
             'Can\'t add complaint in current tender status')
         self.request.errors.status = 403
         return
     complaint_data = filter_data(self.request.validated['data'])
     complaint = Complaint(complaint_data)
     src = tender.serialize("plain")
     tender.complaints.append(complaint)
     save_tender(tender, src, self.request)
     self.request.response.status = 201
     self.request.response.headers['Location'] = self.request.route_url(
         'Tender Complaints', tender_id=tender.id, id=complaint['id'])
     return {'data': complaint.serialize("view")}
 def collection_post(self):
     """Post a complaint
     """
     tender = self.request.validated["tender"]
     if tender.status not in ["active.enquiries", "active.tendering"]:
         self.request.errors.add(
             "body", "data", "Can't add complaint in current ({}) tender status".format(tender.status)
         )
         self.request.errors.status = 403
         return
     complaint_data = self.request.validated["data"]
     complaint = Complaint(complaint_data)
     tender.complaints.append(complaint)
     if save_tender(self.request):
         update_journal_handler_params({"complaint_id": complaint.id})
         LOGGER.info(
             "Created tender complaint {}".format(complaint.id), extra={"MESSAGE_ID": "tender_complaint_create"}
         )
         self.request.response.status = 201
         self.request.response.headers["Location"] = self.request.route_url(
             "Tender Complaints", tender_id=tender.id, complaint_id=complaint.id
         )
         return {"data": complaint.serialize("view")}
 def collection_post(self):
     """Post a complaint
     """
     tender = self.request.validated['tender']
     if tender.status not in ['active.enquiries', 'active.tendering']:
         self.request.errors.add(
             'body', 'data',
             'Can\'t add complaint in current ({}) tender status'.format(
                 tender.status))
         self.request.errors.status = 403
         return
     complaint_data = self.request.validated['data']
     complaint = Complaint(complaint_data)
     tender.complaints.append(complaint)
     if save_tender(self.request):
         update_journal_handler_params({'complaint_id': complaint.id})
         LOGGER.info('Created tender complaint {}'.format(complaint.id),
                     extra={'MESSAGE_ID': 'tender_complaint_create'})
         self.request.response.status = 201
         self.request.response.headers['Location'] = self.request.route_url(
             'Tender Complaints',
             tender_id=tender.id,
             complaint_id=complaint.id)
         return {'data': complaint.serialize("view")}