Skip to content

Commit

Permalink
Merge pull request #28 from golnazads/master
Browse files Browse the repository at this point in the history
fixed a bug in refereed/non-refereed conversion
  • Loading branch information
golnazads committed Mar 23, 2018
2 parents 05992cd + 61c64c7 commit 9c5e8a1
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 17 deletions.
2 changes: 1 addition & 1 deletion tugboat/tests/tests_functional/test_selenium.py
Expand Up @@ -63,7 +63,7 @@ def url_for(self, view):
"""
Get the url for a live server with the relevant view
"""
return '{}/{}'.format(self.get_server_url(), view)
return '{}/tugboat/{}'.format(self.get_server_url(), view)

def test_server_firefox(self):
"""
Expand Down
23 changes: 16 additions & 7 deletions tugboat/tests/tests_unit/test_search_redirect.py
Expand Up @@ -234,9 +234,16 @@ def test_article_sel(self):
req.args.update(self.append_default_weights())
view = ClassicSearchRedirectView()
search = view.translate(req)
self.assertEqual('q=*:*&fq=' + urllib.quote('{!type=aqp v=$fq_doctype}&fq_doctype=(doctype:"article")') +
self.assertEqual('q=*:*&fq=' + urllib.quote('{') + '!' + urllib.quote('type=aqp v=$fq_property}') +
'&fq_property=(' + urllib.quote("article") + ')' +
'&sort=' + urllib.quote('date desc, bibcode desc'), search)

req.args = MultiDict([('article_sel', 'NO')])
req.args.update(self.append_default_weights())
view = ClassicSearchRedirectView()
search = view.translate(req)
self.assertEqual('q=*:*' + '&sort=' + urllib.quote('date desc, bibcode desc') +
'&error_message=' + urllib.quote('Invalid value for article_sel: NO'), search)

def test_data_link(self):
"""data_link to property:data"""
Expand Down Expand Up @@ -280,13 +287,13 @@ def test_multiple_link_properties(self):
req = Request('get', 'http://test.test?')
req.prepare()
req.mimetype = None
req.args = MultiDict([('article_sel', 'YES'), ('data_link', 'YES')])
req.args = MultiDict([('open_link', 'YES'), ('data_link', 'YES')])
req.args.update(self.append_default_weights())
view = ClassicSearchRedirectView()
search = view.translate(req)
# should comparison permit fq clauses to be in different order?
self.assertEqual('q=*:*&fq=' + urllib.quote('{!type=aqp v=$fq_doctype}&fq_doctype=(doctype:"data")') +
'&fq=' + urllib.quote('{!type=aqp v=$fq_doctype}&fq_doctype=(doctype:"article")') +
'&fq=' + urllib.quote('{!type=aqp v=$fq_doctype}&fq_doctype=(doctype:"OPENACCESS")') +
'&sort=' + urllib.quote('date desc, bibcode desc'),
search)

Expand Down Expand Up @@ -430,15 +437,17 @@ def test_jou_pick(self):
req.args.update(self.append_default_weights())
view = ClassicSearchRedirectView()
search = view.translate(req)
self.assertEqual('q=*:*&fq=' + urllib.quote('{!type=aqp v=$fq_property}&fq_property=(property:"refereed")') +
'&sort=' + urllib.quote('date desc, bibcode desc'), search) # only refereed
self.assertEqual('q=*:*&fq=' + urllib.quote('{') + '!' + urllib.quote('type=aqp v=$fq_property}') +
'&fq_property=(' + urllib.quote("refereed") + ')' +
'&sort=' + urllib.quote('date desc, bibcode desc'), search) # only refereed

req.args = MultiDict([('jou_pick', 'EXCL')])
req.args.update(self.append_default_weights())
view = ClassicSearchRedirectView()
search = view.translate(req)
self.assertEqual('q=*:*&fq=' + urllib.quote('{!type=aqp v=$fq_property}&fq_property=(property:"notrefereed")') +
'&sort=' + urllib.quote('date desc, bibcode desc'), search) # exclude refereed
self.assertEqual('q=*:*&fq=' + urllib.quote('{') + '!' + urllib.quote('type=aqp v=$fq_property}') +
'&fq_property=(' + urllib.quote("notrefereed") + ')' +
'&sort=' + urllib.quote('date desc, bibcode desc'), search) # exclude refereed

req.args = MultiDict([('jou_pick', 'foo')])
req.args.update(self.append_default_weights())
Expand Down
34 changes: 25 additions & 9 deletions tugboat/views.py
Expand Up @@ -237,12 +237,13 @@ def translate(self, request):
# consider using reflection to obtain this list
funcs = [self.translate_authors, self.translate_pubdate,
self.translate_entry_date, self.translate_results_subset,
self.translate_return_req, self.translate_qsearch,
self.translate_database, self.translate_property_filters,
self.translate_jou_pick, self.translate_data_entries,
self.translate_group_sel, self.translate_sort,
self.translate_to_ignore, self.translate_weights,
self.translate_arxiv_sel, self.translate_ref_stems,
self.translate_return_req, self.translate_article_sel,
self.translate_qsearch, self.translate_database,
self.translate_property_filters, self.translate_jou_pick,
self.translate_data_entries, self.translate_group_sel,
self.translate_sort, self.translate_to_ignore,
self.translate_weights, self.translate_arxiv_sel,
self.translate_ref_stems,
]
for f in funcs:
f(args) # each may contribute to self.translation singleton
Expand Down Expand Up @@ -270,6 +271,7 @@ def translate(self, request):
# pass their names out ads/bumblebee
solr_query += '&unprocessed_parameter=' + urllib.quote('Parameters not processed: ' + ' '.join(args.keys()))

print '.......solr_query=', solr_query
return solr_query


Expand Down Expand Up @@ -501,10 +503,12 @@ def translate_jou_pick(self, args):
pass
elif jou_pick == 'NO':
# only include refereed journals
self.translation.filter.append(urllib.quote('{!type=aqp v=$fq_property}&fq_property=(property:"refereed")'))
self.translation.filter.append(urllib.quote('{') + '!' + urllib.quote('type=aqp v=$fq_property}') + \
'&fq_property=(' + urllib.quote("refereed") + ')')
elif jou_pick == 'EXCL':
# only include non-refereed
self.translation.filter.append(urllib.quote('{!type=aqp v=$fq_property}&fq_property=(property:"notrefereed")'))
self.translation.filter.append(urllib.quote('{') + '!' + urllib.quote('type=aqp v=$fq_property}') + \
'&fq_property=(' + urllib.quote("notrefereed") + ')')
else:
self.translation.error_message.append(urllib.quote('Invalid value for jou_pick: {}'.format(jou_pick)))

Expand Down Expand Up @@ -640,14 +644,26 @@ def translate_property_filters(self, args):
several search fields translate to a Bumblebee filter query with property
"""
to_bbb_property = {'article_sel': 'article', 'data_link': 'data',
to_bbb_property = {'data_link': 'data',
'open_link': 'OPENACCESS', 'preprint_link': 'eprint'}
clauses = []
for key in to_bbb_property.keys():
if str(args.pop(key, None)).upper() == 'YES':
value = to_bbb_property[key]
self.translation.filter.append(urllib.quote('{{!type=aqp v=$fq_doctype}}&fq_doctype=(doctype:"{}")'.format(to_bbb_property.get(key))))

def translate_article_sel(self, args):
article_sel = args.pop('article_sel', None)
if article_sel is None:
pass
elif article_sel == 'YES':
# only include article journals
self.translation.filter.append(urllib.quote('{') + '!' + urllib.quote('type=aqp v=$fq_property}') + \
'&fq_property=(' + urllib.quote("article") + ')')
else:
self.translation.error_message.append(urllib.quote('Invalid value for article_sel: {}'.format(article_sel)))


def translate_qsearch(self, args):
"""translate qsearch parameter from single input form on classic_w_BBB_button.html
Expand Down

0 comments on commit 9c5e8a1

Please sign in to comment.