From 155958e48c7034f02b8d5b15d6900c6ba81941c4 Mon Sep 17 00:00:00 2001 From: Luis Alvergue Date: Thu, 7 Nov 2024 17:02:37 +0000 Subject: [PATCH] feat: add a property for a small and large agency logo --- .../migrations/0031_transitagency_logo.py | 32 +++++++++++++++++++ benefits/core/models.py | 24 ++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 benefits/core/migrations/0031_transitagency_logo.py diff --git a/benefits/core/migrations/0031_transitagency_logo.py b/benefits/core/migrations/0031_transitagency_logo.py new file mode 100644 index 0000000000..888733a9d9 --- /dev/null +++ b/benefits/core/migrations/0031_transitagency_logo.py @@ -0,0 +1,32 @@ +# Generated by Django 5.1.2 on 2024-11-07 16:51 + +import benefits.core.models +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("core", "0030_enrollmentevent_extra_claims"), + ] + + operations = [ + migrations.AddField( + model_name="transitagency", + name="logo_large", + field=models.ImageField( + default=None, + help_text="The large version of the transit agency's logo.", + upload_to=benefits.core.models.agency_logo_large, + ), + ), + migrations.AddField( + model_name="transitagency", + name="logo_small", + field=models.ImageField( + default=None, + help_text="The small version of the transit agency's logo.", + upload_to=benefits.core.models.agency_logo_small, + ), + ), + ] diff --git a/benefits/core/models.py b/benefits/core/models.py index 3b8b930797..ed93b75daa 100644 --- a/benefits/core/models.py +++ b/benefits/core/models.py @@ -5,10 +5,12 @@ from functools import cached_property import importlib import logging +import os import uuid from django.conf import settings from django.core.exceptions import ValidationError +from django.core.files.storage import FileSystemStorage from django.contrib.auth.models import Group, User from django.db import models from django.urls import reverse @@ -126,6 +128,16 @@ def __str__(self): return self.name +def agency_logo_small(instance, filename): + base, ext = os.path.splitext(filename) + return f"{instance.slug}-sm" + ext + + +def agency_logo_large(instance, filename): + base, ext = os.path.splitext(filename) + return f"{instance.slug}-lg" + ext + + class TransitAgency(models.Model): """An agency offering transit service.""" @@ -191,6 +203,18 @@ class TransitAgency(models.Model): help_text="The group of users who are allowed to do in-person eligibility verification and enrollment.", related_name="+", ) + logo_large = models.ImageField( + default=None, + upload_to=agency_logo_large, + storage=FileSystemStorage, + help_text="The large version of the transit agency's logo.", + ) + logo_small = models.ImageField( + default=None, + upload_to=agency_logo_small, + storage=FileSystemStorage, + help_text="The small version of the transit agency's logo.", + ) def __str__(self): return self.long_name