manager: sort roles in add/edit forms (#22244)

This commit is contained in:
Frédéric Péters 2018-03-03 10:47:08 +01:00
parent a20bfdb254
commit 78c2a6879b
2 changed files with 24 additions and 4 deletions

View File

@ -18,11 +18,12 @@ import csv
import datetime
from django import forms
from django.contrib.auth.models import Group
from django.forms import ValidationError
from django.utils.timezone import make_aware
from django.utils.translation import ugettext_lazy as _
from chrono.agendas.models import (Event, MeetingType, TimePeriod, Desk,
from chrono.agendas.models import (Agenda, Event, MeetingType, TimePeriod, Desk,
TimePeriodException)
from . import widgets
@ -39,6 +40,25 @@ class DateTimeWidget(widgets.DateTimeWidget):
super(DateTimeWidget, self).__init__(*args, options=DATETIME_OPTIONS, **kwargs)
class AgendaAddForm(forms.ModelForm):
class Meta:
model = Agenda
fields = ['label', 'kind', 'edit_role', 'view_role']
edit_role = forms.ModelChoiceField(
label=_('Edit Role'), required=False,
queryset=Group.objects.all().order_by('name'))
view_role = forms.ModelChoiceField(
label=_('View Role'), required=False,
queryset=Group.objects.all().order_by('name'))
class AgendaEditForm(AgendaAddForm):
class Meta:
model = Agenda
fields = ['label', 'slug', 'edit_role', 'view_role', 'minimal_booking_delay', 'maximal_booking_delay']
class EventForm(forms.ModelForm):
class Meta:
model = Event

View File

@ -34,7 +34,7 @@ from django.views.generic import (DetailView, CreateView, UpdateView,
from chrono.agendas.models import (Agenda, Event, MeetingType, TimePeriod,
Booking, Desk, TimePeriodException, ICSError)
from .forms import (EventForm, NewMeetingTypeForm, MeetingTypeForm,
from .forms import (AgendaAddForm, AgendaEditForm, EventForm, NewMeetingTypeForm, MeetingTypeForm,
TimePeriodForm, ImportEventsForm, NewDeskForm, DeskForm, TimePeriodExceptionForm,
ExceptionsImportForm)
@ -56,7 +56,7 @@ homepage = HomepageView.as_view()
class AgendaAddView(CreateView):
template_name = 'chrono/manager_agenda_form.html'
model = Agenda
fields = ['label', 'kind', 'edit_role', 'view_role']
form_class = AgendaAddForm
def dispatch(self, request, *args, **kwargs):
if not request.user.is_staff:
@ -79,7 +79,7 @@ agenda_add = AgendaAddView.as_view()
class AgendaEditView(UpdateView):
template_name = 'chrono/manager_agenda_form.html'
model = Agenda
fields = ['label', 'slug', 'edit_role', 'view_role', 'minimal_booking_delay', 'maximal_booking_delay']
form_class = AgendaEditForm
def get_object(self, queryset=None):
obj = super(AgendaEditView, self).get_object(queryset=queryset)