diff --git a/ippisite/ippidb/models.py b/ippisite/ippidb/models.py index f66785247c3bd1920bfa003913e8db407bf26305..5a5abf1b4c152854216596067dd03ed8bf5989b1 100644 --- a/ippisite/ippidb/models.py +++ b/ippisite/ippidb/models.py @@ -3,7 +3,7 @@ from __future__ import unicode_literals from django.db import models from django.forms import ModelForm -from .ws import get_pubmed_info, get_epo_info, get_uniprot_info, get_taxonomy_info +from .ws import get_pubmed_info, get_epo_info, get_uniprot_info, get_taxonomy_info, get_go_info class Bibliography(models.Model): """ @@ -68,6 +68,11 @@ class MolecularFunction(models.Model): go_id = models.CharField('Gene Ontology ID', unique=True, max_length=10) # GO term id format: 'GO:0000000' description = models.CharField('description', max_length=500) + def save(self, *args, **kwargs): + info = get_go_info(self.go_id) + self.description = info['label'] + super(MolecularFunction, self).save(*args, **kwargs) + def __str__(self): return self.description @@ -88,12 +93,19 @@ class Protein(models.Model): try: taxonomy = Taxonomy.objects.get(taxonomy_id=info['organism']) except Taxonomy.DoesNotExist: - tax_info = get_taxonomy_info(info['organism']) taxonomy = Taxonomy() taxonomy.taxonomy_id = info['organism'] taxonomy.save() self.organism = taxonomy super(Protein, self).save(*args, **kwargs) + for go_id in info['molecular_functions']: + try: + mol_function = MolecularFunction.objects.get(go_id=go_id) + except MolecularFunction.DoesNotExist: + mol_function = MolecularFunction() + mol_function.go_id = go_id + mol_function.save() + self.molecular_functions.add(mol_function) class Domain(models.Model): pfam_acc = models.CharField('Pfam Accession', max_length=10, unique=True)