staff can only add speakers from the right conference to a talk

This commit is contained in:
Guilhem Saurel 2017-11-28 00:39:25 +01:00
parent 45facae55c
commit ca38b114ec
2 changed files with 7 additions and 15 deletions

View File

@ -364,16 +364,8 @@ class VolunteerForm(forms.ModelForm):
fields = ['name', 'email', 'phone_number', 'sms_prefered', 'notes'] fields = ['name', 'email', 'phone_number', 'sms_prefered', 'notes']
class ParticipantWidget(ModelSelect2MultipleWidget): def get_talk_speaker_form_class(site):
model = Participant fields = ['name', 'email', 'twitter', 'linkedin', 'github', 'website', 'facebook', 'mastodon', 'phone_number']
search_fields = [ '%s__icontains' % field for field in ['name', 'email', 'twitter', 'linkedin', 'github', widget = ModelSelect2MultipleWidget(model=Participant, queryset=Participant.objects.filter(site=site),
'website', 'facebook', 'mastodon', 'phone_number' ]] search_fields=['%s__icontains' % field for field in fields])
return modelform_factory(Talk, fields=['speakers'], widgets={'speakers': widget})
class TalkSpeakerForm(forms.ModelForm):
class Meta:
model = Talk
fields = ['speakers']
widgets = {
'speakers': ParticipantWidget(),
}

View File

@ -26,7 +26,7 @@ from .decorators import speaker_required, volunteer_required, staff_required
from .mixins import StaffRequiredMixin, OnSiteMixin, OnSiteFormMixin from .mixins import StaffRequiredMixin, OnSiteMixin, OnSiteFormMixin
from .utils import is_staff from .utils import is_staff
from .models import Participant, Talk, TalkCategory, Vote, Track, Tag, Room, Volunteer, Activity from .models import Participant, Talk, TalkCategory, Vote, Track, Tag, Room, Volunteer, Activity
from .forms import TalkForm, TalkStaffForm, TalkFilterForm, TalkActionForm, TalkSpeakerForm, \ from .forms import TalkForm, TalkStaffForm, TalkFilterForm, TalkActionForm, get_talk_speaker_form_class, \
ParticipantForm, ParticipantFilterForm, NotifyForm, \ ParticipantForm, ParticipantFilterForm, NotifyForm, \
ConferenceForm, HomepageForm, CreateUserForm, TrackForm, RoomForm, \ ConferenceForm, HomepageForm, CreateUserForm, TrackForm, RoomForm, \
VolunteerForm, VolunteerFilterForm, MailForm, \ VolunteerForm, VolunteerFilterForm, MailForm, \
@ -708,7 +708,7 @@ def talk_decide(request, talk_id, accept):
@staff_required @staff_required
def talk_speaker_add(request, talk_id): def talk_speaker_add(request, talk_id):
talk = get_object_or_404(Talk, pk=talk_id, site=request.conference.site) talk = get_object_or_404(Talk, pk=talk_id, site=request.conference.site)
form = TalkSpeakerForm(request.POST or None, instance=talk) form = get_talk_speaker_form_class(site=talk.site)(request.POST or None, instance=talk)
if request.method == 'POST' and form.is_valid(): if request.method == 'POST' and form.is_valid():
form.save() form.save()
messages.success(request, _('Decision taken in account')) messages.success(request, _('Decision taken in account'))