def force_create(self, archivo, **kw): """Sube una entrega en lugar de un alumno""" instancia = kw['instancia'] entregador = kw['entregador'] archivo = archivo.file.read() try: zfile = ZipFile(StringIO(archivo), 'r') except BadZipfile: flash(_(u'El archivo ZIP no es válido')) raise redirect('force_new', kw) if zfile.testzip() is not None: flash(_(u'El archivo ZIP tiene errores de CRC')) raise redirect('force_new',kw) entregador_id = int(entregador) instancia = InstanciaDeEntrega.get(int(instancia)) if instancia.ejercicio.grupal: entregador = Grupo.get(entregador_id) else: entregador = AlumnoInscripto.get(entregador_id) kw['instancia'] = instancia kw['archivos'] = archivo kw['entregador'] = entregador kw['observaciones'] = 'Entrega realizada manualmente por el docente %s' % identity.current.user.shortrepr() Entrega(**kw) flash('Se creo una nueva entrega') raise redirect('list')
def create(self, **kw): """Save or create record to model""" cursoId = kw['cursoID'] padron_responsable = kw['responsable'] try: # Busco el alumno inscripto resp = AlumnoInscripto.selectBy(cursoID=cursoId, alumno=Alumno.byPadron(padron_responsable)).getOne() except SQLObjectNotFound: resp = None kw['responsable'] = resp create_record(cursoId, kw)
def get_inscripto(self, cursoid, padron): msg = u'' error=False try: # Busco el alumno inscripto alumno = AlumnoInscripto.selectBy(curso=cursoid, alumno=Alumno.byUsuario(padron)).getOne() msg = {} msg['id'] = alumno.id msg['value'] = alumno.alumno.nombre except SQLObjectNotFound: msg = 'No existe el alumno %s en el curso seleccionado.' % padron error=True except Exception, (inst): msg = u"""Se ha producido un error inesperado al buscar el registro:\n %s""" % str(inst) error = True
def update(self, id, **kw): """Save or create record to model""" responsable = kw['responsable'] curso = kw['cursoID'] resp = kw['responsable'] try: # Busco el alumno inscripto resp = AlumnoInscripto.selectBy(cursoID=kw['cursoID'], alumno=Alumno.byPadron(kw['responsable'])).getOne() except SQLObjectNotFound: resp = None kw['responsable'] = resp r = validate_set(id, kw) flash(_(u'El %s fue actualizado.') % name) raise redirect('../list/%d' % r.curso.id)
def aplicar_calculo_correcciones(self,tipo_calculo, inst_destino_id, inst_concepto_id, entregador_id = None): """Aplica el cálculo de correccion para una instancia destino dada""" curso = self.get_curso_actual() inst_destino = InstanciaExaminacion.get(inst_destino_id) inst_concepto = InstanciaExaminacion.get(inst_concepto_id) calculador = self.crear_calculador(tipo_calculo, curso, inst_destino, inst_concepto) docente = identity.current.user if entregador_id: alumno_inscripto = AlumnoInscripto.get(entregador_id) calculador.aplicar(docente, alumno_inscripto) else: calculador.aplicar_todas(docente) raise redirect('calculo_correcciones', inst_destino_id=inst_destino_id, inst_concepto_id=inst_concepto_id)
def get_alumnos(self, grupoid): try: # Busco los alumnos del grupo grupo = Grupo.get(int(grupoid)) miembros = Miembro.selectBy(baja=None, grupo=grupo) integrantes = [] for m in miembros: msg = {} alumnoInscripto = AlumnoInscripto.get(m.alumno.id) msg['id'] = alumnoInscripto.id msg['label'] = alumnoInscripto.alumno.usuario integrantes.append(msg) return dict(msg=integrantes, error=False) except Exception, (inst): msg = u"""Se ha producido un error inesperado al buscar el registro:\n %s""" % str(inst) integrantes = [msg] return dict(msg=integrantes, error=True)
def create(self, **kw): """Save or create record to model""" r = validate_new(kw) docentes = kw.get('docentes', []) alumnos = kw.get('alumnos', []) """ Elimino todos los docentes asignados al curso y los agrego nuevamente""" for d in DocenteInscripto.selectBy(curso=r): d.destroySelf() """ Agrego la nueva seleccion """ for d in docentes: r.add_docente(Docente(d)) """ Elimino a los alumnos y los vuelvo a agregar """ for a in AlumnoInscripto.selectBy(curso=r): d.destroySelf() for a in alumnos: r.add_alumno(Alumno(a)) flash(_(u'Se creó un nuevo %s.') % name) raise redirect('list')
grupoAorig.remove_miembro(mA.alumno.id) try: grupoA = validate_get(grupoAId) for a in miembrosA: try: grupoA.add_miembro(a, baja=None) except DuplicateEntryError: continue except Exception, e: log.debug(e) flash(_(u'Error A %s.' % e)) raise redirect(url('/curso/grupo/list' % int(cursoID))) # seteo el reponsable del grupo if responsableA and int(responsableA) != 0: grupoA.responsable = AlumnoInscripto.get(int(responsableA)) for t in tutoresA: try: grupoA.add_tutor(int(t)) except: #TODO ver por que no anda el duplicate error, por ahora cacheo silencioso pass #Elimino el grupo si quedo vacio if len(miembrosA) == 0: try: validate_del(grupoAId) except: pass
def get_alumnos_inscriptos(curso): return [(ai.id, ai) for ai in AlumnoInscripto.selectBy(curso)]