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), }, )
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, })
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), }, )
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}, )
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}, )
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, })
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, }, )
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))
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)
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', {}, )
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)
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 }, )
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))
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}, )
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)
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)
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, })
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))
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', }, )
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])
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)
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)
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))
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 }, )
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)
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, })
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':[] }
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, }, )
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, })
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)