aboutsummaryrefslogtreecommitdiffstats
path: root/pydis_site
diff options
context:
space:
mode:
Diffstat (limited to 'pydis_site')
-rw-r--r--pydis_site/apps/api/models/bot/filter_list.py2
-rw-r--r--pydis_site/apps/api/models/mixins.py31
-rw-r--r--pydis_site/apps/api/models/utils.py30
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