diff --git a/django/website/hid/tests/views_tests.py b/django/website/hid/tests/views_tests.py index 9ce9cd1399d6e3f3db448ad387049d98572b856e..d6c65db3e74a2b9248134ed0d57962ee58904e87 100644 --- a/django/website/hid/tests/views_tests.py +++ b/django/website/hid/tests/views_tests.py @@ -128,7 +128,7 @@ def test_get_category_options_uses_terms(): ) view = ViewItems() - options = view.get_category_options(ebola_questions.id) + options = view.get_category_options(ebola_questions.slug) assert (type_1.name, type_1.long_name) in options assert (type_2.name, type_2.long_name) in options @@ -174,7 +174,7 @@ def test_get_category_options_orders_by_lowercase_name(): ) view = ViewItems() - options = view.get_category_options(ebola_questions.id) + options = view.get_category_options(ebola_questions.slug) # Make sure we are only comparing with out test values! options = [o for o in options if o in test_term_values] diff --git a/django/website/hid/views.py b/django/website/hid/views.py index 3dffd8269d33c23e3cc4997b1c4c3496d070aac8..a027f650a5a6d0b18d3180e4d93ce75624e0f320 100644 --- a/django/website/hid/views.py +++ b/django/website/hid/views.py @@ -13,7 +13,6 @@ from django.views.generic.base import TemplateView from django_tables2 import SingleTableView from chn_spreadsheet.importer import Importer, SheetImportException -from data_layer.models import Term import transport from transport.exceptions import TransportException from .assets import require_assets @@ -89,26 +88,18 @@ class ViewItems(SingleTableView): def get_queryset(self): return transport.items.list() - def get_category_options(self, categories_id=None): - # TODO: Use data layer - terms = self.get_matching_terms(categories_id) - return tuple((t.name, t.long_name) for t in terms) - - def get_matching_terms(self, categories_id): - if categories_id is None: - return (Term.objects - .extra(select={'name_lower': 'lower(name)'}) - .order_by('name_lower') - .all()) - - return (Term.objects - .extra(select={'name_lower': 'lower(name)'}) - .order_by('name_lower') - .filter(taxonomy__id=categories_id)) + def get_category_options(self, taxonomy_slug=None): + if taxonomy_slug is not None: + terms = transport.terms.list(taxonomy=taxonomy_slug) + else: + terms = transport.terms.list() + terms.sort(key=lambda e: e['name'].lower()) + return tuple((t['name'], t['long_name']) for t in terms) def get_table(self, **kwargs): - # TODO: Filter on taxonomy - kwargs['categories'] = self.get_category_options() + kwargs['categories'] = self.get_category_options( + QUESTION_TYPE_TAXONOMY + ) return super(ViewItems, self).get_table(**kwargs) def get_context_data(self, **kwargs): @@ -127,7 +118,7 @@ class ViewItems(SingleTableView): label=_('Set question type'), items=[(short_name, short_name) for short_name, long_name - in self.get_category_options()], + in self.get_category_options(QUESTION_TYPE_TAXONOMY)], prefix=ADD_CATEGORY_PREFIX ) ]