def edit(self, correccionID, **form_data): correccion = Correccion.get(correccionID) entregas_opts = [(e.id, '%s - %s' % (e.fecha, e.estadorepr())) for e in correccion.entregas] corrector_opts = [(di.id, unicode(di.docente)) for di in correccion.instancia.get_posibles_correctores()] options = dict(entregaID=entregas_opts, correctorID=corrector_opts) return dict(correccion=correccion, correccion_form=correccion_form, options=options, action=url('save', correccionID = correccion.id))
def get_mis_fuentes_instancia(self, instanciaID): try: instancia = InstanciaDeEntrega.get(instanciaID) docenteInscripto = DocenteInscripto.pk.get(instancia.ejercicio.curso.id, identity.current.user.id) if docenteInscripto is not None: r = [e for e in instancia.entregas if Correccion.selectBy(entrega=e, corrector=docenteInscripto).count() == 1] return self.enviar_zip(r, "mis_entregas_instancia_%u.%u.zip" % (instancia.ejercicio.numero, instancia.numero)) else: flash(_(u'Docente no inscripto.')) raise redirect('/') except: flash(_(u'Instancia incorrecta.')) raise redirect('/')
def generar_contexto(self, alumnos_inscriptos): from sercom.model import Correccion instancias_anteriores = list(self.instancia_destino.get_instancias_cursos_anteriores()) alumnos = [ai.alumno for ai in alumnos_inscriptos] correcciones = Correccion.get_por_alumnos_e_instancias(alumnos, instancias_anteriores) correcciones_por_alumno = dict([ (a, []) for a in alumnos ]) for c in correcciones: correcciones_por_alumno[c.entregador.alumno].append(c) #se orden las correcciones dependiendo de la instancia y en orden inverso for ai in alumnos_inscriptos: correcciones_por_alumno[ai.alumno].sort(lambda x,y: cmp(y.instancia,x.instancia)) return ContextoAprobadosCursadaAnterior(instancias_anteriores, correcciones_por_alumno)
def save(self, correccionID, **form_data): correccion = Correccion.get(correccionID) correccion.set(**form_data) flash('La corrección fue grabada correctamente.') raise redirect('edit',dict(correccionID=correccionID, form_data=form_data))