From 3d33c8189436128a0caac91d068eee386d2ed130 Mon Sep 17 00:00:00 2001 From: Christian Henriksen Date: Mon, 29 Dec 2025 19:17:39 +0100 Subject: [PATCH 01/12] Change truncateword from 12 to 25 --- src/backoffice/templates/feedback_list.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backoffice/templates/feedback_list.html b/src/backoffice/templates/feedback_list.html index 6c5c26956..cc269f1b7 100644 --- a/src/backoffice/templates/feedback_list.html +++ b/src/backoffice/templates/feedback_list.html @@ -33,7 +33,7 @@

Event Feedback List

{{ feedback.user.username }} {{ feedback.user.profile.public_credit_name }} - {{ feedback.feedback|truncatewords:12 }} + {{ feedback.feedback|truncatewords:25 }} {{ feedback.processed_at|default_if_none:"" }} {{ feedback.processed_by|default_if_none:"" }} From 6c6a7814c244b1cb0fa6cce53d9dfd8097751278 Mon Sep 17 00:00:00 2001 From: Christian Henriksen Date: Mon, 29 Dec 2025 19:18:47 +0100 Subject: [PATCH 02/12] Add new state charfield with choices --- ..._feedback_state_alter_feedback_feedback.py | 33 +++++++++++++++++ src/feedback/models.py | 36 ++++++++++++++++--- 2 files changed, 65 insertions(+), 4 deletions(-) create mode 100644 src/feedback/migrations/0005_feedback_state_alter_feedback_feedback.py diff --git a/src/feedback/migrations/0005_feedback_state_alter_feedback_feedback.py b/src/feedback/migrations/0005_feedback_state_alter_feedback_feedback.py new file mode 100644 index 000000000..7264e86e8 --- /dev/null +++ b/src/feedback/migrations/0005_feedback_state_alter_feedback_feedback.py @@ -0,0 +1,33 @@ +# Generated by Django 5.2.9 on 2025-12-29 18:16 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("feedback", "0004_alter_feedback_options"), + ] + + operations = [ + migrations.AddField( + model_name="feedback", + name="state", + field=models.CharField( + choices=[ + ("reviewed", "Reviewed"), + ("spam", "Spam"), + ("unprocessed", "Unprocessed"), + ], + default="unprocessed", + help_text="Set state of the feedback", + ), + ), + migrations.AlterField( + model_name="feedback", + name="feedback", + field=models.TextField( + help_text="Enter your feedback for this year's event" + ), + ), + ] diff --git a/src/feedback/models.py b/src/feedback/models.py index e0bfbaad0..79e51164d 100644 --- a/src/feedback/models.py +++ b/src/feedback/models.py @@ -8,10 +8,37 @@ class Feedback(ExportModelOperationsMixin("feedback"), CampRelatedModel, UUIDModel): - camp = models.ForeignKey("camps.Camp", on_delete=models.PROTECT) - user = models.ForeignKey("auth.User", on_delete=models.PROTECT) - feedback = models.TextField() - processed_at = models.DateTimeField(null=True, blank=True) + """Event feedback model""" + + camp = models.ForeignKey( + "camps.Camp", + on_delete=models.PROTECT + ) + + user = models.ForeignKey( + "auth.User", + on_delete=models.PROTECT + ) + + feedback = models.TextField( + help_text="Enter your feedback for this year's event" + ) + + state = models.CharField( + choices = [ + ("reviewed", "Reviewed"), + ("spam", "Spam"), + ("unprocessed", "Unprocessed"), + ], + default="unprocessed", + help_text="Set state of the feedback", + ) + + processed_at = models.DateTimeField( + null=True, + blank=True + ) + processed_by = models.ForeignKey( "auth.User", on_delete=models.PROTECT, @@ -19,3 +46,4 @@ class Feedback(ExportModelOperationsMixin("feedback"), CampRelatedModel, UUIDMod null=True, blank=True, ) + From e0c27aa9656d804bb4890da18a0410c3fb4a1713 Mon Sep 17 00:00:00 2001 From: Christian Henriksen Date: Mon, 29 Dec 2025 19:25:42 +0100 Subject: [PATCH 03/12] Add state column and refactor processing function in admin panel --- src/feedback/admin.py | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/feedback/admin.py b/src/feedback/admin.py index 88ffff470..f9a6124b7 100644 --- a/src/feedback/admin.py +++ b/src/feedback/admin.py @@ -8,15 +8,27 @@ @admin.register(Feedback) class FeedbackAdmin(admin.ModelAdmin): - list_display = ("user", "camp", "feedback", "processed_at", "processed_by") + list_display = ("user", "camp", "feedback", "state", "processed_at", "processed_by") list_filter = ["processed_at"] - readonly_fields = ["user", "camp", "feedback", "processed_at", "processed_by"] + readonly_fields = ["user", "camp", "feedback", "state", "processed_at", "processed_by"] - actions = ["mark_as_processed"] + actions = [ + "mark_as_reviewed", + "mark_as_spam" + ] - @admin.action(description="Mark this feedback as processed") - def mark_as_processed(self, request, queryset) -> None: + @admin.action(description="Mark this feedback as reviewed") + def mark_as_reviewed(self, request, queryset) -> None: queryset.update( processed_at=timezone.now(), processed_by=request.user, + state="reviewed", + ) + + @admin.action(description="Mark this feedback as spam") + def mark_as_spam(self, request, queryset) -> None: + queryset.update( + processed_at=timezone.now(), + processed_by=request.user, + state="spam", ) From 8dbaf3118b294adbc47cedfa992d411d4e4486be Mon Sep 17 00:00:00 2001 From: Christian Henriksen Date: Mon, 29 Dec 2025 21:38:36 +0100 Subject: [PATCH 04/12] Add state column to table --- src/backoffice/templates/feedback_list.html | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/backoffice/templates/feedback_list.html b/src/backoffice/templates/feedback_list.html index cc269f1b7..118476b8b 100644 --- a/src/backoffice/templates/feedback_list.html +++ b/src/backoffice/templates/feedback_list.html @@ -23,6 +23,7 @@

