Skip to content

Commit

Permalink
Merge 28dbe94 into 857bb43
Browse files Browse the repository at this point in the history
  • Loading branch information
Scandie authored Apr 27, 2018
2 parents 857bb43 + 28dbe94 commit f3b92f9
Show file tree
Hide file tree
Showing 13 changed files with 58 additions and 2,023 deletions.
546 changes: 11 additions & 535 deletions openprocurement/auctions/flash/models.py

Large diffs are not rendered by default.

45 changes: 3 additions & 42 deletions openprocurement/auctions/flash/tests/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@

from openprocurement.auctions.core.tests.base import (
BaseWebTest as CoreBaseWebTest,
BaseAuctionWebTest as CoreBaseAuctionWebTest
BaseAuctionWebTest as CoreBaseAuctionWebTest,
base_test_bids as test_bids, # noqa forwarded import
test_organization,
)
from openprocurement.auctions.core.utils import (
SANDBOX_MODE,
Expand All @@ -16,25 +18,6 @@


now = datetime.now()
test_organization = {
"name": u"Державне управління справами",
"identifier": {
"scheme": u"UA-EDR",
"id": u"00037256",
"uri": u"http://www.dus.gov.ua/"
},
"address": {
"countryName": u"Україна",
"postalCode": u"01220",
"region": u"м. Київ",
"locality": u"м. Київ",
"streetAddress": u"вул. Банкова, 11, корпус 1"
},
"contactPoint": {
"name": u"Державне управління справами",
"telephone": u"0440000000"
}
}
test_procuringEntity = test_organization.copy()
test_auction_data = {
"title": u"футляри до державних нагород",
Expand Down Expand Up @@ -135,28 +118,6 @@
]
}
]
test_bids = [
{
"tenderers": [
test_organization
],
"value": {
"amount": 469,
"currency": "UAH",
"valueAddedTaxIncluded": True
}
},
{
"tenderers": [
test_organization
],
"value": {
"amount": 479,
"currency": "UAH",
"valueAddedTaxIncluded": True
}
}
]
test_lots = [
{
'title': 'lot title',
Expand Down
182 changes: 4 additions & 178 deletions openprocurement/auctions/flash/views/auction.py
Original file line number Diff line number Diff line change
@@ -1,186 +1,12 @@
# -*- coding: utf-8 -*-
from openprocurement.auctions.core.utils import (
APIResource,
apply_patch,
cleanup_bids_for_cancelled_lots,
context_unpack,
json_view,
opresource,
save_auction,
)
from openprocurement.auctions.core.validation import (
validate_auction_auction_data,
)
from openprocurement.auctions.core.utils import opresource
from openprocurement.auctions.core.views.mixins import AuctionAuctionResource


@opresource(name='belowThreshold:Auction Auction',
collection_path='/auctions/{auction_id}/auction',
path='/auctions/{auction_id}/auction/{auction_lot_id}',
auctionsprocurementMethodType="belowThreshold",
description="Auction auction data")
class AuctionAuctionResource(APIResource):

@json_view(permission='auction')
def collection_get(self):
"""Get auction info.
Get auction auction info
-----------------------
Example request to get auction auction information:
.. sourcecode:: http
GET /auctions/4879d3f8ee2443169b5fbbc9f89fa607/auction HTTP/1.1
Host: example.com
Accept: application/json
This is what one should expect in response:
.. sourcecode:: http
HTTP/1.1 200 OK
Content-Type: application/json
{
"data": {
"dateModified": "2014-10-27T08:06:58.158Z",
"bids": [
{
"value": {
"amount": 500,
"currency": "UAH",
"valueAddedTaxIncluded": true
}
},
{
"value": {
"amount": 485,
"currency": "UAH",
"valueAddedTaxIncluded": true
}
}
],
"minimalStep":{
"amount": 35,
"currency": "UAH"
},
"tenderPeriod":{
"startDate": "2014-11-04T08:00:00"
}
}
}
"""
if self.request.validated['auction_status'] != 'active.auction':
self.request.errors.add('body', 'data', 'Can\'t get auction info in current ({}) auction status'.format(self.request.validated['auction_status']))
self.request.errors.status = 403
return
return {'data': self.request.validated['auction'].serialize("auction_view")}

@json_view(content_type="application/json", permission='auction', validators=(validate_auction_auction_data))
def collection_patch(self):
"""Set urls for access to auction.
"""
if apply_patch(self.request, src=self.request.validated['auction_src']):
self.LOGGER.info('Updated auction urls', extra=context_unpack(self.request, {'MESSAGE_ID': 'auction_auction_patch'}))
return {'data': self.request.validated['auction'].serialize("auction_view")}

@json_view(content_type="application/json", permission='auction', validators=(validate_auction_auction_data))
def collection_post(self):
"""Report auction results.
Report auction results
----------------------
Example request to report auction results:
.. sourcecode:: http
POST /auctions/4879d3f8ee2443169b5fbbc9f89fa607/auction HTTP/1.1
Host: example.com
Accept: application/json
{
"data": {
"dateModified": "2014-10-27T08:06:58.158Z",
"bids": [
{
"value": {
"amount": 400,
"currency": "UAH"
}
},
{
"value": {
"amount": 385,
"currency": "UAH"
}
}
]
}
}
This is what one should expect in response:
.. sourcecode:: http
HTTP/1.1 200 OK
Content-Type: application/json
{
"data": {
"dateModified": "2014-10-27T08:06:58.158Z",
"bids": [
{
"value": {
"amount": 400,
"currency": "UAH",
"valueAddedTaxIncluded": true
}
},
{
"value": {
"amount": 385,
"currency": "UAH",
"valueAddedTaxIncluded": true
}
}
],
"minimalStep":{
"amount": 35,
"currency": "UAH"
},
"tenderPeriod":{
"startDate": "2014-11-04T08:00:00"
}
}
}
"""
apply_patch(self.request, save=False, src=self.request.validated['auction_src'])
if all([i.auctionPeriod and i.auctionPeriod.endDate for i in self.request.validated['auction'].lots if i.numberOfBids > 1 and i.status == 'active']):
self.request.content_configurator.start_awarding()
if save_auction(self.request):
self.LOGGER.info('Report auction results', extra=context_unpack(self.request, {'MESSAGE_ID': 'auction_auction_post'}))
return {'data': self.request.validated['auction'].serialize(self.request.validated['auction'].status)}

@json_view(content_type="application/json", permission='auction', validators=(validate_auction_auction_data))
def patch(self):
"""Set urls for access to auction for lot.
"""
if apply_patch(self.request, src=self.request.validated['auction_src']):
self.LOGGER.info('Updated auction urls', extra=context_unpack(self.request, {'MESSAGE_ID': 'auction_lot_auction_patch'}))
return {'data': self.request.validated['auction'].serialize("auction_view")}

@json_view(content_type="application/json", permission='auction', validators=(validate_auction_auction_data))
def post(self):
"""Report auction results for lot.
"""
apply_patch(self.request, save=False, src=self.request.validated['auction_src'])
if all([i.auctionPeriod and i.auctionPeriod.endDate for i in self.request.validated['auction'].lots if i.numberOfBids > 1 and i.status == 'active']):
cleanup_bids_for_cancelled_lots(self.request.validated['auction'])
self.request.content_configurator.start_awarding()
if save_auction(self.request):
self.LOGGER.info('Report auction results', extra=context_unpack(self.request, {'MESSAGE_ID': 'auction_lot_auction_post'}))
return {'data': self.request.validated['auction'].serialize(self.request.validated['auction'].status)}
class AuctionAuctionResource(AuctionAuctionResource):
pass
Loading

0 comments on commit f3b92f9

Please sign in to comment.