Esempio n. 1
0
def bloquejaDesbloqueja(request, pk):
    credentials = tools.getImpersonateUser(request)
    (user, l4) = credentials

    professor = User2Professor(user)

    alumne = Alumne.objects.get(pk=int(pk))

    url_next = '/open/dadesRelacioFamilies/#{0}'.format(alumne.pk)

    #seg-------------------
    te_permis = l4 or professor in alumne.tutorsDeLAlumne()
    if not te_permis:
        raise Http404()

    actiu = alumne.esta_relacio_familia_actiu()

    if actiu:
        resultat = bloqueja(
            alumne,
            u'Bloquejat per {0} amb data {1}'.format(professor,
                                                     datetime.now()))
    else:
        resultat = desbloqueja(alumne)
    resultat['url_next'] = url_next

    return render(
        request,
        'resultat.html',
        {
            'msgs': resultat,
            'head': 'Canvi configuració accés família de {0}'.format(alumne),
        },
    )
Esempio n. 2
0
def sortidesAllList(request):

    credentials = tools.getImpersonateUser(request)
    (user, _) = credentials

    professor = User2Professor(user)

    sortides = list(Sortida.objects.all().distinct())

    table = Table2_Sortides(data=sortides, origen="All")
    table.order_by = '-calendari_desde'

    RequestConfig(request,
                  paginate={
                      "paginator_class": DiggPaginator,
                      "per_page": 10
                  }).configure(table)

    url = r"{0}{1}".format(settings.URL_DJANGO_AULA,
                           reverse('sortides__sortides__ical'))

    return render(request, 'table2.html', {
        'table': table,
        'url': url,
    })
Esempio n. 3
0
def enviaBenvinguda(request, pk):
    credentials = tools.getImpersonateUser(request)
    (user, l4) = credentials

    professor = User2Professor(user)

    alumne = Alumne.objects.get(pk=int(pk))

    url_next = '/open/dadesRelacioFamilies/#{0}'.format(alumne.pk)

    #seg-------------------
    te_permis = l4 or professor in alumne.tutorsDeLAlumne()
    if not te_permis:
        raise Http404()

    filera = []

    try:
        cosMissatge = enviaBenvingudaAlumne(alumne)
    except Exception as e:
        cosMissatge = {'errors': [e], 'infos': [], 'warnings': []}

    cosMissatge['url_next'] = url_next

    return render(
        request,
        'resultat.html',
        {
            'msgs': cosMissatge,
            'head': u"Acció Envia Benviguda a {0}".format(alumne),
        },
    )
Esempio n. 4
0
def sincronitzaSaga(request):

    (user, l4) = tools.getImpersonateUser(request)
    professor = User2Professor(user)

    from aula.apps.extSaga.sincronitzaSaga import sincronitza

    if request.method == 'POST':

        form = sincronitzaSagaForm(request.POST, request.FILES)

        if form.is_valid():
            f = request.FILES['fitxerSaga']
            resultat = sincronitza(f, user)

            return render(
                request,
                'resultat.html',
                {
                    'head': 'Resultat importació SAGA',
                    'msgs': resultat
                },
            )

    else:
        form = sincronitzaSagaForm()

    return render(
        request,
        'sincronitzaSaga.html',
        {'form': form},
    )
Esempio n. 5
0
def sincronitzaSaga(request):

    (user, l4) = tools.getImpersonateUser(request)
    professor = User2Professor(user)

    from aula.apps.extSaga.sincronitzaSaga import sincronitza

    if request.method == 'POST':

        form = sincronitzaSagaForm(request.POST, request.FILES)

        if form.is_valid():
            f = request.FILES['fitxerSaga']
            path = default_storage.save('tmp/saga.csv', ContentFile(f.read()))
            tmp_file = os.path.join(settings.MEDIA_ROOT, path)
            with open(tmp_file, 'r', encoding="latin1") as f1:
                resultat = sincronitza(f1, user)
            default_storage.delete(path)
            return render(
                request,
                'resultat.html',
                {
                    'head': 'Resultat importació SAGA',
                    'msgs': resultat
                },
            )

    else:
        form = sincronitzaSagaForm()

    return render(
        request,
        'sincronitzaSaga.html',
        {'form': form},
    )
