Séparation des vues messages
This commit is contained in:
parent
001a1652bd
commit
94950e148f
@ -36,7 +36,6 @@ from .views import (
|
|||||||
# General pages
|
# General pages
|
||||||
about,
|
about,
|
||||||
activite,
|
activite,
|
||||||
delete_cm_spam,
|
|
||||||
home,
|
home,
|
||||||
import_requirements,
|
import_requirements,
|
||||||
mentions_legales,
|
mentions_legales,
|
||||||
@ -48,7 +47,6 @@ from .views import (
|
|||||||
add_import,
|
add_import,
|
||||||
cancel_import,
|
cancel_import,
|
||||||
update_orphan_events,
|
update_orphan_events,
|
||||||
view_messages,
|
|
||||||
# Import récurrent
|
# Import récurrent
|
||||||
RecurrentImportCreateView,
|
RecurrentImportCreateView,
|
||||||
RecurrentImportDeleteView,
|
RecurrentImportDeleteView,
|
||||||
@ -58,6 +56,12 @@ from .views import (
|
|||||||
run_all_rimports,
|
run_all_rimports,
|
||||||
run_rimport,
|
run_rimport,
|
||||||
view_rimport,
|
view_rimport,
|
||||||
|
# Messages
|
||||||
|
delete_cm_spam,
|
||||||
|
MessageCreateView,
|
||||||
|
MessageDeleteView,
|
||||||
|
MessageUpdateView,
|
||||||
|
view_messages,
|
||||||
# Moderation
|
# Moderation
|
||||||
EventModerateView,
|
EventModerateView,
|
||||||
moderate_event_next,
|
moderate_event_next,
|
||||||
@ -69,15 +73,6 @@ from .views import (
|
|||||||
OrganisationDetailViewPast,
|
OrganisationDetailViewPast,
|
||||||
OrganisationListView,
|
OrganisationListView,
|
||||||
OrganisationUpdateView,
|
OrganisationUpdateView,
|
||||||
# Tags
|
|
||||||
view_tag,
|
|
||||||
view_tag_past,
|
|
||||||
TagUpdateView,
|
|
||||||
tag_list,
|
|
||||||
TagDeleteView,
|
|
||||||
rename_tag,
|
|
||||||
delete_tag,
|
|
||||||
TagCreateView,
|
|
||||||
# Places
|
# Places
|
||||||
PlaceCreateView,
|
PlaceCreateView,
|
||||||
PlaceDeleteView,
|
PlaceDeleteView,
|
||||||
@ -93,6 +88,15 @@ from .views import (
|
|||||||
# Search
|
# Search
|
||||||
event_search,
|
event_search,
|
||||||
event_search_full,
|
event_search_full,
|
||||||
|
# Tags
|
||||||
|
view_tag,
|
||||||
|
view_tag_past,
|
||||||
|
TagUpdateView,
|
||||||
|
tag_list,
|
||||||
|
TagDeleteView,
|
||||||
|
rename_tag,
|
||||||
|
delete_tag,
|
||||||
|
TagCreateView,
|
||||||
# TODO pas encore trié
|
# TODO pas encore trié
|
||||||
week_view,
|
week_view,
|
||||||
month_view,
|
month_view,
|
||||||
@ -103,12 +107,10 @@ from .views import (
|
|||||||
administration,
|
administration,
|
||||||
clear_cache,
|
clear_cache,
|
||||||
export_event_ical,
|
export_event_ical,
|
||||||
MessageDeleteView,
|
|
||||||
EventDetailView,
|
EventDetailView,
|
||||||
EventUpdateView,
|
EventUpdateView,
|
||||||
StaticContentCreateView,
|
StaticContentCreateView,
|
||||||
StaticContentUpdateView,
|
StaticContentUpdateView,
|
||||||
MessageCreateView,
|
|
||||||
EventCreateView,
|
EventCreateView,
|
||||||
update_from_source,
|
update_from_source,
|
||||||
change_status_event,
|
change_status_event,
|
||||||
@ -116,7 +118,6 @@ from .views import (
|
|||||||
import_event_proxy,
|
import_event_proxy,
|
||||||
import_from_url,
|
import_from_url,
|
||||||
import_from_urls,
|
import_from_urls,
|
||||||
MessageUpdateView,
|
|
||||||
UserProfileUpdateView,
|
UserProfileUpdateView,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -191,14 +192,12 @@ urlpatterns = [
|
|||||||
# General pages
|
# General pages
|
||||||
path("a-propos", about, name="about"),
|
path("a-propos", about, name="about"),
|
||||||
path("activite/", activite, name="activite"),
|
path("activite/", activite, name="activite"),
|
||||||
path("messages/spams/delete", delete_cm_spam, name="delete_cm_spam"),
|
|
||||||
path("", home, name="home"),
|
path("", home, name="home"),
|
||||||
path("besoin-pour-import", import_requirements, name="import_requirements"),
|
path("besoin-pour-import", import_requirements, name="import_requirements"),
|
||||||
path("mentions-legales", mentions_legales, name="mentions_legales"),
|
path("mentions-legales", mentions_legales, name="mentions_legales"),
|
||||||
path("regles-de-moderation", moderation_rules, name="moderation_rules"),
|
path("regles-de-moderation", moderation_rules, name="moderation_rules"),
|
||||||
path("statistiques", statistics, name="statistics"),
|
path("statistiques", statistics, name="statistics"),
|
||||||
path("merci", thank_you, name="thank_you"),
|
path("merci", thank_you, name="thank_you"),
|
||||||
path("messages", view_messages, name="messages"),
|
|
||||||
# Import batch
|
# Import batch
|
||||||
path("imports/", imports, name="imports"),
|
path("imports/", imports, name="imports"),
|
||||||
path("imports/add", add_import, name="add_import"),
|
path("imports/add", add_import, name="add_import"),
|
||||||
@ -235,6 +234,25 @@ urlpatterns = [
|
|||||||
),
|
),
|
||||||
path("rimports/<int:pk>/run", run_rimport, name="run_rimport"),
|
path("rimports/<int:pk>/run", run_rimport, name="run_rimport"),
|
||||||
path("rimports/<int:pk>/view", view_rimport, name="view_rimport"),
|
path("rimports/<int:pk>/view", view_rimport, name="view_rimport"),
|
||||||
|
# Messages
|
||||||
|
path("messages/spams/delete", delete_cm_spam, name="delete_cm_spam"),
|
||||||
|
path(
|
||||||
|
"event/<int:pk>/message",
|
||||||
|
MessageCreateView.as_view(),
|
||||||
|
name="message_for_event",
|
||||||
|
),
|
||||||
|
path("contact", MessageCreateView.as_view(), name="contact"),
|
||||||
|
path(
|
||||||
|
"message/<int:pk>/delete",
|
||||||
|
MessageDeleteView.as_view(),
|
||||||
|
name="delete_message",
|
||||||
|
),
|
||||||
|
path(
|
||||||
|
"message/<int:pk>",
|
||||||
|
MessageUpdateView.as_view(),
|
||||||
|
name="message",
|
||||||
|
),
|
||||||
|
path("messages", view_messages, name="messages"),
|
||||||
# Moderation
|
# Moderation
|
||||||
path("moderate", EventModerateView.as_view(), name="moderate"),
|
path("moderate", EventModerateView.as_view(), name="moderate"),
|
||||||
path(
|
path(
|
||||||
@ -358,6 +376,19 @@ urlpatterns = [
|
|||||||
# Search
|
# Search
|
||||||
path("rechercher", event_search, name="event_search"),
|
path("rechercher", event_search, name="event_search"),
|
||||||
path("rechercher/complet/", event_search_full, name="event_search_full"),
|
path("rechercher/complet/", event_search_full, name="event_search_full"),
|
||||||
|
# Tags
|
||||||
|
path("tag/<t>/", view_tag, name="view_tag"),
|
||||||
|
path("tag/<t>/past", view_tag_past, name="view_tag_past"),
|
||||||
|
path("tag/<int:pk>/edit", TagUpdateView.as_view(), name="edit_tag"),
|
||||||
|
path("tags/", tag_list, name="view_all_tags"),
|
||||||
|
path(
|
||||||
|
"tag/<int:pk>/delete",
|
||||||
|
TagDeleteView.as_view(),
|
||||||
|
name="delete_object_tag",
|
||||||
|
),
|
||||||
|
path("tag/<t>/rename", rename_tag, name="rename_tag"),
|
||||||
|
path("tag/<t>/delete", delete_tag, name="delete_tag"),
|
||||||
|
path("tags/add", TagCreateView.as_view(), name="add_tag"),
|
||||||
# TODO pas encore trié
|
# TODO pas encore trié
|
||||||
path("cat:<cat>/", home, name="home_category"),
|
path("cat:<cat>/", home, name="home_category"),
|
||||||
path(
|
path(
|
||||||
@ -400,19 +431,7 @@ urlpatterns = [
|
|||||||
),
|
),
|
||||||
path("cette-semaine/", week_view, name="cette_semaine"),
|
path("cette-semaine/", week_view, name="cette_semaine"),
|
||||||
path("ce-mois-ci", month_view, name="ce_mois_ci"),
|
path("ce-mois-ci", month_view, name="ce_mois_ci"),
|
||||||
path("tag/<t>/", view_tag, name="view_tag"),
|
|
||||||
path("tag/<tag>/ical", export_ical, name="export_ical_tag"),
|
path("tag/<tag>/ical", export_ical, name="export_ical_tag"),
|
||||||
path("tag/<t>/past", view_tag_past, name="view_tag_past"),
|
|
||||||
path("tags/", tag_list, name="view_all_tags"),
|
|
||||||
path("tag/<int:pk>/edit", TagUpdateView.as_view(), name="edit_tag"),
|
|
||||||
path(
|
|
||||||
"tag/<int:pk>/delete",
|
|
||||||
TagDeleteView.as_view(),
|
|
||||||
name="delete_object_tag",
|
|
||||||
),
|
|
||||||
path("tag/<t>/rename", rename_tag, name="rename_tag"),
|
|
||||||
path("tag/<t>/delete", delete_tag, name="delete_tag"),
|
|
||||||
path("tags/add", TagCreateView.as_view(), name="add_tag"),
|
|
||||||
path("recent/", recent, name="recent"),
|
path("recent/", recent, name="recent"),
|
||||||
path("administration/", administration, name="administration"),
|
path("administration/", administration, name="administration"),
|
||||||
path(
|
path(
|
||||||
@ -435,11 +454,6 @@ urlpatterns = [
|
|||||||
EventUpdateView.as_view(),
|
EventUpdateView.as_view(),
|
||||||
name="clone_edit",
|
name="clone_edit",
|
||||||
),
|
),
|
||||||
path(
|
|
||||||
"event/<int:pk>/message",
|
|
||||||
MessageCreateView.as_view(),
|
|
||||||
name="message_for_event",
|
|
||||||
),
|
|
||||||
path(
|
path(
|
||||||
"event/<int:pk>/update-from-source",
|
"event/<int:pk>/update-from-source",
|
||||||
update_from_source,
|
update_from_source,
|
||||||
@ -468,17 +482,6 @@ urlpatterns = [
|
|||||||
StaticContentUpdateView.as_view(),
|
StaticContentUpdateView.as_view(),
|
||||||
name="edit_static_content",
|
name="edit_static_content",
|
||||||
),
|
),
|
||||||
path("contact", MessageCreateView.as_view(), name="contact"),
|
|
||||||
path(
|
|
||||||
"message/<int:pk>",
|
|
||||||
MessageUpdateView.as_view(),
|
|
||||||
name="message",
|
|
||||||
),
|
|
||||||
path(
|
|
||||||
"message/<int:pk>/delete",
|
|
||||||
MessageDeleteView.as_view(),
|
|
||||||
name="delete_message",
|
|
||||||
),
|
|
||||||
path("rimports/<int:pk>/stats", statistics, name="stats_rimport"),
|
path("rimports/<int:pk>/stats", statistics, name="stats_rimport"),
|
||||||
path(
|
path(
|
||||||
"organisme/<int:organisation_pk>/ical",
|
"organisme/<int:organisation_pk>/ical",
|
||||||
|
@ -5,6 +5,7 @@ from .errors import *
|
|||||||
from .general_pages_views import *
|
from .general_pages_views import *
|
||||||
from .import_batch_views import *
|
from .import_batch_views import *
|
||||||
from .import_recurrent_views import *
|
from .import_recurrent_views import *
|
||||||
|
from .message_views import *
|
||||||
from .moderation_views import *
|
from .moderation_views import *
|
||||||
from .organisations_views import *
|
from .organisations_views import *
|
||||||
from .places_views import *
|
from .places_views import *
|
||||||
|
@ -2,19 +2,15 @@ import calendar as _calendar
|
|||||||
from datetime import date, timedelta, datetime
|
from datetime import date, timedelta, datetime
|
||||||
|
|
||||||
from django.contrib.auth.decorators import login_required, permission_required
|
from django.contrib.auth.decorators import login_required, permission_required
|
||||||
from django.core.checks import messages
|
|
||||||
from django.core.paginator import PageNotAnInteger, EmptyPage
|
|
||||||
from django.db.models import Count, F
|
from django.db.models import Count, F
|
||||||
from django.db.models import Q, Min, Max, Avg, StdDev
|
from django.db.models import Q, Min, Max, Avg, StdDev
|
||||||
from django.db.models.functions import TruncMonth, ExtractDay
|
from django.db.models.functions import TruncMonth, ExtractDay
|
||||||
from django.http import HttpResponseRedirect
|
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
from django.urls import reverse_lazy
|
from django.urls import reverse_lazy
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from . import Median, week_view, PaginatorFilter
|
from . import Median, week_view
|
||||||
from ..filters import MessagesFilterAdmin
|
from ..models import RecurrentImport, Event
|
||||||
from ..models import RecurrentImport, Event, Message
|
|
||||||
|
|
||||||
|
|
||||||
def home(request, cat=None):
|
def home(request, cat=None):
|
||||||
@ -202,52 +198,3 @@ def activite(request):
|
|||||||
"weekly_modifications": weekly_modifications,
|
"weekly_modifications": weekly_modifications,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@login_required(login_url="/accounts/login/")
|
|
||||||
@permission_required("agenda_culturel.view_message")
|
|
||||||
def view_messages(request):
|
|
||||||
filter = MessagesFilterAdmin(
|
|
||||||
request.GET, queryset=Message.objects.all().order_by("-date")
|
|
||||||
)
|
|
||||||
paginator = PaginatorFilter(filter, 10, request)
|
|
||||||
page = request.GET.get("page")
|
|
||||||
|
|
||||||
nb_spams = Message.objects.filter(spam=True).count()
|
|
||||||
|
|
||||||
try:
|
|
||||||
response = paginator.page(page)
|
|
||||||
except PageNotAnInteger:
|
|
||||||
response = paginator.page(1)
|
|
||||||
except EmptyPage:
|
|
||||||
response = paginator.page(paginator.num_pages)
|
|
||||||
|
|
||||||
return render(
|
|
||||||
request,
|
|
||||||
"agenda_culturel/messages.html",
|
|
||||||
{"filter": filter, "nb_spams": nb_spams, "paginator_filter": response},
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@login_required(login_url="/accounts/login/")
|
|
||||||
@permission_required("agenda_culturel.view_message")
|
|
||||||
def delete_cm_spam(request):
|
|
||||||
if request.method == "POST":
|
|
||||||
Message.objects.filter(spam=True).delete()
|
|
||||||
|
|
||||||
messages.success(request, _("Spam has been successfully deleted."))
|
|
||||||
return HttpResponseRedirect(reverse_lazy("messages"))
|
|
||||||
else:
|
|
||||||
nb_msgs = Message.objects.values("spam").annotate(total=Count("spam"))
|
|
||||||
nb_total = sum([nb["total"] for nb in nb_msgs])
|
|
||||||
nb_spams = sum([nb["total"] for nb in nb_msgs if nb["spam"]])
|
|
||||||
cancel_url = reverse_lazy("messages")
|
|
||||||
return render(
|
|
||||||
request,
|
|
||||||
"agenda_culturel/delete_spams_confirm.html",
|
|
||||||
{
|
|
||||||
"nb_total": nb_total,
|
|
||||||
"nb_spams": nb_spams,
|
|
||||||
"cancel_url": cancel_url,
|
|
||||||
},
|
|
||||||
)
|
|
||||||
|
146
src/agenda_culturel/views/message_views.py
Normal file
146
src/agenda_culturel/views/message_views.py
Normal file
@ -0,0 +1,146 @@
|
|||||||
|
from django.contrib.auth.decorators import login_required, permission_required
|
||||||
|
from django.contrib.auth.mixins import PermissionRequiredMixin, LoginRequiredMixin
|
||||||
|
from django.contrib.messages.views import SuccessMessageMixin
|
||||||
|
from django.core.checks import messages
|
||||||
|
from django.core.paginator import PageNotAnInteger, EmptyPage
|
||||||
|
from django.db.models import Count
|
||||||
|
from django.http import HttpResponseRedirect
|
||||||
|
from django.shortcuts import render, get_object_or_404
|
||||||
|
from django.urls import reverse_lazy
|
||||||
|
from django.utils.decorators import method_decorator
|
||||||
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
from django.views.generic import DeleteView, UpdateView, CreateView
|
||||||
|
from honeypot.decorators import check_honeypot
|
||||||
|
|
||||||
|
from . import PaginatorFilter
|
||||||
|
from ..filters import MessagesFilterAdmin
|
||||||
|
from ..forms import MessageForm
|
||||||
|
from ..models import Event, Message
|
||||||
|
|
||||||
|
|
||||||
|
@method_decorator(check_honeypot, name="post")
|
||||||
|
class MessageCreateView(SuccessMessageMixin, CreateView):
|
||||||
|
model = Message
|
||||||
|
template_name = "agenda_culturel/message_create_form.html"
|
||||||
|
form_class = MessageForm
|
||||||
|
|
||||||
|
success_url = reverse_lazy("home")
|
||||||
|
success_message = _("Your message has been sent successfully.")
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
self.event = None
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
|
||||||
|
def get_form(self, form_class=None):
|
||||||
|
if form_class is None:
|
||||||
|
form_class = self.get_form_class()
|
||||||
|
return form_class(**self.get_form_kwargs())
|
||||||
|
|
||||||
|
def get_form_kwargs(self):
|
||||||
|
kwargs = super().get_form_kwargs()
|
||||||
|
kwargs["event"] = self.event
|
||||||
|
if self.request.user.is_authenticated:
|
||||||
|
kwargs["internal"] = True
|
||||||
|
return kwargs
|
||||||
|
|
||||||
|
def form_valid(self, form):
|
||||||
|
if self.request.user.is_authenticated:
|
||||||
|
form.instance.user = self.request.user
|
||||||
|
form.instance.message_type = (
|
||||||
|
Message.TYPE.EVENT_REPORT
|
||||||
|
if "pk" in self.kwargs
|
||||||
|
else Message.TYPE.CONTACT_FORM
|
||||||
|
)
|
||||||
|
return super().form_valid(form)
|
||||||
|
|
||||||
|
def get_initial(self):
|
||||||
|
result = super().get_initial()
|
||||||
|
if "pk" in self.kwargs:
|
||||||
|
self.event = get_object_or_404(Event, pk=self.kwargs["pk"])
|
||||||
|
result["related_event"] = self.event
|
||||||
|
result["subject"] = _("Reporting the event {} on {}").format(
|
||||||
|
self.event.title, self.event.start_day
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
result["related_event"] = None
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
class MessageDeleteView(SuccessMessageMixin, DeleteView):
|
||||||
|
model = Message
|
||||||
|
success_message = _("The contact message has been successfully deleted.")
|
||||||
|
success_url = reverse_lazy("messages")
|
||||||
|
|
||||||
|
|
||||||
|
class MessageUpdateView(
|
||||||
|
SuccessMessageMixin,
|
||||||
|
PermissionRequiredMixin,
|
||||||
|
LoginRequiredMixin,
|
||||||
|
UpdateView,
|
||||||
|
):
|
||||||
|
model = Message
|
||||||
|
permission_required = "agenda_culturel.change_message"
|
||||||
|
template_name = "agenda_culturel/message_moderation_form.html"
|
||||||
|
fields = ("spam", "closed", "comments")
|
||||||
|
|
||||||
|
success_message = _(
|
||||||
|
"The contact message properties has been successfully modified."
|
||||||
|
)
|
||||||
|
|
||||||
|
success_url = reverse_lazy("messages")
|
||||||
|
|
||||||
|
def get_form_kwargs(self):
|
||||||
|
"""Return the keyword arguments for instantiating the form."""
|
||||||
|
kwargs = super().get_form_kwargs()
|
||||||
|
if hasattr(self, "object"):
|
||||||
|
kwargs.update({"instance": self.object})
|
||||||
|
return kwargs
|
||||||
|
|
||||||
|
|
||||||
|
@login_required(login_url="/accounts/login/")
|
||||||
|
@permission_required("agenda_culturel.view_message")
|
||||||
|
def view_messages(request):
|
||||||
|
filter = MessagesFilterAdmin(
|
||||||
|
request.GET, queryset=Message.objects.all().order_by("-date")
|
||||||
|
)
|
||||||
|
paginator = PaginatorFilter(filter, 10, request)
|
||||||
|
page = request.GET.get("page")
|
||||||
|
|
||||||
|
nb_spams = Message.objects.filter(spam=True).count()
|
||||||
|
|
||||||
|
try:
|
||||||
|
response = paginator.page(page)
|
||||||
|
except PageNotAnInteger:
|
||||||
|
response = paginator.page(1)
|
||||||
|
except EmptyPage:
|
||||||
|
response = paginator.page(paginator.num_pages)
|
||||||
|
|
||||||
|
return render(
|
||||||
|
request,
|
||||||
|
"agenda_culturel/messages.html",
|
||||||
|
{"filter": filter, "nb_spams": nb_spams, "paginator_filter": response},
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@login_required(login_url="/accounts/login/")
|
||||||
|
@permission_required("agenda_culturel.view_message")
|
||||||
|
def delete_cm_spam(request):
|
||||||
|
if request.method == "POST":
|
||||||
|
Message.objects.filter(spam=True).delete()
|
||||||
|
|
||||||
|
messages.success(request, _("Spam has been successfully deleted."))
|
||||||
|
return HttpResponseRedirect(reverse_lazy("messages"))
|
||||||
|
else:
|
||||||
|
nb_msgs = Message.objects.values("spam").annotate(total=Count("spam"))
|
||||||
|
nb_total = sum([nb["total"] for nb in nb_msgs])
|
||||||
|
nb_spams = sum([nb["total"] for nb in nb_msgs if nb["spam"]])
|
||||||
|
cancel_url = reverse_lazy("messages")
|
||||||
|
return render(
|
||||||
|
request,
|
||||||
|
"agenda_culturel/delete_spams_confirm.html",
|
||||||
|
{
|
||||||
|
"nb_total": nb_total,
|
||||||
|
"nb_spams": nb_spams,
|
||||||
|
"cancel_url": cancel_url,
|
||||||
|
},
|
||||||
|
)
|
@ -22,7 +22,6 @@ from django.http import (
|
|||||||
)
|
)
|
||||||
from django.shortcuts import get_object_or_404, render
|
from django.shortcuts import get_object_or_404, render
|
||||||
from django.urls import reverse, reverse_lazy
|
from django.urls import reverse, reverse_lazy
|
||||||
from django.utils.decorators import method_decorator
|
|
||||||
from django.utils.html import escape
|
from django.utils.html import escape
|
||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
from django.utils.timezone import datetime
|
from django.utils.timezone import datetime
|
||||||
@ -34,7 +33,6 @@ from django.views.generic.edit import (
|
|||||||
ModelFormMixin,
|
ModelFormMixin,
|
||||||
UpdateView,
|
UpdateView,
|
||||||
)
|
)
|
||||||
from honeypot.decorators import check_honeypot
|
|
||||||
|
|
||||||
from .utils import get_event_qs
|
from .utils import get_event_qs
|
||||||
from ..calendar import CalendarList, CalendarMonth, CalendarWeek
|
from ..calendar import CalendarList, CalendarMonth, CalendarWeek
|
||||||
@ -50,7 +48,6 @@ from ..forms import (
|
|||||||
EventForm,
|
EventForm,
|
||||||
EventFormWithContact,
|
EventFormWithContact,
|
||||||
MessageEventForm,
|
MessageEventForm,
|
||||||
MessageForm,
|
|
||||||
SimpleContactForm,
|
SimpleContactForm,
|
||||||
URLSubmissionFormSet,
|
URLSubmissionFormSet,
|
||||||
URLSubmissionFormWithContact,
|
URLSubmissionFormWithContact,
|
||||||
@ -919,85 +916,6 @@ def export_ical(request, cat=None, tag=None, organisation_pk=None, place_pk=None
|
|||||||
return response
|
return response
|
||||||
|
|
||||||
|
|
||||||
@method_decorator(check_honeypot, name="post")
|
|
||||||
class MessageCreateView(SuccessMessageMixin, CreateView):
|
|
||||||
model = Message
|
|
||||||
template_name = "agenda_culturel/message_create_form.html"
|
|
||||||
form_class = MessageForm
|
|
||||||
|
|
||||||
success_url = reverse_lazy("home")
|
|
||||||
success_message = _("Your message has been sent successfully.")
|
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
|
||||||
self.event = None
|
|
||||||
super().__init__(*args, **kwargs)
|
|
||||||
|
|
||||||
def get_form(self, form_class=None):
|
|
||||||
if form_class is None:
|
|
||||||
form_class = self.get_form_class()
|
|
||||||
return form_class(**self.get_form_kwargs())
|
|
||||||
|
|
||||||
def get_form_kwargs(self):
|
|
||||||
kwargs = super().get_form_kwargs()
|
|
||||||
kwargs["event"] = self.event
|
|
||||||
if self.request.user.is_authenticated:
|
|
||||||
kwargs["internal"] = True
|
|
||||||
return kwargs
|
|
||||||
|
|
||||||
def form_valid(self, form):
|
|
||||||
if self.request.user.is_authenticated:
|
|
||||||
form.instance.user = self.request.user
|
|
||||||
form.instance.message_type = (
|
|
||||||
Message.TYPE.EVENT_REPORT
|
|
||||||
if "pk" in self.kwargs
|
|
||||||
else Message.TYPE.CONTACT_FORM
|
|
||||||
)
|
|
||||||
return super().form_valid(form)
|
|
||||||
|
|
||||||
def get_initial(self):
|
|
||||||
result = super().get_initial()
|
|
||||||
if "pk" in self.kwargs:
|
|
||||||
self.event = get_object_or_404(Event, pk=self.kwargs["pk"])
|
|
||||||
result["related_event"] = self.event
|
|
||||||
result["subject"] = _("Reporting the event {} on {}").format(
|
|
||||||
self.event.title, self.event.start_day
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
result["related_event"] = None
|
|
||||||
return result
|
|
||||||
|
|
||||||
|
|
||||||
class MessageDeleteView(SuccessMessageMixin, DeleteView):
|
|
||||||
model = Message
|
|
||||||
success_message = _("The contact message has been successfully deleted.")
|
|
||||||
success_url = reverse_lazy("messages")
|
|
||||||
|
|
||||||
|
|
||||||
class MessageUpdateView(
|
|
||||||
SuccessMessageMixin,
|
|
||||||
PermissionRequiredMixin,
|
|
||||||
LoginRequiredMixin,
|
|
||||||
UpdateView,
|
|
||||||
):
|
|
||||||
model = Message
|
|
||||||
permission_required = "agenda_culturel.change_message"
|
|
||||||
template_name = "agenda_culturel/message_moderation_form.html"
|
|
||||||
fields = ("spam", "closed", "comments")
|
|
||||||
|
|
||||||
success_message = _(
|
|
||||||
"The contact message properties has been successfully modified."
|
|
||||||
)
|
|
||||||
|
|
||||||
success_url = reverse_lazy("messages")
|
|
||||||
|
|
||||||
def get_form_kwargs(self):
|
|
||||||
"""Return the keyword arguments for instantiating the form."""
|
|
||||||
kwargs = super().get_form_kwargs()
|
|
||||||
if hasattr(self, "object"):
|
|
||||||
kwargs.update({"instance": self.object})
|
|
||||||
return kwargs
|
|
||||||
|
|
||||||
|
|
||||||
@login_required(login_url="/accounts/login/")
|
@login_required(login_url="/accounts/login/")
|
||||||
@permission_required("agenda_culturel.view_event")
|
@permission_required("agenda_culturel.view_event")
|
||||||
def administration(request):
|
def administration(request):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user