From db7a68d98facbee7be08c64aa15971a50a5ceb3e Mon Sep 17 00:00:00 2001
From: Samuel Gaist <samuel.gaist@idiap.ch>
Date: Thu, 16 Jan 2020 15:04:04 +0100
Subject: [PATCH] [databases][models] Pre-commit cleanup

---
 beat/web/databases/models.py | 231 ++++++++++++++++++-----------------
 1 file changed, 122 insertions(+), 109 deletions(-)

diff --git a/beat/web/databases/models.py b/beat/web/databases/models.py
index 6179e2284..87e9a7f69 100755
--- a/beat/web/databases/models.py
+++ b/beat/web/databases/models.py
@@ -38,7 +38,6 @@ from beat.backend.python.hash import hashDataset
 
 from ..dataformats.models import DataFormat
 
-from ..common.models import Shareable
 from ..common.models import Versionable
 from ..common.models import VersionableManager
 from ..common.storage import OverwriteStorage
@@ -57,7 +56,7 @@ from ..code.models import get_source_code
 from ..code.models import set_source_code
 
 
-#----------------------------------------------------------
+# ----------------------------------------------------------
 
 
 def validate_database(declaration):
@@ -66,8 +65,10 @@ def validate_database(declaration):
     database = beat.core.database.Database(settings.PREFIX, declaration)
 
     if not database.valid:
-        errors = 'The database declaration is **invalid**. Errors:\n  * ' + \
-                 '\n  * '.join(database.errors)
+        errors = (
+            "The database declaration is **invalid**. Errors:\n  * "
+            + "\n  * ".join(database.errors)
+        )
         raise SyntaxError(errors)
 
     # TODO: for each protocol, if a template already exists, that the inserted
@@ -77,37 +78,42 @@ def validate_database(declaration):
     return database
 
 
-#----------------------------------------------------------
+# ----------------------------------------------------------
 
 
 class DatabaseStorage(OverwriteStorage):
-
     def __init__(self, *args, **kwargs):
-        super(DatabaseStorage, self).__init__(*args, location=settings.DATABASES_ROOT, **kwargs)
+        super(DatabaseStorage, self).__init__(
+            *args, location=settings.DATABASES_ROOT, **kwargs
+        )
 
 
-#----------------------------------------------------------
+# ----------------------------------------------------------
 
 
 class DatabaseManager(VersionableManager):
-
-
     def get_by_natural_key(self, name, version):
 
         return self.get(name=name, version=version)
 
-
-    def create_database(self, name, short_description='', description='',
-                        declaration=None, code=None, version=1,
-                        previous_version=None):
+    def create_database(
+        self,
+        name,
+        short_description="",
+        description="",
+        declaration=None,
+        code=None,
+        version=1,
+        previous_version=None,
+    ):
         """Convenience function to create a new database from its parts"""
 
         # Create the database representation
         database = self.model(
-            name = name,
-            version = version,
-            sharing = self.model.PRIVATE,
-            previous_version = previous_version,
+            name=name,
+            version=version,
+            sharing=self.model.PRIVATE,
+            previous_version=previous_version,
         )
 
         # Makes sure we get a declaration in string format
@@ -117,11 +123,11 @@ class DatabaseManager(VersionableManager):
             else:
                 default = beat.core.database.Database(settings.PREFIX, data=None)
                 declaration = default.data
-        elif not(isinstance(declaration, dict)):
+        elif not (isinstance(declaration, dict)):
             declaration = simplejson.loads(declaration)
 
         if len(short_description) > 0:
-            declaration['description'] = short_description
+            declaration["description"] = short_description
 
         database.declaration = declaration
 
@@ -130,7 +136,7 @@ class DatabaseManager(VersionableManager):
             if previous_version is not None:
                 code = previous_version.source_code
             else:
-                code = ''
+                code = ""
 
         database.source_code = code
 