Esempio n. 6
0
def sortidesMevesList(request):

    credentials = tools.getImpersonateUser(request)
    (user, _) = credentials

    professor = User2Professor(user)

    q_professor_proposa = Q(professor_que_proposa=professor)
    q_professors_responsables = Q(professors_responsables=professor)
    q_professors_acompanyants = Q(altres_professors_acompanyants=professor)

    sortides = (Sortida.objects.filter(q_professor_proposa
                                       | q_professors_responsables
                                       | q_professors_acompanyants).distinct())

    table = Table2_Sortides(list(sortides), origen="Meves")
    table.order_by = '-calendari_desde'

    RequestConfig(request, paginate={
        "klass": DiggPaginator,
        "per_page": 10
    }).configure(table)

    return render(request, 'lesMevesSortides.html', {
        'table': table,
    })
Esempio n. 7
0
def index(request):

    #Obtenir l'usuari actual.
    credentials = getImpersonateUser(request)
    (user, _) = credentials
    professor = User2Professor(user)

    if request.method == 'POST':
        form = EscollirGrupForm(professor, request.POST)
        if form.is_valid():
            grup = form.cleaned_data['grup_list']
            nomesPropies = form.cleaned_data['nomesPropies']
            if nomesPropies: nomesPropies = 'True'
            else: nomesPropies = 'False'
            return detallgrup(request,
                              grup.id,
                              dataReferenciaStr='',
                              nomesPropies=nomesPropies)
    else:
        form = EscollirGrupForm(professor)
    return render(
        request,
        'form.html',
        {
            'form': form,
        },
    )
Esempio n. 8
0
def afegeixGuardia(request, dia=None, mes=None, year=None):

    credentials = getImpersonateUser(request)
    (user, _) = credentials

    head = u'Fer guardia'

    url_next = '/presencia/mostraImpartir/%d/%d/%d/' % (int(year), int(mes),
                                                        int(dia))
    if request.method == 'POST':
        form = afegeixGuardiaForm(request.POST)

        if form.is_valid():

            professor = form.cleaned_data['professor']
            franges = form.cleaned_data['franges']
            dia_impartir = date(int(year), int(mes), int(dia))
            professor_guardia = User2Professor(user)
            Impartir.objects.filter(dia_impartir=dia_impartir,
                                    horari__professor=professor,
                                    horari__hora__in=franges).update(
                                        professor_guardia=professor_guardia)

            return HttpResponseRedirect(url_next)

    else:
        form = afegeixGuardiaForm()
    return render_to_response('form.html', {
        'form': form,
        'head': head
    },
                              context_instance=RequestContext(request))
Esempio n. 9
0
def alumnesFallen(request, pk, origen):

    credentials = tools.getImpersonateUser(request)
    (user, _) = credentials

    professor = User2Professor(user)

    instance = get_object_or_404(Sortida, pk=pk)
    instance.flag_clean_nomes_toco_alumnes = True
    potEntrar = (professor in instance.professors_responsables.all()
                 or request.user.groups.filter(
                     name__in=[u"direcció", u"sortides"]).exists())
    if not potEntrar:
        raise Http404

    instance.credentials = credentials

    formIncidenciaF = modelform_factory(Sortida,
                                        fields=('alumnes_que_no_vindran', ))

    if request.method == "POST":
        form = formIncidenciaF(request.POST, instance=instance)

        if form.is_valid():
            try:
                form.save()
                nexturl = r'/sortides/sortides{origen}'.format(origen=origen)
                return HttpResponseRedirect(nexturl)
            except ValidationError, e:
                form._errors.setdefault(NON_FIELD_ERRORS,
                                        []).extend(e.messages)
