Exemplo n.º 1
0
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",
         },
        )
Exemplo n.º 2
0
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.''' ,
                    },
                )
Exemplo n.º 3
0
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
Exemplo n.º 5
0
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.',
        },
    )
Exemplo n.º 6
0
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",
        },
    )
Exemplo n.º 7
0
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.''',
        },
    )
Exemplo n.º 8
0
    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