class ControlAssistenciaForm(ModelForm): estat = forms.ModelChoiceField( queryset=EstatControlAssistencia.objects.all(), empty_label=None, widget=bootStrapButtonSelect(attrs={'class': 'presenciaEstat'}), ) class Meta: model = ControlAssistencia fields = ('estat', )
class promoForm(ModelForm): decisio = forms.ChoiceField( widget=bootStrapButtonSelect(attrs={ 'class': 'buttons-promos disabled', }), choices=CHOICES, ) class Meta: model = Alumne fields = []
class ControlAssistenciaForm(ModelForm): estat = forms.ModelChoiceField( label="x", #queryset= EstatControlAssistencia.objects.all(), queryset=None, empty_label=None, widget=bootStrapButtonSelect(attrs={'class': 'presenciaEstat'}, ), ) class Meta: model = ControlAssistencia fields = ('estat', ) def __init__(self, *args, **kwargs): super(ControlAssistenciaForm, self).__init__(*args, **kwargs) self.fields['estat'].queryset = EstatControlAssistencia.objects.all()
def sortidaEdit(request, pk=None, clonar=False, origen=False): credentials = tools.getImpersonateUser(request) (user, _) = credentials es_post = (request.method == "POST") professor = User2Professor(user) professors_acompanyen_abans = set() professors_acompanyen_despres = set() professors_organitzen_abans = set() professors_organitzen_despres = set() fEsDireccioOrGrupSortides = request.user.groups.filter( name__in=[u"direcció", u"sortides"]).exists() if bool(pk) and not clonar: instance = get_object_or_404(Sortida, pk=pk) potEntrar = (professor in instance.professors_responsables.all() or professor in instance.altres_professors_acompanyants.all() or fEsDireccioOrGrupSortides) if not potEntrar: raise Http404 professors_acompanyen_abans = set( instance.altres_professors_acompanyants.all()) professors_organitzen_abans = set( instance.professors_responsables.all()) elif bool(pk) and clonar: instance = get_object_or_404(Sortida, pk=pk) instance.pk = None instance.estat = 'E' instance.titol_de_la_sortida = u"**CLONADA** " + instance.titol_de_la_sortida instance.esta_aprovada_pel_consell_escolar = 'P' instance.professor_que_proposa = professor # instance.professors_responsables = None # instance.altres_professors_acompanyants = None # instance.tutors_alumnes_convocats = None # instance.alumnes_convocats = None # instance.alumnes_que_no_vindran = None # instance.alumnes_justificacio = None # instance.professor_que_proposa_id = None else: instance = Sortida() instance.professor_que_proposa = professor instance.credentials = credentials exclude = ( 'alumnes_convocats', 'alumnes_que_no_vindran', 'alumnes_justificacio', ) formIncidenciaF = modelform_factory(Sortida, exclude=exclude) if request.method == "POST": post_mutable = request.POST.copy() if 'esta_aprovada_pel_consell_escolar' not in post_mutable: post_mutable['esta_aprovada_pel_consell_escolar'] = 'P' form = formIncidenciaF(post_mutable, instance=instance) if form.is_valid(): form.save() if origen == "Meves": messages.warning( request, SafeText(u"""RECORDA: Una vegada enviades les dades, has de seleccionar els <a href="{0}">alumnes convocats</a> i els <a href="{1}">alumnes que no hi van</a> des del menú desplegable ACCIONS""".format( "/sortides/alumnesConvocats/{id}".format( id=instance.id), "/sortides/alumnesFallen/{id}".format(id=instance.id), ))) professors_acompanyen_despres = set( instance.altres_professors_acompanyants.all()) professors_organitzen_despres = set( instance.professors_responsables.all()) acompanyen_nous = professors_acompanyen_despres - professors_acompanyen_abans organitzen_nous = professors_organitzen_despres - professors_organitzen_abans #helper missatges: data_inici = u"( data activitat encara no informada )" if instance.data_inici is not None: data_inici = """del dia {dia}""".format( dia=instance.data_inici.strftime('%d/%m/%Y')) #missatge a acompanyants: txt = u"""Has estat afegit com a professor acompanyant a l'activitat {sortida} {dia} """.format(sortida=instance.titol_de_la_sortida, dia=data_inici) enllac = reverse('sortides__sortides__edit_by_pk', kwargs={'pk': instance.id}) msg = Missatge(remitent=user, text_missatge=txt, enllac=enllac) for nou in acompanyen_nous: importancia = 'VI' msg.envia_a_usuari(nou, importancia) #missatge a responsables: txt = u"""Has estat afegit com a professor responsable a l'activitat {sortida} {dia} """.format(sortida=instance.titol_de_la_sortida, dia=data_inici) msg = Missatge(remitent=user, text_missatge=txt) for nou in organitzen_nous: importancia = 'VI' msg.envia_a_usuari(nou, importancia) nexturl = r"/sortides/sortides{origen}".format(origen=origen) return HttpResponseRedirect(nexturl) else: form = formIncidenciaF(instance=instance) form.fields['data_inici'].widget = DateTextImput() form.fields['data_fi'].widget = DateTextImput() #form.fields['estat'].widget = forms.RadioSelect( choices = form.fields['estat'].widget.choices ) widgetBootStrapButtonSelect = bootStrapButtonSelect() widgetBootStrapButtonSelect.choices = form.fields['estat'].widget.choices form.fields['estat'].widget = widgetBootStrapButtonSelect form.fields["alumnes_a_l_aula_amb_professor_titular"].widget.attrs[ 'style'] = u"width: 3%" form.fields["calendari_public"].widget.attrs['style'] = u"width: 3%" for f in form.fields: form.fields[f].widget.attrs[ 'class'] = ' form-control ' + form.fields[f].widget.attrs.get( 'class', "") form.fields['calendari_desde'].widget = DateTimeTextImput() form.fields['calendari_finsa'].widget = DateTimeTextImput() form.fields['termini_pagament'].widget = DateTimeTextImput() if not fEsDireccioOrGrupSortides: form.fields["esta_aprovada_pel_consell_escolar"].widget.attrs[ 'disabled'] = u"disabled" form.fields["codi_de_barres"].widget.attrs['disabled'] = u"disabled" form.fields["informacio_pagament"].widget.attrs[ 'disabled'] = u"disabled" #si no és propietari tot a disabled deshabilitat = (instance.id and not (professor in instance.professors_responsables.all() or fEsDireccioOrGrupSortides)) if deshabilitat: for field in form.fields: form.fields[field].widget.attrs['disabled'] = u"disabled" form.fields['estat'].label += u": {0} ".format( instance.get_estat_display()) return render( request, 'formSortida.html', { 'form': form, 'head': 'Sortides', 'missatge': 'Sortides', 'deshabilitat': '1==1' if deshabilitat else '1==2', }, )
def sortidaEdit( request, pk = None, origen=False ): credentials = tools.getImpersonateUser(request) (user, _ ) = credentials professor = User2Professor( user ) professors_acompanyen_abans = set( ) professors_acompanyen_despres = set( ) professors_organitzen_abans = set( ) professors_organitzen_despres = set( ) fEsDireccioOrGrupSortides = request.user.groups.filter(name__in=[u"direcció", u"sortides"] ).exists() if bool( pk ): instance = get_object_or_404( Sortida, pk = pk ) potEntrar = ( professor in instance.professors_responsables.all() or fEsDireccioOrGrupSortides ) if not potEntrar: raise Http404 professors_acompanyen_abans = set( instance.altres_professors_acompanyants.all() ) professors_organitzen_abans = set( instance.professors_responsables.all() ) else: instance = Sortida() instance.professor_que_proposa = professor instance.credentials = credentials exclude=( 'alumnes_convocats', 'alumnes_que_no_vindran', ) formIncidenciaF = modelform_factory(Sortida, exclude=exclude ) if request.method == "POST": post_mutable = request.POST.copy() if 'esta_aprovada_pel_consell_escolar' not in post_mutable: post_mutable['esta_aprovada_pel_consell_escolar'] = 'P' form = formIncidenciaF(post_mutable, instance = instance) if form.is_valid(): form.save() if origen=="Meves": messages.warning(request, SafeText(u"""RECORDA: Una vegada enviades les dades, has de seleccionar els <a href="{0}">alumnes convocats</a> i els <a href="{1}">alumnes que no hi van</a> des del menú desplegable ACCIONS""".format( "/sortides/alumnesConvocats/{id}".format( id = instance.id), "/sortides/alumnesFallen/{id}".format( id = instance.id), ) )) professors_acompanyen_despres = set( instance.altres_professors_acompanyants.all() ) professors_organitzen_despres = set( instance.professors_responsables.all() ) acompanyen_nous = professors_acompanyen_despres - professors_acompanyen_abans organitzen_nous = professors_organitzen_despres - professors_organitzen_abans #helper missatges: data_inici = u"( data activitat encara no informada )" if instance.data_inici is not None: data_inici = """del dia {dia}""".format( dia = instance.data_inici.strftime( '%d/%m/%Y' ) ) #missatge a acompanyants: txt = u"""Has estat afegit com a professor acompanyant a la sortida {sortida} {dia} """.format( sortida = instance.titol_de_la_sortida, dia = data_inici ) msg = Missatge( remitent = user, text_missatge = txt ) for nou in acompanyen_nous: importancia = 'VI' msg.envia_a_usuari(nou, importancia) #missatge a responsables: txt = u"""Has estat afegit com a professor responsable a la sortida {sortida} {dia} """.format( sortida = instance.titol_de_la_sortida, dia = data_inici ) msg = Missatge( remitent = user, text_missatge = txt ) for nou in organitzen_nous: importancia = 'VI' msg.envia_a_usuari(nou, importancia) nexturl = r"/sortides/sortides{origen}".format( origen = origen) return HttpResponseRedirect( nexturl ) else: form = formIncidenciaF( instance = instance ) form.fields['data_inici'].widget = DateTextImput() form.fields['data_fi'].widget = DateTextImput() #form.fields['estat'].widget = forms.RadioSelect( choices = form.fields['estat'].widget.choices ) widgetBootStrapButtonSelect= bootStrapButtonSelect( ) widgetBootStrapButtonSelect.choices = form.fields['estat'].widget.choices form.fields['estat'].widget = widgetBootStrapButtonSelect form.fields["calendari_public"].widget.attrs['style'] = u"width: 3%" for f in form.fields: form.fields[f].widget.attrs['class'] = ' form-control' + form.fields[f].widget.attrs.get('class',"") form.fields['calendari_desde'].widget = DateTimeTextImput() form.fields['calendari_finsa'].widget = DateTimeTextImput() if not fEsDireccioOrGrupSortides: form.fields["esta_aprovada_pel_consell_escolar"].widget.attrs['disabled'] = u"disabled" return render_to_response( 'formSortida.html', {'form': form, 'head': 'Sortides' , 'missatge': 'Sortides' }, context_instance=RequestContext(request))
def sortidaEdit(request, pk=None, clonar=False, origen=False): credentials = tools.getImpersonateUser(request) (user, _) = credentials es_post = (request.method == "POST") professor = User2Professor(user) professors_acompanyen_abans = set() professors_acompanyen_despres = set() professors_organitzen_abans = set() professors_organitzen_despres = set() fEsDireccioOrGrupSortides = request.user.groups.filter( name__in=[u"direcció", u"sortides"]).exists() if bool(pk) and not clonar: instance = get_object_or_404(Sortida, pk=pk) potEntrar = (professor in instance.professors_responsables.all() or professor in instance.altres_professors_acompanyants.all() or fEsDireccioOrGrupSortides) if not potEntrar: raise Http404 professors_acompanyen_abans = set( instance.altres_professors_acompanyants.all()) professors_organitzen_abans = set( instance.professors_responsables.all()) elif bool(pk) and clonar: instance = get_object_or_404(Sortida, pk=pk) instance.pk = None instance.estat = 'E' instance.titol_de_la_sortida = u"**CLONADA** " + instance.titol_de_la_sortida instance.esta_aprovada_pel_consell_escolar = 'P' instance.professor_que_proposa = professor # instance.professors_responsables = None # instance.altres_professors_acompanyants = None # instance.tutors_alumnes_convocats = None # instance.alumnes_convocats = None # instance.alumnes_que_no_vindran = None # instance.alumnes_justificacio = None # instance.professor_que_proposa_id = None else: instance = Sortida() instance.professor_que_proposa = professor instance.credentials = credentials # És un formulari reduit? if settings.CUSTOM_FORMULARI_SORTIDES_REDUIT: exclude = ('alumnes_convocats', 'alumnes_que_no_vindran', 'alumnes_justificacio', 'data_inici', 'franja_inici', 'data_fi', 'franja_fi', 'codi_de_barres', 'empresa_de_transport', 'pagament_a_empresa_de_transport', 'pagament_a_altres_empreses', 'feina_per_als_alumnes_aula') else: exclude = ( 'alumnes_convocats', 'alumnes_que_no_vindran', 'alumnes_justificacio', ) formIncidenciaF = modelform_factory(Sortida, exclude=exclude) if request.method == "POST": post_mutable = request.POST.copy() if 'esta_aprovada_pel_consell_escolar' not in post_mutable: post_mutable['esta_aprovada_pel_consell_escolar'] = 'P' form = formIncidenciaF(post_mutable, instance=instance) if form.is_valid(): # Omplir camps de classes afectades if settings.CUSTOM_FORMULARI_SORTIDES_REDUIT: #Buscar primera impartició afectada primeraimparticio = Impartir.objects.filter( dia_impartir__gte=instance.calendari_desde.date(), horari__hora__hora_inici__gte=instance.calendari_desde. time()).order_by('dia_impartir', 'horari__hora__hora_inici').first() try: instance.data_inici = primeraimparticio.dia_impartir instance.franja_inici = primeraimparticio.horari.hora # Si no hi ha primera impartició afectada s'agafa la del primer dia lectiu posterior except: instance.data_inici = Impartir.objects.filter( dia_impartir__gt=instance.calendari_desde.date( )).order_by('dia_impartir').first().dia_impartir instance.franja_inici = FranjaHoraria.objects.order_by( 'hora_inici').first() # Buscar darrera impartició afectada darreraimparticio = Impartir.objects.filter( dia_impartir__lte=instance.calendari_finsa.date(), horari__hora__hora_fi__lte=instance.calendari_finsa.time() ).order_by('dia_impartir', 'horari__hora__hora_fi').last() try: instance.data_fi = darreraimparticio.dia_impartir instance.franja_fi = darreraimparticio.horari.hora # Si no hi ha darrera impartició afectada s'agafa la del primer dia lectiu anterior except: instance.data_fi = Impartir.objects.filter( dia_impartir__lt=instance.calendari_finsa.date( )).order_by('dia_impartir').last().dia_impartir instance.franja_fi = FranjaHoraria.objects.order_by( 'hora_inici').last() # Comprovem si la sortida en realitat no afecta cap hora d'impartició, això passa quan la data inicial > data final if (instance.data_fi < instance.data_inici): instance.data_inici = None instance.data_fi = None instance.franja_inici = None instance.franja_fi = None form.save() if origen == "Meves": messages.warning( request, SafeText(u"""RECORDA: Una vegada enviades les dades, has de seleccionar els <a href="{0}">alumnes convocats</a> i els <a href="{1}">alumnes que no hi van</a> des del menú desplegable ACCIONS""".format( "/sortides/alumnesConvocats/{id}".format( id=instance.id), "/sortides/alumnesFallen/{id}".format(id=instance.id), ))) professors_acompanyen_despres = set( instance.altres_professors_acompanyants.all()) professors_organitzen_despres = set( instance.professors_responsables.all()) acompanyen_nous = professors_acompanyen_despres - professors_acompanyen_abans organitzen_nous = professors_organitzen_despres - professors_organitzen_abans # helper missatges: data_inici = u"( data activitat encara no informada )" if instance.data_inici is not None: data_inici = """del dia {dia}""".format( dia=instance.data_inici.strftime('%d/%m/%Y')) # missatge a acompanyants: missatge = ACOMPANYANT_A_ACTIVITAT txt = missatge.format(sortida=instance.titol_de_la_sortida, dia=data_inici) enllac = reverse('sortides__sortides__edit_by_pk', kwargs={'pk': instance.id}) tipus_de_missatge = tipusMissatge(missatge) msg = Missatge(remitent=user, text_missatge=txt, enllac=enllac, tipus_de_missatge=tipus_de_missatge) for nou in acompanyen_nous: importancia = 'VI' msg.envia_a_usuari(nou, importancia) # missatge a responsables: missatge = RESPONSABLE_A_ACTIVITAT txt = missatge.format(sortida=instance.titol_de_la_sortida, dia=data_inici) tipus_de_missatge = tipusMissatge(missatge) msg = Missatge(remitent=user, text_missatge=txt, tipus_de_missatge=tipus_de_missatge) for nou in organitzen_nous: importancia = 'VI' msg.envia_a_usuari(nou, importancia) nexturl = r"/sortides/sortides{origen}".format(origen=origen) return HttpResponseRedirect(nexturl) else: form = formIncidenciaF(instance=instance) # form.fields['estat'].widget = forms.RadioSelect( choices = form.fields['estat'].widget.choices ) widgetBootStrapButtonSelect = bootStrapButtonSelect() widgetBootStrapButtonSelect.choices = form.fields['estat'].widget.choices form.fields['estat'].widget = widgetBootStrapButtonSelect form.fields["alumnes_a_l_aula_amb_professor_titular"].widget.attrs[ 'style'] = u"width: 3%" form.fields["calendari_public"].widget.attrs['style'] = u"width: 3%" for f in form.fields: form.fields[f].widget.attrs[ 'class'] = ' form-control ' + form.fields[f].widget.attrs.get( 'class', "") form.fields['calendari_desde'].widget = DateTimeTextImput() form.fields['calendari_finsa'].widget = DateTimeTextImput() form.fields['termini_pagament'].widget = DateTimeTextImput() if not fEsDireccioOrGrupSortides: form.fields["esta_aprovada_pel_consell_escolar"].widget.attrs[ 'disabled'] = u"disabled" if not settings.CUSTOM_FORMULARI_SORTIDES_REDUIT: form.fields["codi_de_barres"].widget.attrs[ 'disabled'] = u"disabled" form.fields["informacio_pagament"].widget.attrs[ 'disabled'] = u"disabled" # si no és propietari tot a disabled deshabilitat = (instance.id and not (professor in instance.professors_responsables.all() or fEsDireccioOrGrupSortides)) if deshabilitat: for field in form.fields: form.fields[field].widget.attrs['disabled'] = u"disabled" form.fields['estat'].label += u": {0} ".format( instance.get_estat_display()) return render( request, 'formSortida.html', { 'form': form, 'head': 'Sortides', 'missatge': 'Sortides', 'deshabilitat': '1==1' if deshabilitat else '1==2', }, )
def sortidaEdit(request, pk=None, clonar=False, origen=False): credentials = tools.getImpersonateUser(request) (user, _) = credentials es_post = (request.method == "POST") professor = User2Professor(user) professors_acompanyen_abans = set() professors_acompanyen_despres = set() professors_organitzen_abans = set() professors_organitzen_despres = set() fEsDireccioOrGrupSortides = request.user.groups.filter(name__in=[u"direcció", u"sortides"]).exists() if bool(pk) and not clonar: instance = get_object_or_404(Sortida, pk=pk) potEntrar = (professor in instance.professors_responsables.all() or professor in instance.altres_professors_acompanyants.all() or fEsDireccioOrGrupSortides) if not potEntrar: raise Http404 professors_acompanyen_abans = set(instance.altres_professors_acompanyants.all()) professors_organitzen_abans = set(instance.professors_responsables.all()) elif bool(pk) and clonar: instance = get_object_or_404(Sortida, pk=pk) instance.pk = None instance.estat = 'E' instance.titol_de_la_sortida = u"**CLONADA** " + instance.titol_de_la_sortida instance.esta_aprovada_pel_consell_escolar = 'P' instance.professor_que_proposa = professor # instance.professors_responsables = None # instance.altres_professors_acompanyants = None # instance.tutors_alumnes_convocats = None # instance.alumnes_convocats = None # instance.alumnes_que_no_vindran = None # instance.alumnes_justificacio = None # instance.professor_que_proposa_id = None else: instance = Sortida() instance.professor_que_proposa = professor instance.credentials = credentials # És un formulari reduit? if settings.CUSTOM_FORMULARI_SORTIDES_REDUIT: exclude = ('alumnes_convocats', 'alumnes_que_no_vindran', 'alumnes_justificacio', 'data_inici', 'franja_inici', 'data_fi', 'franja_fi', 'codi_de_barres', 'empresa_de_transport', 'pagament_a_empresa_de_transport', 'pagament_a_altres_empreses', 'feina_per_als_alumnes_aula') else: exclude = ('alumnes_convocats', 'alumnes_que_no_vindran', 'alumnes_justificacio',) formIncidenciaF = modelform_factory(Sortida, exclude=exclude) if request.method == "POST": post_mutable = request.POST.copy() if 'esta_aprovada_pel_consell_escolar' not in post_mutable: post_mutable['esta_aprovada_pel_consell_escolar'] = 'P' form = formIncidenciaF(post_mutable, instance=instance) if form.is_valid(): # Omplir camps de classes afectades if settings.CUSTOM_FORMULARI_SORTIDES_REDUIT: #Buscar primera impartició afectada primeraimparticio = Impartir.objects.filter(dia_impartir__gte=instance.calendari_desde.date(), horari__hora__hora_inici__gte=instance.calendari_desde.time()).order_by( 'dia_impartir', 'horari__hora__hora_inici').first() try: instance.data_inici = primeraimparticio.dia_impartir instance.franja_inici = primeraimparticio.horari.hora # Si no hi ha primera impartició afectada s'agafa la del primer dia lectiu posterior except: instance.data_inici = Impartir.objects.filter( dia_impartir__gt=instance.calendari_desde.date()).order_by( 'dia_impartir').first().dia_impartir instance.franja_inici = FranjaHoraria.objects.order_by('hora_inici').first() # Buscar darrera impartició afectada darreraimparticio = Impartir.objects.filter(dia_impartir__lte=instance.calendari_finsa.date(), horari__hora__hora_fi__lte=instance.calendari_finsa.time()).order_by( 'dia_impartir', 'horari__hora__hora_fi').last() try: instance.data_fi = darreraimparticio.dia_impartir instance.franja_fi = darreraimparticio.horari.hora # Si no hi ha darrera impartició afectada s'agafa la del primer dia lectiu anterior except: instance.data_fi = Impartir.objects.filter(dia_impartir__lt=instance.calendari_finsa.date()).order_by( 'dia_impartir').last().dia_impartir instance.franja_fi = FranjaHoraria.objects.order_by('hora_inici').last() # Comprovem si la sortida en realitat no afecta cap hora d'impartició, això passa quan la data inicial > data final if (instance.data_fi < instance.data_inici): instance.data_inici = None instance.data_fi = None instance.franja_inici = None instance.franja_fi = None form.save() if origen == "Meves": messages.warning(request, SafeText(u"""RECORDA: Una vegada enviades les dades, has de seleccionar els <a href="{0}">alumnes convocats</a> i els <a href="{1}">alumnes que no hi van</a> des del menú desplegable ACCIONS""".format( "/sortides/alumnesConvocats/{id}".format(id=instance.id), "/sortides/alumnesFallen/{id}".format(id=instance.id), ) )) professors_acompanyen_despres = set(instance.altres_professors_acompanyants.all()) professors_organitzen_despres = set(instance.professors_responsables.all()) acompanyen_nous = professors_acompanyen_despres - professors_acompanyen_abans organitzen_nous = professors_organitzen_despres - professors_organitzen_abans # helper missatges: data_inici = u"( data activitat encara no informada )" if instance.data_inici is not None: data_inici = """del dia {dia}""".format(dia=instance.data_inici.strftime('%d/%m/%Y')) # missatge a acompanyants: missatge = ACOMPANYANT_A_ACTIVITAT txt = missatge.format(sortida=instance.titol_de_la_sortida, dia=data_inici) enllac = reverse('sortides__sortides__edit_by_pk', kwargs={'pk': instance.id}) tipus_de_missatge = tipusMissatge(missatge) msg = Missatge(remitent=user, text_missatge=txt, enllac=enllac, tipus_de_missatge=tipus_de_missatge) for nou in acompanyen_nous: importancia = 'VI' msg.envia_a_usuari(nou, importancia) # missatge a responsables: missatge = RESPONSABLE_A_ACTIVITAT txt = missatge.format(sortida=instance.titol_de_la_sortida, dia=data_inici) tipus_de_missatge = tipusMissatge(missatge) msg = Missatge(remitent=user, text_missatge=txt, tipus_de_missatge=tipus_de_missatge) for nou in organitzen_nous: importancia = 'VI' msg.envia_a_usuari(nou, importancia) nexturl = r"/sortides/sortides{origen}".format(origen=origen) return HttpResponseRedirect(nexturl) else: form = formIncidenciaF(instance=instance) # form.fields['estat'].widget = forms.RadioSelect( choices = form.fields['estat'].widget.choices ) widgetBootStrapButtonSelect = bootStrapButtonSelect() widgetBootStrapButtonSelect.choices = form.fields['estat'].widget.choices form.fields['estat'].widget = widgetBootStrapButtonSelect form.fields["alumnes_a_l_aula_amb_professor_titular"].widget.attrs['style'] = u"width: 3%" form.fields["calendari_public"].widget.attrs['style'] = u"width: 3%" for f in form.fields: form.fields[f].widget.attrs['class'] = ' form-control ' + form.fields[f].widget.attrs.get('class', "") form.fields['calendari_desde'].widget = DateTimeTextImput() form.fields['calendari_finsa'].widget = DateTimeTextImput() form.fields['termini_pagament'].widget = DateTimeTextImput() if not fEsDireccioOrGrupSortides: form.fields["esta_aprovada_pel_consell_escolar"].widget.attrs['disabled'] = u"disabled" if not settings.CUSTOM_FORMULARI_SORTIDES_REDUIT: form.fields["codi_de_barres"].widget.attrs['disabled'] = u"disabled" form.fields["informacio_pagament"].widget.attrs['disabled'] = u"disabled" # si no és propietari tot a disabled deshabilitat = (instance.id and not (professor in instance.professors_responsables.all() or fEsDireccioOrGrupSortides) ) if deshabilitat: for field in form.fields: form.fields[field].widget.attrs['disabled'] = u"disabled" form.fields['estat'].label += u": {0} ".format(instance.get_estat_display()) return render( request, 'formSortida.html', {'form': form, 'head': 'Sortides', 'missatge': 'Sortides', 'deshabilitat': '1==1' if deshabilitat else '1==2', }, )