Skip to content

Commit

Permalink
Merge pull request #80 from gorserg/hide_auctionPeriod_field
Browse files Browse the repository at this point in the history
Hide auction period for lot and tender stage1
  • Loading branch information
kroman0 committed Oct 6, 2016
2 parents e1a9006 + 6cbb1cd commit e1cba5f
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 63 deletions.
39 changes: 29 additions & 10 deletions openprocurement/tender/competitivedialogue/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,21 +38,23 @@
edit_stage2_pending = whitelist('status')
edit_stage2_waiting = whitelist('status', 'stage2TenderID')

view_role_stage1 = (view_role + blacklist('auctionPeriod'))
pre_qualifications_role_stage1 = (pre_qualifications_role + blacklist('auctionPeriod'))
roles = {
'plain': plain_role,
'create': create_role,
'view': view_role,
'view': view_role_stage1,
'listing': listing_role,
'active.pre-qualification': pre_qualifications_role,
'active.pre-qualification.stand-still': pre_qualifications_role,
'active.stage2.pending': enquiries_role,
'active.stage2.waiting': pre_qualifications_role,
'active.pre-qualification': pre_qualifications_role_stage1,
'active.pre-qualification.stand-still': pre_qualifications_role_stage1,
'active.stage2.pending': (enquiries_role + blacklist('auctionPeriod')),
'active.stage2.waiting': pre_qualifications_role_stage1,
'edit_active.stage2.pending': whitelist('status'),
'draft': enquiries_role,
'active.tendering': enquiries_role,
'complete': view_role,
'unsuccessful': view_role,
'cancelled': view_role,
'draft': (enquiries_role + blacklist('auctionPeriod')),
'active.tendering': (enquiries_role + blacklist('auctionPeriod')),
'complete': view_role_stage1,
'unsuccessful': view_role_stage1,
'cancelled': view_role_stage1,
'chronograph': chronograph_role,
'chronograph_view': chronograph_view_role,
'Administrator': Administrator_role,
Expand Down Expand Up @@ -131,6 +133,22 @@ class Feature(BaseFeature):
}


class Lot(BaseLotEU):

class Options:
roles = {
'create': whitelist('id', 'title', 'title_en', 'title_ru', 'description', 'description_en', 'description_ru', 'value', 'guarantee', 'minimalStep'),
'edit': whitelist('title', 'title_en', 'title_ru', 'description', 'description_en', 'description_ru', 'value', 'guarantee', 'minimalStep'),
'embedded': embedded_lot_role,
'view': (default_lot_role + blacklist('auctionPeriod')),
'default': (default_lot_role + blacklist('auctionPeriod')),
'chronograph': whitelist('id'),
'chronograph_view': whitelist('id', 'numberOfBids', 'status'),
}

LotStage1 = Lot


@implementer(ITender)
class Tender(BaseTenderEU):
procurementMethodType = StringType(default=CD_EU_TYPE)
Expand All @@ -144,6 +162,7 @@ class Tender(BaseTenderEU):
TenderID = StringType(required=False)
stage2TenderID = StringType(required=False)
features = ListType(ModelType(Feature), validators=[validate_features_uniq])
lots = ListType(ModelType(Lot), default=list(), validators=[validate_lots_uniq])

class Options:
roles = roles.copy()
Expand Down
34 changes: 12 additions & 22 deletions openprocurement/tender/competitivedialogue/tests/stage1/lot.py
Original file line number Diff line number Diff line change
Expand Up @@ -454,14 +454,13 @@ def test_get_tender_lot(self):
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.content_type, 'application/json')
self.assertEqual(set(response.json['data']), set([u'id', u'title', u'date', u'description',
u'value', u'status', u'auctionPeriod', u'minimalStep']))
u'value', u'status', u'minimalStep']))

self.set_status('active.qualification')

response = self.app.get('/tenders/{}/lots/{}'.format(self.tender_id, lot['id']))
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.content_type, 'application/json')
lot.pop('auctionPeriod')
self.assertEqual(response.json['data'], lot)

response = self.app.get('/tenders/{}/lots/some_id'.format(self.tender_id), status=404)
Expand Down Expand Up @@ -494,14 +493,13 @@ def test_get_tender_lots(self):
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.content_type, 'application/json')
self.assertEqual(set(response.json['data'][0]), set([u'id', u'title', u'date', u'description',
u'value', u'status', u'auctionPeriod', u'minimalStep']))
u'value', u'status', u'minimalStep']))

self.set_status('active.qualification')

response = self.app.get('/tenders/{}/lots'.format(self.tender_id))
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.content_type, 'application/json')
lot.pop('auctionPeriod')
self.assertEqual(response.json['data'][0], lot)

