diff options
| -rw-r--r-- | pydis_site/apps/api/models/bot/filter_list.py | 2 | ||||
| -rw-r--r-- | pydis_site/apps/api/models/mixins.py | 31 | ||||
| -rw-r--r-- | pydis_site/apps/api/models/utils.py | 30 | 
3 files changed, 32 insertions, 31 deletions
| diff --git a/pydis_site/apps/api/models/bot/filter_list.py b/pydis_site/apps/api/models/bot/filter_list.py index cb4acb68..d279e137 100644 --- a/pydis_site/apps/api/models/bot/filter_list.py +++ b/pydis_site/apps/api/models/bot/filter_list.py @@ -1,6 +1,6 @@  from django.db import models -from pydis_site.apps.api.models.utils import ModelReprMixin, ModelTimestampMixin +from pydis_site.apps.api.models.mixins import ModelReprMixin, ModelTimestampMixin  class FilterList(ModelTimestampMixin, ModelReprMixin, models.Model): diff --git a/pydis_site/apps/api/models/mixins.py b/pydis_site/apps/api/models/mixins.py new file mode 100644 index 00000000..5d75b78b --- /dev/null +++ b/pydis_site/apps/api/models/mixins.py @@ -0,0 +1,31 @@ +from operator import itemgetter + +from django.db import models + + +class ModelReprMixin: +    """Mixin providing a `__repr__()` to display model class name and initialisation parameters.""" + +    def __repr__(self): +        """Returns the current model class name and initialisation parameters.""" +        attributes = ' '.join( +            f'{attribute}={value!r}' +            for attribute, value in sorted( +                self.__dict__.items(), +                key=itemgetter(0) +            ) +            if not attribute.startswith('_') +        ) +        return f'<{self.__class__.__name__}({attributes})>' + + +class ModelTimestampMixin(models.Model): +    """Mixin providing created_at and updated_at fields.""" + +    created_at = models.DateTimeField(auto_now_add=True) +    updated_at = models.DateTimeField(auto_now=True) + +    class Meta: +        """Metaconfig for the mixin.""" + +        abstract = True diff --git a/pydis_site/apps/api/models/utils.py b/pydis_site/apps/api/models/utils.py index 692d14f7..107231ba 100644 --- a/pydis_site/apps/api/models/utils.py +++ b/pydis_site/apps/api/models/utils.py @@ -1,10 +1,8 @@  from collections.abc import Mapping -from operator import itemgetter  from typing import Any, Dict  from django.core.exceptions import ValidationError  from django.core.validators import MaxLengthValidator, MinLengthValidator -from django.db import models  def is_bool_validator(value: Any) -> None: @@ -173,31 +171,3 @@ def validate_embed(embed: Any) -> None:          if field_name in field_validators:              for validator in field_validators[field_name]:                  validator(value) - - -class ModelReprMixin: -    """Mixin providing a `__repr__()` to display model class name and initialisation parameters.""" - -    def __repr__(self): -        """Returns the current model class name and initialisation parameters.""" -        attributes = ' '.join( -            f'{attribute}={value!r}' -            for attribute, value in sorted( -                self.__dict__.items(), -                key=itemgetter(0) -            ) -            if not attribute.startswith('_') -        ) -        return f'<{self.__class__.__name__}({attributes})>' - - -class ModelTimestampMixin(models.Model): -    """Mixin providing created_at and updated_at fields.""" - -    created_at = models.DateTimeField(auto_now_add=True) -    updated_at = models.DateTimeField(auto_now=True) - -    class Meta: -        """Metaconfig for the mixin.""" - -        abstract = True | 
