

@json_view(permission='upload_tender_documents', validators=(validate_file_upload,))
def collection_post(self):
    'Tender Document Upload'
    if (((self.request.authenticated_role != 'auction') and (self.request.validated['tender_status'] != 'active.enquiries')) or ((self.request.authenticated_role == 'auction') and (self.request.validated['tender_status'] not in ['active.auction', 'active.qualification']))):
        self.request.errors.add('body', 'data', "Can't add document in current ({}) tender status".format(self.request.validated['tender_status']))
        self.request.errors.status = 403
        return
    document = upload_file(self.request)
    self.context.documents.append(document)
    if save_tender(self.request):
        self.LOGGER.info('Created tender document {}'.format(document.id), extra=context_unpack(self.request, {
            'MESSAGE_ID': 'tender_document_create',
        }, {
            'document_id': document.id,
        }))
        self.request.response.status = 201
        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'),
        }

dataset/ETHPy150Open openprocurement/openprocurement.api/src/openprocurement/api/views/tender_document.py TenderDocumentResource.collection_post/original