Esempio n. 10
0
def menu(request):
    #How do I make a variable available to all my templates?
    #http://readthedocs.org/docs/django/1.2.4/faq/usage.html#how-do-i-make-a-variable-available-to-all-my-templates

    if request.user.is_anonymous:
        return HttpResponseRedirect(settings.LOGIN_URL)
    else:
        #si és un alumne l'envio a mirar el seu informe
        if Group.objects.get(name='alumne') in request.user.groups.all():
            return HttpResponseRedirect('/open/elMeuInforme/')

        #comprova que no té passwd per defecte:
        defaultPasswd, _ = ParametreKronowin.objects.get_or_create(
            nom_parametre='passwd', defaults={'valor_parametre': '1234'})
        if check_password(defaultPasswd.valor_parametre,
                          request.user.password):
            return HttpResponseRedirect(reverse('usuari__dades__canvi_passwd'))

        #si no té les dades informades:
        if not request.user.first_name or not request.user.last_name:
            return HttpResponseRedirect('/usuaris/canviDadesUsuari/')

        #prenc impersonate user:
        (user, _) = tools.getImpersonateUser(request)

        #si és professor ves a mostra impartir:
        professor = User2Professor(user)
        if professor is not None:
            return HttpResponseRedirect('/presencia/mostraImpartir/')

    return render(
        request,
        'main_page.html',
        {},
    )
Esempio n. 11
0
def esborrar(request, pk, origen):

    credentials = tools.getImpersonateUser(request)
    (user, _) = credentials

    professor = User2Professor(user)

    instance = get_object_or_404(Sortida, pk=pk)

    mortalPotEntrar = (instance.professor_que_proposa == professor
                       and not instance.estat in ['R', 'G'])
    direccio = (request.user.groups.filter(
        name__in=[u"direcció", u"sortides"]).exists())

    potEntrar = mortalPotEntrar or direccio
    if not potEntrar:
        messages.warning(request, u"No pots esborrar aquesta activitat.")
        return HttpResponseRedirect(request.META.get('HTTP_REFERER'))

    instance.credentials = credentials

    try:
        instance.delete()
    except:
        messages.warning(request, u"Error esborrant la activitat.")

    nexturl = r'/sortides/sortides{origen}'.format(origen=origen)
    return HttpResponseRedirect(nexturl)
Esempio n. 12
0
def configuraConnexio(request, pk):
    credentials = tools.getImpersonateUser(request)
    (user, l4) = credentials

    professor = User2Professor(user)

    alumne = Alumne.objects.get(pk=int(pk))

    #seg-------------------
    te_permis = l4 or professor in alumne.tutorsDeLAlumne()
    if not te_permis:
        raise Http404()

    edatAlumne = None
    try:
        edatAlumne = alumne.edat()
    except:
        pass

    infoForm = [
        ('Alumne', unicode(alumne)),
        #( 'Telèfon Alumne', alumne.telefons),
        ('Telèfon Alumne', alumne.rp1_telefon + u', ' + alumne.rp2_telefon +
         u', ' + alumne.altres_telefons),
        #( 'Nom tutors', alumne.tutors),
        ('Nom tutors', alumne.rp1_nom + u', ' + alumne.rp2_nom),
        #('Correu tutors (Saga)', alumne.correu_tutors),
        ('Correu tutors (Saga)', alumne.rp1_correu + u', ' + alumne.rp2_correu
         ),
        ('Edat alumne', edatAlumne),
    ]

    AlumneFormSet = modelform_factory(
        Alumne,
        fields=('correu_relacio_familia_pare', 'correu_relacio_familia_mare',
                'periodicitat_faltes', 'periodicitat_incidencies'),
    )

    if request.method == 'POST':
        form = AlumneFormSet(request.POST, instance=alumne)
        if form.is_valid():
            form.save()
            url_next = '/open/dadesRelacioFamilies#{0}'.format(alumne.pk)
            return HttpResponseRedirect(url_next)

    else:
        form = AlumneFormSet(instance=alumne)

    return render(
        request,
        'form.html',
        {
            'form': form,
            'infoForm': infoForm,
            'head': u'Gestió relació familia amb empreses',
            'formSetDelimited': True
        },
    )
Esempio n. 13
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, e:                
                errors.append(unicode(e))
