diff --git a/moderation/views.py b/moderation/views.py index 1bc990a1..8fe35fd2 100644 --- a/moderation/views.py +++ b/moderation/views.py @@ -7,7 +7,7 @@ from django.template.loader import render_to_string from django.db.models import Q from django.core.exceptions import PermissionDenied from typing import Optional, Any, cast -from accounts.models import User # Import custom User model +from accounts.models import User from .models import EditSubmission, PhotoSubmission @@ -30,7 +30,10 @@ class ModeratorRequiredMixin(UserPassesTestMixin): raise PermissionDenied("You do not have moderator permissions.") class DashboardView(LoginRequiredMixin, ModeratorRequiredMixin, TemplateView): - template_name = 'moderation/dashboard.html' + def get_template_names(self): + if self.request.headers.get('HX-Request'): + return ['moderation/partials/dashboard_content.html'] + return ['moderation/dashboard.html'] def get_context_data(self, **kwargs: Any) -> dict[str, Any]: context = super().get_context_data(**kwargs) @@ -60,9 +63,13 @@ class EditSubmissionListView(LoginRequiredMixin, ModeratorRequiredMixin, ListVie return queryset class PhotoSubmissionListView(LoginRequiredMixin, ModeratorRequiredMixin, ListView): - template_name = 'moderation/photo_submission_list.html' context_object_name = 'submissions' + def get_template_names(self): + if self.request.headers.get('HX-Request'): + return ['moderation/partials/photo_submission_content.html'] + return ['moderation/photo_submission_list.html'] + def get_queryset(self): queryset = PhotoSubmission.objects.all().order_by('-created_at') @@ -71,18 +78,6 @@ class PhotoSubmissionListView(LoginRequiredMixin, ModeratorRequiredMixin, ListVi return queryset -def _update_submission_notes(submission: EditSubmission, notes: Optional[str]) -> None: - """Update submission notes if provided.""" - if notes: - submission.notes = notes - submission.save() - -def _render_submission_response(template: str, submission: Any, request: HttpRequest) -> HttpResponse: - """Render submission template response.""" - context = {'submission': submission} - html = render_to_string(template, context, request=request) - return HttpResponse(html) - @login_required def submission_list(request: HttpRequest) -> HttpResponse: """HTMX endpoint for filtered submission list""" @@ -174,3 +169,15 @@ def reject_photo(request: HttpRequest, submission_id: int) -> HttpResponse: submission.reject(user, request.POST.get('notes', '')) return _render_submission_response('moderation/partials/photo_submission.html', submission, request) + +def _update_submission_notes(submission: EditSubmission, notes: Optional[str]) -> None: + """Update submission notes if provided.""" + if notes: + submission.notes = notes + submission.save() + +def _render_submission_response(template: str, submission: Any, request: HttpRequest) -> HttpResponse: + """Render submission template response.""" + context = {'submission': submission} + html = render_to_string(template, context, request=request) + return HttpResponse(html) diff --git a/templates/moderation/partials/dashboard_content.html b/templates/moderation/partials/dashboard_content.html new file mode 100644 index 00000000..eaa9748c --- /dev/null +++ b/templates/moderation/partials/dashboard_content.html @@ -0,0 +1,62 @@ +{% load static %} + +
Submissions awaiting moderation
+Latest moderation actions
+No pending submissions
+No photo submissions found
+No photo submissions found.
-