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 """ 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")}