Esempio n. 14
0
def assignaComentarisAAules(request):
    (user, l4) = tools.getImpersonateUser(request)
    professor = User2Professor(user)

    errors = []
    warnings = []
    infos = []

    if request.method == 'POST':
        form = carregaComentarisAulaForm(request.POST, request.FILES)

        if form.is_valid():
            f = request.FILES['fitxerComentaris']

            reader = csv.DictReader(f)
            info_nAulesLlegides = 0
            info_nAulesCreades = 0
            info_nComentarisAfegits = 0
            AulesCreades = []
            ComentarisAfegits = []

            f.seek(0)
            for row in reader:
                info_nAulesLlegides += 1
                nom_aula = unicode(row['CODI'],'iso-8859-1')
                descripcio_aula = unicode(row['NOM'],'iso-8859-1')
                if nom_aula !='':
                    a, created = Aula.objects.get_or_create(nom_aula=nom_aula,
                                                            defaults={
                                                                'horari_lliure': False,
                                                                'reservable': True})
                    if created:
                        info_nAulesCreades += 1
                        AulesCreades.append(a.nom_aula)
                        warnings.append(u'{0}: Aula creada nova'.format(a.nom_aula))
                    a.descripcio_aula = descripcio_aula
                    info_nComentarisAfegits += 1
                    ComentarisAfegits.append(descripcio_aula)
                    a.save()
                else:
                    errors.append('S\'han trobat aules sense nom!!!')
            warnings.append(u'Total aules noves creades: {0}'.format(info_nAulesCreades))
            infos.append(u'Total comentaris afegits: {0}'.format(info_nComentarisAfegits))
            resultat = {'errors': errors, 'warnings': warnings, 'infos': infos}
            return render(
                request,
                'resultat.html',
                {'head': 'Resultat càrrega comentaris aules',
                 'msgs': resultat},
            )
    else:
        form = carregaComentarisAulaForm()

    return render(
        request,
        'afegirComentarisAAules.html',
        {'form': form},
    )
Esempio n. 15
0
def modificaEstatControlAssistencia(request, codiEstat, idAlumne, idImpartir):
    '''
    Modifica el control d'assistència d'un sol resistre.
    '''
    try:
        profeActual = User2Professor(request.user)
        credentials = getImpersonateUser(request)
        (user, l4) = credentials

        estats = LlistaEstats()
        segEstat = estats.obtenirSeguentEstatAPartirCodi(codiEstat)
        if (settings.CUSTOM_NOMES_TUTOR_POT_JUSTIFICAR):
            #Si el profe convencional no pot justificar ens saltem un estat
            #TODO: Només podem justificar si som tutor del grup.
            if segEstat.codi == 'J':
                segEstat = estats.obtenirSeguentEstatAPartirCodi(segEstat.codi)

        #Comprovar que sigui el profe assignat a l'hora o error.
        impartir = Impartir.objects.get(id=idImpartir)

        #Controlem que el profe tingui permisos per modificar la hora.
        _comprovarQueLaHoraPertanyAlProfessorOError(credentials, impartir)

        ca = ControlAssistencia.objects.get(impartir_id=idImpartir,
                                            alumne_id=idAlumne)
        codiResultat = _modificaEstatControlAssistencia(
            segEstat, ca, profeActual, user, credentials)

        #Actualitzar el control impartir.
        impartir.dia_passa_llista = datetime.datetime.now()
        impartir.professor_passa_llista = profeActual
        impartir.currentUser = user
        impartir.save()

        #Log
        from aula.apps.usuaris.models import Accio
        Accio.objects.create(
            tipus='PL',
            usuari=user,
            l4=l4,
            impersonated_from=request.user if request.user != user else None,
            text=u"""Passar llista, presenciaSetmanal: {0}.""".format(
                impartir))

        #print ("Retorno correctament ", codiResultat)
        return HttpResponse(codiResultat)
    except ValidationError as e:
        cadenaError = u''
        for v in e.message_dict[NON_FIELD_ERRORS]:
            cadenaError += unicode(v) + u"<br>"
        return HttpResponse(CONST_ERROR_CODE + cadenaError, status=500)
    except Exception as e:
        #print (CONST_ERROR_CODE, str(traceback.format_exc()))
        #return HttpResponse(CONST_ERROR_CODE + unicode(e) + u"-" + unicode(traceback.format_exc(), 'utf-8'))
        return HttpResponse(CONST_ERROR_CODE + str(e), status=500)
