Beispiel #1
0
def incidencia_despres_de_posar(instance):
    Missatge = apps.get_model('missatgeria', 'Missatge')
    #Lògica de negoci:
    if not instance.tipus.es_informativa:
        if settings.CUSTOM_INCIDENCIES_PROVOQUEN_EXPULSIO:
            # Si aquest alumne ja té tres incidències cal expulsar-lo --> Envio missatge al professor.
            Incidencia = apps.get_model('incidencies', 'Incidencia')
            nIncidenciesAlumneProfessor = Incidencia.objects.filter(
                es_vigent=True,
                tipus__es_informativa=False,
                professional=instance.professional,
                alumne=instance.alumne,
                gestionada_pel_tutor=False,
            ).count()
            if nIncidenciesAlumneProfessor > 2:
                missatge = EXPULSIO_PER_ACUMULACIO_INCIDENCIES
                txt = missatge.format(instance.alumne,
                                      nIncidenciesAlumneProfessor,
                                      settings.CUSTOM_DIES_PRESCRIU_INCIDENCIA)

                tipus_de_missatge = tipusMissatge(missatge)
                msg = Missatge(remitent=instance.professional.getUser(),
                               text_missatge=txt,
                               tipus_de_missatge=tipus_de_missatge)
                msg.enllac = '/incidencies/posaExpulsioPerAcumulacio/' + str(
                    instance.pk)
                if nIncidenciesAlumneProfessor > 5:
                    msg.importancia = 'VI'
                msg.envia_a_usuari(instance.professional)

        if instance.gestionada_pel_tutor and settings.CUSTOM_INCIDENCIES_PROVOQUEN_EXPULSIO:
            # Si aquest alumne ja té tres incidències cal expulsar-lo --> Envio missatge al tutor.
            Incidencia = apps.get_model('incidencies', 'Incidencia')
            nIncidenciesAlumneProfessor = Incidencia.objects.filter(
                es_vigent=True,
                tipus__es_informativa=False,
                alumne=instance.alumne,
                gestionada_pel_tutor=True,
            ).count()
            if nIncidenciesAlumneProfessor > 2:
                missatge = EXPULSIO_PER_ACUMULACIO_INCIDENCIES_FORA_AULA
                txt = missatge.format(instance.alumne,
                                      nIncidenciesAlumneProfessor,
                                      settings.CUSTOM_DIES_PRESCRIU_INCIDENCIA)

                tipus_de_missatge = tipusMissatge(missatge)
                msg = Missatge(remitent=instance.professional.getUser(),
                               text_missatge=txt,
                               tipus_de_missatge=tipus_de_missatge)
                msg.enllac = '/incidencies/posaExpulsioPerAcumulacio/' + str(
                    instance.pk)
                if nIncidenciesAlumneProfessor > 5:
                    msg.importancia = 'VI'
                for professional in instance.alumne.tutorsDeLAlumne():
                    msg.envia_a_usuari(professional)

        if bool(instance.professional_inicia):
            #
            remitent = instance.professional_inicia
            missatge = HE_POSAT_INCIDENCIA_EN_NOM_TEU
            text_missatge = missatge.format(
                u"Incidència de Retard d'entrada al centre", instance.alumne,
                instance.alumne.grup, instance.dia_incidencia,
                instance.descripcio_incidencia)
            tipus_de_missatge = tipusMissatge(missatge)
            msg1 = Missatge(remitent=remitent.getUser(),
                            text_missatge=text_missatge,
                            tipus_de_missatge=tipus_de_missatge)
            importancia = 'VI'
            msg1.envia_a_usuari(instance.professional.getUser(), importancia)

            #
            remitent = instance.professional_inicia
            missatge = HE_POSAT_INCIDENCIA_EN_NOM_DALGU
            text_missatge = missatge.format(
                u"Incidència de Retard d'entrada al centre",
                instance.alumne,
                instance.alumne.grup,
                instance.dia_incidencia,
                instance.descripcio_incidencia,
                instance.professional,
            )
            tipus_de_missatge = tipusMissatge(missatge)
            msg1 = Missatge(remitent=remitent.getUser(),
                            text_missatge=text_missatge,
                            tipus_de_missatge=tipus_de_missatge)
            importancia = 'PI'
            msg1.envia_a_usuari(remitent.getUser(), importancia)
            msg1.destinatari_set.filter(destinatari=remitent.getUser()).update(
                moment_lectura=datetime.now())

        #Cal que els professors i tutors sàpiguen que aquest alumne ha tingut incidència --> Envio missatge
        remitent = instance.professional
        missatge = INCIDENCIA_INFORMATIVA
        text_missatge = missatge.format(
            'informativa ' if instance.tipus.es_informativa else '',
            instance.alumne, instance.alumne.grup, instance.dia_incidencia,
            instance.descripcio_incidencia)
        tipus_de_missatge = tipusMissatge(missatge)
        msg1 = Missatge(remitent=remitent.getUser(),
                        text_missatge=text_missatge,
                        tipus_de_missatge=tipus_de_missatge)
        #si és una unitat formativa envio a tots:
        if Cursa_nivell(u"CICLES", instance.alumne):
            Professor = apps.get_model('usuaris', 'Professor')
            professors_que_tenen_aquest_alumne_a_classe = Professor.objects.filter(
                horari__impartir__controlassistencia__alumne=instance.alumne
            ).exclude(pk=instance.professional.pk).distinct()
            for professor in professors_que_tenen_aquest_alumne_a_classe:
                esTutor = True if professor in instance.alumne.tutorsDeLAlumne(
                ) else False
                importancia = 'VI' if esTutor else 'PI'
                msg1.envia_a_usuari(professor.getUser(), importancia)
        else:
            professors_tutors_de_l_alumne = [
                p for p in instance.alumne.tutorsDeLAlumne()
            ]
            for professor in professors_tutors_de_l_alumne:
                importancia = 'PI'
                msg1.envia_a_usuari(professor.getUser(), importancia)

        if instance.tipus.notificar_equip_directiu:
            #es notifica aquest tipus d'incidència a tots els membres de l'equip directiu
            Professor = apps.get_model('usuaris', 'Professor')
            membres_equip_directiu = Professor.objects.filter(
                groups__name=u"direcció")
            for professor in membres_equip_directiu:
                msg1.envia_a_usuari(professor.getUser(), 'VI')
 def cursa_nivell(self, nivell_txt):
     return Cursa_nivell(nivell_txt, self)
