From 92b5ddf656b7e52411ce9fd268dcaf5c732aba6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20=20MENAGER?= <herve.menager@pasteur.fr> Date: Sun, 3 Feb 2019 21:41:52 +0100 Subject: [PATCH] add sort option on number of tests in compounds list see #28 --- ippisite/ippidb/models.py | 2 ++ ippisite/ippidb/templates/compound_t_list.html | 2 +- ippisite/ippidb/views/compound_query.py | 4 +++- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ippisite/ippidb/models.py b/ippisite/ippidb/models.py index 3ad79fcc..2a72dc2c 100644 --- a/ippisite/ippidb/models.py +++ b/ippisite/ippidb/models.py @@ -436,6 +436,8 @@ class CompoundManager(models.Manager): qs = qs.annotate(cytoxtest_av=Cast(Max(Case(When(refcompoundbiblio__bibliography__cytotox=True, then=1), default=0, output_field=IntegerField())), BooleanField())) # in silico st performed qs = qs.annotate(insilico_av=Cast(Max(Case(When(refcompoundbiblio__bibliography__in_silico=True, then=1), default=0, output_field=IntegerField())), BooleanField())) + # number of tests available + qs = qs.annotate(tests_av=Count('compoundactivityresult', distinct=True)) #@formatter:on return qs diff --git a/ippisite/ippidb/templates/compound_t_list.html b/ippisite/ippidb/templates/compound_t_list.html index 770f2c53..7c40f7dd 100644 --- a/ippisite/ippidb/templates/compound_t_list.html +++ b/ippisite/ippidb/templates/compound_t_list.html @@ -46,7 +46,7 @@ <td scope="col">{{ compound.pubs }}</td> {% endif %} {% if "available_tests" in fields %} - <td scope="col">{{ compound.compoundactivityresult_set.count }}</td> + <td scope="col">{{ compound.tests_av }}</td> {% endif %} {% if "compound_action_ligand_ids" in fields %} <td scope="col"> diff --git a/ippisite/ippidb/views/compound_query.py b/ippisite/ippidb/views/compound_query.py index 4462b28a..2c1897ce 100644 --- a/ippisite/ippidb/views/compound_query.py +++ b/ippisite/ippidb/views/compound_query.py @@ -391,7 +391,7 @@ class CompoundListView(ListView): table_view_default_fields = ['id', 'canonical_smiles', 'common_name', 'molecular_weight', 'a_log_p', 'compound_action_ligand_ids', 'pubs'] - sort_by_option_ids = ['id', 'molecular_weight', 'a_log_p', 'nb_aromatic_sssr', 'nb_chiral_centers', 'pubs', 'le', 'lle', 'best_activity'] + sort_by_option_ids = ['id', 'molecular_weight', 'a_log_p', 'nb_aromatic_sssr', 'nb_chiral_centers', 'pubs', 'le', 'lle', 'best_activity', 'tests_av'] def get_ordering(self): # sort by options @@ -406,6 +406,8 @@ class CompoundListView(ListView): name = 'Lipophilic Efficiency' elif sort_by_option_id == 'best_activity': name = 'Best Activity' + elif sort_by_option_id == 'tests_av': + name = 'Number of tests available' else: name = compound_fields.get(sort_by_option_id) self.sort_by_options[sort_by_option_id] = {'name': name, 'order': 'ascending', 'id': sort_by_option_id} -- GitLab