mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 13:31:08 -05:00
Improve moderation dashboard UI and HTMX integration:
- Create partial templates for dashboard, edit submissions, and photo submissions - Update views to properly handle HTMX requests - Fix duplicate UI issues when navigating - Improve overall UI design and transitions
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user