staff can only add speakers from the right conference to a talk
This commit is contained in:
parent
45facae55c
commit
ca38b114ec
18
cfp/forms.py
18
cfp/forms.py
|
@ -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(),
|
|
||||||
}
|
|
||||||
|
|
|
@ -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'))
|
||||||
|
|
Loading…
Reference in New Issue