Skip to content

Commit

Permalink
Set title, classification and additionalClassifications required
Browse files Browse the repository at this point in the history
  • Loading branch information
kroman0 committed Jan 27, 2015
1 parent f883531 commit 54f480d
Show file tree
Hide file tree
Showing 5 changed files with 59 additions and 5 deletions.
31 changes: 30 additions & 1 deletion src/openprocurement/api/migration.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@


LOGGER = logging.getLogger(__name__)
SCHEMA_VERSION = 13
SCHEMA_VERSION = 14
SCHEMA_DOC = 'openprocurement_schema'


Expand Down Expand Up @@ -470,3 +470,32 @@ def from12to13(db):
doc['submissionMethod'] = 'electronicAuction'
doc['dateModified'] = get_now().isoformat()
db.save(doc)


def from13to14(db):
results = db.view('tenders/all', include_docs=True)
for i in results:
doc = i.doc
if not doc.get('title'):
doc['title'] = doc["items"][0]['description']
changed = True
for item in doc["items"]:
if not item.get('classification'):
changed = True
item['classification'] = {
"scheme": u"CPV",
"id": u"41110000-3",
"description": u"Drinking water"
}
if not item.get('additionalClassifications'):
changed = True
item['additionalClassifications'] = [
{
"scheme": u"ДКПП",
"id": u"36.00.11-00.00",
"description": u"Вода питна"
}
]
if changed:
doc['dateModified'] = get_now().isoformat()
db.save(doc)
6 changes: 3 additions & 3 deletions src/openprocurement/api/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -161,8 +161,8 @@ class Options:
description = StringType(required=True) # A description of the goods, services to be provided.
description_en = StringType()
description_ru = StringType()
classification = ModelType(CPVClassification)
additionalClassifications = ListType(ModelType(Classification), default=list(), validators=[validate_dkpp])
classification = ModelType(CPVClassification, required=True)
additionalClassifications = ListType(ModelType(Classification), default=list(), required=True, min_size=1, validators=[validate_dkpp])
unit = ModelType(Unit) # Description of the unit which the good comes in e.g. hours, kilograms
quantity = IntType() # The number of units required
deliveryDate = ModelType(Period)
Expand Down Expand Up @@ -452,7 +452,7 @@ class Options:
def __local_roles__(self):
return dict([('{}_{}'.format(self.owner, self.owner_token), 'tender_owner')])

title = StringType()
title = StringType(required=True)
title_en = StringType()
title_ru = StringType()
description = StringType()
Expand Down
1 change: 1 addition & 0 deletions src/openprocurement/api/tests/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@

now = datetime.now()
test_tender_data = {
"title": u"футляри до державних нагород",
"procuringEntity": {
"name": u"Державне управління справами",
"identifier": {
Expand Down
24 changes: 24 additions & 0 deletions src/openprocurement/api/tests/migration.py
Original file line number Diff line number Diff line change
Expand Up @@ -486,6 +486,30 @@ def test_migrate_from12to13(self):
self.assertEqual('electronicAuction', migrated_item['submissionMethod'])


def test_migrate_from13to14(self):
set_db_schema_version(self.db, 13)
data = {
'doc_type': 'Tender',
'items': [
{
"description": u"футляри до державних нагород",
"unit": {
"name": u"item",
"code": u"44617100-9"
},
"quantity": 5
}
]
}
_id, _rev = self.db.save(data)
migrate_data(self.db, 14)
migrated_item = self.db.get(_id)
self.assertIn('title', migrated_item)
self.assertEqual(data['items'][0]["description"], migrated_item['title'])
self.assertEqual(u"CPV", migrated_item['items'][0]['classification']["scheme"])
self.assertEqual(u"ДКПП", migrated_item['items'][0]['additionalClassifications'][0]["scheme"])


def suite():
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(MigrateTest))
Expand Down
2 changes: 1 addition & 1 deletion src/openprocurement/api/tests/tender.py
Original file line number Diff line number Diff line change
Expand Up @@ -317,7 +317,7 @@ def test_create_tender_generated(self):
tender = response.json['data']
self.assertEqual(set(tender), set([u'id', u'dateModified', u'tenderID', u'status', u'enquiryPeriod',
u'tenderPeriod', u'minimalStep', u'items', u'value', u'procuringEntity',
u'procurementMethod', u'awardCriteria', u'submissionMethod']))
u'procurementMethod', u'awardCriteria', u'submissionMethod', u'title']))
self.assertNotEqual(data['id'], tender['id'])
self.assertNotEqual(data['doc_id'], tender['id'])
self.assertNotEqual(data['tenderID'], tender['tenderID'])
Expand Down

0 comments on commit 54f480d

Please sign in to comment.