Skip to content

Commit 81ff4ba

Browse files
committed
Merge branch 'master' of github.com:openprocurement/openprocurement.api
2 parents 7af743a + 8d5a591 commit 81ff4ba

5 files changed

Lines changed: 45 additions & 25 deletions

File tree

src/openprocurement/api/models.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,7 @@ class Options:
282282
}
283283

284284
id = StringType(required=True, default=lambda: uuid4().hex)
285+
bid_id = StringType()
285286
title = StringType() # Award title
286287
title_en = StringType()
287288
title_ru = StringType()

src/openprocurement/api/tests/auction.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@
22
import unittest
33

44
from openprocurement.api.tests.base import test_tender_data, BaseTenderWebTest
5+
from openprocurement.api.models import get_now
56
from iso8601 import parse_date
67
from tzlocal import get_localzone
78

89

910
tender_data = test_tender_data.copy()
10-
tender_data['auctionPeriod'] = test_tender_data["tenderPeriod"]
11+
tender_data['auctionPeriod'] = {'startDate': get_now().isoformat()}
1112
tender_data['bids'] = [
1213
{
1314
"id": "4879d3f8ee2443169b5fbbc9f89fa606",
@@ -78,7 +79,7 @@ def test_get_tender_auction(self):
7879
self.assertFalse("tenderers" in auction["bids"][0])
7980
self.assertEqual(auction["bids"][0]['value']['amount'], self.initial_data["bids"][0]['value']['amount'])
8081
self.assertEqual(auction["bids"][1]['value']['amount'], self.initial_data["bids"][1]['value']['amount'])
81-
self.assertEqual(parse_date(self.initial_data["auctionPeriod"]['endDate'], get_localzone()), parse_date(auction["auctionPeriod"]['endDate']))
82+
self.assertEqual(self.initial_data["auctionPeriod"]['startDate'], auction["auctionPeriod"]['startDate'])
8283

8384
response = self.app.get('/tenders/{}/auction?opt_jsonp=callback'.format(self.tender_id))
8485
self.assertEqual(response.status, '200 OK')
@@ -153,8 +154,13 @@ def test_post_tender_auction(self):
153154
self.assertNotEqual(tender["bids"][1]['value']['amount'], self.initial_data["bids"][1]['value']['amount'])
154155
self.assertEqual(tender["bids"][0]['value']['amount'], patch_data["bids"][1]['value']['amount'])
155156
self.assertEqual(tender["bids"][1]['value']['amount'], patch_data["bids"][0]['value']['amount'])
157+
self.assertEqual('active.qualification', tender["status"])
156158
self.assertTrue("tenderers" in tender["bids"][0])
157159
self.assertTrue("name" in tender["bids"][0]["tenderers"][0])
160+
#self.assertTrue(tender["awards"][0]["id"] in response.headers['Location'])
161+
self.assertEqual(tender["awards"][0]['bid_id'], patch_data["bids"][0]['id'])
162+
self.assertEqual(tender["awards"][0]['value']['amount'], patch_data["bids"][0]['value']['amount'])
163+
self.assertEqual(tender["awards"][0]['suppliers'], tender_data['bids'][0]['tenderers'])
158164

159165
response = self.app.patch_json('/tenders/{}/auction'.format(self.tender_id), {'data': patch_data}, status=403)
160166
self.assertEqual(response.status, '403 Forbidden')

src/openprocurement/api/tests/base.py

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -8,57 +8,57 @@
88

99
test_tender_data = {
1010
"procuringEntity": {
11-
"name": "Державне управління справами",
11+
"name": u"Державне управління справами",
1212
"identifier": {
13-
"scheme": "https://ns.openprocurement.org/ua/edrpou",
14-
"id": "00037256",
15-
"uri": "http://www.dus.gov.ua/"
13+
"scheme": u"https://ns.openprocurement.org/ua/edrpou",
14+
"id": u"00037256",
15+
"uri": u"http://www.dus.gov.ua/"
1616
},
1717
"address": {
18-
"countryName": "Україна",
19-
"postalCode": "01220",
20-
"region": "м. Київ",
21-
"locality": "м. Київ",
22-
"streetAddress": "вул. Банкова, 11, корпус 1"
18+
"countryName": u"Україна",
19+
"postalCode": u"01220",
20+
"region": u"м. Київ",
21+
"locality": u"м. Київ",
22+
"streetAddress": u"вул. Банкова, 11, корпус 1"
2323
},
2424
},
2525
"value": {
2626
"amount": 500,
27-
"currency": "UAH"
27+
"currency": u"UAH"
2828
},
2929
"minimalStep": {
3030
"amount": 35,
31-
"currency": "UAH"
31+
"currency": u"UAH"
3232
},
3333
"items": [
3434
{
35-
"description": "футляри до державних нагород",
35+
"description": u"футляри до державних нагород",
3636
"classification": {
37-
"scheme": "CPV",
38-
"id": "44617100-9",
39-
"description": "Cartons"
37+
"scheme": u"CPV",
38+
"id": u"44617100-9",
39+
"description": u"Cartons"
4040
},
4141
"additionalClassifications": [
4242
{
43-
"scheme": "ДКПП",
44-
"id": "17.21.1",
45-
"description": "папір і картон гофровані, паперова й картонна тара"
43+
"scheme": u"ДКПП",
44+
"id": u"17.21.1",
45+
"description": u"папір і картон гофровані, паперова й картонна тара"
4646
}
4747
],
4848
"unit": {
49-
"name": "item"
49+
"name": u"item"
5050
},
5151
"quantity": 5
5252
}
5353
],
5454
"enquiryPeriod": {
55-
"endDate": "2014-10-31T00:00:00"
55+
"endDate": u"2014-10-31T00:00:00"
5656
},
5757
"tenderPeriod": {
58-
"endDate": "2014-11-06T10:00:00"
58+
"endDate": u"2014-11-06T10:00:00"
5959
},
6060
"awardPeriod": {
61-
"endDate": "2014-11-13T00:00:00"
61+
"endDate": u"2014-11-13T00:00:00"
6262
}
6363
}
6464

src/openprocurement/api/views/auction.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# -*- coding: utf-8 -*-
22
from cornice.service import Service
3+
from openprocurement.api.models import Award, get_now
34
from openprocurement.api.utils import (
45
apply_data_patch,
56
filter_data,
@@ -154,8 +155,20 @@ def patch_auction(request):
154155
bids = auction_data.get('bids', [])
155156
tender_bids_ids = [i.id for i in tender.bids]
156157
auction_data['bids'] = [x for (y, x) in sorted(zip([tender_bids_ids.index(i['id']) for i in bids], bids))]
158+
auction_data['auctionPeriod'] = {'endDate': get_now().isoformat()}
157159
auction_data['status'] = 'active.qualification'
158160
src = tender.serialize("plain")
159161
tender.import_data(apply_data_patch(src, auction_data))
162+
bids = sorted(tender.bids, key=lambda i: (i.value.amount, i.date))
163+
bid = bids[0].serialize()
164+
award_data = {
165+
'bid_id': bid['id'],
166+
'status': 'pending',
167+
'value': bid['value'],
168+
'suppliers': bid['tenderers'],
169+
}
170+
award = Award(award_data)
171+
tender.awards.append(award)
160172
save_tender(tender, src, request)
173+
#request.response.headers['Location'] = request.route_url('Tender Awards', tender_id=tender.id, id=award['id'])
161174
return {'data': tender.serialize(tender.status)}

src/openprocurement/api/views/award.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ def collection_post(self):
171171
tender.awards.append(award)
172172
save_tender(tender, src, self.request)
173173
self.request.response.status = 201
174-
self.request.response.headers['Location'] = self.request.route_url('Tender Bids', tender_id=tender.id, id=award['id'])
174+
self.request.response.headers['Location'] = self.request.route_url('Tender Awards', tender_id=tender.id, id=award['id'])
175175
return {'data': award.serialize("view")}
176176

177177
@view(renderer='json', validators=(validate_tender_award_exists,))

0 commit comments

Comments
 (0)