staff can delete a participant that does not have any talk, fix #102
This commit is contained in:
parent
ca38b114ec
commit
603cec8303
|
@ -0,0 +1,21 @@
|
|||
{% extends 'base.html' %}
|
||||
|
||||
{% load crispy_forms_tags i18n %}
|
||||
|
||||
{% block content %}
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<form method="POST" class="form-horizontal col-md-8 col-md-offset-2">
|
||||
{% csrf_token %}
|
||||
<div class="form-group">
|
||||
{% blocktrans %}Are you really sure that you want to delete a speaker ?{% endblocktrans %}
|
||||
</div>
|
||||
{{ form|crispy }}
|
||||
<div class="col-md-12 text-center">
|
||||
<button type="submit" class="btn btn-warning text-center">{% trans "Yes, Delete" %}</button>
|
||||
<a href="javascript:history.back()" class="btn btn-default text-center">{% trans "Nope, Abort" %}</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
|
@ -10,7 +10,12 @@
|
|||
{% if participant.vip %}<span class="badge">{% trans "VIP" %}</span>{% endif %}
|
||||
</h1>
|
||||
|
||||
<p><a class="btn btn-success" href="{% url 'participant-edit' participant.pk %}">{% trans "Edit" %}</a></p>
|
||||
<p>
|
||||
<a class="btn btn-success" href="{% url 'participant-edit' participant.pk %}">{% trans "Edit" %}</a>
|
||||
{% if not participant.talk_set.exists %} -
|
||||
<a class="btn btn-danger" href="{% url 'participant-remove' participant.pk %}" >{% trans "Remove" %}</a>
|
||||
{% endif %}
|
||||
</p>
|
||||
|
||||
<h2>{% trans "Biography" %}</h2>
|
||||
<p>{{ participant.biography|linebreaksbr }}</p>
|
||||
|
|
|
@ -42,6 +42,7 @@ urlpatterns = [
|
|||
url(r'^staff/speakers/(?P<participant_id>[0-9]+)/$', views.participant_details, name='participant-details'),
|
||||
url(r'^staff/speakers/(?P<participant_id>[0-9]+)/add-talk/$', views.participant_add_talk, name='participant-add-talk'),
|
||||
url(r'^staff/speakers/(?P<participant_id>[0-9]+)/edit/$', views.ParticipantUpdate.as_view(), name='participant-edit'),
|
||||
url(r'^staff/speakers/(?P<participant_id>[0-9]+)/remove/$', views.ParticipantRemove.as_view(), name='participant-remove'),
|
||||
url(r'^staff/tracks/$', views.TrackList.as_view(), name='track-list'),
|
||||
url(r'^staff/tracks/add/$', views.TrackCreate.as_view(), name='track-add'),
|
||||
url(r'^staff/tracks/(?P<slug>[-\w]+)/edit/$', views.TrackUpdate.as_view(), name='track-edit'),
|
||||
|
|
13
cfp/views.py
13
cfp/views.py
|
@ -4,9 +4,9 @@ from django.shortcuts import get_object_or_404, redirect, render
|
|||
from django.template.loader import render_to_string
|
||||
from django.urls import reverse
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.views.generic import FormView, TemplateView
|
||||
from django.views.generic import DeleteView, FormView, TemplateView
|
||||
from django.contrib import messages
|
||||
from django.db.models import Q
|
||||
from django.db.models import Q, Count
|
||||
from django.views.generic import CreateView, DetailView, ListView, UpdateView
|
||||
from django.http import HttpResponse, Http404
|
||||
from django.utils import timezone
|
||||
|
@ -824,6 +824,15 @@ class ParticipantUpdate(StaffRequiredMixin, OnSiteFormMixin, UpdateView):
|
|||
)
|
||||
|
||||
|
||||
class ParticipantRemove(StaffRequiredMixin, OnSiteFormMixin, DeleteView):
|
||||
slug_field = 'pk'
|
||||
slug_url_kwarg = 'participant_id'
|
||||
success_url = reverse_lazy('participant-list')
|
||||
|
||||
def get_queryset(self):
|
||||
return Participant.objects.annotate(talk_count=Count('talk')).filter(talk_count=0)
|
||||
|
||||
|
||||
@staff_required
|
||||
def participant_add_talk(request, participant_id):
|
||||
participant = get_object_or_404(Participant, site=request.conference.site, pk=participant_id)
|
||||
|
|
Loading…
Reference in New Issue