X-Git-Url: https://git.llucax.com/software/sercom.git/blobdiff_plain/1013c167ae4a4d891572b0eadbe4e31008f14ad6..ad77b3566169e514d5fe31c724281d5db91c18e3:/sercom/subcontrollers/misentregas/__init__.py diff --git a/sercom/subcontrollers/misentregas/__init__.py b/sercom/subcontrollers/misentregas/__init__.py index 4570b84..e6f97fb 100644 --- a/sercom/subcontrollers/misentregas/__init__.py +++ b/sercom/subcontrollers/misentregas/__init__.py @@ -12,6 +12,8 @@ from docutils.core import publish_parts from sercom.subcontrollers import validate as val from sercom.model import Entrega, Correccion, Curso, Ejercicio, InstanciaDeEntrega from sqlobject import * +from zipfile import ZipFile, BadZipfile +from cStringIO import StringIO #}}} @@ -34,7 +36,9 @@ def validate_new(data): def get_ejercicios_activos(): # TODO : Mostrar solo los ejercicios con instancias de entrega activos - return [(0, _(u'--'))] + [(fk.id, fk.shortrepr()) for fk in Ejercicio.select()] + return [(0, _(u'--'))] + [(a.id, a.shortrepr()) for a in (Ejercicio.select( + AND(Ejercicio.q.id==InstanciaDeEntrega.q.ejercicioID, InstanciaDeEntrega.q.inicio <= DateTimeCol.now(), + InstanciaDeEntrega.q.fin >= DateTimeCol.now())))] ajax = """ function clearInstancias () @@ -137,8 +141,13 @@ class MisEntregasController(controllers.Controller, identity.SecureResource): @expose() def create(self, archivo, ejercicio, **kw): """Save or create record to model""" + try: + zfile = ZipFile(StringIO(archivo.file.read()), 'r') + except BadZipfile: + flash(_(u'El archivo ZIP no es valido')) + raise redirect('list') + kw['archivos'] = archivo.file.read() - kw['archivos_nombre'] = archivo.filename kw['entregador'] = identity.current.user validate_new(kw) flash(_(u'Se creó una nueva %s.') % name)