Skip to content

Commit

Permalink
Merge pull request #26 from Scandie/a912343845581673_update_streams_view
Browse files Browse the repository at this point in the history
A912343845581673 update streams view
  • Loading branch information
leits committed Nov 19, 2018
2 parents cabe575 + c84e23d commit 33a5a7c
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 27 deletions.
1 change: 1 addition & 0 deletions openprocurement/chronograph/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
# value should be greater than SMOOTHING_MIN and SMOOTHING_REMIN
SMOOTHING_MAX = 300
NOT_CLASSIC_AUCTIONS = ['dgfInsider', 'sellout.insider']
STREAMS_KEYS = ['streams', 'dutch_streams', 'texas_streams']
DEFAULT_STREAMS_DOC = {
'_id': STREAMS_ID,
'streams': 10,
Expand Down
25 changes: 24 additions & 1 deletion openprocurement/chronograph/tests/test.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,10 @@ def test_streams(self):
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.json, DEFAULT_STREAMS_DOC['dutch_streams'])

response = self.app.get('/streams?texas_streams=true')
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.json, DEFAULT_STREAMS_DOC['texas_streams'])

# POST /streams
response = self.app.post('/streams', {'streams': 20})
self.assertEqual(response.status, '200 OK')
Expand All @@ -110,15 +114,30 @@ def test_streams(self):
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.json, 21)

# POST /streams
response = self.app.post('/streams', {'texas_streams': 42})
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.json, True)

# GET /streams
response = self.app.get('/streams?texas_streams=true')
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.json, 42)


# POST /streams
response = self.app.post('/streams', {'streams': -20})
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.json, False)
response = self.app.post('/streams', {'dutch_streams': -20})
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.json, False)
response = self.app.post('/streams', {'texas_streams': -20})
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.json, False)
response = self.app.post('/streams', {'streams': 11,
'dutch_streams': 12})
'dutch_streams': 12,
'texas_streams': 13})
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.json, True)

Expand All @@ -131,6 +150,10 @@ def test_streams(self):
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.json, 12)

response = self.app.get('/streams?texas_streams=true')
self.assertEqual(response.status, '200 OK')
self.assertEqual(response.json, 13)

# POST /streams
response = self.app.patch('/streams')
self.assertEqual(response.status, '200 OK')
Expand Down
16 changes: 5 additions & 11 deletions openprocurement/chronograph/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,25 +107,19 @@ def delete_holiday(db, day):
db.save(calendar)


def get_streams(db, streams_id=STREAMS_ID, classic_auction=True):
def get_streams(db, stream_key='streams', streams_id=STREAMS_ID):
"""
Backward compatibility version of managers.BaseAuctionsManager method,
which is left due to views.streams_view dependency
"""
streams = db.get(streams_id, deepcopy(DEFAULT_STREAMS_DOC))
if classic_auction:
return streams.get('streams', DEFAULT_STREAMS_DOC['streams'])
else:
return streams.get('dutch_streams',
DEFAULT_STREAMS_DOC['dutch_streams'])
return streams.get(stream_key, DEFAULT_STREAMS_DOC[stream_key])


def set_streams(db, streams=None, dutch_streams=None, streams_id=STREAMS_ID):
def set_streams(db, streams=None, stream_key=None, streams_id=STREAMS_ID):
streams_doc = db.get(streams_id, deepcopy(DEFAULT_STREAMS_DOC))
if streams is not None:
streams_doc['streams'] = streams
if dutch_streams is not None:
streams_doc['dutch_streams'] = dutch_streams
if streams is not None and stream_key is not None:
streams_doc[stream_key] = streams
db.save(streams_doc)


Expand Down
30 changes: 15 additions & 15 deletions openprocurement/chronograph/views.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
from pyramid.view import view_config

from openprocurement.chronograph.constants import STREAMS_KEYS
from openprocurement.chronograph.scheduler import (
get_calendar,
recheck_auction,
Expand Down Expand Up @@ -63,22 +65,20 @@ def calendar_entry_view(request):
@view_config(route_name='streams', renderer='json')
def streams_view(request):
if request.method == 'GET':
classic_auction = request.params.get('dutch_streams', '') not in [
'True', 'true', 'y', 'yes', 'Yes'
]
return get_streams(request.registry.db,
classic_auction=classic_auction)
for stream_key in STREAMS_KEYS:
if request.params.get(stream_key, '') in [
'True', 'true', 'y', 'yes', 'Yes'
]:
break
else:
stream_key = 'streams'
return get_streams(request.registry.db, stream_key)
elif request.method == 'POST':
streams = request.params.get('streams', '')
dutch_streams = request.params.get('dutch_streams', '')
result = False
if streams and streams.isdigit():
set_streams(request.registry.db,
streams=int(streams))
result = True
if dutch_streams and dutch_streams.isdigit():
set_streams(request.registry.db,
dutch_streams=int(dutch_streams))
result = True
for stream_key in STREAMS_KEYS:
streams = request.params.get(stream_key, '')
if streams and streams.isdigit():
set_streams(request.registry.db, int(streams), stream_key)
result = True
return result
return False

0 comments on commit 33a5a7c

Please sign in to comment.