Example #1
0
def regeneraImpartir(request):

    head = u'Reprogramar classes segons horari actual'

    if request.method == 'POST':
        form = regeneraImpartirForm(request.POST)
        if form.is_valid():

            r = regeneraThread(data_inici=form.cleaned_data['data_inici'],
                               franja_inici=form.cleaned_data['franja_inici'],
                               user=request.user)
            r.start()
            errors = []
            warnings = []
            infos = [u'Iniciat procés regeneració']
            resultat = {'errors': errors, 'warnings': warnings, 'infos': infos}
            return render_to_response('resultat.html', {
                'head': head,
                'msgs': resultat
            },
                                      context_instance=RequestContext(request))
    else:
        form = regeneraImpartirForm()
    return render_to_response('form.html', {
        'form': form,
        'head': head
    },
                              context_instance=RequestContext(request))
Example #2
0
def regeneraImpartir(request):
    
    head=u'Reprogramar classes segons horari actual' 

    if request.method == 'POST':
        form = regeneraImpartirForm(request.POST)
        if form.is_valid():
            
            r=regeneraThread(
                            data_inici=form.cleaned_data['data_inici'], 
                            franja_inici = form.cleaned_data['franja_inici'],
                            user = request.user  
                            )
            r.start()
            errors=[]
            warnings=[]
            infos=[u'Iniciat procés regeneració']
            resultat = {   'errors': errors, 'warnings':  warnings, 'infos':  infos }
            return render_to_response(
                    'resultat.html', 
                    {'head': head ,
                     'msgs': resultat },
                    context_instance=RequestContext(request))                                      
    else:
        form = regeneraImpartirForm()
    return render_to_response(
                'form.html', 
                {'form': form, 
                 'head': head},
                context_instance=RequestContext(request))
