Skip to content

Commit

Permalink
Tillad ikke at slette aktiviteter med inviterede
Browse files Browse the repository at this point in the history
  • Loading branch information
rasmusselsmark committed Sep 2, 2024
1 parent c35c6db commit 02d83d1
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 2 deletions.
18 changes: 17 additions & 1 deletion members/admin/activity_admin.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from django.contrib import admin
from django.contrib import admin, messages
from django.conf import settings
from django.core.exceptions import ValidationError
from django.urls import reverse
from django.utils.safestring import mark_safe
from django.utils.html import escape, format_html
Expand Down Expand Up @@ -250,6 +251,21 @@ def formfield_for_foreignkey(self, db_field, request, **kwargs):
kwargs["queryset"] = Address.get_user_addresses(request.user)
return super().formfield_for_foreignkey(db_field, request, **kwargs)

def delete_queryset(self, request, queryset):
for activity in queryset:
print(activity)
self.delete_model(request, activity)

def delete_model(self, request, activity):
try:
activity.delete()
messages.success(request, f"Aktivitet \"{activity.name}\" slettet.")
except ValidationError as e:
messages.error(request, e.message)

except Exception as e:
messages.error(request, f"Fejl: {str(e)}")

fieldsets = [
(
"Afdeling",
Expand Down
10 changes: 10 additions & 0 deletions members/models/activity.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,9 @@ def seats_left(self):
def participants(self):
return self.activityparticipant_set.count()

def invitations(self):
return self.activityinvite_set.count()

participants.short_description = "Deltagere"

def get_min_amount(self, activitytype):
Expand Down Expand Up @@ -146,3 +149,10 @@ def clean(self):

if errors:
raise ValidationError(errors)

def delete(self, *args, **kwargs):
if (self.invitations() > 0 or self.participants() > 0):
raise ValidationError(
f"Aktivitet \"{self.name}\" kan ikke slettes, da der er tilmeldte eller inviterede personer."
)
super().delete(*args, **kwargs)
2 changes: 1 addition & 1 deletion members/models/activityinvite.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ class Meta:
unique_together = ("activity", "person")

activity = models.ForeignKey(
"Activity", on_delete=models.CASCADE, verbose_name="Aktivitet"
"Activity", on_delete=models.DO_NOTHING, verbose_name="Aktivitet"
)
person = models.ForeignKey("Person", on_delete=models.CASCADE)
invite_dtm = models.DateField("Inviteret", default=timezone.now)
Expand Down

0 comments on commit 02d83d1

Please sign in to comment.