def incidencia_despres_de_posar(instance):
    Missatge = apps.get_model('missatgeria', 'Missatge')
    #Lògica de negoci:
    if not instance.tipus.es_informativa:
        if settings.CUSTOM_INCIDENCIES_PROVOQUEN_EXPULSIO:
            # Si aquest alumne ja té tres incidències cal expulsar-lo --> Envio missatge al professor.
            Incidencia = apps.get_model('incidencies', 'Incidencia')
            nIncidenciesAlumneProfessor = Incidencia.objects.filter(
                es_vigent=True,
                tipus__es_informativa=False,
                professional=instance.professional,
                alumne=instance.alumne,
                gestionada_pel_tutor=False,
            ).count()
            if nIncidenciesAlumneProfessor > 2:
                txt = u"""A l'alumne {0} ja li has posat {1} incidències en els darrers {2} dies. 
                        Segons la normativa del Centre hauries de tramitar 
                        una expulsió per acumulació d'incidències.""".format(
                    instance.alumne, nIncidenciesAlumneProfessor,
                    settings.CUSTOM_DIES_PRESCRIU_INCIDENCIA)

                msg = Missatge(remitent=instance.professional.getUser(),
                               text_missatge=txt)
                msg.enllac = '/incidencies/posaExpulsioPerAcumulacio/' + str(
                    instance.pk)
                if nIncidenciesAlumneProfessor > 5:
                    msg.importancia = 'VI'
                msg.envia_a_usuari(instance.professional)

        if instance.gestionada_pel_tutor and settings.CUSTOM_INCIDENCIES_PROVOQUEN_EXPULSIO:
            # Si aquest alumne ja té tres incidències cal expulsar-lo --> Envio missatge al tutor.
            Incidencia = apps.get_model('incidencies', 'Incidencia')
            nIncidenciesAlumneProfessor = Incidencia.objects.filter(
                es_vigent=True,
                tipus__es_informativa=False,
                alumne=instance.alumne,
                gestionada_pel_tutor=True,
            ).count()
            if nIncidenciesAlumneProfessor > 2:
                txt = u"""A l'alumne {0} li han posat {1} incidències gestionades pel tutor en els darrers {2} dies. 
                        Segons la normativa del Centre, com a tutor de l'alumne, hauries de tramitar 
                        una expulsió per acumulació d'incidències.""".format(
                    instance.alumne, nIncidenciesAlumneProfessor,
                    settings.CUSTOM_DIES_PRESCRIU_INCIDENCIA)

                msg = Missatge(remitent=instance.professional.getUser(),
                               text_missatge=txt)
                msg.enllac = '/incidencies/posaExpulsioPerAcumulacio/' + str(
                    instance.pk)
                if nIncidenciesAlumneProfessor > 5:
                    msg.importancia = 'VI'
                for professional in instance.alumne.tutorsDeLAlumne():
                    msg.envia_a_usuari(professional)

        if bool(instance.professional_inicia):
            #
            remitent = instance.professional_inicia
            text_missatge = u"""He posat una {0} en nom teu a {1} ({2}) el dia {3}. 
                                El text de la incidència és: {4}""".format(
                u"Incidència de Retard d'entrada al centre", instance.alumne,
                instance.alumne.grup, instance.dia_incidencia,
                instance.descripcio_incidencia)
            msg1 = Missatge(remitent=remitent.getUser(),
                            text_missatge=text_missatge)
            importancia = 'VI'
            msg1.envia_a_usuari(instance.professional.getUser(), importancia)

            #
            remitent = instance.professional_inicia
            text_missatge = u"""He posat una {0} en nom de {5} a {1} ({2}) el dia {3}. 
                                El text de la incidència és: {4}""".format(
                u"Incidència de Retard d'entrada al centre",
                instance.alumne,
                instance.alumne.grup,
                instance.dia_incidencia,
                instance.descripcio_incidencia,
                instance.professional,
            )
            msg1 = Missatge(remitent=remitent.getUser(),
                            text_missatge=text_missatge)
            importancia = 'PI'
            msg1.envia_a_usuari(remitent.getUser(), importancia)
            msg1.destinatari_set.filter(destinatari=remitent.getUser()).update(
                moment_lectura=datetime.now())

        #Cal que els professors i tutors sàpiguen que aquest alumne ha tingut incidència --> Envio missatge
        remitent = instance.professional
        text_missatge = u"""Ha posat una incidència {0}a {1} ({2}) el dia {3}. 
                            El text de la incidència és: {4}""".format(
            'informativa ' if instance.tipus.es_informativa else '',
            instance.alumne, instance.alumne.grup, instance.dia_incidencia,
            instance.descripcio_incidencia)
        msg1 = Missatge(remitent=remitent.getUser(),
                        text_missatge=text_missatge)
        #si és una unitat formativa envio a tots:
        if Cursa_nivell(u"CICLES", instance.alumne):
            Professor = apps.get_model('usuaris', 'Professor')
            professors_que_tenen_aquest_alumne_a_classe = Professor.objects.filter(
                horari__impartir__controlassistencia__alumne=instance.alumne
            ).exclude(pk=instance.professional.pk).distinct()
            for professor in professors_que_tenen_aquest_alumne_a_classe:
                esTutor = True if professor in instance.alumne.tutorsDeLAlumne(
                ) else False
                importancia = 'VI' if esTutor else 'PI'
                msg1.envia_a_usuari(professor.getUser(), importancia)
        else:
            professors_tutors_de_l_alumne = [
                p for p in instance.alumne.tutorsDeLAlumne()
            ]
            for professor in professors_tutors_de_l_alumne:
                importancia = 'PI'
                msg1.envia_a_usuari(professor.getUser(), importancia)

        if instance.tipus.notificar_equip_directiu:
            #es notifica aquest tipus d'incidència a tots els membres de l'equip directiu
            Professor = apps.get_model('usuaris', 'Professor')
            membres_equip_directiu = Professor.objects.filter(
                groups__name=u"direcció")
            for professor in membres_equip_directiu:
                msg1.envia_a_usuari(professor.getUser(), 'VI')