Skip to content

Commit

Permalink
Added support of update status to active
Browse files Browse the repository at this point in the history
  • Loading branch information
ktarasz committed Jan 26, 2016
1 parent 37d5e22 commit af75949
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 1 deletion.
2 changes: 1 addition & 1 deletion openprocurement/tender/openua/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ class Options:
'embedded': view_bid_role,
'view': view_bid_role,
'create': whitelist('value', 'tenderers', 'parameters', 'lotValues'),
'edit': whitelist('value', 'tenderers', 'parameters', 'lotValues'),
'edit': whitelist('value', 'tenderers', 'parameters', 'lotValues', 'status'),
'auction_view': whitelist('value', 'lotValues', 'id', 'date', 'parameters', 'participationUrl'),
'auction_post': whitelist('value', 'lotValues', 'id', 'date'),
'auction_patch': whitelist('id', 'lotValues', 'participationUrl'),
Expand Down
59 changes: 59 additions & 0 deletions openprocurement/tender/openua/views/bid.py
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,65 @@ def collection_post(self):
}
}

@json_view(content_type="application/json", permission='edit_bid', validators=(validate_patch_bid_data,))
def patch(self):
"""Update of proposal
Example request to change bid proposal:
.. sourcecode:: http
PATCH /tenders/4879d3f8ee2443169b5fbbc9f89fa607/bids/71b6c23ed8944d688e92a31ec8c3f61a HTTP/1.1
Host: example.com
Accept: application/json
{
"data": {
"value": {
"amount": 600
}
}
}
And here is the response to be expected:
.. sourcecode:: http
HTTP/1.0 200 OK
Content-Type: application/json
{
"data": {
"value": {
"amount": 600,
"currency": "UAH",
"valueAddedTaxIncluded": true
}
}
}
"""
if self.request.authenticated_role != 'Administrator' and self.request.validated['tender_status'] != 'active.tendering':
self.request.errors.add('body', 'data', 'Can\'t update bid in current ({}) tender status'.format(self.request.validated['tender_status']))
self.request.errors.status = 403
return
if self.request.validated['data'].get("status") != 'active':
self.request.errors.add('body', 'bid', 'Can\'t update bid in current ({}) bid status'.format(self.request.validated['data'].get("status")))
self.request.errors.status = 403
return
value = self.request.validated['data'].get("value") and self.request.validated['data']["value"].get("amount")
if value and value != self.request.context.get("value", {}).get("amount"):
self.request.validated['data']['date'] = get_now().isoformat()
if self.request.context.lotValues:
lotValues = dict([(i.relatedLot, i.value.amount) for i in self.request.context.lotValues])
for lotvalue in self.request.validated['data'].get("lotValues", []):
if lotvalue['relatedLot'] in lotValues and lotvalue.get("value", {}).get("amount") != lotValues[lotvalue['relatedLot']]:
lotvalue['date'] = get_now().isoformat()
if apply_patch(self.request, src=self.request.context.serialize()):
LOGGER.info('Updated tender bid {}'.format(self.request.context.id),
extra=context_unpack(self.request, {'MESSAGE_ID': 'tender_bid_patch'}))
return {'data': self.request.context.serialize("view")}


@json_view(permission='edit_bid')
def delete(self):
Expand Down

0 comments on commit af75949

Please sign in to comment.