response = self.app.get('/tenders/some_id/lots', status=404)
Expand Down Expand Up @@ -1105,12 +1103,10 @@ def test_1lot_0bid(self):
{"data": {"items": [{'relatedLot': lot_id}]}})
self.assertEqual(response.status, '200 OK')
# switch to active.tendering
response = self.set_status('active.tendering',
{"lots": [{"auctionPeriod": {"startDate": (get_now() + timedelta(days=10)).isoformat()}}]})
self.assertIn("auctionPeriod", response.json['data']['lots'][0])
response = self.set_status('active.tendering')
self.assertNotIn("auctionPeriod", response.json['data']['lots'][0])
# switch to unsuccessful
response = self.set_status('active.stage2.pending', {"lots": [{"auctionPeriod": {"startDate": None}}],
'status': 'active.tendering'})
response = self.set_status('active.stage2.pending', {'status': 'active.tendering'})
self.app.authorization = ('Basic', ('chronograph', ''))
response = self.app.patch_json('/tenders/{}'.format(tender_id), {"data": {"id": tender_id}})
self.assertEqual(response.json['data']["lots"][0]['status'], 'unsuccessful')
Expand Down Expand Up @@ -1321,8 +1317,7 @@ def test_2lot_2bid_1lot_del(self):
response = self.app.patch_json('/tenders/{}?acc_token={}'.format(tender_id, owner_token),
{"data": {"items": [test_tender_data['items'][0] for i in lots]}})

response = self.set_status('active.tendering',
{"lots": [{"auctionPeriod": {"startDate": (get_now() + timedelta(days=16)).isoformat()}} for i in lots]})
response = self.set_status('active.tendering')
# create bid

bids = []
Expand Down Expand Up @@ -2168,14 +2163,13 @@ def test_get_tender_lot(self):
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.content_type, 'application/json')
self.assertEqual(set(response.json['data']), set([u'id', u'title', u'date', u'description',
u'value', u'status', u'auctionPeriod', u'minimalStep']))
u'value', u'status', u'minimalStep']))

self.set_status('active.qualification')

response = self.app.get('/tenders/{}/lots/{}'.format(self.tender_id, lot['id']))
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.content_type, 'application/json')
lot.pop('auctionPeriod')
self.assertEqual(response.json['data'], lot)

response = self.app.get('/tenders/{}/lots/some_id'.format(self.tender_id), status=404)
Expand Down Expand Up @@ -2208,14 +2202,13 @@ def test_get_tender_lots(self):
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.content_type, 'application/json')
self.assertEqual(set(response.json['data'][0]), set([u'id', u'title', u'date', u'description',
u'value', u'status', u'auctionPeriod', u'minimalStep']))
u'value', u'status', u'minimalStep']))

self.set_status('active.qualification')

response = self.app.get('/tenders/{}/lots'.format(self.tender_id))
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.content_type, 'application/json')
lot.pop('auctionPeriod')
self.assertEqual(response.json['data'][0], lot)

response = self.app.get('/tenders/some_id/lots', status=404)
Expand Down Expand Up @@ -2820,12 +2813,10 @@ def test_1lot_0bid(self):
{"data": {"items": [{'relatedLot': lot_id}]}})
self.assertEqual(response.status, '200 OK')
# switch to active.tendering
response = self.set_status('active.tendering',
{"lots": [{"auctionPeriod": {"startDate": (get_now() + timedelta(days=10)).isoformat()}}]})
self.assertIn("auctionPeriod", response.json['data']['lots'][0])
response = self.set_status('active.tendering')
self.assertNotIn("auctionPeriod", response.json['data']['lots'][0])
# switch to unsuccessful
response = self.set_status('active.stage2.pending', {"lots": [{"auctionPeriod": {"startDate": None}}],
'status': 'active.tendering'})
response = self.set_status('active.stage2.pending', {'status': 'active.tendering'})
self.app.authorization = ('Basic', ('chronograph', ''))
response = self.app.patch_json('/tenders/{}'.format(tender_id), {"data": {"id": tender_id}})
self.assertEqual(response.json['data']["lots"][0]['status'], 'unsuccessful')
Expand Down Expand Up @@ -3036,8 +3027,7 @@ def test_2lot_2bid_1lot_del(self):
response = self.app.patch_json('/tenders/{}?acc_token={}'.format(tender_id, owner_token),
{"data": {"items": [test_tender_data['items'][0] for i in lots]}})

response = self.set_status('active.tendering',
{"lots": [{"auctionPeriod": {"startDate": (get_now() + timedelta(days=16)).isoformat()}} for i in lots]})
response = self.set_status('active.tendering')
# create bid

bids = []
Expand Down
40 changes: 9 additions & 31 deletions openprocurement/tender/competitivedialogue/tests/stage1/tender.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,14 @@
from openprocurement.tender.competitivedialogue.tests.base import (test_tender_data_ua,
test_tender_data_eu,
BaseCompetitiveDialogEUWebTest,
BaseCompetitiveDialogUAWebTest)
BaseCompetitiveDialogUAWebTest,
BaseCompetitiveDialogWebTest)
from copy import deepcopy
from openprocurement.tender.competitivedialogue.models import CD_EU_TYPE, CD_UA_TYPE, FEATURES_MAX_SUM

class CompetitiveDialogTest(BaseWebTest):

class CompetitiveDialogTest(BaseCompetitiveDialogWebTest):


