Skip to content

Commit 1da741f

Browse files
committed
Factorize a timestamped model
1 parent 5b7abbc commit 1da741f

File tree

1 file changed

+14
-10
lines changed

1 file changed

+14
-10
lines changed

projects/models.py

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,24 @@ def deconstruct(self):
2828
return name, "django.db.models.CharField", args, kwargs
2929

3030

31+
class TimestampedModel(models.Model):
32+
created_at = models.DateTimeField(_("created at"), auto_now_add=True)
33+
updated_at = models.DateTimeField(_("updated at"), auto_now=True)
34+
35+
class Meta:
36+
abstract = True
37+
38+
@property
39+
def pretty_timesince(self):
40+
return timesince(self.updated_at, depth=1)
41+
42+
3143
class ProjectQuerySet(models.QuerySet):
3244
def for_user(self, user):
3345
return self if user.is_staff else self.filter(users=user)
3446

3547

36-
class Project(models.Model):
48+
class Project(TimestampedModel):
3749
created_at = models.DateTimeField(_("created at"), auto_now_add=True)
3850
updated_at = models.DateTimeField(_("updated at"), auto_now=True)
3951

@@ -81,10 +93,6 @@ def clean(self):
8193
def get_api_url(self):
8294
return f"/api/pofile/{self.slug}/"
8395

84-
@property
85-
def pretty_timesince(self):
86-
return timesince(self.updated_at, depth=1)
87-
8896
@cached_property
8997
def all_users(self):
9098
return User.objects.filter(
@@ -97,7 +105,7 @@ def for_user(self, user):
97105
return self if user.is_staff else self.filter(project__users=user)
98106

99107

100-
class Catalog(models.Model):
108+
class Catalog(TimestampedModel):
101109
created_at = models.DateTimeField(_("created at"), auto_now_add=True)
102110
updated_at = models.DateTimeField(_("updated at"), auto_now=True)
103111

@@ -143,7 +151,3 @@ def get_absolute_url(self):
143151
@cached_property
144152
def po(self):
145153
return polib.pofile(self.pofile, wrapwidth=0)
146-
147-
@property
148-
def pretty_timesince(self):
149-
return timesince(self.updated_at, depth=1)

0 commit comments

Comments
 (0)