Skip to content

Commit

Permalink
Merge branch 'a147460966605415_blocking_complaints_status_accepted'
Browse files Browse the repository at this point in the history
  • Loading branch information
kroman0 committed Jul 26, 2016
2 parents df49ca2 + b84eaef commit 41c127e
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 60 deletions.
35 changes: 14 additions & 21 deletions src/openprocurement/api/views/award_document.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,17 @@
description="Tender award documents")
class TenderAwardDocumentResource(APIResource):

def validate_award_document(self, operation):
if self.request.validated['tender_status'] != 'active.qualification':
self.request.errors.add('body', 'data', 'Can\'t {} document in current ({}) tender status'.format(operation, self.request.validated['tender_status']))
self.request.errors.status = 403
return
if any([i.status != 'active' for i in self.request.validated['tender'].lots if i.id == self.request.validated['award'].lotID]):
self.request.errors.add('body', 'data', 'Can {} document only in active lot status'.format(operation))
self.request.errors.status = 403
return
return True

@json_view(permission='view_tender')
def collection_get(self):
"""Tender Award Documents List"""
Expand All @@ -40,13 +51,7 @@ def collection_get(self):
def collection_post(self):
"""Tender Award Document Upload
"""
if self.request.validated['tender_status'] != '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
if any([i.status != 'active' for i in self.request.validated['tender'].lots if i.id == self.request.context.lotID]):
self.request.errors.add('body', 'data', 'Can add document only in active lot status')
self.request.errors.status = 403
if not self.validate_award_document('add'):
return
document = upload_file(self.request)
self.context.documents.append(document)
Expand Down Expand Up @@ -75,13 +80,7 @@ def get(self):
@json_view(validators=(validate_file_update,), permission='edit_tender')
def put(self):
"""Tender Award Document Update"""
if self.request.validated['tender_status'] != 'active.qualification':
self.request.errors.add('body', 'data', 'Can\'t update document in current ({}) tender status'.format(self.request.validated['tender_status']))
self.request.errors.status = 403
return
if any([i.status != 'active' for i in self.request.validated['tender'].lots if i.id == self.request.validated['award'].lotID]):
self.request.errors.add('body', 'data', 'Can update document only in active lot status')
self.request.errors.status = 403
if not self.validate_award_document('update'):
return
document = upload_file(self.request)
self.request.validated['award'].documents.append(document)
Expand All @@ -93,13 +92,7 @@ def put(self):
@json_view(content_type="application/json", validators=(validate_patch_document_data,), permission='edit_tender')
def patch(self):
"""Tender Award Document Update"""
if self.request.validated['tender_status'] != 'active.qualification':
self.request.errors.add('body', 'data', 'Can\'t update document in current ({}) tender status'.format(self.request.validated['tender_status']))
self.request.errors.status = 403
return
if any([i.status != 'active' for i in self.request.validated['tender'].lots if i.id == self.request.validated['award'].lotID]):
self.request.errors.add('body', 'data', 'Can update document only in active lot status')
self.request.errors.status = 403
if not self.validate_award_document('update'):
return
if apply_patch(self.request, src=self.request.context.serialize()):
update_file_content_type(self.request)
Expand Down
57 changes: 18 additions & 39 deletions src/openprocurement/api/views/contract_document.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,21 @@
description="Tender contract documents")
class TenderAwardContractDocumentResource(APIResource):

def validate_contract_document(self, operation):
if self.request.validated['tender_status'] not in ['active.qualification', 'active.awarded']:
self.request.errors.add('body', 'data', 'Can\'t {} document in current ({}) tender status'.format(operation, self.request.validated['tender_status']))
self.request.errors.status = 403
return
if any([i.status != 'active' for i in self.request.validated['tender'].lots if i.id in [a.lotID for a in self.request.validated['tender'].awards if a.id == self.request.validated['contract'].awardID]]):
self.request.errors.add('body', 'data', 'Can {} document only in active lot status'.format(operation))
self.request.errors.status = 403
return
if self.request.validated['contract'].status not in ['pending', 'active']:
self.request.errors.add('body', 'data', 'Can\'t {} document in current contract status'.format(operation))
self.request.errors.status = 403
return
return True

@json_view(permission='view_tender')
def collection_get(self):
"""Tender Contract Documents List"""
Expand All @@ -40,19 +55,7 @@ def collection_get(self):
def collection_post(self):
"""Tender Contract Document Upload
"""
if self.request.validated['tender_status'] not in ['active.qualification', 'active.awarded']:
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
tender = self.request.validated['tender']
contract = self.request.validated['contract']
if any([i.status != 'active' for i in tender.lots if i.id in [a.lotID for a in tender.awards if a.id == contract.awardID]]):
self.request.errors.add('body', 'data', 'Can add document only in active lot status')
self.request.errors.status = 403
return
if contract.status not in ['pending', 'active']:
self.request.errors.add('body', 'data', 'Can\'t add document in current contract status')
self.request.errors.status = 403
if not self.validate_contract_document('add'):
return
document = upload_file(self.request)
self.context.documents.append(document)
Expand Down Expand Up @@ -81,19 +84,7 @@ def get(self):
@json_view(validators=(validate_file_update,), permission='edit_tender')
def put(self):
"""Tender Contract Document Update"""
if self.request.validated['tender_status'] not in ['active.qualification', 'active.awarded']:
self.request.errors.add('body', 'data', 'Can\'t update document in current ({}) tender status'.format(self.request.validated['tender_status']))
self.request.errors.status = 403
return
tender = self.request.validated['tender']
contract = self.request.validated['contract']
if any([i.status != 'active' for i in tender.lots if i.id in [a.lotID for a in tender.awards if a.id == contract.awardID]]):
self.request.errors.add('body', 'data', 'Can update document only in active lot status')
self.request.errors.status = 403
return
if contract.status not in ['pending', 'active']:
self.request.errors.add('body', 'data', 'Can\'t update document in current contract status')
self.request.errors.status = 403
if not self.validate_contract_document('update'):
return
document = upload_file(self.request)
self.request.validated['contract'].documents.append(document)
Expand All @@ -105,19 +96,7 @@ def put(self):
@json_view(content_type="application/json", validators=(validate_patch_document_data,), permission='edit_tender')
def patch(self):
"""Tender Contract Document Update"""
if self.request.validated['tender_status'] not in ['active.qualification', 'active.awarded']:
self.request.errors.add('body', 'data', 'Can\'t update document in current ({}) tender status'.format(self.request.validated['tender_status']))
self.request.errors.status = 403
return
tender = self.request.validated['tender']
contract = self.request.validated['contract']
if any([i.status != 'active' for i in tender.lots if i.id in [a.lotID for a in tender.awards if a.id == contract.awardID]]):
self.request.errors.add('body', 'data', 'Can update document only in active lot status')
self.request.errors.status = 403
return
if contract.status not in ['pending', 'active']:
self.request.errors.add('body', 'data', 'Can\'t update document in current contract status')
self.request.errors.status = 403
if not self.validate_contract_document('update'):
return
if apply_patch(self.request, src=self.request.context.serialize()):
update_file_content_type(self.request)
Expand Down

0 comments on commit 41c127e

Please sign in to comment.