Skip to content

Commit

Permalink
Merge pull request #15 from openprocurement/a148438653129104_update_a…
Browse files Browse the repository at this point in the history
…fter

Update after
  • Loading branch information
kroman0 committed Jul 8, 2016
2 parents 6fce783 + 424a968 commit 5b97416
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 14 deletions.
44 changes: 34 additions & 10 deletions openprocurement/contracting/api/tests/contract.py
Original file line number Diff line number Diff line change
Expand Up @@ -113,10 +113,17 @@ def test_listing(self):
self.assertEqual(response.content_type, 'application/json')
contracts.append(response.json['data'])

ids = ','.join([i['id'] for i in contracts])

while True:
response = self.app.get('/contracts')
self.assertEqual(response.status, '200 OK')
self.assertTrue(ids.startswith(','.join([i['id'] for i in response.json['data']])))
if len(response.json['data']) == 3:
break

response = self.app.get('/contracts')
self.assertEqual(response.status, '200 OK')
self.assertEqual(len(response.json['data']), 3)
self.assertEqual(','.join([i['id'] for i in response.json['data']]), ids)
self.assertEqual(set(response.json['data'][0]), set([u'id', u'dateModified']))
self.assertEqual(set([i['id'] for i in response.json['data']]), set([i['id'] for i in contracts]))
self.assertEqual(set([i['dateModified'] for i in response.json['data']]),
Expand Down Expand Up @@ -178,8 +185,11 @@ def test_listing(self):
self.assertEqual(response.status, '201 Created')
self.assertEqual(response.content_type, 'application/json')

response = self.app.get('/contracts?mode=test')
self.assertEqual(response.status, '200 OK')
while True:
response = self.app.get('/contracts?mode=test')
self.assertEqual(response.status, '200 OK')
if len(response.json['data']) == 1:
break
self.assertEqual(len(response.json['data']), 1)

response = self.app.get('/contracts?mode=_all_')
Expand All @@ -202,9 +212,17 @@ def test_listing_changes(self):
self.assertEqual(response.content_type, 'application/json')
contracts.append(response.json['data'])

response = self.app.get('/contracts?feed=changes')
self.assertEqual(response.status, '200 OK')
ids = ','.join([i['id'] for i in contracts])

while True:
response = self.app.get('/contracts?feed=changes')
self.assertEqual(response.status, '200 OK')
self.assertTrue(ids.startswith(','.join([i['id'] for i in response.json['data']])))
if len(response.json['data']) == 3:
break

self.assertEqual(len(response.json['data']), 3)
self.assertEqual(','.join([i['id'] for i in response.json['data']]), ids)
self.assertEqual(set(response.json['data'][0]), set([u'id', u'dateModified']))
self.assertEqual(set([i['id'] for i in response.json['data']]), set([i['id'] for i in contracts]))
self.assertEqual(set([i['dateModified'] for i in response.json['data']]),
Expand Down Expand Up @@ -263,8 +281,11 @@ def test_listing_changes(self):
self.assertEqual(response.status, '201 Created')
self.assertEqual(response.content_type, 'application/json')

response = self.app.get('/contracts?feed=changes&mode=test')
self.assertEqual(response.status, '200 OK')
while True:
response = self.app.get('/contracts?feed=changes&mode=test')
self.assertEqual(response.status, '200 OK')
if len(response.json['data']) == 1:
break
self.assertEqual(len(response.json['data']), 1)

response = self.app.get('/contracts?feed=changes&mode=_all_')
Expand Down Expand Up @@ -306,8 +327,11 @@ def test_not_found(self):
contract = response.json['data']
self.assertEqual(contract['id'], test_contract_data['id'])

response = self.app.get('/contracts')
self.assertEqual(response.status, '200 OK')
while True:
response = self.app.get('/contracts')
self.assertEqual(response.status, '200 OK')
if len(response.json['data']) == 1:
break
self.assertEqual(len(response.json['data']), 1)

tender_id = test_contract_data['tender_id']
Expand Down
14 changes: 10 additions & 4 deletions openprocurement/contracting/api/views/contract.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
from functools import partial
from logging import getLogger
from openprocurement.api.utils import (
context_unpack,
Expand Down Expand Up @@ -49,6 +50,7 @@ class ContractsResource(APIResource):
def __init__(self, request, context):
super(ContractsResource, self).__init__(request, context)
self.server = request.registry.couchdb_server
self.update_after = request.registry.update_after

@json_view(permission='view_contract')
def get(self):
Expand Down Expand Up @@ -100,29 +102,33 @@ def get(self):
else:
view_offset = '9' if descending else ''
list_view = view_map.get(mode, view_map[u''])
if self.update_after:
view = partial(list_view, self.db, limit=view_limit, startkey=view_offset, descending=descending, stale='update_after')
else:
view = partial(list_view, self.db, limit=view_limit, startkey=view_offset, descending=descending)
if fields:
if not changes and set(fields).issubset(set(FIELDS)):
results = [
(dict([(i, j) for i, j in x.value.items() + [('id', x.id), ('dateModified', x.key)] if i in view_fields]), x.key)
for x in list_view(self.db, limit=view_limit, startkey=view_offset, descending=descending)
for x in view()
]
elif changes and set(fields).issubset(set(FIELDS)):
results = [
(dict([(i, j) for i, j in x.value.items() + [('id', x.id)] if i in view_fields]), x.key)
for x in list_view(self.db, limit=view_limit, startkey=view_offset, descending=descending)
for x in view()
]
elif fields:
self.LOGGER.info('Used custom fields for tenders list: {}'.format(','.join(sorted(fields))),
extra=context_unpack(self.request, {'MESSAGE_ID': 'tender_list_custom'}))

results = [
(contract_serialize(self.request, i[u'doc'], view_fields), i.key)
for i in list_view(self.db, limit=view_limit, startkey=view_offset, descending=descending, include_docs=True)
for i in view()
]
else:
results = [
({'id': i.id, 'dateModified': i.value['dateModified']} if changes else {'id': i.id, 'dateModified': i.key}, i.key)
for i in list_view(self.db, limit=view_limit, startkey=view_offset, descending=descending)
for i in view()
]
if results:
params['offset'], pparams['offset'] = results[-1][1], results[0][1]
Expand Down

0 comments on commit 5b97416

Please sign in to comment.