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 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)
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