Add notification settings and forms for email notifications

This commit is contained in:
Maximilian 2025-06-10 09:08:08 +02:00
parent 93f5f05a33
commit bb8949af76
19 changed files with 435 additions and 23 deletions

View file

@ -5,10 +5,24 @@ from .models import Emailadress, BirdEmail
@admin.register(Emailadress)
class EmailaddressAdmin(admin.ModelAdmin):
list_display = ["email_address", "created_at", "updated_at", "user"]
list_display = ["email_address", "is_naturschutzbehoerde", "is_jagdbehoerde", "is_wildvogelhilfe_team", "created_at", "updated_at", "user"]
search_fields = ["email_address"]
list_filter = ["created_at", "updated_at", "user"]
list_filter = ["is_naturschutzbehoerde", "is_jagdbehoerde", "is_wildvogelhilfe_team", "created_at", "updated_at", "user"]
list_per_page = 20
fieldsets = (
(None, {
'fields': ('email_address',)
}),
('Notification Categories', {
'fields': ('is_naturschutzbehoerde', 'is_jagdbehoerde', 'is_wildvogelhilfe_team'),
'description': 'Select which types of notifications this email address should receive'
}),
)
def save_model(self, request, obj, form, change):
if not change: # Only set user when creating new object
obj.user = request.user
super().save_model(request, obj, form, change)
@admin.register(BirdEmail)

30
app/sendemail/forms.py Normal file
View file

@ -0,0 +1,30 @@
from django import forms
from django.utils.translation import gettext_lazy as _
from .models import Emailadress
class EmailaddressForm(forms.ModelForm):
"""Form for editing email addresses with notification categories."""
class Meta:
model = Emailadress
fields = [
"email_address",
"is_naturschutzbehoerde",
"is_jagdbehoerde",
"is_wildvogelhilfe_team",
]
labels = {
"email_address": _("E-Mail-Adresse"),
"is_naturschutzbehoerde": _("Naturschutzbehörde"),
"is_jagdbehoerde": _("Jagdbehörde"),
"is_wildvogelhilfe_team": _("Wildvogelhilfe-Team"),
}
help_texts = {
"is_naturschutzbehoerde": _("Diese Adresse für Naturschutzbehörden-Benachrichtigungen verwenden"),
"is_jagdbehoerde": _("Diese Adresse für Jagdbehörden-Benachrichtigungen verwenden"),
"is_wildvogelhilfe_team": _("Diese Adresse für Wildvogelhilfe-Team-Benachrichtigungen verwenden"),
}
widgets = {
"email_address": forms.EmailInput(attrs={"class": "form-control"}),
}

View file

@ -0,0 +1,28 @@
# Generated manually for notification categories
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('sendemail', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='emailadress',
name='is_naturschutzbehoerde',
field=models.BooleanField(default=False, verbose_name='Naturschutzbehörde'),
),
migrations.AddField(
model_name='emailadress',
name='is_jagdbehoerde',
field=models.BooleanField(default=False, verbose_name='Jagdbehörde'),
),
migrations.AddField(
model_name='emailadress',
name='is_wildvogelhilfe_team',
field=models.BooleanField(default=False, verbose_name='Wildvogelhilfe-Team'),
),
]

View file

@ -0,0 +1,23 @@
# Generated by Django 5.2.2 on 2025-06-10 06:28
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('sendemail', '0002_add_notification_categories'),
]
operations = [
migrations.AlterField(
model_name='emailadress',
name='is_naturschutzbehoerde',
field=models.BooleanField(default=True, verbose_name='Naturschutzbehörde'),
),
migrations.AlterField(
model_name='emailadress',
name='is_wildvogelhilfe_team',
field=models.BooleanField(default=True, verbose_name='Wildvogelhilfe-Team'),
),
]

View file

@ -14,6 +14,20 @@ class Emailadress(models.Model):
on_delete=models.CASCADE,
verbose_name=_("Benutzer"),
)
# New notification category fields
is_naturschutzbehoerde = models.BooleanField(
default=True,
verbose_name=_("Naturschutzbehörde")
)
is_jagdbehoerde = models.BooleanField(
default=False,
verbose_name=_("Jagdbehörde")
)
is_wildvogelhilfe_team = models.BooleanField(
default=True,
verbose_name=_("Wildvogelhilfe-Team")
)
def __str__(self):
return self.email_address