Example #3
0
def fesCarrega():
    msg = u""
    #Calen fixtures carregades:
    #      extKronowin incidencies presencia assignatures horaris seguimentTutorial missatgeria usuaris

    fitxerSaga = os.path.join(os.path.dirname(__file__),
                              '../tmp/exportSaga.txt')
    fitxerKronowin = os.path.join(os.path.dirname(__file__),
                                  '../tmp/exportKrono.txt')
    frangesMatins, frangesTardes = range(1, 5), range(6, 10)
    userDemo, new = User.objects.get_or_create(username='******',
                                               defaults={
                                                   'is_staff': True,
                                                   'is_superuser': True,
                                               })
    if new:
        userDemo.set_password('djAu')

    nivellsCursosGrups = (
        (
            'ESO',
            (
                (
                    1,
                    ('A', 'B', 'C'),
                ),
                (
                    2,
                    (
                        'A',
                        'B',
                    ),
                ),
                (
                    3,
                    (
                        'A',
                        'B',
                    ),
                ),
            ),
        ),
        (
            'CFI',
            (
                (
                    1,
                    ('A', ),
                ),
                (
                    2,
                    ('A', ),
                ),
            ),
        ),
        (
            'CFA',
            (
                (
                    1,
                    ('A', 'B'),
                ),
                (
                    2,
                    ('A', ),
                ),
            ),
        ),
    )

    print u"#GENEREM FITXERS DE DADES  "
    generaFitxerSaga(fitxerSaga, nivellsCursosGrups)
    generaFitxerKronowin(fitxerKronowin,
                         nivellsCursosGrups,
                         nivellsMatins=[
                             'ESO',
                         ],
                         frangesMatins=frangesMatins,
                         frangesTardes=frangesTardes)

    print u"#CREEM NIVELL-CURS-GRUP"
    handlerKronowin = open(fitxerKronowin, 'r')
    inici_curs = date.today() + relativedelta(months=-1)
    fi_curs = date.today() + relativedelta(days=10)
    sincronitzaKronowin.creaNivellCursGrupDesDeKronowin(
        handlerKronowin, inici_curs, fi_curs)

    print u"#Creem correspondències amb horaris"
    frangesAula = FranjaHoraria.objects.filter(hora_inici__in=[
        '09:15', '10:30', '11:30', '12:45', '15:45', '16:45', '18:05', '19:00'
    ]).order_by('hora_inici')
    frangesKronowin = frangesMatins + frangesTardes
    for frangaAula, franjaKronowin in zip(frangesAula, frangesKronowin):
        Franja2Aula.objects.get_or_create(franja_kronowin=franjaKronowin,
                                          franja_aula=frangaAula)

    print u"#CREEM CORRESPONDÈNCIES  SAGA-KRONOWIN-AULA"
    for nivell, GrupsCursos in nivellsCursosGrups:
        for curs, Grups in GrupsCursos:
            for grup in Grups:
                lgrup = u"{nivell}{curs}{grup}".format(nivell=nivell,
                                                       grup=grup,
                                                       curs=curs)
                grupAula = Grup.objects.get(descripcio_grup=lgrup)
                SGrup2Aula.objects.create(grup_saga=lgrup, Grup2Aula=grupAula)
                #KGrup2Aula.objects.create( grup_kronowin = lgrup, Grup2Aula = grupAula  )   #ho fa als crear els grups

    print u"#Importem Kronowin 1 ( Per crear professors )"
    handlerKronowin = open(fitxerKronowin, 'r')
    result = sincronitzaKronowin.sincronitza(handlerKronowin, userDemo)
    print u"Resultat importació kroniwin 1: ", result["errors"], result[
        "warnings"],

    print u"#Importem Kronowin 2 ( Per importar horaris )"
    handlerKronowin = open(fitxerKronowin, 'r')
    result = sincronitzaKronowin.sincronitza(handlerKronowin, userDemo)
    print u"Resultat importació kroniwin 2: ", result["errors"], result[
        "warnings"],

    print u"#Importem saga"
    handlerSaga = open(fitxerSaga, 'r')
    result = sincronitzaSaga.sincronitza(handlerSaga, userDemo)
    print u"Resultat importació saga: ", result["errors"], result["warnings"],

    print u"#Assignem tutors"
    for g in Grup.objects.all():
        professors_del_grup = Professor.objects.filter(
            horari__grup=g).distinct()
        if professors_del_grup:
            Tutor.objects.create(professor=random.choice(professors_del_grup),
                                 grup=g)

    msg += "\nProfessors: " + u" ,".join(
        sorted(set([unicode(t.username) for t in Professor.objects.all()])))
    msg += "\nTutors: " + u" ,".join(
        sorted(
            set([unicode(t.professor.username) for t in Tutor.objects.all()])))

    print u"#Assignem equip directiu"
    direccio, _ = Group.objects.get_or_create(name='direcció')
    sisplau_que_no_siguin_mediocres = [
        random.choice(Professor.objects.all())
    ] + [p for p in Professor.objects.filter(username__endswith='1')]
    for sisplau_que_no_sigui_mediocre in sisplau_que_no_siguin_mediocres:
        sisplau_que_no_sigui_mediocre.groups.add(direccio)
        sisplau_que_no_sigui_mediocre.is_staff = True
        sisplau_que_no_sigui_mediocre.is_superuser = True
        sisplau_que_no_sigui_mediocre.save()
    msg += u"\nDirecció: " + u" ,".join(
        sorted(
            set([
                unicode(t.username)
                for t.username in sisplau_que_no_siguin_mediocres
            ])))

    print u"Regenerar impartir"
    r = regeneraThread(
        data_inici=None,  #data inici de curs 
        franja_inici=FranjaHoraria.objects.all()[:1].get(),
        user=userDemo)
    r.start()
    r.join()

    print u"Posar alumnes a llistes"
    seguents7dies = Impartir.objects.values('dia_impartir').order_by(
        'dia_impartir').distinct()[:5]
    for dia in seguents7dies:
        print 'Dia', dia, u' ( ompliré 5 dies )'
        for impartir in Impartir.objects.filter(
                dia_impartir=dia['dia_impartir']):
            if not impartir.controlassistencia_set.exists():
                alumnes = [
                    alumne for grup in impartir.horari.grupsPotencials()
                    for alumne in grup.alumne_set.all()
                ]
                random.shuffle(alumnes)
                n_alumnes = random.randint(1, 4)
                afegeix = afegeixThread(expandir=False,
                                        alumnes=alumnes[:n_alumnes],
                                        impartir=impartir,
                                        usuari=impartir.horari.professor,
                                        matmulla=False)
                afegeix.start()
                afegeix.join()

    print u"canviant dades dels professors"
    for p in Professor.objects.all():
        p.first_name, p.last_name = getRandomNomICognoms()
        p.set_password('djAu')
        p.save()

    msg += u"\nTots els passwords de professors: 'djAu' "

    return msg