Esempio n. 16
0
def alumnesFallen(request, pk, origen):

    credentials = tools.getImpersonateUser(request)
    (user, _) = credentials

    professor = User2Professor(user)

    instance = get_object_or_404(Sortida, pk=pk)
    instance.flag_clean_nomes_toco_alumnes = True
    fEsDireccioOrGrupSortides = request.user.groups.filter(
        name__in=[u"direcció", u"sortides"]).exists()
    potEntrar = (professor in instance.professors_responsables.all()
                 or professor in instance.altres_professors_acompanyants.all()
                 or fEsDireccioOrGrupSortides)

    if not potEntrar:
        raise Http404

    instance.credentials = credentials

    formIncidenciaF = modelform_factory(Sortida,
                                        fields=('alumnes_que_no_vindran', ))

    if request.method == "POST":
        form = formIncidenciaF(request.POST, instance=instance)

        if form.is_valid():
            try:
                nous = set([
                    x.pk for x in form.cleaned_data['alumnes_que_no_vindran']
                ])
                ante = set([
                    x.pk
                    for x in instance.alumnes_que_no_vindran.all().distinct()
                ])
                #afegir
                for alumne in nous - ante:
                    instance.alumnes_que_no_vindran.add(alumne)
                #treure
                for alumne in ante - nous:
                    instance.alumnes_que_no_vindran.remove(alumne)

                nexturl = r'/sortides/sortides{origen}'.format(origen=origen)
                return HttpResponseRedirect(nexturl)
            except ValidationError, e:
                form._errors.setdefault(NON_FIELD_ERRORS,
                                        []).extend(e.messages)

                nexturl = r'/sortides/sortides{origen}'.format(origen=origen)
                return HttpResponseRedirect(nexturl)
            except ValidationError, e:
                form._errors.setdefault(NON_FIELD_ERRORS,
                                        []).extend(e.messages)
Esempio n. 17
0
def integraCalendari(request):
    credentials = tools.getImpersonateUser(request)
    (user, l4) = credentials
    professor = User2Professor(user)
    dades_addicionals = GetDadesAddicionalsProfessor(professor)
    url = r"{0}{1}".format(
        settings.URL_DJANGO_AULA,
        reverse('gestio__calendari__comparteix',
                kwargs={'clau': str(dades_addicionals.clauDeCalendari)}))
    return render(request, 'integraCalendari.html', {
        'url_calendari': url,
    })
Esempio n. 18
0
def faltesAssistenciaEntreDates(request):

    credentials = getImpersonateUser(request)
    (user, _) = credentials

    professor = User2Professor(user)

    head = u'Calculadora %assistència entre Dates'
    infoForm = []

    grupsProfessor = Grup.objects.filter(
        horari__professor=professor).order_by('curs').distinct()
    assignaturesProfessor = Assignatura.objects.filter(
        horari__professor=professor,
        horari__grup__isnull=False).order_by('curs',
                                             'nom_assignatura').distinct()

    if request.method == 'POST':
        form = faltesAssistenciaEntreDatesForm(
            request.POST,
            assignatures=assignaturesProfessor,
            grups=grupsProfessor)

        if form.is_valid():

            report = faltesAssistenciaEntreDatesProfessorRpt(
                professor=professor,
                grup=form.cleaned_data['grup'],
                assignatures=form.cleaned_data['assignatura'],
                dataDesDe=form.cleaned_data['dataDesDe'],
                horaDesDe=form.cleaned_data['horaDesDe'],
                dataFinsA=form.cleaned_data['dataFinsA'],
                horaFinsA=form.cleaned_data['horaFinsA'])
            return render_to_response('reportTabs.html', {
                'report': report,
                'head': 'Informació alumnes',
            },
                                      context_instance=RequestContext(request))
#            except Exception, e:
#                form._errors.setdefault(NON_FIELD_ERRORS, []).extend(  [e]  )

    else:
        form = faltesAssistenciaEntreDatesForm(
            assignatures=assignaturesProfessor, grups=grupsProfessor)
    return render_to_response(
        'form.html',
        {
            'form': form,
            #'infoForm': [],
            'head': head
        },
        context_instance=RequestContext(request))
