def passaLlista( request, pk ): credentials = getImpersonateUser(request) (user, l4) = credentials #prefixes: #https://docs.djangoproject.com/en/dev/ref/forms/api/#prefixes-for-forms formset = [] impartir = Impartir.objects.get(pk=pk) #seg------------------------------- pertany_al_professor = user.pk in [ impartir.horari.professor.pk, \ impartir.professor_guardia.pk if impartir.professor_guardia else -1] if not ( l4 or pertany_al_professor): raise Http404() head='' info={} info['old'] = unicode(impartir) info['professor'] = unicode(impartir.horari.professor) info['dia_setmana'] = unicode(impartir.horari.dia_de_la_setmana) info['dia_complet'] = impartir.dia_impartir.strftime( "%d/%m/%Y") info['hora'] = unicode(impartir.horari.hora) info['assignatura'] = unicode(impartir.horari.assignatura) info['nom_aula'] = unicode(impartir.horari.nom_aula) info['grup'] = unicode(impartir.horari.grup) url_next = '/presencia/mostraImpartir/%d/%d/%d/'% ( impartir.dia_impartir.year, impartir.dia_impartir.month, impartir.dia_impartir.day ) #---------------------------------Passar llista ------------------------------- if request.method == "POST": #un formulari per cada alumne de la llista totBe = True quelcomBe = False hiHaRetard = False form0 = forms.Form() formset.append( form0 ) for control_a in impartir.controlassistencia_set.order_by( 'alumne__grup', 'alumne' ): control_a.currentUser = user form=ControlAssistenciaForm( request.POST, prefix=str( control_a.pk ), instance=control_a ) control_a.professor = User2Professor(user) control_a.credentials = credentials if form.is_valid(): control_aux = form.save() hiHaRetard |= control_aux.estat.codi_estat == "R" quelcomBe |= True else: totBe = False #torno a posar el valor que hi havia ( per si el tutor l'ha justificat ) errors_formulari = form._errors form=ControlAssistenciaForm( prefix=str( control_a.pk ), instance=ControlAssistencia.objects.get( id= control_a.pk) ) form._errors = errors_formulari form.fields['estat'].label = control_a.alumne formset.append( form ) if quelcomBe: impartir.dia_passa_llista = datetime.now() impartir.professor_passa_llista = User2Professor( request.user ) impartir.currentUser = user try: impartir.save() #si hi ha retards, recordar que un retard provoca una incidència. if hiHaRetard: url_incidencies = reverse( "aula__horari__posa_incidencia" , kwargs={'pk': pk}) msg = u"""Has posat 'Retard', recorda que els retars provoquen incidències, s'hauran generat automàticament, valora si cal <a href="{url_incidencies}">gestionar les faltes</a>.""".format( url_incidencies = url_incidencies) messages.warning(request, SafeText(msg ) ) #LOGGING Accio.objects.create( tipus = 'PL', usuari = user, l4 = l4, impersonated_from = request.user if request.user != user else None, text = u"""Passar llista: {0}.""".format( impartir ) ) impartir_despres_de_passar_llista( impartir ) if totBe: return HttpResponseRedirect( url_next ) except ValidationError, e: #Com que no és un formulari de model cal tractar a mà les incidències del save: for _, v in e.message_dict.items(): form0._errors.setdefault(NON_FIELD_ERRORS, []).extend( v )
def passaLlista(request, pk): credentials = getImpersonateUser(request) (user, l4) = credentials #prefixes: #https://docs.djangoproject.com/en/dev/ref/forms/api/#prefixes-for-forms formset = [] impartir = Impartir.objects.get(pk=pk) #seg------------------------------- pertany_al_professor = user.pk in [ impartir.horari.professor.pk, \ impartir.professor_guardia.pk if impartir.professor_guardia else -1] if not (l4 or pertany_al_professor): raise Http404() head = '' info = {} info['old'] = unicode(impartir) info['professor'] = unicode(impartir.horari.professor) info['dia_setmana'] = unicode(impartir.horari.dia_de_la_setmana) info['dia_complet'] = impartir.dia_impartir.strftime("%d/%m/%Y") info['hora'] = unicode(impartir.horari.hora) info['assignatura'] = unicode(impartir.horari.assignatura) info['nom_aula'] = unicode(impartir.horari.nom_aula) info['grup'] = unicode(impartir.horari.grup) url_next = '/presencia/mostraImpartir/%d/%d/%d/' % ( impartir.dia_impartir.year, impartir.dia_impartir.month, impartir.dia_impartir.day) #---------------------------------Passar llista ------------------------------- if request.method == "POST": #un formulari per cada alumne de la llista totBe = True quelcomBe = False hiHaRetard = False form0 = forms.Form() formset.append(form0) for control_a in impartir.controlassistencia_set.order_by( 'alumne__grup', 'alumne'): control_a.currentUser = user form = ControlAssistenciaForm(request.POST, prefix=str(control_a.pk), instance=control_a) control_a.professor = User2Professor(user) control_a.credentials = credentials if form.is_valid(): try: control_aux = form.save() hiHaRetard |= control_aux.estat.codi_estat == "R" quelcomBe |= True except ValidationError, e: totBe = False #Com que no és un formulari de model cal tractar a mà les incidències del save: for _, v in e.message_dict.items(): form._errors.setdefault(NON_FIELD_ERRORS, []).extend(v) else: totBe = False #torno a posar el valor que hi havia ( per si el tutor l'ha justificat ) errors_formulari = form._errors form = ControlAssistenciaForm( prefix=str(control_a.pk), instance=ControlAssistencia.objects.get(id=control_a.pk)) form._errors = errors_formulari form.fields['estat'].label = control_a.alumne formset.append(form) if quelcomBe: impartir.dia_passa_llista = datetime.now() impartir.professor_passa_llista = User2Professor(request.user) impartir.currentUser = user try: impartir.save() #si hi ha retards, recordar que un retard provoca una incidència. if hiHaRetard: url_incidencies = reverse("aula__horari__posa_incidencia", kwargs={'pk': pk}) msg = u"""Has posat 'Retard', recorda que els retars provoquen incidències, s'hauran generat automàticament, valora si cal <a href="{url_incidencies}">gestionar les faltes</a>.""".format( url_incidencies=url_incidencies) messages.warning(request, SafeText(msg)) #LOGGING Accio.objects.create( tipus='PL', usuari=user, l4=l4, impersonated_from=request.user if request.user != user else None, text=u"""Passar llista: {0}.""".format(impartir)) impartir_despres_de_passar_llista(impartir) if totBe: return HttpResponseRedirect(url_next) except ValidationError, e: #Com que no és un formulari de model cal tractar a mà les incidències del save: for _, v in e.message_dict.items(): form0._errors.setdefault(NON_FIELD_ERRORS, []).extend(v)
impersonated_from = request.user if request.user != user else None, text = u"""Passar llista: {0}.""".format( impartir ) ) impartir_despres_de_passar_llista( impartir ) if totBe: return HttpResponseRedirect( url_next ) except ValidationError, e: #Com que no és un formulari de model cal tractar a mà les incidències del save: for _, v in e.message_dict.items(): form0._errors.setdefault(NON_FIELD_ERRORS, []).extend( v ) else: for control_a in impartir.controlassistencia_set.order_by( 'alumne' ): form=ControlAssistenciaForm( prefix=str( control_a.pk ), instance=control_a ) avui_es_anivesari = ( control_a.alumne.data_neixement.month == impartir.dia_impartir.month and control_a.alumne.data_neixement.day == impartir.dia_impartir.day ) form.fields['estat'].label = unicode( control_a.alumne ) + ( '(fa anys en aquesta data)' if avui_es_anivesari else '') formset.append( form ) for form in formset: if hasattr(form, 'instance'): #0 = present #1 = Falta d = dades_dissociades( form.instance ) form.hora_anterior = ( 0 if d['assistenciaaHoraAnterior'] == 'Present' else 1 if d['assistenciaaHoraAnterior'] == 'Absent' else None ) prediccio, pct = predictTreeModel( d) form.prediccio = ( 0 if prediccio == 'Present' else
l4=l4, impersonated_from=request.user if request.user != user else None, text=u"""Passar llista: {0}.""".format(impartir)) impartir_despres_de_passar_llista(impartir) if totBe: return HttpResponseRedirect(url_next) except ValidationError, e: #Com que no és un formulari de model cal tractar a mà les incidències del save: for _, v in e.message_dict.items(): form0._errors.setdefault(NON_FIELD_ERRORS, []).extend(v) else: for control_a in impartir.controlassistencia_set.order_by('alumne'): form = ControlAssistenciaForm(prefix=str(control_a.pk), instance=control_a) avui_es_anivesari = (control_a.alumne.data_neixement.month == impartir.dia_impartir.month and control_a.alumne.data_neixement.day == impartir.dia_impartir.day) form.fields['estat'].label = unicode(control_a.alumne) + ( '(fa anys en aquesta data)' if avui_es_anivesari else '') formset.append(form) for form in formset: if hasattr(form, 'instance'): #0 = present #1 = Falta d = dades_dissociades(form.instance) form.hora_anterior = ( 0 if d['assistenciaaHoraAnterior'] == 'Present' else 1 if d['assistenciaaHoraAnterior'] == 'Absent' else None)