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
                        
                self.flagPrimerDiaFet = ( i.dia_impartir >= self.impartir.dia_impartir )
                
        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 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
Exemplo n.º 4
0
                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, 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
Exemplo n.º 5
0
    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