Example #4
0
def fesCarrega( ):
    msg = u""
    #Calen fixtures carregades:
    #      extKronowin incidencies presencia assignatures horaris seguimentTutorial missatgeria usuaris    
    
    fitxerSaga = os.path.join( os.path.dirname(__file__), '../tmp/exportSaga.txt')
    fitxerKronowin = os.path.join( os.path.dirname(__file__), '../tmp/exportKrono.txt')
    frangesMatins, frangesTardes = range(1,5), range(6,10) 
    userDemo, new = User.objects.get_or_create( username = '******', defaults={'is_staff':True, 'is_superuser':True, } )
    if new:
        userDemo.set_password( '1234' )
    
    nivellsCursosGrups = ( 
                            ( 'ESO', 
                              (
                                 ( 1, ( 'A','B','C'), ),
                                 ( 2, ( 'A','B',), ),
                                 ( 3, ( 'A','B',), ),
                              ),
                            ),
                            ( 'CFI',
                              (
                                  ( 1, ( 'A',), ),
                                  ( 2, ( 'A',), ),
                              ),
                            ),
                            ( 'CFA',
                              (
                                  ( 1, ( 'A','B'), ),
                                  ( 2, ( 'A',), ),
                              ),
                            ),
                         )

    print u"#GENEREM FITXERS DE DADES  "                        
    generaFitxerSaga(fitxerSaga, nivellsCursosGrups  )
    generaFitxerKronowin( fitxerKronowin, nivellsCursosGrups, nivellsMatins=['ESO',], frangesMatins = frangesMatins, frangesTardes  = frangesTardes )
    
    print u"#CREEM NIVELL-CURS-GRUP"
    handlerKronowin=open( fitxerKronowin, 'r' )
    inici_curs = date.today() + relativedelta( months = -1)
    fi_curs = date.today() + relativedelta( months = 1)
    sincronitzaKronowin.creaNivellCursGrupDesDeKronowin( handlerKronowin, inici_curs, fi_curs )
    
    print u"#Creem correspondències amb horaris"
    frangesAula = FranjaHoraria.objects.filter( hora_inici__in = ['09:15', '10:30', '11:30' ,'12:45',
                                                                  '15:45', '16:45', '18:05', '19:00'] ).order_by ( 'hora_inici' )
    frangesKronowin = frangesMatins + frangesTardes
    for frangaAula, franjaKronowin in zip(frangesAula, frangesKronowin  ):
        Franja2Aula.objects.get_or_create( franja_kronowin= franjaKronowin,  franja_aula = frangaAula )
        
    print u"#CREEM CORRESPONDÈNCIES  SAGA-KRONOWIN-AULA"
    for nivell, GrupsCursos in nivellsCursosGrups:
        for curs, Grups in GrupsCursos:
            for grup in Grups:
                lgrup = u"{nivell}{curs}{grup}".format( nivell = nivell, grup = grup, curs = curs) 
                grupAula = Grup.objects.get( descripcio_grup = lgrup )
                SGrup2Aula.objects.create( grup_saga = lgrup, Grup2Aula = grupAula  )
                #KGrup2Aula.objects.create( grup_kronowin = lgrup, Grup2Aula = grupAula  )   #ho fa als crear els grups

    print u"#Importem Kronowin 1 ( Per crear professors )"
    handlerKronowin=open( fitxerKronowin, 'r' )
    result = sincronitzaKronowin.sincronitza( handlerKronowin, userDemo  )
    print u"Resultat importació kroniwin 1: ", result["errors"], result["warnings"],  
    
    print u"#Importem Kronowin 2 ( Per importar horaris )"
    handlerKronowin=open( fitxerKronowin, 'r' )
    result = sincronitzaKronowin.sincronitza( handlerKronowin, userDemo  )
    print u"Resultat importació kroniwin 2: ", result["errors"], result["warnings"],  

    print u"#Importem saga"
    handlerSaga=open( fitxerSaga, 'r' )
    result = sincronitzaSaga.sincronitza( handlerSaga, userDemo  )
    print u"Resultat importació saga: ", result["errors"], result["warnings"],  
    
    print u"#Assignem tutors"
    for g in Grup.objects.all():
        professors_del_grup = Professor.objects.filter( horari__grup = g ).distinct()
        if professors_del_grup:
            Tutor.objects.create( professor = random.choice( professors_del_grup ) ,  grup = g )
    
    msg += "\nProfessors: " + u" ,".join( sorted( set( [ unicode( t.username ) for t in Professor.objects.all() ] ) ) )
    msg += "\nTutors: " + u" ,".join( sorted( set( [ unicode( t.professor.username ) for t in Tutor.objects.all() ] ) ) )
                    
    print u"#Assignem equip directiu"
    direccio, _ = Group.objects.get_or_create(name= 'direcció' )
    sisplau_que_no_siguin_mediocres = [ random.choice(  Professor.objects.all() ) ] + [ p for p in Professor.objects.filter( username__endswith = '1' )]
    for sisplau_que_no_sigui_mediocre in sisplau_que_no_siguin_mediocres:
        sisplau_que_no_sigui_mediocre.groups.add( direccio  )
        sisplau_que_no_sigui_mediocre.is_staff = True
        sisplau_que_no_sigui_mediocre.is_superuser = True
        sisplau_que_no_sigui_mediocre.save()    
    msg += u"\nDirecció: "  + u" ,".join( sorted( set( [ unicode( t.username ) for t.username in sisplau_que_no_siguin_mediocres ]  ) ) )
    
    print u"Regenerar impartir"
    r=regeneraThread(
                    data_inici= None,       #data inici de curs 
                    franja_inici = FranjaHoraria.objects.all()[:1].get(),
                    user = userDemo
                    )
    r.start()    
    r.join()
    
    print u"Posar alumnes a llistes"
    seguents7dies = Impartir.objects.values( 'dia_impartir').order_by('dia_impartir').distinct()[:5]
    for dia in seguents7dies:
        for impartir in Impartir.objects.filter( dia_impartir = dia['dia_impartir'] ):
            if not impartir.controlassistencia_set.exists():
                alumnes =  [ alumne for grup in impartir.horari.grupsPotencials() for alumne in grup.alumne_set.all() ] 
                random.shuffle( alumnes )
                n_alumnes = random.randint( 3,7 )
                afegeix=afegeixThread(expandir = True, alumnes=alumnes[:n_alumnes], impartir=impartir, usuari = impartir.horari.professor, matmulla = False)
                afegeix.start()
                afegeix.join()
    
    print u"canviant dades dels professors"
    for p in Professor.objects.all():
        p.first_name, p.last_name = getRandomNomICognoms() 
        p.set_password( 'djAu' )
        p.save()
        
    msg += u"\nTots els passwords de professors: 'djAu' "
        
    return msg