@@ -139,7 +145,7 @@ class DatabaseManager(VersionableManager):
             if previous_version is not None:
                 description = previous_version.description
             else:
-                description = ''
+                description = ""
 
         database.description = description
 
@@ -148,68 +154,64 @@ class DatabaseManager(VersionableManager):
             database.save()
         except Exception:
             import traceback
+
             return (None, traceback.format_exc())
 
         return (database, None)
 
 
-#----------------------------------------------------------
+# ----------------------------------------------------------
 
 
 class Database(Versionable):
 
-    #_____ Fields __________
+    # _____ Fields __________
 
     declaration_file = models.FileField(
         storage=DatabaseStorage(),
         upload_to=get_contribution_declaration_filename,
-        blank=True, null=True,
+        blank=True,
+        null=True,
         max_length=200,
-        db_column='declaration'
+        db_column="declaration",
     )
 
     description_file = models.FileField(
         storage=DatabaseStorage(),
         upload_to=get_contribution_description_filename,
-        blank=True, null=True,
+        blank=True,
+        null=True,
         max_length=200,
-        db_column='description'
+        db_column="description",
     )
 
     source_code_file = models.FileField(
         storage=DatabaseStorage(),
         upload_to=get_contribution_source_code_filename,
-        blank=True, null=True,
+        blank=True,
+        null=True,
         max_length=200,
-        db_column='source_code'
+        db_column="source_code",
     )
 
-
     objects = DatabaseManager()
 
-
-    #_____ Meta parameters __________
+    # _____ Meta parameters __________
 
     class Meta(Versionable.Meta):
-        unique_together = ('name', 'version')
-
+        unique_together = ("name", "version")
 
-    #_____ Utilities __________
+    # _____ Utilities __________
 
     def get_absolute_url(self):
 
-        return reverse(
-            'databases:view',
-                args=(self.name, self.version,),
-        )
-
+        return reverse("databases:view", args=(self.name, self.version))
 
     def natural_key(self):
 
         return (self.name, self.version)
 
-
-    #_____ Overrides __________
+    # _____ Overrides __________
 
     def save(self, *args, **kwargs):
 
@@ -220,7 +222,11 @@ class Database(Versionable):
         wrapper = validate_database(declaration)
 
         # reset the description
-        self.short_description = wrapper.description if (wrapper is not None) and (wrapper.description is not None) else ''
+        self.short_description = (
+            wrapper.description
+            if (wrapper is not None) and (wrapper.description is not None)
+            else ""
+        )
 
         # Save the changed files (if necessary)
         storage.save_files(self)
@@ -229,27 +235,26 @@ class Database(Versionable):
 
         # if the filename has changed, move the declaration
         if self.declaration_filename() != self.declaration_file.name:
-            storage.rename_file(self, 'declaration_file', self.declaration_filename())
-            storage.rename_file(self, 'description_file', self.description_filename())
-            storage.rename_file(self, 'source_code_file', self.source_code_filename())
-
+            storage.rename_file(self, "declaration_file", self.declaration_filename())
+            storage.rename_file(self, "description_file", self.description_filename())
+            storage.rename_file(self, "source_code_file", self.source_code_filename())
 
-    #_____ Methods __________
+    # _____ Methods __________
 
     def fullname(self):
-        return '%s/%d' % (self.name, self.version)
+        return "%s/%d" % (self.name, self.version)
 
     def fullpath(self, extension):
         return os.path.join(self.name, str(self.version) + extension)
 
     def declaration_filename(self):
-        return self.fullpath('.json')
+        return self.fullpath(".json")
 
     def description_filename(self):
-        return self.fullpath('.rst')
+        return self.fullpath(".rst")
 
     def source_code_filename(self):
-        return self.fullpath('.py')
+        return self.fullpath(".py")
 
     def all_referenced_dataformats(self):
         result = []
@@ -263,7 +268,7 @@ class Database(Versionable):
             result.extend(database_protocol.all_needed_dataformats())
         return list(set(result))
 
