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 e50a22f + 1c6c879 commit 9421daa
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 2 deletions.
7 changes: 7 additions & 0 deletions openprocurement/tender/openua/tests/award.py
Original file line number Diff line number Diff line change
Expand Up @@ -1061,6 +1061,13 @@ def test_review_tender_award_complaint(self):
self.assertEqual(response.content_type, 'application/json')
self.assertEqual(response.json['data']["decision"], 'accepted:{} complaint'.format(status))

self.app.authorization = ('Basic', ('token', ''))
response = self.app.patch_json('/tenders/{}/awards/{}?acc_token={}'.format(self.tender_id, self.award_id, self.tender_token), {"data": {"status": "active", "qualified": True, "eligible": True}}, status=403)
self.assertEqual(response.status, '403 Forbidden')
self.assertEqual(response.content_type, 'application/json')
self.assertEqual(response.json['errors'][0]["description"], "Can't update award with accepted complaint")

self.app.authorization = ('Basic', ('reviewer', ''))
response = self.app.patch_json('/tenders/{}/awards/{}/complaints/{}'.format(self.tender_id, self.award_id, complaint['id']), {"data": {
"status": status
}})
Expand Down
4 changes: 4 additions & 0 deletions openprocurement/tender/openua/views/award.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,10 @@ def patch(self):
self.request.errors.add('body', 'data', 'Can update award only in active lot status')
self.request.errors.status = 403
return
if any([any([c.status == 'accepted' for c in i.complaints]) for i in tender.awards if i.lotID == award.lotID]):
self.request.errors.add('body', 'data', 'Can\'t update award with accepted complaint')
self.request.errors.status = 403
return
award_status = award.status
apply_patch(self.request, save=False, src=self.request.context.serialize())
if award_status == 'pending' and award.status == 'active':
Expand Down
16 changes: 15 additions & 1 deletion openprocurement/tender/openua/views/award_document.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,18 @@
procurementMethodType='aboveThresholdUA',
description="Tender award documents")
class TenderUaAwardDocumentResource(TenderAwardDocumentResource):
pass

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
if any([any([c.status == 'accepted' for c in i.complaints]) for i in self.request.validated['tender'].awards if i.lotID == self.request.validated['award'].lotID]):
self.request.errors.add('body', 'data', 'Can\'t {} document with accepted complaint')
self.request.errors.status = 403
return
return True
4 changes: 4 additions & 0 deletions openprocurement/tender/openua/views/contract.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@ def patch(self):
self.request.errors.add('body', 'data', 'Can update contract only in active lot status')
self.request.errors.status = 403
return
if any([any([c.status == 'accepted' for c in i.complaints]) for i in tender.awards if i.lotID in [a.lotID for a in tender.awards if a.id == self.request.context.awardID]]):
self.request.errors.add('body', 'data', 'Can\'t update contract with accepted complaint')
self.request.errors.status = 403
return
data = self.request.validated['data']

if data['value']:
Expand Down
20 changes: 19 additions & 1 deletion openprocurement/tender/openua/views/contract_document.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,22 @@
procurementMethodType='aboveThresholdUA',
description="Tender contract documents")
class TenderUaAwardContractDocumentResource(TenderAwardContractDocumentResource):
pass

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
if any([any([c.status == 'accepted' for c in i.complaints]) for i in self.request.validated['tender'].awards if i.lotID 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\'t {} document with accepted complaint')
self.request.errors.status = 403
return
return True

0 comments on commit 9421daa

Please sign in to comment.