Add created_at and updated_at to all models

This commit is contained in:
Tobias Kunze 2025-03-16 10:25:39 +01:00
parent 951c5cfbfb
commit 512b4e0ed9
4 changed files with 113 additions and 5 deletions

View file

@ -0,0 +1,89 @@
# Generated by Django 5.2b1 on 2025-03-17 06:19
import django.utils.timezone
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("core", "0001_initial"),
]
operations = [
migrations.AddField(
model_name="billingentity",
name="created_at",
field=models.DateTimeField(
auto_now_add=True,
default=django.utils.timezone.now,
verbose_name="Created",
),
preserve_default=False,
),
migrations.AddField(
model_name="billingentity",
name="updated_at",
field=models.DateTimeField(auto_now=True, verbose_name="Last updated"),
),
migrations.AddField(
model_name="organization",
name="created_at",
field=models.DateTimeField(
auto_now_add=True,
default=django.utils.timezone.now,
verbose_name="Created",
),
preserve_default=False,
),
migrations.AddField(
model_name="organization",
name="updated_at",
field=models.DateTimeField(auto_now=True, verbose_name="Last updated"),
),
migrations.AddField(
model_name="organizationmembership",
name="created_at",
field=models.DateTimeField(
auto_now_add=True,
default=django.utils.timezone.now,
verbose_name="Created",
),
preserve_default=False,
),
migrations.AddField(
model_name="organizationmembership",
name="updated_at",
field=models.DateTimeField(auto_now=True, verbose_name="Last updated"),
),
migrations.AddField(
model_name="organizationorigin",
name="created_at",
field=models.DateTimeField(
auto_now_add=True,
default=django.utils.timezone.now,
verbose_name="Created",
),
preserve_default=False,
),
migrations.AddField(
model_name="organizationorigin",
name="updated_at",
field=models.DateTimeField(auto_now=True, verbose_name="Last updated"),
),
migrations.AddField(
model_name="user",
name="created_at",
field=models.DateTimeField(
auto_now_add=True,
default=django.utils.timezone.now,
verbose_name="Created",
),
preserve_default=False,
),
migrations.AddField(
model_name="user",
name="updated_at",
field=models.DateTimeField(auto_now=True, verbose_name="Last updated"),
),
]

View file

@ -0,0 +1,15 @@
from django.db import models
from django.utils.translation import gettext_lazy as _
class ServalaModelMixin(models.Model):
created_at = models.DateTimeField(
auto_now_add=True, editable=False, verbose_name=_("Created")
)
updated_at = models.DateTimeField(
auto_now=True, editable=False, verbose_name=_("Last updated")
)
class Meta:
abstract = True
ordering = ("-created_at",)

View file

@ -1,8 +1,10 @@
from django.db import models
from django.utils.translation import gettext_lazy as _
from .mixins import ServalaModelMixin
class Organization(models.Model):
class Organization(ServalaModelMixin, models.Model):
name = models.CharField(max_length=100, verbose_name=_("Name"))
billing_entity = models.ForeignKey(
@ -33,7 +35,7 @@ class Organization(models.Model):
return self.name
class BillingEntity(models.Model):
class BillingEntity(ServalaModelMixin, models.Model):
"""
Every organization has a billing entity, though billing entities
may be shared across different organizations.
@ -53,7 +55,7 @@ class BillingEntity(models.Model):
return self.name
class OrganizationOrigin(models.Model):
class OrganizationOrigin(ServalaModelMixin, models.Model):
"""
Every organization has an origin, though origins may be
shared across different organizations. The default origin
@ -77,7 +79,7 @@ class OrganizationRole(models.TextChoices):
OWNER = "owner", _("Owner")
class OrganizationMembership(models.Model):
class OrganizationMembership(ServalaModelMixin, models.Model):
"""Through-model for the many-to-many relationship between organizations and users."""
user = models.ForeignKey(

View file

@ -2,6 +2,8 @@ from django.contrib.auth.models import AbstractBaseUser, BaseUserManager
from django.db import models
from django.utils.translation import gettext_lazy as _
from .mixins import ServalaModelMixin
class UserManager(BaseUserManager):
"""
@ -30,7 +32,7 @@ class UserManager(BaseUserManager):
return self.create_user(email, password, **extra_fields)
class User(AbstractBaseUser):
class User(ServalaModelMixin, AbstractBaseUser):
"""The Django model provides a password and last_login field."""
objects = UserManager()