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")}
예제 #2
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")}
예제 #3
0
 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")}