On simplifie la page de modération et la page de proposition d'un événement
Fix #56 Fix #49
This commit is contained in:
parent
a82eb7e01c
commit
7a55525408
@ -41,6 +41,9 @@ $enable-responsive-typography: true;
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
body>footer {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
.cat,
|
.cat,
|
||||||
.action {
|
.action {
|
||||||
@ -607,3 +610,10 @@ form [role="button"] {
|
|||||||
.large {
|
.large {
|
||||||
margin: 2em auto;
|
margin: 2em auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media (min-width: 992px) {
|
||||||
|
.grid.two-columns {
|
||||||
|
grid-column-gap: var(--nav-element-spacing-vertical);
|
||||||
|
grid-template-columns: auto 25%;
|
||||||
|
}
|
||||||
|
}
|
@ -5,16 +5,35 @@
|
|||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<h1>Importer un événement</h1>
|
<h1>Ajouter un événement</h1>
|
||||||
<article>
|
<article>
|
||||||
<header>
|
<header>
|
||||||
{% url 'event_import_form' as local_url %}
|
{% url 'event_import_form' as local_url %}
|
||||||
{% include "agenda_culturel/static_content.html" with name="import" url_path=local_url %}
|
{% include "agenda_culturel/static_content.html" with name="import" url_path=local_url %}
|
||||||
</header>
|
</header>
|
||||||
|
</article>
|
||||||
|
<article>
|
||||||
|
<header>
|
||||||
|
<h2>Ajout automatique</h2>
|
||||||
|
<p>Si l'événement est déjà en ligne sur un autre site internet, on essaye de l'importer...</p>
|
||||||
|
</header>
|
||||||
<form method="post" action="">
|
<form method="post" action="">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
{{ form.as_p }}
|
{{ form.as_p }}
|
||||||
<input type="submit" value="Lancer l'import">
|
<input type="submit" value="Lancer l'import">
|
||||||
</form>
|
</form>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<header>
|
||||||
|
<h2>Ajout manuel</h2>
|
||||||
|
<p>Si l'import automatique ne marche pas, ou si l'événement n'est pas en ligne, vous pouvez l'ajouter en remplissant le
|
||||||
|
formulaire ci-dessous.</p>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<form method="post">{% csrf_token %}
|
||||||
|
{{ form_event.as_p }}
|
||||||
|
<input type="submit" value="Enregistrer">
|
||||||
|
</form>
|
||||||
|
</article>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
<div class="grid two-columns">
|
||||||
<article>
|
<article>
|
||||||
<header>
|
<header>
|
||||||
<h1>Derniers événements soumis</h1>
|
<h1>Derniers événements soumis</h1>
|
||||||
@ -43,4 +43,22 @@
|
|||||||
</footer>
|
</footer>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
|
<aside>
|
||||||
|
<article>
|
||||||
|
<h2>Consulter</h2>
|
||||||
|
<ul>
|
||||||
|
<li><a href="{% url 'view_all_tags' %}">Toutes les étiquettes</a></li>
|
||||||
|
</ul>
|
||||||
|
<h2>Configurer</h2>
|
||||||
|
<ul>
|
||||||
|
<li><a href="{% url 'admin:index' %}">Administration de django</a></li>
|
||||||
|
</ul>
|
||||||
|
</article>
|
||||||
|
<article>
|
||||||
|
<p>Vous êtes connecté(e) en tant que {{ user }}.</p>
|
||||||
|
<a role="button" href="{% url 'logout' %}?next={% url 'home' %}">Déconnexion</a>
|
||||||
|
</article>
|
||||||
|
</aside>
|
||||||
|
</div>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
@ -67,32 +67,21 @@
|
|||||||
<footer class="container-fluid">
|
<footer class="container-fluid">
|
||||||
<div class="grid">
|
<div class="grid">
|
||||||
<div>
|
<div>
|
||||||
<h3>Informations</h3>
|
<a href="{% url 'mentions_legales' %}">Mentions légales</a>
|
||||||
<ul>
|
|
||||||
<li><a href="{% url 'view_all_tags' %}">Toutes les étiquettes</a></li>
|
|
||||||
<li><a href="{% url 'mentions_legales' %}">Mentions légales</a></li>
|
|
||||||
<li><a>Exporter</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h3>Contribuer</h3>
|
Contact
|
||||||
<ul>
|
|
||||||
<li><a href="{% url 'event_import_form' %}">Importer un événement</a></li>
|
|
||||||
<li><a href="{% url 'add_event' %}">Créer un événement</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h3>Administrer</h3>
|
<a href="{% url 'add_event' %}">Ajouter un événement</a>
|
||||||
<ul>
|
</div>
|
||||||
{% if user.is_authenticated %}
|
<div>
|
||||||
<li><a href="{% url 'view_all_events' %}">Gérer les événements</a></li>
|
{% if user.is_authenticated %}
|
||||||
<li><a href="{% url 'admin:index' %}">Administration</a></li>
|
<a href="{% url 'moderation' %}">Administrer</a>
|
||||||
<li><a href="{% url 'logout' %}?next={% url 'home' %}">Déconnexion</a></li>
|
<p>Vous êtes connecté(e) en tant que {{ user }}</p>
|
||||||
<li>Vous êtes connecté(e) en tant que {{ user }}</li>
|
{% else %}
|
||||||
{% else %}
|
<a href="{% url 'login' %}?next={% url 'moderation' %}">Administrer</a>
|
||||||
<li><a href="{% url 'login' %}?next={% url 'view_all_events' %}">Connexion</a></li>
|
{% endif %}
|
||||||
{% endif %}
|
|
||||||
</ul>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -44,6 +44,6 @@ def show_badges_events():
|
|||||||
# TODO: seulement ceux dans le futur ?
|
# TODO: seulement ceux dans le futur ?
|
||||||
nb_drafts = nb_draft_events()
|
nb_drafts = nb_draft_events()
|
||||||
if nb_drafts != 0:
|
if nb_drafts != 0:
|
||||||
return mark_safe('<a href="' + reverse_lazy("view_all_events") + '?status=draft" class="badge" data-tooltip="' + str(nb_drafts) + ' brouillon' + pluralize(nb_drafts) + ' à valider">' + str(nb_drafts) + '</a>')
|
return mark_safe('<a href="' + reverse_lazy("moderation") + '?status=draft" class="badge" data-tooltip="' + str(nb_drafts) + ' brouillon' + pluralize(nb_drafts) + ' à valider">' + str(nb_drafts) + '</a>')
|
||||||
else:
|
else:
|
||||||
return ""
|
return ""
|
@ -17,13 +17,12 @@ urlpatterns = [
|
|||||||
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/<t>/", view_tag, name='view_tag'),
|
||||||
path("tags/", tag_list, name='view_all_tags'),
|
path("tags/", tag_list, name='view_all_tags'),
|
||||||
path("events/", event_list, name='view_all_events'),
|
path("moderation/", moderation, name='moderation'),
|
||||||
path("event/<int:pk>-<extra>", EventDetailView.as_view(), name="view_event"),
|
path("event/<int:pk>-<extra>", EventDetailView.as_view(), name="view_event"),
|
||||||
path("event/<int:pk>/edit", EventUpdateView.as_view(), name="edit_event"),
|
path("event/<int:pk>/edit", EventUpdateView.as_view(), name="edit_event"),
|
||||||
path("event/<int:pk>/change-status/<status>", change_status_event, name="change_status_event"),
|
path("event/<int:pk>/change-status/<status>", change_status_event, name="change_status_event"),
|
||||||
path("event/<int:pk>/delete", EventDeleteView.as_view(), name="delete_event"),
|
path("event/<int:pk>/delete", EventDeleteView.as_view(), name="delete_event"),
|
||||||
path("importer", import_from_url, name="event_import_form"),
|
path("ajouter", import_from_url, name="add_event"),
|
||||||
path("ajouter", EventCreateView.as_view(), name="add_event"),
|
|
||||||
path("admin/", admin.site.urls),
|
path("admin/", admin.site.urls),
|
||||||
path('accounts/', include('django.contrib.auth.urls')),
|
path('accounts/', include('django.contrib.auth.urls')),
|
||||||
path("test_app/", include("test_app.urls")),
|
path("test_app/", include("test_app.urls")),
|
||||||
|
@ -182,33 +182,33 @@ class StaticContentUpdateView(SuccessMessageMixin, LoginRequiredMixin, UpdateVie
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
class EventCreateView(SuccessMessageMixin, CreateView):
|
# class EventCreateView(SuccessMessageMixin, CreateView):
|
||||||
model = Event
|
# model = Event
|
||||||
|
|
||||||
form_class = EventForm
|
# form_class = EventForm
|
||||||
template_name_suffix = "_create_form"
|
# template_name_suffix = "_create_form"
|
||||||
success_message = _('The event has been submitted and will be published as soon as it has been validated by the moderation team.')
|
# success_message = _('The event has been submitted and will be published as soon as it has been validated by the moderation team.')
|
||||||
|
|
||||||
def get_form_kwargs(self):
|
# def get_form_kwargs(self):
|
||||||
kwargs = super().get_form_kwargs()
|
# kwargs = super().get_form_kwargs()
|
||||||
kwargs['is_authenticated'] = self.request.user.is_authenticated
|
# kwargs['is_authenticated'] = self.request.user.is_authenticated
|
||||||
return kwargs
|
# return kwargs
|
||||||
|
|
||||||
|
|
||||||
def get_initial(self):
|
# def get_initial(self):
|
||||||
initial = super().get_initial()
|
# initial = super().get_initial()
|
||||||
initial = initial.copy()
|
# initial = initial.copy()
|
||||||
initial["start_day"] = date.today() + timedelta(days=1)
|
# initial["start_day"] = date.today() + timedelta(days=1)
|
||||||
initial["start_time"] = "20:00"
|
# initial["start_time"] = "20:00"
|
||||||
initial["end_time"] = "22:00"
|
# initial["end_time"] = "22:00"
|
||||||
return initial
|
# return initial
|
||||||
|
|
||||||
|
|
||||||
def get_success_url(self, **kwargs):
|
# def get_success_url(self, **kwargs):
|
||||||
if self.request.user.is_authenticated:
|
# if self.request.user.is_authenticated:
|
||||||
return self.object.get_absolute_url()
|
# return self.object.get_absolute_url()
|
||||||
else:
|
# else:
|
||||||
return reverse_lazy("home")
|
# return reverse_lazy("home")
|
||||||
|
|
||||||
|
|
||||||
class EventUpdateView(SuccessMessageMixin, LoginRequiredMixin, UpdateView):
|
class EventUpdateView(SuccessMessageMixin, LoginRequiredMixin, UpdateView):
|
||||||
@ -224,7 +224,7 @@ class EventUpdateView(SuccessMessageMixin, LoginRequiredMixin, UpdateView):
|
|||||||
|
|
||||||
class EventDeleteView(SuccessMessageMixin, LoginRequiredMixin, DeleteView):
|
class EventDeleteView(SuccessMessageMixin, LoginRequiredMixin, DeleteView):
|
||||||
model = Event
|
model = Event
|
||||||
success_url = reverse_lazy('view_all_events')
|
success_url = reverse_lazy('moderation')
|
||||||
success_message = _('The event has been successfully deleted.')
|
success_message = _('The event has been successfully deleted.')
|
||||||
|
|
||||||
|
|
||||||
@ -258,12 +258,9 @@ def import_from_url(request):
|
|||||||
import logging
|
import logging
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
if "title" in request.POST and request.method == 'POST':
|
if request.method == 'POST' and "title" in request.POST:
|
||||||
logger.error("on passe l")
|
|
||||||
form = EventForm(request.POST)
|
form = EventForm(request.POST)
|
||||||
logger.error("on passe i")
|
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
logger.error("valide")
|
|
||||||
new_event = form.save()
|
new_event = form.save()
|
||||||
if request.user.is_authenticated:
|
if request.user.is_authenticated:
|
||||||
messages.success(request, _("The event is saved."))
|
messages.success(request, _("The event is saved."))
|
||||||
@ -277,9 +274,16 @@ def import_from_url(request):
|
|||||||
else:
|
else:
|
||||||
form = EventSubmissionForm()
|
form = EventSubmissionForm()
|
||||||
|
|
||||||
|
initial = {"start_day": date.today() + timedelta(days=1),
|
||||||
|
"start_time": "20:00",
|
||||||
|
"end_time": "22:00"}
|
||||||
|
|
||||||
|
form_event = EventForm(initial=initial)
|
||||||
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
form = EventSubmissionForm(request.POST)
|
form = EventSubmissionForm(request.POST)
|
||||||
|
|
||||||
|
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
cd = form.cleaned_data
|
cd = form.cleaned_data
|
||||||
url = cd.get('url')
|
url = cd.get('url')
|
||||||
@ -297,7 +301,7 @@ def import_from_url(request):
|
|||||||
else:
|
else:
|
||||||
form = EventForm(initial={'url': [url]})
|
form = EventForm(initial={'url': [url]})
|
||||||
messages.error(request, _("Unable to extract an event from the proposed URL. Please use the form below to submit the event."))
|
messages.error(request, _("Unable to extract an event from the proposed URL. Please use the form below to submit the event."))
|
||||||
return render(request, 'agenda_culturel/importer.html', context={'form': form })
|
return render(request, 'agenda_culturel/import.html', context={'form': form, 'form_event': form_event})
|
||||||
else:
|
else:
|
||||||
published = [e for e in existing if e.status == Event.STATUS.PUBLISHED]
|
published = [e for e in existing if e.status == Event.STATUS.PUBLISHED]
|
||||||
drafts = [e for e in existing if e.status == Event.STATUS.DRAFT]
|
drafts = [e for e in existing if e.status == Event.STATUS.DRAFT]
|
||||||
@ -314,7 +318,7 @@ def import_from_url(request):
|
|||||||
messages.info(request, _("This URL has already been submitted and is awaiting moderation."))
|
messages.info(request, _("This URL has already been submitted and is awaiting moderation."))
|
||||||
|
|
||||||
|
|
||||||
return render(request, 'agenda_culturel/import.html', context={'form': form })
|
return render(request, 'agenda_culturel/import.html', context={'form': form, 'form_event': form_event})
|
||||||
|
|
||||||
|
|
||||||
class EventFilterAdmin(django_filters.FilterSet):
|
class EventFilterAdmin(django_filters.FilterSet):
|
||||||
@ -326,7 +330,7 @@ class EventFilterAdmin(django_filters.FilterSet):
|
|||||||
|
|
||||||
|
|
||||||
@login_required(login_url="/accounts/login/")
|
@login_required(login_url="/accounts/login/")
|
||||||
def event_list(request):
|
def moderation(request):
|
||||||
filter = EventFilterAdmin(request.GET, queryset=Event.objects.all().order_by("-created_date"))
|
filter = EventFilterAdmin(request.GET, queryset=Event.objects.all().order_by("-created_date"))
|
||||||
paginator = Paginator(filter.qs, 10)
|
paginator = Paginator(filter.qs, 10)
|
||||||
page = request.GET.get('page')
|
page = request.GET.get('page')
|
||||||
@ -338,7 +342,7 @@ def event_list(request):
|
|||||||
except EmptyPage:
|
except EmptyPage:
|
||||||
response = paginator.page(paginator.num_pages)
|
response = paginator.page(paginator.num_pages)
|
||||||
|
|
||||||
return render(request, 'agenda_culturel/recently-added.html', {'filter': filter, 'paginator_filter': response})
|
return render(request, 'agenda_culturel/moderation.html', {'filter': filter, 'paginator_filter': response})
|
||||||
|
|
||||||
|
|
||||||
class SimpleSearchEventFilter(django_filters.FilterSet):
|
class SimpleSearchEventFilter(django_filters.FilterSet):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user