diff --git a/backend/metagenedb/apps/catalog/admin/function.py b/backend/metagenedb/apps/catalog/admin/function.py index 5c4c2e0175b26c7a0c1b20c0ddda4edf1a464165..ac8c885a40f3c996c025dd75d731b2601372be07 100644 --- a/backend/metagenedb/apps/catalog/admin/function.py +++ b/backend/metagenedb/apps/catalog/admin/function.py @@ -20,9 +20,15 @@ class FunctionAdmin(admin.ModelAdmin): @admin.register(EggNog) class EggNogAdmin(admin.ModelAdmin): - list_display = ('function_id', 'name', 'functional_category') + list_display = ('function_id', 'name', 'get_functional_categories') search_fields = ('function_id', 'name') + def get_functional_categories(self, obj): + if obj.functional_categories.all(): + return ",".join([str(f) for f in obj.functional_categories.all()]) + return '-' + get_functional_categories.short_description = 'Functional categories' + @admin.register(EggNogFunctionalCategory) class EggNogFunctionalCategoryAdmin(admin.ModelAdmin): diff --git a/backend/metagenedb/apps/catalog/migrations/0015_m2m_func_cat_eggnog.py b/backend/metagenedb/apps/catalog/migrations/0015_m2m_func_cat_eggnog.py new file mode 100644 index 0000000000000000000000000000000000000000..c784d39de4d7fa7fb43061a6ee5f21d07b87dcf6 --- /dev/null +++ b/backend/metagenedb/apps/catalog/migrations/0015_m2m_func_cat_eggnog.py @@ -0,0 +1,34 @@ +# Generated by Django 3.0 on 2019-12-10 14:28 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('catalog', '0014_eggnog_name_length'), + ] + + operations = [ + migrations.AlterModelOptions( + name='eggnog', + options={'verbose_name': 'EggNOG', 'verbose_name_plural': 'EggNOGs'}, + ), + migrations.AlterModelOptions( + name='eggnogfunctionalcategory', + options={'verbose_name': 'EggNOG functional category', 'verbose_name_plural': 'EggNOG functional categories'}, + ), + migrations.AlterModelOptions( + name='keggorthology', + options={'verbose_name': 'KEGG orthology', 'verbose_name_plural': 'KEGG orthologies'}, + ), + migrations.RemoveField( + model_name='eggnog', + name='functional_category', + ), + migrations.AddField( + model_name='eggnog', + name='functional_categories', + field=models.ManyToManyField(to='catalog.EggNogFunctionalCategory'), + ), + ] diff --git a/backend/metagenedb/apps/catalog/models/function.py b/backend/metagenedb/apps/catalog/models/function.py index cf27a27a0459f81bb5414054be32e1e10baa6bfb..7a71d293330bbf4e65cfd05458334401cb687548 100644 --- a/backend/metagenedb/apps/catalog/models/function.py +++ b/backend/metagenedb/apps/catalog/models/function.py @@ -32,23 +32,8 @@ class KeggOrthology(Function): super(KeggOrthology, self).__init__(source=self.SOURCE, *args, **kwargs) class Meta: - verbose_name_plural = "Kegg orthologies" - - -class EggNog(Function): - SOURCE = 'eggnog' - - functional_category = models.ForeignKey( - 'EggNogFunctionalCategory', related_name='eggnogs', - on_delete=models.SET_NULL, - null=True, blank=True - ) - - def __init__(self, *args, **kwargs): - super(EggNog, self).__init__(source=self.SOURCE, *args, **kwargs) - - class Meta: - verbose_name_plural = "EggNog" + verbose_name = "KEGG orthology" + verbose_name_plural = "KEGG orthologies" class EggNogFunctionalCategory(models.Model): @@ -67,4 +52,18 @@ class EggNogFunctionalCategory(models.Model): return f"{self.category_id} ({self.name})" class Meta: - verbose_name_plural = "EggNog Functional categories" + verbose_name = "EggNOG functional category" + verbose_name_plural = "EggNOG functional categories" + + +class EggNog(Function): + SOURCE = 'eggnog' + + functional_categories = models.ManyToManyField(EggNogFunctionalCategory) + + def __init__(self, *args, **kwargs): + super(EggNog, self).__init__(source=self.SOURCE, *args, **kwargs) + + class Meta: + verbose_name = "EggNOG" + verbose_name_plural = "EggNOGs"