Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/production'
Browse files Browse the repository at this point in the history
  • Loading branch information
kroman0 committed Dec 30, 2016
2 parents fcf68cc + 6eac6a8 commit f25c1a1
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 33 deletions.
10 changes: 6 additions & 4 deletions openprocurement/contracting/api/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,8 @@
contract_administrator_role = (Administrator_role + whitelist('suppliers',))

item_edit_role = whitelist(
'description', 'description_en', 'description_ru', 'classification',
'additionalClassifications', 'unit', 'deliveryDate', 'deliveryAddress',
'deliveryLocation', 'quantity', 'id')
'description', 'description_en', 'description_ru', 'unit', 'deliveryDate',
'deliveryAddress', 'deliveryLocation', 'quantity', 'id')


class IContract(Interface):
Expand Down Expand Up @@ -109,6 +108,9 @@ class Options:
'embedded': schematics_embedded_role,
}

def validate_additionalClassifications(self, data, items):
pass

def validate_relatedLot(self, data, relatedLot):
pass

Expand Down Expand Up @@ -149,7 +151,7 @@ class Contract(SchematicsDocument, BaseContract):
revisions = ListType(ModelType(Revision), default=list())
dateModified = IsoDateTimeType()
_attachments = DictType(DictType(BaseType), default=dict()) # couchdb attachments
items = ListType(ModelType(Item), required=False, min_size=1, validators=[validate_cpv_group, validate_items_uniq])
items = ListType(ModelType(Item), required=False, min_size=1, validators=[validate_items_uniq])
tender_token = StringType(required=True)
tender_id = StringType(required=True)
owner_token = StringType(default=lambda: uuid4().hex)
Expand Down
51 changes: 23 additions & 28 deletions openprocurement/contracting/api/tests/contract.py
Original file line number Diff line number Diff line change
Expand Up @@ -607,54 +607,49 @@ def test_contract_items_change(self):
{"location": "body", "name": "items", "description": ["Item id should be uniq for all items"]}
])

item['id'] = uuid4().hex
response = self.app.patch_json('/contracts/{}?acc_token={}'.format(self.contract['id'], token),
{"data": {"items": [{}, item]}})
self.assertEqual(len(response.json['data']['items']), 2)
#item['id'] = uuid4().hex
#response = self.app.patch_json('/contracts/{}?acc_token={}'.format(self.contract['id'], token),
#{"data": {"items": [{}, item]}})
#self.assertEqual(len(response.json['data']['items']), 2)

# try to change classification
response = self.app.patch_json('/contracts/{}?acc_token={}'.format(self.contract['id'], token),
{"data": {"items": [{}, {
{"data": {"items": [{
'classification': {'id': '19433000-0'},
}]}}, status=422)
self.assertEqual(response.status, '422 Unprocessable Entity')
self.assertEqual(response.json['errors'], [
{"location": "body", "name": "items", "description": ["CPV group of items be identical"]}
])
}]}})
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.json, None)

# add additional classification
item_classific = deepcopy(self.initial_data['items'][0]['classification'])
response = self.app.patch_json('/contracts/{}?acc_token={}'.format(self.contract['id'], token),
{"data": {"items": [{}, {
{"data": {"items": [{
'additionalClassifications': [{}, item_classific],
}]}})
self.assertEqual(len(response.json['data']['items']), 2)
item_1 = response.json['data']['items'][0]
self.assertEqual(len(item_1['additionalClassifications']), 1)
item_2 = response.json['data']['items'][1]
self.assertEqual(len(item_2['additionalClassifications']), 2)
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.json, None)

# update item fields
startDate = get_now().isoformat()
endDate = (get_now() + timedelta(days=90)).isoformat()
response = self.app.patch_json('/contracts/{}?acc_token={}'.format(self.contract['id'], token),
{"data": {"items": [{}, {
{"data": {"items": [{
'deliveryAddress': {u"postalCode": u"79011", u"streetAddress": u"вул. Літаючого Хом’яка",},
'deliveryDate': {u"startDate": startDate, u"endDate": endDate}
}]}})
self.assertEqual(response.json['data']['items'][1]['deliveryAddress']['postalCode'], u"79011")
self.assertEqual(response.json['data']['items'][1]['deliveryAddress']['streetAddress'], u"вул. Літаючого Хом’яка")
self.assertEqual(response.json['data']['items'][1]['deliveryAddress']['region'], u"м. Київ")
self.assertEqual(response.json['data']['items'][1]['deliveryAddress']['locality'], u"м. Київ")
self.assertEqual(response.json['data']['items'][1]['deliveryAddress']['countryName'], u"Україна")
self.assertEqual(response.json['data']['items'][1]['deliveryDate']['startDate'], startDate)
self.assertEqual(response.json['data']['items'][1]['deliveryDate']['endDate'], endDate)
self.assertEqual(response.json['data']['items'][0]['deliveryAddress']['postalCode'], u"79011")
self.assertEqual(response.json['data']['items'][0]['deliveryAddress']['streetAddress'], u"вул. Літаючого Хом’яка")
self.assertEqual(response.json['data']['items'][0]['deliveryAddress']['region'], u"м. Київ")
self.assertEqual(response.json['data']['items'][0]['deliveryAddress']['locality'], u"м. Київ")
self.assertEqual(response.json['data']['items'][0]['deliveryAddress']['countryName'], u"Україна")
self.assertEqual(response.json['data']['items'][0]['deliveryDate']['startDate'], startDate)
self.assertEqual(response.json['data']['items'][0]['deliveryDate']['endDate'], endDate)

# remove first item
response = self.app.patch_json('/contracts/{}?acc_token={}'.format(self.contract['id'], token),
{"data": {"items": [item_2]}})
self.assertEqual(len(response.json['data']['items']), 1)
self.assertEqual(response.json['data']['items'][0], item_2)
#response = self.app.patch_json('/contracts/{}?acc_token={}'.format(self.contract['id'], token),
#{"data": {"items": [item_2]}})
#self.assertEqual(len(response.json['data']['items']), 1)
#self.assertEqual(response.json['data']['items'][0], item_2)

# try to remove all items
response = self.app.patch_json('/contracts/{}?acc_token={}'.format(self.contract['id'], token),
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from setuptools import setup, find_packages
import os

version = '2.3.16'
version = '2.3.17'

requires = [
'setuptools',
Expand Down

0 comments on commit f25c1a1

Please sign in to comment.