def dashboard_data(request):
	valid_session = (timezone.now() - request.user.session.last_access) < timedelta(seconds=200)
	if valid_session:
		sysacad = SysacadSession(alumno=request.user)
	else:
		return {'state': 'password_required'}

	materias_dict = sysacad.estado_academico_data()['materias']
	sysacad.close()
	materias = request.user.actualizar_materias(materias_dict).filter(estado='cursa')
	materias = request.user.materias.filter(estado='cursa')
	aprobadas_percent = request.user.get_materia_percent('aprobada')
	regularizadas_percent = request.user.get_materia_percent('regular')
	cursa_percent = request.user.get_materia_percent('cursa')
	carrera_progress = request.user.get_carrera_progress()
	context = {
		'materias': materias,
		'aprobadas_percent': aprobadas_percent,
		'regularizadas_percent': regularizadas_percent,
		'cursa_percent': cursa_percent,
		'carrera_progress': carrera_progress,
	}
	return {
		'state': 'OK',
		'html': render_to_string('dashboard_data.html', context)
	}
Example #2
0
 def save(self, commit=True):
     sysacad = SysacadSession(alumno=self.user)
     sysacad.change_password(self.cleaned_data["old_password"], self.cleaned_data["new_password1"])
     sysacad.close()
     self.user.set_password(self.cleaned_data["new_password1"])
     if self.cleaned_data["email"] != "":
         self.user.email = self.cleaned_data["email"]
     if commit:
         self.user.save()
     return self.user
    def get_queryset(self):
        alumno_pk = self.kwargs['alumno_pk']
        alumno = Alumno.objects.get(pk=alumno_pk)

        if self.request.QUERY_PARAMS.get('cached', 'true') == 'false':
            # TODO: Actualizar datos de materias
            sysacad = SysacadSession(alumno=alumno)
            try:
                materias = sysacad.estado_academico_data()['materias']
            except SysacadSession.AuthenticationError:
                raise exceptions.NotAuthenticated
            sysacad.close()

            for materia in materias:
                if int(materia['anio']) == 0:
                    continue

                try:
                    materia_obj = Materia.objects.get(nombre=materia['nombre'])
                except Materia.DoesNotExist:
                    materia_obj = Materia.objects.create(
                        nombre = materia['nombre'],
                        plan = materia['plan'],
                        anio = materia['anio']
                    )

                estadomateria = alumno.materias.get_or_create(info=materia_obj)[0]
                if materia['estado']['estado'] == 'aprobada':
                    estadomateria.estado = 'aprobada'
                    estadomateria.data = {
                        'nota': materia['estado']['nota'],
                        'tomo': materia['estado']['tomo'],
                        'folio': materia['estado']['folio'],
                    }

                elif materia['estado']['estado'] == 'cursa':
                    estadomateria.estado = 'cursa'
                    estadomateria.data = {
                        'aula': materia['estado']['aula'],
                        'comision': materia['estado']['comision']
                    }

                elif materia['estado']['estado'] == 'regular':
                    estadomateria.estado = 'regular'

                else:
                    estadomateria.estado = 'no_inscripto'

                estadomateria.save()

        return alumno.materias.all()
    def get_object(self):
        alumno = super(AlumnosDetail, self).get_object()
        if self.request.QUERY_PARAMS.get('cached', 'true') == 'false':
            # Actualizar la data del alumno
            sysacad = SysacadSession(alumno=alumno)
            try:
                datos_alumno = sysacad.estado_academico_data()['datos_alumno']
            except SysacadSession.AuthenticationError:
                raise exceptions.NotAuthenticated
            alumno.first_name, alumno.last_name = datos_alumno
            alumno.save()
            sysacad.close()

        return alumno