diff --git a/ippisite/ippidb/management/commands/import_v1_data.py b/ippisite/ippidb/management/commands/import_v1_data.py index c49cf75e5a455aac7105bef7eaa7d1a7999ab06f..22a073ef0729f7b6508e2dbbe56e1deb9c8124a1 100644 --- a/ippisite/ippidb/management/commands/import_v1_data.py +++ b/ippisite/ippidb/management/commands/import_v1_data.py @@ -1,27 +1,60 @@ from django.core.management import BaseCommand import mysql.connector -from ippidb.models import Bibliography +from ippidb.models import Bibliography, Protein class Command(BaseCommand): + help = "Import data from the local v1 database" + def add_arguments(self, parser): + parser.add_argument( + '--bibliographies', + action='store_true', + dest='bibliographies', + default=False, + help='Flush and migrate bibliographies', + ) + parser.add_argument( + '--proteins', + action='store_true', + dest='proteins', + default=False, + help='Flush and migrate proteins', + ) + def handle(self, *args, **options): conn = mysql.connector.connect(host="localhost",user="root",password="ippidb", database="ippidb") cursor = conn.cursor() - cursor.execute("""SELECT * FROM biblio""") - rows = cursor.fetchall() - Bibliography.objects.all().delete() - self.stdout.write(self.style.SUCCESS('Successfully flushed bibliography table')) - for row in rows: - try: - b = Bibliography() - if row[1]=='article': - b.source = 'PM' + if options['bibliographies']: + cursor.execute("""SELECT * FROM biblio""") + rows = cursor.fetchall() + Bibliography.objects.all().delete() + self.stdout.write(self.style.SUCCESS('Successfully flushed bibliography table')) + for row in rows: + try: + b = Bibliography() + if row[1]=='article': + b.source = 'PM' + else: + b.source = 'PT' + b.id_source = row[2] + b.save() + except Exception as e: + self.stdout.write(self.style.ERROR('Failed inserting {}'.format(row[2]))) + else: + self.stdout.write(self.style.SUCCESS('Successfully inserted {}'.format(row[2]))) + if options['proteins']: + cursor.execute("""SELECT * FROM protein""") + rows = cursor.fetchall() + Protein.objects.all().delete() + self.stdout.write(self.style.SUCCESS('Successfully flushed protein table')) + for row in rows: + try: + p = Protein() + p.uniprot_id = row[1] + p.save() + except Exception as e: + self.stdout.write(self.style.ERROR('Failed inserting {} {}'.format(row[1], row[2]))) else: - b.source = 'PT' - b.id_source = row[2] - b.save() - except Exception as e: - self.stdout.write(self.style.ERROR('Failed inserting {}'.format(row[2]))) - else: - self.stdout.write(self.style.SUCCESS('Successfully inserted {}'.format(row[2]))) + self.stdout.write(self.style.SUCCESS('Successfully inserted {} {}'.format(row[1], row[2]))) +