From 610a3edd87663a9f2b0e2d9b42cf5a9c257e12ab Mon Sep 17 00:00:00 2001 From: Alice Heaton <aliceh@aptivate.org> Date: Tue, 28 Jul 2015 15:12:04 +0100 Subject: [PATCH] Use the API to fetch the list of categories used in the views&edit page. --- django/website/hid/tests/views_tests.py | 4 ++-- django/website/hid/views.py | 31 +++++++++---------------- 2 files changed, 13 insertions(+), 22 deletions(-) diff --git a/django/website/hid/tests/views_tests.py b/django/website/hid/tests/views_tests.py index 9ce9cd13..d6c65db3 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 3dffd826..a027f650 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 ) ] -- GitLab