From 9e135560fe565c5522d8afe3bf2e5352e0f81ff8 Mon Sep 17 00:00:00 2001 From: Herculino Trotta Date: Sun, 16 Aug 2026 01:40:03 -0300 Subject: [PATCH] feat(transactions): add filter preset model --- .../migrations/0050_filterpreset.py | 38 +++++++++++++++++++ app/apps/transactions/models.py | 19 +++++++++- 2 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 app/apps/transactions/migrations/0050_filterpreset.py diff --git a/app/apps/transactions/migrations/0050_filterpreset.py b/app/apps/transactions/migrations/0050_filterpreset.py new file mode 100644 index 0000000..cc8c396 --- /dev/null +++ b/app/apps/transactions/migrations/0050_filterpreset.py @@ -0,0 +1,38 @@ +import django.db.models.deletion +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("transactions", "0049_transactionattachment"), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name="FilterPreset", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("name", models.CharField(max_length=100)), + ("parameters", models.JSONField(default=dict)), + ( + "owner", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="filter_presets", + to=settings.AUTH_USER_MODEL, + ), + ), + ], + options={"ordering": ["name", "id"]}, + ), + ] diff --git a/app/apps/transactions/models.py b/app/apps/transactions/models.py index 8399e3a..f462a35 100644 --- a/app/apps/transactions/models.py +++ b/app/apps/transactions/models.py @@ -30,12 +30,27 @@ from django.utils.translation import gettext_lazy as _ logger = logging.getLogger() - transaction_created = Signal() transaction_updated = Signal() transaction_deleted = Signal() +class FilterPreset(models.Model): + owner = models.ForeignKey( + settings.AUTH_USER_MODEL, + on_delete=models.CASCADE, + related_name="filter_presets", + ) + name = models.CharField(max_length=100) + parameters = models.JSONField(default=dict) + + class Meta: + ordering = ["name", "id"] + + def __str__(self): + return self.name + + def transaction_attachment_path(instance, filename): extension = Path(filename).suffix return f"transaction_attachments/{instance.transaction_id}/{instance.id}{extension}" @@ -535,6 +550,7 @@ class Transaction(OwnedObject): return new_obj + class TransactionAttachment(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) transaction = models.ForeignKey( @@ -590,6 +606,7 @@ def delete_transaction_attachment_file(sender, instance, **kwargs): if storage.exists(instance.file.name): storage.delete(instance.file.name) + class InstallmentPlan(models.Model): class Recurrence(models.TextChoices): YEARLY = "yearly", _("Yearly")