-    #_____ Properties __________
+    # _____ Properties __________
 
     description = property(get_description, set_description)
     declaration = property(get_declaration, set_declaration)
@@ -271,16 +276,13 @@ class Database(Versionable):
     source_code = property(get_source_code, set_source_code)
 
 
-#----------------------------------------------------------
+# ----------------------------------------------------------
 
 
 class DatabaseProtocolManager(models.Manager):
-
     def get_by_natural_key(self, database_name, database_version, name):
         return self.get(
-            database__name=database_name,
-            database__version=database_version,
-            name=name,
+            database__name=database_name, database__version=database_version, name=name
         )
 
 
@@ -288,24 +290,26 @@ class DatabaseProtocol(models.Model):
 
     objects = DatabaseProtocolManager()
 
-    database = models.ForeignKey(Database, related_name='protocols',
-                                 on_delete=models.CASCADE)
+    database = models.ForeignKey(
+        Database, related_name="protocols", on_delete=models.CASCADE
+    )
     name = models.CharField(max_length=200, blank=True)
 
     class Meta:
-        unique_together = ('database', 'name')
-        ordering = ['name']
+        unique_together = ("database", "name")
+        ordering = ["name"]
 
     def __str__(self):
         return self.fullname()
 
     def natural_key(self):
         return self.database.natural_key() + (self.name,)
-    natural_key.dependencies = ['databases.database']
+
+    natural_key.dependencies = ["databases.database"]
 
     def fullname(self):
-        if self.name != '':
-            return self.database.fullname() + '@' + self.name
+        if self.name != "":
+            return self.database.fullname() + "@" + self.name
         else:
             return self.database.fullname()
 
@@ -322,16 +326,16 @@ class DatabaseProtocol(models.Model):
         return list(set(result))
 
     def set_template_basename(self):
-        if not self.sets.count(): return "unknown"
+        if not self.sets.count():
+            return "unknown"
         dbset = self.sets.all()[0]
-        return dbset.template.name.rsplit('__')[0]
+        return dbset.template.name.rsplit("__")[0]
 
 
-#----------------------------------------------------------
+# ----------------------------------------------------------
 
 
 class DatabaseSetTemplateManager(models.Manager):
-
     def get_by_natural_key(self, name):
         return self.get(name=name)
 
@@ -349,24 +353,24 @@ class DatabaseSetTemplate(models.Model):
         return (self.name,)
 
 
-#----------------------------------------------------------
+# ----------------------------------------------------------
 
 
 class DatabaseSetManager(models.Manager):
-
     def create(self, protocol, template, name):
         dataset = DatabaseSet(
-            name = name,
-            template = template,
-            protocol = protocol,
-            hash = hashDataset(protocol.database.fullname(), protocol.name, name)
+            name=name,
+            template=template,
+            protocol=protocol,
+            hash=hashDataset(protocol.database.fullname(), protocol.name, name),
         )
 
         dataset.save()
         return dataset
 