Event Feedback List

Username Public Credit Name Feedback + State Processed at Processed by Actions @@ -34,12 +35,24 @@

Event Feedback List

{{ feedback.user.username }} {{ feedback.user.profile.public_credit_name }} {{ feedback.feedback|truncatewords:25 }} + + + {{ feedback.get_state_display }} {{ feedback.processed_at|default_if_none:"" }} {{ feedback.processed_by|default_if_none:"" }} - Detail + Detail {% if not feedback.processed_by %} Processed + Spam {% endif %} From e735ea9430d5a16a723ade8f4f2fdc42e35ac62b Mon Sep 17 00:00:00 2001 From: Christian Henriksen Date: Thu, 1 Jan 2026 17:12:09 +0100 Subject: [PATCH 05/12] Add PoC for using a 'state' parameter in forms and urls --- src/backoffice/templates/feedback_list.html | 4 ++-- .../feedback_list_processed_confirm.html | 4 ++-- src/backoffice/urls.py | 2 +- src/backoffice/views/orga.py | 15 ++++++++++++++- 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/backoffice/templates/feedback_list.html b/src/backoffice/templates/feedback_list.html index 118476b8b..24dc4d832 100644 --- a/src/backoffice/templates/feedback_list.html +++ b/src/backoffice/templates/feedback_list.html @@ -51,8 +51,8 @@

Event Feedback List

Detail {% if not feedback.processed_by %} - Processed - Spam + Reviewed + Spam {% endif %} diff --git a/src/backoffice/templates/feedback_list_processed_confirm.html b/src/backoffice/templates/feedback_list_processed_confirm.html index 630d9ddd0..bfa65dd18 100644 --- a/src/backoffice/templates/feedback_list_processed_confirm.html +++ b/src/backoffice/templates/feedback_list_processed_confirm.html @@ -7,7 +7,7 @@ {% block content %}
-

Mark event feedback as processed

+

Mark event feedback as {{ state }}

@@ -22,7 +22,7 @@

Mark event feedback as processed

Cancel -
+ {% csrf_token %}