Skip to content

Commit

Permalink
Merge pull request #84 from gorserg/fix_ascii_error
Browse files Browse the repository at this point in the history
Fix unicode
  • Loading branch information
kroman0 committed Oct 11, 2016
2 parents b1fea83 + b074ce9 commit 90fc77a
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 7 deletions.
40 changes: 40 additions & 0 deletions openprocurement/tender/competitivedialogue/tests/stage2/bid.py
Original file line number Diff line number Diff line change
Expand Up @@ -992,6 +992,46 @@ def test_bids_activation_on_tender_documents(self):
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.json['data']['status'], 'pending')

def test_ukrainian_author_id(self):
multilingual_author = deepcopy(author)
multilingual_author['identifier']['id'] = u"Українська мова"
data = test_tender_stage2_data_eu.copy()
data['shortlistedFirms'][0] = {
"identifier": {"scheme": multilingual_author["identifier"]['scheme'],
"id": multilingual_author["identifier"]["id"],
"uri": multilingual_author["identifier"]['uri']},
"name": "Test org name 1"
}
self.create_tender(initial_data=data)

response = self.app.post_json('/tenders/{}/bids'.format(self.tender_id),
{'data': {'selfEligible': True, 'selfQualified': True,
'tenderers': [multilingual_author], "value": {"amount": 500}}})
self.assertEqual(response.status, '201 Created')
self.assertEqual(response.content_type, 'application/json')
bid = response.json['data']
self.assertEqual(bid['tenderers'][0]['name'], test_bids[0]['tenderers'][0]['name'])
self.assertIn('id', bid)
self.assertIn(bid['id'], response.headers['Location'])

for status in ('active', 'unsuccessful', 'deleted', 'invalid'):
response = self.app.post_json('/tenders/{}/bids'.format(self.tender_id),
{'data': {'selfEligible': True, 'selfQualified': True,
'tenderers': [multilingual_author],
'value': {"amount": 500},
'status': status}}, status=403)
self.assertEqual(response.status, '403 Forbidden')

self.set_status('complete')

response = self.app.post_json('/tenders/{}/bids'.format(self.tender_id),
{'data': {'selfEligible': True, 'selfQualified': True,
'tenderers': [multilingual_author], "value": {"amount": 500}}},
status=403)
self.assertEqual(response.status, '403 Forbidden')
self.assertEqual(response.content_type, 'application/json')
self.assertEqual(response.json['errors'][0]["description"], "Can't add bid in current (complete) tender status")


class TenderStage2EUBidFeaturesResourceTest(BaseCompetitiveDialogEUStage2ContentWebTest):
initial_status = 'active.tendering'
Expand Down
19 changes: 12 additions & 7 deletions openprocurement/tender/competitivedialogue/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -216,20 +216,22 @@ def prepare_shortlistedFirms(shortlistedFirms):
"""
all_keys = set()
for firm in shortlistedFirms:
key = "{firm_id}_{firm_scheme}".format(firm_id=firm['identifier']['id'], firm_scheme=firm['identifier']['scheme'])
key = u"{firm_id}_{firm_scheme}".format(firm_id=firm['identifier']['id'],
firm_scheme=firm['identifier']['scheme'])
if firm.get('lots'):
keys = set(["{key}_{lot_id}".format(key=key, lot_id=lot['id']) for lot in firm.get('lots')])
keys = set([u"{key}_{lot_id}".format(key=key, lot_id=lot['id']) for lot in firm.get('lots')])
else:
keys = set([key])
all_keys |= keys
return all_keys


def prepare_author(obj):
base_key = "{id}_{scheme}".format(scheme=obj['author']['identifier']['scheme'],
id=obj['author']['identifier']['id'])
base_key = u"{id}_{scheme}".format(scheme=obj['author']['identifier']['scheme'],
id=obj['author']['identifier']['id'])
if obj.get('relatedLot') or obj.get('relatedItem'):
base_key = "{base_key}_{lotId}".format(base_key=base_key, lotId=obj.get('relatedLot') or obj.get('relatedItem'))
base_key = u"{base_key}_{lotId}".format(base_key=base_key,
lotId=obj.get('relatedLot') or obj.get('relatedItem'))
return base_key


Expand All @@ -239,9 +241,12 @@ def prepare_bid_identifier(bid):
"""
all_keys = set()
for tenderer in bid['tenderers']:
key = '{id}_{scheme}'.format(id=tenderer['identifier']['id'], scheme=tenderer['identifier']['scheme'])
key = u"{id}_{scheme}".format(id=tenderer['identifier']['id'],
scheme=tenderer['identifier']['scheme'])
if bid.get('lotValues'):
keys = set(['{key}_{lot_id}'.format(key=key, lot_id=lot['relatedLot']) for lot in bid.get('lotValues')])
keys = set([u"{key}_{lot_id}".format(key=key,
lot_id=lot['relatedLot'])
for lot in bid.get('lotValues')])
else:
keys = set([key])
all_keys |= keys
Expand Down

0 comments on commit 90fc77a

Please sign in to comment.