X-Git-Url: https://git.llucax.com/software/sercom.git/blobdiff_plain/eba8ae20f2fa25c6717e5d8c4b10046e38aac67b..ad77b3566169e514d5fe31c724281d5db91c18e3:/sercom/subcontrollers/misentregas/__init__.py diff --git a/sercom/subcontrollers/misentregas/__init__.py b/sercom/subcontrollers/misentregas/__init__.py index a516c88..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,6 +141,12 @@ 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['entregador'] = identity.current.user validate_new(kw)