def enviaMissatgeProfessorsPas(request): credentials = tools.getImpersonateUser(request) (user, l4) = credentials formset = [] msgFormF = modelform_factory(Missatge, fields=('text_missatge',)) if request.method == 'POST': msg = Missatge(remitent=user) msg.credentials = credentials formProfessorConserge = triaProfessorsConsergesSelect2Form(data=request.POST) msgForm = msgFormF(data=request.POST, instance=msg) if formProfessorConserge.is_valid() and msgForm.is_valid(): msg.tipus_de_missatge = 'MISSATGERIA' msg.save() professors_conserges = formProfessorConserge.cleaned_data['professors_conserges'] destinataris_txt = ", ".join( unicode(pc) for pc in professors_conserges) for professor_conserge in professors_conserges: msg.envia_a_usuari(professor_conserge.getUser(), 'IN') # envio al que ho envia: missatge = ACUS_REBUT_ENVIAT_A_PROFE_O_PAS tipus_de_missatge = tipusMissatge(missatge) msg2 = Missatge(remitent=user, text_missatge=missatge.format( destinataris_txt, msg.text_missatge), tipus_de_missatge= tipus_de_missatge) msg2.envia_a_usuari(user, 'PI') msg2.destinatari_set.filter(destinatari = user).update(moment_lectura=datetime.now()) messages.info(request, u"Missatge a {destinataris} enviat correctament".format(destinataris=destinataris_txt)) if user.groups.filter(name="consergeria").exists(): url = '/missatgeria/enviaMissatgeProfessorsPas/' else: url = '/missatgeria/elMeuMur/' return HttpResponseRedirect(url) else: formProfessorConserge = triaProfessorsConsergesSelect2Form() msgForm = msgFormF() formset.append(formProfessorConserge) formset.append(msgForm) for form in formset: for field in form.fields: form.fields[field].widget.attrs['class'] = "form-control" return render( request, 'formset.html', {'formset': formset, 'titol_formulari': u"Missatge a professors i/o PAS", 'head': u"Missatge a membres del professorat o consergeria", }, )
def enviaMissatgeTutors( request ): credentials = tools.getImpersonateUser(request) (user, l4) = credentials formset = [] msgFormF = modelform_factory(Missatge, fields=( 'text_missatge', ) ) if request.method == 'POST': msg = Missatge( remitent = user ) msg.credentials = credentials formAlumne = triaAlumneForm( data = request.POST) formData= dataForm( data = request.POST ) msgForm = msgFormF( data = request.POST, instance = msg ) if formAlumne.is_valid() and msgForm.is_valid() and formData.is_valid(): alumne = formAlumne.cleaned_data['alumne'] tutors = alumne.tutorsDeLAlumne() data = formData.cleaned_data['data'] if len( tutors ) == 0: formAlumne._errors.setdefault(NON_FIELD_ERRORS, []).append( u'''No trobat el tutor d'aquest alumne. Cal trucar al cap d'estudis.''' ) else: msg.save() strTutors = u'' separador = '' for tutor in tutors: txt = u'''Missatge relatiu al teu alumne tutorat {0}: Amb data {1}, {2}'''.format( unicode(alumne), unicode(data), msg.text_missatge) msg.text_missatge = txt msg.envia_a_usuari(tutor.getUser(), 'IN') msg.enllac = '/tutoria/justificaFaltes/{0}/{1}/{2}/{3}'.format( alumne.pk, data.year, data.month, data.day ) msg.save() strTutors += separador + u'Sr(a)' + unicode(tutor ) separador = u', ' txtMsg = msg.text_missatge #envio al que ho envia: msg = Missatge( remitent = user, text_missatge = u'''Avís a tutors de l'alumne {0} enviat a {1}. El text de l'avís és: "{2}"'''.format( alumne, strTutors, txtMsg ) ) msg.envia_a_usuari(user, 'PI') url = '/missatgeria/elMeuMur/' return HttpResponseRedirect( url ) else: formAlumne = triaAlumneForm( ) formData = dataForm( label='Data', help_text=u'El text del missatge començarà per: Amb data ______, ' ) msgForm = msgFormF( ) formData.fields['data'].required = True formset.append( formAlumne ) formset.append( formData ) formset.append( msgForm ) return render_to_response( 'formset.html', {'formset': formset, 'head': 'Avís a tutors.' , }, context_instance=RequestContext(request))
def enviaMissatgeAdministradors( request ): credentials = tools.getImpersonateUser(request) (user, l4) = credentials formset = [] msgFormF = modelform_factory(Missatge, fields=( 'text_missatge', ) ) if request.method == 'POST': msg = Missatge( remitent = user ) msg.credentials = credentials msgForm = msgFormF( data = request.POST, instance = msg ) if msgForm.is_valid(): administradors = Group.objects.get_or_create( name = 'administradors' )[0].user_set.all() if len( administradors ) == 0: msgForm._errors.setdefault(NON_FIELD_ERRORS, []).append( u'''No estan definits els administradors, sorry.''' ) else: missatge = ERROR_AL_PROGRAMA msg.text_missatge = missatge.format(msg.text_missatge) tipus_de_missatge = tipusMissatge(missatge) msg.tipus_de_missatge = tipus_de_missatge msg.save() strAdmins = u'' separador = '' for administrador in administradors: msg.envia_a_usuari(administrador, 'VI') strAdmins += separador + u'Sr(a)' + unicode( administrador ) separador = u', ' txtMsg = msg.text_missatge #envio al que ho envia: missatge = ACUS_REBUT_ERROR_AL_PROGRAMA tipus_de_missatge = tipusMissatge(missatge) msg = Missatge( remitent = user, text_missatge = missatge.format( txtMsg ), tipus_de_missatge = tipus_de_missatge ) msg.envia_a_usuari(user, 'PI') url = '/missatgeria/elMeuMur/' return HttpResponseRedirect( url ) else: msgForm = msgFormF( ) formset.append( msgForm ) for form in formset: for field in form.fields: form.fields[field].widget.attrs['class'] = "form-control" return render( request, 'formset.html', {'formset': formset, 'head': u'''Avís a administradors. En cas d'error, sisplau, detalla clarament totes les passes per reproduir l'error.''' , }, )
def enviaMissatgeProfessorsPas(request): credentials = tools.getImpersonateUser(request) (user, l4) = credentials formset = [] msgFormF = modelform_factory(Missatge, fields=('text_missatge',)) if request.method == 'POST': msg = Missatge(remitent=user) msg.credentials = credentials formProfessorConserge = triaProfessorsConsergesSelect2Form(data=request.POST) msgForm = msgFormF(data=request.POST, instance=msg) if formProfessorConserge.is_valid() and msgForm.is_valid(): msg.save() professors_conserges = formProfessorConserge.cleaned_data['professors_conserges'] destinataris_txt = ", ".join( unicode(pc) for pc in professors_conserges) for professor_conserge in professors_conserges: msg.envia_a_usuari(professor_conserge.getUser(), 'IN') # envio al que ho envia: msg2 = Missatge(remitent=user, text_missatge=u'''Missatge enviat a {0}. El text del missatge és: "{1}"'''.format( destinataris_txt, msg.text_missatge)) msg2.envia_a_usuari(user, 'PI') msg2.destinatari_set.filter(destinatari = user).update(moment_lectura=datetime.now()) messages.info(request, u"Missatge a {destinataris} enviat correctament".format(destinataris=destinataris_txt)) if user.groups.filter(name="consergeria").exists(): url = '/missatgeria/enviaMissatgeProfessorsPas/' else: url = '/missatgeria/elMeuMur/' return HttpResponseRedirect(url) else: formProfessorConserge = triaProfessorsConsergesSelect2Form() msgForm = msgFormF() formset.append(formProfessorConserge) formset.append(msgForm) for form in formset: for field in form.fields: form.fields[field].widget.attrs['class'] = "form-control" return render( request, 'formset.html', {'formset': formset, 'titol_formulari': u"Missatge a professors i/o PAS", 'head': u"Missatge a membres del professorat o consergeria", }, )
def enviaMissatgeAdministradors(request): credentials = tools.getImpersonateUser(request) (user, l4) = credentials formset = [] msgFormF = modelform_factory(Missatge, fields=('text_missatge', )) if request.method == 'POST': msg = Missatge(remitent=user) msg.credentials = credentials msgForm = msgFormF(data=request.POST, instance=msg) if msgForm.is_valid(): administradors = Group.objects.get_or_create( name='administradors')[0].user_set.all() if len(administradors) == 0: msgForm._errors.setdefault(NON_FIELD_ERRORS, []).append( u'''No estan definits els administradors, sorry.''') else: msg.text_missatge = u'''Avís d'error al programa: {0}'''.format( msg.text_missatge) msg.save() strAdmins = u'' separador = '' for administrador in administradors: msg.envia_a_usuari(administrador, 'VI') strAdmins += separador + u'Sr(a)' + unicode(administrador) separador = u', ' txtMsg = msg.text_missatge #envio al que ho envia: msg = Missatge( remitent=user, text_missatge= u'''Avís a administradors enviat correctament. El text de l'avís és: "{0}"''' .format(txtMsg)) msg.envia_a_usuari(user, 'PI') url = '/missatgeria/elMeuMur/' return HttpResponseRedirect(url) else: msgForm = msgFormF() formset.append(msgForm) return render_to_response('formset.html', { 'formset': formset, 'head': u'''Avís a administradors. En cas d'error, sisplau, detalla clarament totes les passes per reproduir l'error.''', }, context_instance=RequestContext(request))
def enviaMissatgeAdministradors( request ): credentials = tools.getImpersonateUser(request) (user, l4) = credentials formset = [] msgFormF = modelform_factory(Missatge, fields=( 'text_missatge', ) ) if request.method == 'POST': msg = Missatge( remitent = user ) msg.credentials = credentials msgForm = msgFormF( data = request.POST, instance = msg ) if msgForm.is_valid(): administradors = Group.objects.get_or_create( name = 'administradors' )[0].user_set.all() if len( administradors ) == 0: msgForm._errors.setdefault(NON_FIELD_ERRORS, []).append( u'''No estan definits els administradors, sorry.''' ) else: msg.text_missatge = u'''Avís d'error al programa: {0}'''.format(msg.text_missatge) msg.save() strAdmins = u'' separador = '' for administrador in administradors: msg.envia_a_usuari(administrador, 'VI') strAdmins += separador + u'Sr(a)' + unicode( administrador ) separador = u', ' txtMsg = msg.text_missatge #envio al que ho envia: msg = Missatge( remitent = user, text_missatge = u'''Avís a administradors enviat correctament. El text de l'avís és: "{0}"'''.format( txtMsg ) ) msg.envia_a_usuari(user, 'PI') url = '/missatgeria/elMeuMur/' return HttpResponseRedirect( url ) else: msgForm = msgFormF( ) formset.append( msgForm ) return render_to_response( 'formset.html', {'formset': formset, 'head': u'''Avís a administradors. En cas d'error, sisplau, detalla clarament totes les passes per reproduir l'error.''' , }, context_instance=RequestContext(request))
def enviaMissatgeTutors( request ): credentials = tools.getImpersonateUser(request) (user, l4) = credentials formset = [] msgFormF = modelform_factory(Missatge, fields=( 'text_missatge', ) ) if request.method == 'POST': msg = Missatge( remitent = user ) msg.credentials = credentials formAlumne = triaAlumneSelect2Form( data = request.POST) formData= dataForm( data = request.POST ) formData.fields['data'].required = True msgForm = msgFormF( data = request.POST, instance = msg ) if formAlumne.is_valid() and msgForm.is_valid() and formData.is_valid(): alumne = formAlumne.cleaned_data['alumne'] tutors = alumne.tutorsDeLAlumne() data = formData.cleaned_data['data'] if len( tutors ) == 0: formAlumne._errors.setdefault(NON_FIELD_ERRORS, []).append( u'''No trobat el tutor d'aquest alumne. Cal trucar al cap d'estudis.''' ) else: request.session['consergeria_darrera_data'] = data txt2 = msg.text_missatge txt = CONSERGERIA_A_TUTOR msg.text_missatge = txt msg.enllac = '/tutoria/justificaFaltes/{0}/{1}/{2}/{3}'.format(alumne.pk, data.year, data.month, data.day) tipus_de_missatge = tipusMissatge(txt) msg.tipus_de_missatge = tipus_de_missatge msg.save() msg.afegeix_info(u"Alumne: {alumne}".format(alumne=alumne)) msg.afegeix_info(u"Data relativa a l'avís: {data}".format(data=data)) msg.afegeix_info(u"Avís: {txt2}".format(txt2=txt2)) for tutor in tutors: msg.envia_a_usuari(tutor.getUser(), 'IN') strTutors = u", ".join( u'Sr(a) {}'.format( tutor) for tutor in tutors ) #envio al que ho envia: missatge = CONSERGERIA_A_CONSERGERIA tipus_de_missatge = tipusMissatge(missatge) msg = Missatge( remitent = user, text_missatge = missatge.format( alumne, strTutors, msg.text_missatge ), tipus_de_missatge = tipus_de_missatge) msg.envia_a_usuari(user, 'PI') msg.destinatari_set.filter(destinatari = user).update(moment_lectura=datetime.now()) #marco com a llegit url = '/missatgeria/enviaMissatgeTutors/' messages.info( request, u"Avís als tutors de {} ({}) enviat correctament".format(unicode(alumne), strTutors ) ) return HttpResponseRedirect( url ) else: consergeria_darrera_data = request.session.get( 'consergeria_darrera_data' , datetime.today() ) formAlumne = triaAlumneSelect2Form( ) formData = dataForm( label='Data', help_text=u'El text del missatge començarà per: Amb data ______, ' , initial = {'data': consergeria_darrera_data }) formData.fields['data'].required = True msgForm = msgFormF( ) formset.append( formAlumne ) formset.append( formData ) formset.append( msgForm ) for form in formset: for field in form.fields: form.fields[field].widget.attrs['class'] = "form-control" return render( request, 'formset.html', {'formset': formset, 'titol_formulari': u"Missatge a professors tutors de l'alumne", 'head': 'Avís a tutors.' , }, )
def run(self): errors = [] try: horaris_a_modificar = None if self.expandir: horaris_a_modificar = Q( horari__assignatura = self.impartir.horari.assignatura ) horaris_a_modificar &= Q( horari__grup = self.impartir.horari.grup ) horaris_a_modificar &= Q( horari__professor = self.impartir.horari.professor ) else: horaris_a_modificar = Q( horari = self.impartir.horari) #from presencia.models import EstatControlAssistencia #estat_pendent, _ = EstatControlAssistencia.objects.get_or_create( codi_estat = u'-', defaults={ u'nom_estat' : u'-----' } ) #afegeixo l'alumne sempre que no hi sigui: a_partir_avui = Q( dia_impartir__gte = self.impartir.dia_impartir) pks = ( Impartir .objects .filter( horaris_a_modificar & a_partir_avui ) .values_list('id', flat=True) .order_by( 'dia_impartir' ) ) for pk in pks: i = Impartir.objects.get( pk = pk ) alumnes_del_control = [ ca.alumne for ca in i.controlassistencia_set.all()] alumne_afegit = False for alumne in self.alumnes: if alumne not in alumnes_del_control: if self.matmulla: #esborro l'alumne de les altres imparticions de la mateixa hora: mateix_alumne = Q( alumne = alumne ) mateixa_hora = Q( impartir__horari__hora = i.horari.hora ) mateix_dia = Q( impartir__dia_impartir = i.dia_impartir ) mateixa_imparticio = Q( impartir = i ) ControlAssistencia.objects.filter( mateix_alumne & mateixa_hora & mateix_dia & ~mateixa_imparticio ).delete() #afegir if alumne.data_baixa is None or alumne.data_baixa > i.dia_impartir: ca = ControlAssistencia( alumne = alumne, impartir = i) #si ja han passar llista poso que falta: falta = EstatControlAssistencia.objects.get( codi_estat = 'F' ) if i.dia_passa_llista is not None: ca.estat = falta ca.professor = User2Professor( self.usuari ) ca.save() alumne_afegit = True if i.pot_no_tenir_alumnes: i.pot_no_tenir_alumnes = False i.save() self.flagPrimerDiaFet = ( i.dia_impartir >= self.impartir.dia_impartir ) except Exception as e: errors.append( traceback.format_exc() ) finally: self.flagPrimerDiaFet = True missatge = FI_PROCES_AFEGIR_ALUMNES tipus_de_missatge = tipusMissatge(missatge) msg = Missatge( remitent = self.usuari, text_missatge = missatge.format( self.impartir.horari.assignatura ), tipus_de_missatge = tipus_de_missatge ) importancia = 'PI' if len(errors)>0: missatge = FI_PROCES_AFEGIR_ALUMNES_AMB_ERRORS msg.afegeix_error([missatge,]) msg.tipus_de_missatge = tipusMissatge(missatge) importancia = 'VI' msg.save() administradors, _ = Group.objects.get_or_create( name = 'administradors' ) msgAdmins = Missatge( remitent = self.usuari, text_missatge = missatge.format( self.impartir ) ) msgAdmins.afegeix_error(errors) msgAdmins.save() msgAdmins.envia_a_grup(administradors, importancia) msg.envia_a_usuari(self.usuari, importancia) return errors
except Exception, e: errors.append(unicode(e)) finally: self.flagPrimerDiaFet = True missatge = FI_PROCES_TREURE_ALUMNES tipus_de_missatge = tipusMissatge(missatge) msg = Missatge( remitent = self.usuari, text_missatge = missatge.format( self.impartir.horari.assignatura ), tipus_de_missatge = tipus_de_missatge) importancia = 'PI' if len(errors)>0: msg.afegeix_error(errors) importancia = 'VI' msg.save() administradors, _ = Group.objects.get_or_create( name = 'administradors' ) missatge = FI_PROCES_TREURE_ALUMNES_AMB_ERRORS tipus_de_missatge = tipusMissatge(missatge) msgAdmins = Missatge( remitent = self.usuari, text_missatge = missatge.format( self.impartir ), tipus_de_missatge = tipus_de_missatge ) msgAdmins.afegeix_error(errors) msgAdmins.save() msgAdmins.envia_a_grup(administradors, importancia) msg.envia_a_usuari(self.usuari, importancia) return errors def primerDiaFet(self): return self.flagPrimerDiaFet
i.save() self.flagPrimerDiaFet = ( i.dia_impartir >= self.impartir.dia_impartir ) except Exception, e: errors.append(unicode(e)) finally: self.flagPrimerDiaFet = True msg = Missatge( remitent = self.usuari, text_missatge = u'Fi procés afegir alumnes a {0}'.format( self.impartir.horari.assignatura ) ) importancia = 'PI' if len(errors)>0: msg.afegeix_error(errors) importancia = 'VI' msg.save() administradors, _ = Group.objects.get_or_create( name = 'administradors' ) msgAdmins = Missatge( remitent = self.usuari, text_missatge = u'Fi procés afegir alumnes a {0} amb errors'.format( self.impartir ) ) msgAdmins.afegeix_error(errors) msgAdmins.save() msgAdmins.envia_a_grup(administradors, importancia) msg.envia_a_usuari(self.usuari, importancia) return errors def primerDiaFet(self): return self.flagPrimerDiaFet #---------------------------------------------------------------------------------------------------------------------------------
def enviaMissatgeTutors(request): credentials = tools.getImpersonateUser(request) (user, l4) = credentials formset = [] msgFormF = modelform_factory(Missatge, fields=('text_missatge', )) if request.method == 'POST': msg = Missatge(remitent=user) msg.credentials = credentials formAlumne = triaAlumneSelect2Form(data=request.POST) formData = dataForm(data=request.POST) formData.fields['data'].required = True msgForm = msgFormF(data=request.POST, instance=msg) if formAlumne.is_valid() and msgForm.is_valid() and formData.is_valid( ): alumne = formAlumne.cleaned_data['alumne'] tutors = alumne.tutorsDeLAlumne() data = formData.cleaned_data['data'] if len(tutors) == 0: formAlumne._errors.setdefault(NON_FIELD_ERRORS, []).append( u'''No trobat el tutor d'aquest alumne. Cal trucar al cap d'estudis.''' ) else: request.session['consergeria_darrera_data'] = data txt2 = msg.text_missatge txt = CONSERGERIA_A_TUTOR msg.text_missatge = txt msg.enllac = '/tutoria/justificaFaltes/{0}/{1}/{2}/{3}'.format( alumne.pk, data.year, data.month, data.day) tipus_de_missatge = tipusMissatge(txt) msg.tipus_de_missatge = tipus_de_missatge msg.save() msg.afegeix_info(u"Alumne: {alumne}".format(alumne=alumne)) msg.afegeix_info( u"Data relativa a l'avís: {data}".format(data=data)) msg.afegeix_info(u"Avís: {txt2}".format(txt2=txt2)) for tutor in tutors: msg.envia_a_usuari(tutor.getUser(), 'IN') strTutors = u", ".join(u'Sr(a) {}'.format(tutor) for tutor in tutors) #envio al que ho envia: missatge = CONSERGERIA_A_CONSERGERIA tipus_de_missatge = tipusMissatge(missatge) msg = Missatge(remitent=user, text_missatge=missatge.format( alumne, strTutors, msg.text_missatge), tipus_de_missatge=tipus_de_missatge) msg.envia_a_usuari(user, 'PI') msg.destinatari_set.filter(destinatari=user).update( moment_lectura=datetime.now()) #marco com a llegit url = '/missatgeria/enviaMissatgeTutors/' messages.info( request, u"Avís als tutors de {} ({}) enviat correctament".format( unicode(alumne), strTutors)) return HttpResponseRedirect(url) else: consergeria_darrera_data = request.session.get( 'consergeria_darrera_data', datetime.today()) formAlumne = triaAlumneSelect2Form() formData = dataForm( label='Data', help_text=u'El text del missatge començarà per: Amb data ______, ', initial={'data': consergeria_darrera_data}) formData.fields['data'].required = True msgForm = msgFormF() formset.append(formAlumne) formset.append(formData) formset.append(msgForm) for form in formset: for field in form.fields: form.fields[field].widget.attrs['class'] = "form-control" return render( request, 'formset.html', { 'formset': formset, 'titol_formulari': u"Missatge a professors tutors de l'alumne", 'head': 'Avís a tutors.', }, )
def enviaMissatgeAdministradors(request): credentials = tools.getImpersonateUser(request) (user, l4) = credentials formset = [] msgFormF = modelform_factory(Missatge, fields=('text_missatge', )) if request.method == 'POST': msg = Missatge(remitent=user) msg.credentials = credentials msgForm = msgFormF(data=request.POST, instance=msg) if msgForm.is_valid(): administradors = Group.objects.get_or_create( name='administradors')[0].user_set.all() if len(administradors) == 0: msgForm._errors.setdefault(NON_FIELD_ERRORS, []).append( u'''No estan definits els administradors, sorry.''') else: missatge = ERROR_AL_PROGRAMA msg.text_missatge = missatge.format(msg.text_missatge) tipus_de_missatge = tipusMissatge(missatge) msg.tipus_de_missatge = tipus_de_missatge msg.save() strAdmins = u'' separador = '' for administrador in administradors: msg.envia_a_usuari(administrador, 'VI') strAdmins += separador + u'Sr(a)' + unicode(administrador) separador = u', ' txtMsg = msg.text_missatge #envio al que ho envia: missatge = ACUS_REBUT_ERROR_AL_PROGRAMA tipus_de_missatge = tipusMissatge(missatge) msg = Missatge(remitent=user, text_missatge=missatge.format(txtMsg), tipus_de_missatge=tipus_de_missatge) msg.envia_a_usuari(user, 'PI') url = '/missatgeria/elMeuMur/' return HttpResponseRedirect(url) else: msgForm = msgFormF() formset.append(msgForm) for form in formset: for field in form.fields: form.fields[field].widget.attrs['class'] = "form-control" return render( request, 'formset.html', { 'formset': formset, 'head': u'''Avís a administradors. En cas d'error, sisplau, detalla clarament totes les passes per reproduir l'error.''', }, )
def enviaMissatgeTutors(request): credentials = tools.getImpersonateUser(request) (user, l4) = credentials formset = [] msgFormF = modelform_factory(Missatge, fields=('text_missatge', )) if request.method == 'POST': msg = Missatge(remitent=user) msg.credentials = credentials formAlumne = triaAlumneSelect2Form(data=request.POST) formData = dataForm(data=request.POST) formData.fields['data'].required = True msgForm = msgFormF(data=request.POST, instance=msg) if formAlumne.is_valid() and msgForm.is_valid() and formData.is_valid( ): alumne = formAlumne.cleaned_data['alumne'] tutors = alumne.tutorsDeLAlumne() data = formData.cleaned_data['data'] if len(tutors) == 0: formAlumne._errors.setdefault(NON_FIELD_ERRORS, []).append( u'''No trobat el tutor d'aquest alumne. Cal trucar al cap d'estudis.''' ) else: msg.save() request.session['consergeria_darrera_data'] = data strTutors = u'' separador = '' for tutor in tutors: txt = u'''Missatge relatiu al teu alumne tutorat {0}: Amb data {1}, {2}'''.format( unicode(alumne), unicode(data), msg.text_missatge) msg.text_missatge = txt msg.envia_a_usuari(tutor.getUser(), 'IN') msg.enllac = '/tutoria/justificaFaltes/{0}/{1}/{2}/{3}'.format( alumne.pk, data.year, data.month, data.day) msg.save() strTutors += separador + u'Sr(a)' + unicode(tutor) separador = u', ' txtMsg = msg.text_missatge #envio al que ho envia: msg = Missatge( remitent=user, text_missatge= u'''Avís a tutors de l'alumne {0} enviat a {1}. El text de l'avís és: "{2}"''' .format(alumne, strTutors, txtMsg)) msg.envia_a_usuari(user, 'PI') url = '/missatgeria/elMeuMur/' return HttpResponseRedirect(url) else: consergeria_darrera_data = request.session.get( 'consergeria_darrera_data', datetime.today()) formAlumne = triaAlumneSelect2Form() formData = dataForm( label='Data', help_text=u'El text del missatge començarà per: Amb data ______, ', initial={'data': consergeria_darrera_data}) formData.fields['data'].required = True msgForm = msgFormF() formset.append(formAlumne) formset.append(formData) formset.append(msgForm) return render_to_response('formset.html', { 'formset': formset, 'head': 'Avís a tutors.', }, context_instance=RequestContext(request))
def run(self): errors = [] try: horaris_a_modificar = None if self.expandir: horaris_a_modificar = Q( horari__assignatura=self.impartir.horari.assignatura) horaris_a_modificar &= Q( horari__grup=self.impartir.horari.grup) horaris_a_modificar &= Q( horari__professor=self.impartir.horari.professor) else: horaris_a_modificar = Q(horari=self.impartir.horari) #from presencia.models import EstatControlAssistencia #estat_pendent, _ = EstatControlAssistencia.objects.get_or_create( codi_estat = u'-', defaults={ u'nom_estat' : u'-----' } ) #afegeixo l'alumne sempre que no hi sigui: a_partir_avui = Q(dia_impartir__gte=self.impartir.dia_impartir) pks = (Impartir.objects.filter( horaris_a_modificar & a_partir_avui).values_list( 'id', flat=True).order_by('dia_impartir')) for pk in pks: i = Impartir.objects.get(pk=pk) alumnes_del_control = [ ca.alumne for ca in i.controlassistencia_set.all() ] alumne_afegit = False for alumne in self.alumnes: if alumne not in alumnes_del_control: if self.matmulla: #esborro l'alumne de les altres imparticions de la mateixa hora: mateix_alumne = Q(alumne=alumne) mateixa_hora = Q( impartir__horari__hora=i.horari.hora) mateix_dia = Q( impartir__dia_impartir=i.dia_impartir) mateixa_imparticio = Q(impartir=i) ControlAssistencia.objects.filter( mateix_alumne & mateixa_hora & mateix_dia & ~mateixa_imparticio).delete() #afegir if alumne.data_baixa is None or alumne.data_baixa > i.dia_impartir: ca = ControlAssistencia(alumne=alumne, impartir=i) #si ja han passar llista poso que falta: falta = EstatControlAssistencia.objects.get( codi_estat='F') if i.dia_passa_llista is not None: ca.estat = falta ca.professor = User2Professor(self.usuari) ca.save() alumne_afegit = True if i.pot_no_tenir_alumnes: i.pot_no_tenir_alumnes = False i.save() self.flagPrimerDiaFet = (i.dia_impartir >= self.impartir.dia_impartir) except Exception as e: errors.append(traceback.format_exc()) finally: self.flagPrimerDiaFet = True msg = Missatge(remitent=self.usuari, text_missatge=u'Fi procés afegir alumnes a {0}'.format( self.impartir.horari.assignatura)) importancia = 'PI' if len(errors) > 0: msg.afegeix_error([ u"Procés finalitzat amb errors. S'ha enviat incidència als administradors.", ]) importancia = 'VI' msg.save() administradors, _ = Group.objects.get_or_create( name='administradors') msgAdmins = Missatge( remitent=self.usuari, text_missatge=u'Fi procés afegir alumnes a {0} amb errors'. format(self.impartir)) msgAdmins.afegeix_error(errors) msgAdmins.save() msgAdmins.envia_a_grup(administradors, importancia) msg.envia_a_usuari(self.usuari, importancia) return errors
def run(self): errors = [] try: horaris_a_modificar = Q(horari=self.impartir.horari) if self.expandir: horaris_a_modificar = Q( horari__assignatura=self.impartir.horari.assignatura) horaris_a_modificar &= Q( horari__grup=self.impartir.horari.grup) horaris_a_modificar &= Q( horari__professor=self.impartir.horari.professor) #trec els alumnes: a_partir_avui = Q(dia_impartir__gte=self.impartir.dia_impartir) pks = (Impartir.objects.filter( horaris_a_modificar & a_partir_avui).values_list( 'id', flat=True).order_by('dia_impartir')) for pk in pks: i = Impartir.objects.get(pk=pk) alumnes_a_esborrar = Q(alumne__in=self.alumnes) te_incidencies = Q(incidencia__isnull=False) te_expulsions = Q(expulsio__isnull=False) no_ha_passat_llista = Q(estat__isnull=True) if self.matmulla: no_ha_passat_llista |= Q(estat__codi_estat='F') condicio = alumnes_a_esborrar & ~te_incidencies & ~te_expulsions & no_ha_passat_llista i.controlassistencia_set.filter(condicio).delete() self.flagPrimerDiaFet = (i.dia_impartir >= self.impartir.dia_impartir) except Exception as e: errors.append(unicode(e)) finally: self.flagPrimerDiaFet = True missatge = FI_PROCES_TREURE_ALUMNES tipus_de_missatge = tipusMissatge(missatge) msg = Missatge(remitent=self.usuari, text_missatge=missatge.format( self.impartir.horari.assignatura), tipus_de_missatge=tipus_de_missatge) importancia = 'PI' if len(errors) > 0: msg.afegeix_error(errors) importancia = 'VI' msg.save() administradors, _ = Group.objects.get_or_create( name='administradors') missatge = FI_PROCES_TREURE_ALUMNES_AMB_ERRORS tipus_de_missatge = tipusMissatge(missatge) msgAdmins = Missatge(remitent=self.usuari, text_missatge=missatge.format(self.impartir), tipus_de_missatge=tipus_de_missatge) msgAdmins.afegeix_error(errors) msgAdmins.save() msgAdmins.envia_a_grup(administradors, importancia) msg.envia_a_usuari(self.usuari, importancia) return errors