Esempio n. 19
0
def resultats(request):

    (user, l4) = tools.getImpersonateUser(request)
    professor = User2Professor(user)

    report = []

    taula = tools.classebuida()
    taula.titol = tools.classebuida()
    taula.titol.contingut = ""
    taula.capceleres = []

    capcelera = tools.classebuida()
    capcelera.amplade = 35
    capcelera.contingut = u'{0}'.format(u'Avaluació qualitativa')
    taula.capceleres.append(capcelera)

    capcelera = tools.classebuida()
    capcelera.amplade = 65
    capcelera.contingut = u'Dades'
    taula.capceleres.append(capcelera)

    taula.fileres = []
    for qualitativa in AvaluacioQualitativa.objects.all():
        filera = []
        camp = tools.classebuida()
        camp.contingut = u'{0}'.format(unicode(qualitativa))
        filera.append(camp)

        camp = tools.classebuida()
        obertaLaQualitativa = qualitativa.data_obrir_avaluacio <= date.today(
        ) <= qualitativa.data_tancar_avaluacio
        estat = '(Oberta)' if obertaLaQualitativa else '(Tancada)'
        camp.contingut = u'del {0} al {1} {2}'.format(
            qualitativa.data_obrir_avaluacio,
            qualitativa.data_tancar_avaluacio, estat)
        camp.enllac = '/avaluacioQualitativa/report/{0}'.format(qualitativa.pk)
        filera.append(camp)

        taula.fileres.append(filera)

        report.append(taula)

    return render(
        request,
        'report.html',
        {
            'report': report,
            'head': u'Avaluacions Qualitatives',
        },
    )
Esempio n. 20
0
def calculadoraUnitatsFormatives(request):

    credentials = getImpersonateUser(request)
    (user, _) = credentials

    professor = User2Professor(user)

    head = u'Calculadora Unitats Formatives'
    infoForm = []

    grupsProfessor = Grup.objects.filter(
        horari__professor=professor).order_by('curs').distinct()
    assignaturesProfessor = Assignatura.objects.filter(
        horari__professor=professor,
        horari__grup__isnull=False).order_by('curs',
                                             'nom_assignatura').distinct()

    if request.method == 'POST':
        form = calculadoraUnitatsFormativesForm(
            request.POST,
            assignatures=assignaturesProfessor,
            grups=grupsProfessor)

        if form.is_valid():
            grup = form.cleaned_data['grup']
            assignatures = form.cleaned_data['assignatura']
            dataInici = form.cleaned_data['dataInici']
            hores = form.cleaned_data['hores']
            imparticionsAssignatura = Impartir.objects.filter(
                dia_impartir__gte=dataInici,
                horari__assignatura__in=assignatures,
                horari__grup=grup,
                horari__professor=professor).order_by('dia_impartir',
                                                      'horari__hora')
            if imparticionsAssignatura.count() < hores:
                form._errors.setdefault(NON_FIELD_ERRORS, []).extend([
                    u'''A partir de la data {0} només hi ha {1} hores,
                                   comprova que has triat bé el curs.
                                   '''.format(dataInici,
                                              imparticionsAssignatura.count())
                ])
            else:
                try:
                    darreraImparticio = imparticionsAssignatura[hores - 1]
                    infoForm = [
                        ('Darrera classe', u'dia {0} a les {1}'.format(
                            darreraImparticio.dia_impartir,
                            darreraImparticio.horari.hora.hora_inici)),
                    ]
                except Exception, e:
                    form._errors.setdefault(NON_FIELD_ERRORS, []).extend([e])
