Skip to content

Commit

Permalink
✨ Add last_modified_at field to more models & expose updated field
Browse files Browse the repository at this point in the history
  • Loading branch information
pajowu committed Jan 3, 2024
1 parent 2ee1420 commit c38d97a
Show file tree
Hide file tree
Showing 9 changed files with 89 additions and 1 deletion.
2 changes: 2 additions & 0 deletions froide/document/api_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,15 @@ class DocumentSerializer(FCDocumentSerializer):
lookup_field="pk",
read_only=True,
)
last_modified_at = serializers.CharField(source="updated_at", read_only=True)

class Meta:
model = Document
fields = FCDocumentSerializer.Meta.fields + (
"original",
"foirequest",
"publicbody",
"last_modified_at",
)


Expand Down
2 changes: 2 additions & 0 deletions froide/foirequest/api_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,7 @@ class Meta:
"redacted_content",
"sender",
"status_name",
"last_modified_at",
)

def get_redacted_subject(self, obj):
Expand Down Expand Up @@ -318,6 +319,7 @@ class Meta:
"resolved_on",
"last_message",
"created_at",
"last_modified_at",
"status",
"public_body",
"resolution",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Generated by Django 4.2.4 on 2023-11-20 14:00

from django.db import migrations, models


class Migration(migrations.Migration):
dependencies = [
("foirequest", "0064_foimessage_confirmation_sent"),
]

operations = [
migrations.AddField(
model_name="foimessage",
name="last_modified_at",
field=models.DateTimeField(auto_now=True),
),
migrations.AddField(
model_name="foirequest",
name="last_modified_at",
field=models.DateTimeField(auto_now=True),
),
]
12 changes: 12 additions & 0 deletions froide/foirequest/migrations/0066_merge_20240102_1603.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Generated by Django 4.2.4 on 2024-01-02 15:03

from django.db import migrations


class Migration(migrations.Migration):
dependencies = [
("foirequest", "0065_foimessage_last_modified_at_and_more"),
("foirequest", "0065_foirequest_description_redacted"),
]

operations = []
10 changes: 10 additions & 0 deletions froide/foirequest/models/message.py
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,8 @@ class FoiMessage(models.Model):
)

timestamp = models.DateTimeField(_("Timestamp"), blank=True)
last_modified_at = models.DateTimeField(auto_now=True)

email_message_id = models.CharField(max_length=512, blank=True, default="")
subject = models.CharField(_("Subject"), blank=True, max_length=255)
subject_redacted = models.CharField(
Expand Down Expand Up @@ -180,6 +182,14 @@ def __str__(self):
"time": self.timestamp,
}

def save(self, *args, **kwargs):
if "update_fields" in kwargs:
kwargs["update_fields"] = {"last_modified_at"}.union(
kwargs["update_fields"]
)

super().save(*args, **kwargs)

@property
def is_postal(self):
return self.kind == MessageKind.POST
Expand Down
9 changes: 9 additions & 0 deletions froide/foirequest/models/request.py
Original file line number Diff line number Diff line change
Expand Up @@ -333,6 +333,7 @@ class FoiRequest(models.Model):
)
resolved_on = models.DateTimeField(_("Resolution date"), blank=True, null=True)
due_date = models.DateTimeField(_("Due Date"), blank=True, null=True)
last_modified_at = models.DateTimeField(auto_now=True)

secret_address = models.CharField(
_("Secret address"), max_length=255, db_index=True, unique=True
Expand Down Expand Up @@ -447,6 +448,14 @@ class Meta:
def __str__(self):
return _("Request '%s'") % self.title

def save(self, *args, **kwargs):
if "update_fields" in kwargs:
kwargs["update_fields"] = {"last_modified_at"}.union(
kwargs["update_fields"]
)

super().save(*args, **kwargs)

@property
def same_as_set(self):
return FoiRequest.objects.filter(same_as=self)
Expand Down
6 changes: 5 additions & 1 deletion froide/publicbody/api_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ class Meta:
"slug",
"site_url",
"region",
"last_modified_at",
)


Expand All @@ -72,6 +73,7 @@ class SimpleFoiLawSerializer(serializers.HyperlinkedModelSerializer):
view_name="api:publicbody-detail", lookup_field="pk", read_only=True
)
site_url = serializers.SerializerMethodField()
last_modified_at = serializers.CharField(source="updated")

class Meta:
model = FoiLaw
Expand All @@ -85,7 +87,6 @@ class Meta:
"long_description",
"law_type",
"created",
"updated",
"request_note",
"request_note_html",
"meta",
Expand All @@ -101,6 +102,7 @@ class Meta:
"max_response_time_unit",
"letter_start",
"letter_end",
"last_modified_at",
)

def get_site_url(self, obj):
Expand Down Expand Up @@ -330,6 +332,7 @@ class SimplePublicBodySerializer(serializers.HyperlinkedModelSerializer):

site_url = serializers.CharField(source="get_absolute_domain_url")
geo = serializers.SerializerMethodField()
last_modified_at = serializers.CharField(source="updated_at")

class Meta:
model = PublicBody
Expand All @@ -354,6 +357,7 @@ class Meta:
"jurisdiction",
"request_note_html",
"geo",
"last_modified_at",
)

def get_geo(self, obj):
Expand Down
17 changes: 17 additions & 0 deletions froide/publicbody/migrations/0045_jurisdiction_last_modified_at.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Generated by Django 4.2.4 on 2023-11-20 14:00

from django.db import migrations, models


class Migration(migrations.Migration):
dependencies = [
("publicbody", "0044_alter_publicbody_laws"),
]

operations = [
migrations.AddField(
model_name="jurisdiction",
name="last_modified_at",
field=models.DateTimeField(auto_now=True),
),
]
10 changes: 10 additions & 0 deletions froide/publicbody/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,8 @@ class Jurisdiction(models.Model):

objects = JurisdictionManager()

last_modified_at = models.DateTimeField(auto_now=True)

class Meta:
verbose_name = _("Jurisdiction")
verbose_name_plural = _("Jurisdictions")
Expand All @@ -95,6 +97,14 @@ def get_all_laws(self):
meta_laws = FoiLaw.objects.filter(pk__in=meta_ids)
return laws.union(meta_laws)

def save(self, *args, **kwargs):
if "update_fields" in kwargs:
kwargs["update_fields"] = {"last_modified_at"}.union(
kwargs["update_fields"]
)

super().save(*args, **kwargs)


class FoiLaw(TranslatableModel):
translations = TranslatedFields(
Expand Down

0 comments on commit c38d97a

Please sign in to comment.