-
-    def get_by_natural_key(self, database_name, database_version, protocol_name, name, template_name):
+    def get_by_natural_key(
+        self, database_name, database_version, protocol_name, name, template_name
+    ):
         return self.get(
             protocol__database__name=database_name,
             protocol__database__version=database_version,
@@ -378,29 +382,34 @@ class DatabaseSetManager(models.Manager):
 
 class DatabaseSet(models.Model):
 
-    objects     = DatabaseSetManager()
+    objects = DatabaseSetManager()
 
-    protocol    = models.ForeignKey(DatabaseProtocol, related_name='sets',
-                                    on_delete=models.CASCADE)
-    name        = models.CharField(max_length=200, blank=True)
-    template    = models.ForeignKey(DatabaseSetTemplate, related_name='sets',
-                                    on_delete=models.CASCADE)
+    protocol = models.ForeignKey(
+        DatabaseProtocol, related_name="sets", on_delete=models.CASCADE
+    )
+    name = models.CharField(max_length=200, blank=True)
+    template = models.ForeignKey(
+        DatabaseSetTemplate, related_name="sets", on_delete=models.CASCADE
+    )
     hash = models.CharField(max_length=64, unique=True)
 
     class Meta:
-        unique_together = ('protocol', 'name', 'template')
+        unique_together = ("protocol", "name", "template")
 
     def __str__(self):
         return self.fullname()
 
     def natural_key(self):
         return self.protocol.natural_key() + (self.name,) + self.template.natural_key()
-    natural_key.dependencies = ['databases.databaseprotocol',
-                                'databases.databasesettemplate']
+
+    natural_key.dependencies = [
+        "databases.databaseprotocol",
+        "databases.databasesettemplate",
+    ]
 
     def fullname(self):
-        if self.name != '':
-            return self.protocol.fullname() + '.' + self.name
+        if self.name != "":
+            return self.protocol.fullname() + "." + self.name
         else:
             return self.protocol.fullname()
 
@@ -416,43 +425,44 @@ class DatabaseSet(models.Model):
         return list(set(result))
 
 
-#----------------------------------------------------------
+# ----------------------------------------------------------
 
 
 class DatabaseSetTemplateOutput(models.Model):
-    template        = models.ForeignKey(DatabaseSetTemplate,
-                                        related_name='outputs', on_delete=models.CASCADE)
-    name            = models.CharField(max_length=200)
-    dataformat      = models.ForeignKey(DataFormat,
-                                        related_name='database_outputs', on_delete=models.CASCADE)
+    template = models.ForeignKey(
+        DatabaseSetTemplate, related_name="outputs", on_delete=models.CASCADE
+    )
+    name = models.CharField(max_length=200)
+    dataformat = models.ForeignKey(
+        DataFormat, related_name="database_outputs", on_delete=models.CASCADE
+    )
 
     class Meta:
-        unique_together = ('template', 'name')
+        unique_together = ("template", "name")
 
     def __str__(self):
         return self.fullname()
 
     def fullname(self):
-        return self.template.name + '.' + self.name
+        return self.template.name + "." + self.name
 
 
-#----------------------------------------------------------
+# ----------------------------------------------------------
 
 
 class DatabaseSetOutputManager(models.Manager):
     def get_by_natural_key(self, set_natural_key, output_name):
         set_ = DatabaseSet.objects.get_by_natural_key(*set_natural_key)
-        return self.get(
-            set=set_,
-            template__name=output_name,
-        )
+        return self.get(set=set_, template__name=output_name)
 
 
 class DatabaseSetOutput(models.Model):
-    template = models.ForeignKey(DatabaseSetTemplateOutput,
-                                 related_name='instances', on_delete=models.CASCADE)
-    set = models.ForeignKey(DatabaseSet, related_name='outputs',
-                            on_delete=models.CASCADE)
+    template = models.ForeignKey(
+        DatabaseSetTemplateOutput, related_name="instances", on_delete=models.CASCADE
+    )
+    set = models.ForeignKey(
+        DatabaseSet, related_name="outputs", on_delete=models.CASCADE
+    )
 
     objects = DatabaseSetOutputManager()
 
@@ -460,7 +470,7 @@ class DatabaseSetOutput(models.Model):
         return self.fullname()
 
     def fullname(self):
-        return '%s.%s.%s.%s' % (
+        return "%s.%s.%s.%s" % (
             self.set.protocol.database.fullname(),
             self.set.protocol.name,
             self.set.name,
@@ -475,5 +485,8 @@ class DatabaseSetOutput(models.Model):
 
     def natural_key(self):
         return (self.set.natural_key(), self.template.name)
-    natural_key.dependencies = ['databases.databasesettemplateoutput',
-                                'databases.databaseset']
+
+    natural_key.dependencies = [
+        "databases.databasesettemplateoutput",
+        "databases.databaseset",
+    ]
-- 
GitLab