Esempio n. 21
0
def modificaEstatControlAssistenciaGrup(request, codiEstat, idImpartir):
    '''
    Modifica el control d'assistència de tot un grup.
    '''
    llistaAlumnes=''
    try:
        profeActual = User2Professor( request.user )
        credentials = getImpersonateUser(request) 
        (user, l4) = credentials   
        
        #Comprovar que sigui el profe assignat a l'hora o error.
        impartir = Impartir.objects.get(id=idImpartir)
        
        #Controlem que el profe tingui permisos per modificar la hora.
        _comprovarQueLaHoraPertanyAlProfessorOError(credentials, impartir)
        
        assistencies = impartir.controlassistencia_set.order_by('alumne')
        estats = LlistaEstats()
        nouEstat = estats.obtenirEstatActualAPartirCodi(codiEstat)
        
        for assistencia in assistencies:
            if (llistaAlumnes != ''):
                llistaAlumnes = llistaAlumnes + u','
            _modificaEstatControlAssistencia(nouEstat, assistencia, \
                profeActual, user, credentials)
            llistaAlumnes = llistaAlumnes + str(assistencia.alumne_id)

        #Actualitzar el control impartir.
        impartir.dia_passa_llista = datetime.datetime.now()
        impartir.professor_passa_llista = profeActual
        impartir.currentUser = user
        impartir.save()

        #Log
        Accio.objects.create(
            tipus='PL',
            usuari=user,
            l4=l4,
            impersonated_from=request.user if request.user != user else None,
            text=u"""Passar llista, presenciaSetmanal: {0}.""".format(impartir)
        )
        return HttpResponse(llistaAlumnes)
    except ValidationError as e:
        cadenaError = u''
        for v in e.message_dict[NON_FIELD_ERRORS]:
            cadenaError += str(v) + u"<br>"
        return HttpResponse(CONST_ERROR_CODE + cadenaError, status=500)
    except Exception as e:
        #print (CONST_ERROR_CODE, str(traceback.format_exc()))
        return HttpResponse(CONST_ERROR_CODE + str(e), status=500)       
Esempio n. 22
0
def index(request):
    # type: (HttpRequest) -> HttpResponse
    
    #Obtenir l'usuari actual.
    credentials = getImpersonateUser(request)
    (user, _ ) = credentials
    professor = User2Professor( user )

    #Relació inversa segons el manual funciona, similar a la relació blog - entradaBlog.
    #Veure Spanning multi-valued relationships (guia de models)
    grup_list = Grup.objects.filter(horari__professor = professor).distinct()
    template = loader.get_template('presenciaSetmanal/index.html')
    context =  {'grup_list': grup_list }
    #return HttpResponse(repr(grup_list[0]))
    return render(request, "presenciaSetmanal/index.html",context)
Esempio n. 23
0
def llistaTutorsIndividualitzats(request):

    credentials = tools.getImpersonateUser(request)
    (user, _) = credentials

    professor = User2Professor(user)

    head = u'Tutors Individualitzats'
    infoForm = []

    report = reportLlistaTutorsIndividualitzats()

    return render_to_response('report.html', {
        'report': report,
        'head': head,
    },
                              context_instance=RequestContext(request))
Esempio n. 24
0
def feina(request, pk_imparticio):

    credentials = tools.getImpersonateUser(request)
    (user, _) = credentials

    professor = User2Professor(user)

    imparticio = get_object_or_404(Impartir, pk=pk_imparticio)

    try:
        feina = Feina.objects.get(impartir=imparticio)
    except Feina.DoesNotExist:
        feina = Feina()
        feina.impartir = imparticio

    head = u"Feina per a {0}".format(imparticio)

    frmFact = modelform_factory(Feina,
                                fields=(
                                    'feina_a_fer',
                                    'comentaris_professor_guardia',
                                ))

    if request.method == "POST":
        form = frmFact(request.POST, instance=feina)
        if form.is_valid():
            feina = form.save(commit=False)
            feina.professor_darrera_modificacio = professor
            feina.save()
            return HttpResponseRedirect(r'/presencia/passaLlista/{0}'.format(
                imparticio.pk))
    else:
        form = frmFact(instance=feina)

    return render(
        request,
        'form.html',
        {
            'form': form,
            'head': head
        },
    )
Esempio n. 25
0
    def render(self, context):
        user = Variable('user').resolve(context)

        if not user.is_authenticated:
            return self.nodelist_false.render(context)

        if user.is_staff:
            return self.nodelist_true.render(context)

        try:
            from aula.apps.usuaris.models import User2Professor
            professor = User2Professor(user)
        except:
            return self.nodelist_false.render(context)

        if professor.tutor_set.count(
        ) > 0 or professor.tutorindividualitzat_set.count() > 0:
            return self.nodelist_true.render(context)
        else:
            return self.nodelist_false.render(context)
