"""Basic model admin interface"""
require = identity.has_permission('entregar')
+ hide_to_admin = 1
+
@expose()
def default(self, tg_errors=None):
"""handle non exist urls"""
"""List records in model"""
# Grupos en los que el usuario formo parte
m = [i.grupo.id for i in Grupo.selectByAlumno(identity.current.user)]
- entregador = AlumnoInscripto.selectByAlumno(identity.current.user)
- m.append(entregador.id)
+ try:
+ entregador = AlumnoInscripto.selectByAlumno(identity.current.user)
+ m.append(entregador.id)
+ except:
+ pass
r = cls.select(IN(cls.q.entregadorID, m))
return dict(records=r, name=name, namepl=namepl)
@expose()
def create(self, archivo, ejercicio, **kw):
"""Save or create record to model"""
+ archivo = archivo.file.read()
try:
- zfile = ZipFile(archivo.file)
+ zfile = ZipFile(StringIO(archivo), 'r')
except BadZipfile:
- flash(_(u'El archivo ZIP no es valido'))
+ flash(_(u'El archivo ZIP no es válido'))
+ raise redirect('list')
+ if zfile.testzip() is not None:
+ flash(_(u'El archivo ZIP tiene errores de CRC'))
raise redirect('list')
# por defecto el entregador es el user loggeado
raise redirect('list')
entregador = m.grupo
- kw['archivos'] = archivo.file.read()
+ kw['archivos'] = archivo
kw['entregador'] = entregador
validate_new(kw)
flash(_(u'Se creó una nueva %s.') % name)
@expose(template='kid:%s.templates.corrida' % __name__)
def corrida(self, entregaid):
- e = validate_get(id)
+ e = validate_get(entregaid)
return dict(entrega=e)
@expose()
from cherrypy import request, response
r = validate_get(entregaid)
response.headers["Content-Type"] = "application/zip"
- response.headers["Content-disposition"] = "attachment;filename=Ej_%s-Entrega_%s-Padron_%s.zip" % (r.instancia.ejercicio.numero, r.instancia.numero, r.entregador.nombre)
+ response.headers["Content-disposition"] = "attachment;filename=Ej_%s-Entrega_%s-%s.zip" % (r.instancia.ejercicio.numero, r.instancia.numero, r.entregador.nombre)
flash(_(u'El %s fue eliminado permanentemente.') % name)
return r.archivos