From 1ea5460113db01c6fbd9ac45fe5eff308b5c73ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20M=C3=A9nager?= <herve.menager@pasteur.fr> Date: Thu, 19 Dec 2019 15:27:12 +0100 Subject: [PATCH] make Compound families a cached property to have it ready in qs this is to FIX #168 --- .../migrations/0040_compound_families.py | 18 ++++++++++++++++++ ippisite/ippidb/models.py | 12 +++++------- ippisite/ippidb/templates/compound_t_list.html | 2 +- 3 files changed, 24 insertions(+), 8 deletions(-) create mode 100644 ippisite/ippidb/migrations/0040_compound_families.py diff --git a/ippisite/ippidb/migrations/0040_compound_families.py b/ippisite/ippidb/migrations/0040_compound_families.py new file mode 100644 index 00000000..fa2b630f --- /dev/null +++ b/ippisite/ippidb/migrations/0040_compound_families.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.1 on 2019-12-19 14:19 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('ippidb', '0039_auto_20191216_1438'), + ] + + operations = [ + migrations.AddField( + model_name='compound', + name='families', + field=models.TextField(blank=True, null=True, verbose_name='PPI family names'), + ), + ] diff --git a/ippisite/ippidb/models.py b/ippisite/ippidb/models.py index 6af2ed38..70d5d2e2 100644 --- a/ippisite/ippidb/models.py +++ b/ippisite/ippidb/models.py @@ -714,6 +714,8 @@ class Compound(AutoFillableModel): best_activity_ppi_family_name = models.CharField( "Best activity PPI family name", max_length=30, null=True, blank=True ) + families = models.TextField("PPI family names", null=True, blank=True) + le = models.FloatField(verbose_name="Ligand efficiency", null=True, blank=True) lle = models.FloatField(verbose_name="Lipophilic efficiency", null=True, blank=True) lipinsky_mw = models.BooleanField("MW ok for Lipinsky", null=True, blank=True) @@ -875,13 +877,6 @@ class Compound(AutoFillableModel): .count() ) - @property - def families(self): - """ - return the all PPI families for PPIs involved in the compound activity of the compound - """ - return list(set([ca.ppi.family for ca in self.compoundaction_set.all()])) - @property def sorted_similar_drugbank_compounds(self): return self.drugbankcompoundtanimoto_set.order_by("-tanimoto") @@ -1283,6 +1278,9 @@ class Contribution(models.Model): def update_compound_cached_properties(): + for c in Compound.objects.all(): + c.families = ', '.join(list(set([ca.ppi.family.name for ca in c.compoundaction_set.all()]))) + c.save() Compound.objects.update( pubs=Subquery( Compound.objects.filter(id=OuterRef("id")) diff --git a/ippisite/ippidb/templates/compound_t_list.html b/ippisite/ippidb/templates/compound_t_list.html index 43fba1c5..09b6e2ec 100644 --- a/ippisite/ippidb/templates/compound_t_list.html +++ b/ippisite/ippidb/templates/compound_t_list.html @@ -40,7 +40,7 @@ <td scope="col">{{ compound.common_name|default_if_none:"-" }}</td> {% endif %} {% if "families" in fields %} - <td scope="col">{% for family in compound.families %}{{ family.name }}{% if not forloop.last %}, {% endif %}{% endfor %}</td> + <td scope="col">{{ compound.families }}</td> {% endif %} {% if "pubs" in fields %} <td scope="col">{{ compound.pubs }}</td> -- GitLab