def test_simple_add_tender_ua(self):
u = CompetitiveDialogUA(test_tender_data_ua)
Expand Down Expand Up @@ -502,19 +505,6 @@ def test_create_tender_invalid(self):
{u'description': [u'period should begin after tenderPeriod'], u'location': u'body', u'name': u'awardPeriod'}
])

test_tender_data_eu['auctionPeriod'] = {'startDate': (now + timedelta(days=35)).isoformat(), 'endDate': (now + timedelta(days=35)).isoformat()}
test_tender_data_eu['awardPeriod'] = {'startDate': (now + timedelta(days=34)).isoformat(), 'endDate': (now + timedelta(days=34)).isoformat()}
response = self.app.post_json(request_path, {'data': test_tender_data_eu}, status=422)
del test_tender_data_eu['auctionPeriod']
del test_tender_data_eu['awardPeriod']
self.assertEqual(response.status, '422 Unprocessable Entity')
self.assertEqual(response.content_type, 'application/json')
self.assertEqual(response.json['status'], 'error')
self.assertEqual(response.json['errors'], [
{u'description': [u'period should begin after auctionPeriod'], u'location': u'body', u'name': u'awardPeriod'}
])


data = test_tender_data_eu["items"][0]["additionalClassifications"][0]["scheme"]
test_tender_data_eu["items"][0]["additionalClassifications"][0]["scheme"] = 'Не ДКПП'
response = self.app.post_json(request_path, {'data': test_tender_data_eu}, status=422)
Expand Down Expand Up @@ -579,7 +569,7 @@ def test_create_tender_generated(self):
tender.pop('procurementMethodDetails')
self.assertEqual(set(tender), set([
u'procurementMethodType', u'id', u'dateModified', u'tenderID',
u'status', u'enquiryPeriod', u'tenderPeriod', u'auctionPeriod',
u'status', u'enquiryPeriod', u'tenderPeriod',
u'complaintPeriod', u'items', u'value', u'owner',
u'procuringEntity', u'next_check', u'procurementMethod',
u'awardCriteria', u'submissionMethod', u'title', u'title_en',
Expand Down Expand Up @@ -655,7 +645,7 @@ def test_create_tender(self):
if 'procurementMethodDetails' in tender_set:
tender_set.remove('procurementMethodDetails')
self.assertEqual(tender_set - set(test_tender_data_eu), set([
u'id', u'dateModified', u'enquiryPeriod', u'auctionPeriod',
u'id', u'dateModified', u'enquiryPeriod',
u'complaintPeriod', u'tenderID', u'status', u'procurementMethod',
u'awardCriteria', u'submissionMethod', u'next_check', u'owner', u'date'
]))
Expand Down Expand Up @@ -1827,18 +1817,6 @@ def test_create_tender_invalid(self):
{u'description': [u'period should begin after tenderPeriod'], u'location': u'body', u'name': u'awardPeriod'}
])

test_tender_data_ua['auctionPeriod'] = {'startDate': (now + timedelta(days=16)).isoformat(), 'endDate': (now + timedelta(days=16)).isoformat()}
test_tender_data_ua['awardPeriod'] = {'startDate': (now + timedelta(days=15)).isoformat(), 'endDate': (now + timedelta(days=15)).isoformat()}
response = self.app.post_json(request_path, {'data': test_tender_data_ua}, status=422)
del test_tender_data_ua['auctionPeriod']
del test_tender_data_ua['awardPeriod']
self.assertEqual(response.status, '422 Unprocessable Entity')
self.assertEqual(response.content_type, 'application/json')
self.assertEqual(response.json['status'], 'error')
self.assertEqual(response.json['errors'], [
{u'description': [u'period should begin after auctionPeriod'], u'location': u'body', u'name': u'awardPeriod'}
])

data = test_tender_data_ua["items"][0]["additionalClassifications"][0]["scheme"]
test_tender_data_ua["items"][0]["additionalClassifications"][0]["scheme"] = 'Не ДКПП'
response = self.app.post_json(request_path, {'data': test_tender_data_ua}, status=422)
Expand Down Expand Up @@ -1903,7 +1881,7 @@ def test_create_tender_generated(self):
u'status', u'enquiryPeriod', u'tenderPeriod', u'complaintPeriod',
u'items', u'value', u'procuringEntity',
u'next_check', u'procurementMethod', u'awardCriteria',
u'submissionMethod', u'auctionPeriod', u'title', u'owner',
u'submissionMethod', u'title', u'owner',
u'date', u'minimalStep'
]))
self.assertNotEqual(data['id'], tender['id'])
Expand Down Expand Up @@ -1953,7 +1931,7 @@ def test_create_tender(self):
if 'procurementMethodDetails' in tender_set:
tender_set.remove('procurementMethodDetails')
self.assertEqual(tender_set - set(test_tender_data_ua), set([
u'id', u'dateModified', u'enquiryPeriod', u'auctionPeriod',
u'id', u'dateModified', u'enquiryPeriod',
u'complaintPeriod', u'tenderID', u'status', u'procurementMethod',
u'awardCriteria', u'submissionMethod', u'next_check', u'owner',
u'date'
Expand Down

0 comments on commit e1cba5f

Please sign in to comment.