Esempio n. 26
0
def reservaAulaList(request):
    (user, l4) = tools.getImpersonateUser(request)
    professor = User2Professor(user)

    reserves = (ReservaAula.objects.filter(es_reserva_manual=True).filter(
        usuari=user))

    table = Table2_ReservaAula(reserves)
    table.order_by = [
        '-dia_reserva',
    ]

    RequestConfig(request, paginate={
        "klass": DiggPaginator,
        "per_page": 30
    }).configure(table)

    return render(request, 'reservesAules.html', {
        'table': table,
    })
Esempio n. 27
0
def enviaBenvinguda( request , pk ):
    credentials = tools.getImpersonateUser(request) 
    (user, l4 ) = credentials

    professor = User2Professor( user )     
            
    alumne =  Alumne.objects.get( pk = int(pk) )
    
    url_next = '/open/dadesRelacioFamilies/#{0}'.format(alumne.pk)
            
    #seg-------------------
    te_permis = l4 or  professor in alumne.tutorsDeLAlumne() 
    if  not te_permis:
        raise Http404()     
    
    filera = []                
        
    try:
        cosMissatge = enviaBenvingudaAlumne( alumne ) 
    except Exception, e:
        cosMissatge = {'errors': [ e ], 'infos':[], 'warnings':[] }
Esempio n. 28
0
def llistaTutorsIndividualitzats(request):
    """ XXX define doc """

    credentials = tools.getImpersonateUser(request)
    (user, _) = credentials

    professor = User2Professor(user)

    head = u'Tutors Individualitzats'
    infoForm = []

    report = reportLlistaTutorsIndividualitzats()

    return render(
        request,
        'report.html',
        {
            'report': report,
            'head': head,
        },
    )
Esempio n. 29
0
def sortidesGestioList(request):

    credentials = tools.getImpersonateUser(request)
    (user, _) = credentials

    professor = User2Professor(user)

    filtre = []
    socEquipDirectiu = User.objects.filter(pk=user.pk,
                                           groups__name='direcció').exists()
    socCoordinador = User.objects.filter(pk=user.pk,
                                         groups__name__in=['sortides'
                                                           ]).exists()

    #si sóc equip directiu només les que tinguin estat 'R' (Revisada pel coordinador)
    if socEquipDirectiu:
        filtre.append('R')
    #si sóc coordinador de sortides només les que tinguin estat 'P' (Proposada)
    if socCoordinador:
        filtre.append('P')

    sortides = (Sortida.objects.exclude(estat='E').filter(
        estat__in=filtre).distinct())

    table = Table2_Sortides(data=list(sortides), origen="Gestio")
    table.order_by = '-calendari_desde'

    RequestConfig(request,
                  paginate={
                      "paginator_class": DiggPaginator,
                      "per_page": 10
                  }).configure(table)

    url = r"{0}{1}".format(settings.URL_DJANGO_AULA,
                           reverse('sortides__sortides__ical'))

    return render(request, 'gestioDeSortides.html', {
        'table': table,
        'url': url,
    })
Esempio n. 30
0
def esborraGuardia(request, pk):
    credentials = getImpersonateUser(request)
    (user, l4) = credentials

    impartir = get_object_or_404(Impartir, pk=pk)

    url_next = '/presencia/mostraImpartir/%d/%d/%d/' % (
        impartir.dia_impartir.year, impartir.dia_impartir.month,
        impartir.dia_impartir.day)

    #seg-------------------------------
    pertany_al_professor = (impartir.professor_guardia
                            is not None) and (user.pk
                                              == impartir.professor_guardia.pk)
    if not (l4 or pertany_al_professor):
        return HttpResponseRedirect(url_next)

    if impartir.professor_guardia == User2Professor(user):
        impartir.professor_guardia = None
        impartir.currentUser = user
        impartir.save()

    return HttpResponseRedirect(url_next)