Skip to content

Commit

Permalink
Merge pull request #41 from kelockhart/myads-ui-edits
Browse files Browse the repository at this point in the history
Edits per testing comments
  • Loading branch information
kelockhart authored Dec 6, 2019
2 parents ec834ca + e2b84cd commit 2705004
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 11 deletions.
5 changes: 3 additions & 2 deletions scripts/automated_import.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,9 @@ def import_from_classic(filename=None, do_import=False, email_address=None, forc
for k, v in data.items():
force = force
user_id = None
r = current_app.config['USER_EMAIL_ADSWS_API_URL'] % k
if r == 200:
r = current_app.client.get(current_app.config['USER_EMAIL_ADSWS_API_URL'] % k,
headers={'Authorization': 'Bearer {0}'.format(current_app.config['VAULT_OAUTH_CLIENT_TOKEN'])})
if r.status_code == 200:
user_id = r.json()['id']
# if not, check if k exists in harbour (and get user_id)
if not user_id:
Expand Down
43 changes: 41 additions & 2 deletions vault_service/tests/test_user.py
Original file line number Diff line number Diff line change
Expand Up @@ -425,13 +425,52 @@ def test_template_query(self):

self.assertStatus(r, 200)

# check editing the query name
r = self.client.put(url_for('user.myads_notifications', myads_id=query_id),
headers={'Authorization': 'secret', 'X-Adsws-Uid': '4'},
data=json.dumps({'type': 'template',
'template': 'arxiv',
'name': 'keyword1, etc. - Recent Papers',
'data': 'keyword2 OR keyword3',
'classes': ['astro-ph']}),
content_type='application/json')

self.assertStatus(r, 200)
# name was provided, but it was constructed, so the name should be updated
self.assertEquals(r.json['name'], 'keyword2, etc. - Recent Papers')

r = self.client.put(url_for('user.myads_notifications', myads_id=query_id),
headers={'Authorization': 'secret', 'X-Adsws-Uid': '4'},
data=json.dumps({'type': 'template',
'template': 'arxiv',
'name': 'test query',
'data': 'keyword2 OR keyword3',
'classes': ['astro-ph']}),
content_type='application/json')

self.assertStatus(r, 200)
# a non-constructed name was provided - use that
self.assertEquals(r.json['name'], 'test query')

r = self.client.put(url_for('user.myads_notifications', myads_id=query_id),
headers={'Authorization': 'secret', 'X-Adsws-Uid': '4'},
data=json.dumps({'type': 'template',
'template': 'arxiv',
'data': 'keyword1 OR keyword2 OR keyword3',
'classes': ['astro-ph']}),
content_type='application/json')

self.assertStatus(r, 200)
# no name is provided, so keep the old provided name
self.assertEquals(r.json['name'], 'test query')

# check the exported setup
r = self.client.get(url_for('user.get_myads', user_id='4'),
headers={'Authorization': 'secret'})

self.assertStatus(r, 200)
self.assertEquals(r.json[0]['id'], query_id)
self.assertEquals(r.json[0]['name'], 'keyword1, etc. - Recent Papers')
self.assertEquals(r.json[0]['name'], 'test query')
self.assertFalse(r.json[0]['stateful'])
self.assertEquals(r.json[0]['type'], 'template')
self.assertTrue(r.json[0]['active'])
Expand All @@ -456,7 +495,7 @@ def test_template_query(self):
headers={'Authorization': 'secret', 'X-Adsws-Uid': '4'})

self.assertStatus(r, 200)
self.assertEquals(r.json[0]['name'], 'keyword1, etc. - Recent Papers')
self.assertEquals(r.json[0]['name'], 'test query')
self.assertEquals(r.json[1]['name'], 'Favorite Authors - Recent Papers')

if __name__ == '__main__':
Expand Down
32 changes: 25 additions & 7 deletions vault_service/views/user.py
Original file line number Diff line number Diff line change
Expand Up @@ -259,7 +259,9 @@ def myads_notifications(myads_id=None):
'active': s.active,
'frequency': s.frequency,
'template': s.template,
'created': s.created.isoformat()}
'data': s.data,
'created': s.created.isoformat(),
'updated': s.updated.isoformat()}
output.append(o)

return json.dumps(output), 200
Expand Down Expand Up @@ -318,7 +320,7 @@ def _create_myads_notification(payload=None, headers=None, user_id=None):
if 'template' not in payload:
return json.dumps({'msg': 'Bad data passed'}), 400

if not isinstance(payload.get('data'), basestring):
if not payload['template'] == 'arxiv' and not isinstance(payload.get('data'), basestring):
return json.dumps({'msg': 'Bad data passed'}), 400

if payload['template'] == 'arxiv':
Expand All @@ -337,7 +339,7 @@ def _create_myads_notification(payload=None, headers=None, user_id=None):
if payload['template'] == 'arxiv':
template = 'arxiv'
classes = payload['classes']
data = payload['data']
data = payload.get('data', None)
stateful = False
frequency = payload.get('frequency', 'daily')
name = '{0} - Recent Papers'.format(get_keyword_query_name(payload['data']))
Expand Down Expand Up @@ -452,13 +454,29 @@ def _edit_myads_notification(payload=None, headers=None, user_id=None, myads_id=
return json.dumps({'msg': 'Cannot edit template type'}), 400
# edit name to reflect potentially new data input
if payload.get('template', setup.template) == 'arxiv':
setup.name = '{0} - Recent Papers'.format(get_keyword_query_name(payload.get('data', setup.data)))
name_template = '{0} - Recent Papers'
# if a name is provided that wasn't just the old name, keep the new provided name
if payload.get('name', None) and payload.get('name') != setup.name:
setup.name = payload.get('name')
# if name wasn't provided, check saved name - update if templated name
elif setup.name == name_template.format(get_keyword_query_name(setup.data)):
setup.name = name_template.format(get_keyword_query_name(payload.get('data', setup.data)))
# if name wasn't provided and previous name wasn't templated, keep whatever was there
elif payload.get('template', setup.template) == 'citations':
setup.name = '{0} - Citations'.format(payload.get('data', setup.data))
name_template = '{0} - Citations'
if payload.get('name', None) and payload.get('name') != setup.name:
setup.name = payload.get('name')
elif setup.name == name_template.format(setup.data):
setup.name = name_template.format(payload.get('data', setup.data))
elif payload.get('template', setup.template) == 'authors':
setup.name = 'Favorite Authors - Recent Papers'
if payload.get('name', None) and payload.get('name') != setup.name:
setup.name = payload.get('name')
elif payload.get('template', setup.template) == 'keyword':
setup.name = '{0}'.format(get_keyword_query_name(payload.get('data', setup.data)))
name_template = '{0}'
if payload.get('name', None) and payload.get('name') != setup.name:
setup.name = payload.get('name')
elif setup.name == name_template.format(setup.data):
setup.name = '{0}'.format(get_keyword_query_name(payload.get('data', setup.data)))
else:
return json.dumps({'msg': 'Wrong template type passed'}), 400
if not isinstance(payload.get('data', setup.data), basestring):
Expand Down

0 comments on commit 2705004

Please sign in to comment.