From 73633637cbc5d62f2d1502de89a9723d4dd0d1be Mon Sep 17 00:00:00 2001 From: Leandro Lucarella Date: Tue, 13 Mar 2007 18:53:49 +0000 Subject: [PATCH] =?utf8?q?Bugfix:=20El=20zip=20se=20sub=C3=ADa=20roto=20en?= =?utf8?q?=20las=20entregas.=20Al=20parecer=20al=20usar=20el=20ZipFile=20c?= =?utf8?q?on=20el=20file=20object=20que=20viene=20por=20request,=20le=20le?= =?utf8?q?=C3=ADa=20las=20cabeceras,=20avanzando=20el=20puntero,=20y=20lo?= =?utf8?q?=20romp=C3=ADa.=20Para=20evitarlo=20se=20lee=20el=20archivo=20un?= =?utf8?q?a=20vez=20en=20memoria=20y=20se=20opera=20con=20el=20buffer=20en?= =?utf8?q?=20memoria.=20Adem=C3=A1s=20se=20agrega=20chequeo=20de=20CRC.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- sercom/subcontrollers/misentregas/__init__.py | 10 +++++++--- sercom/subcontrollers/validate.py | 1 + 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/sercom/subcontrollers/misentregas/__init__.py b/sercom/subcontrollers/misentregas/__init__.py index 57d7b8a..31c7678 100644 --- a/sercom/subcontrollers/misentregas/__init__.py +++ b/sercom/subcontrollers/misentregas/__init__.py @@ -140,10 +140,14 @@ class MisEntregasController(controllers.Controller, identity.SecureResource): @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 @@ -171,7 +175,7 @@ class MisEntregasController(controllers.Controller, identity.SecureResource): 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) diff --git a/sercom/subcontrollers/validate.py b/sercom/subcontrollers/validate.py index 9b4a96a..614619c 100644 --- a/sercom/subcontrollers/validate.py +++ b/sercom/subcontrollers/validate.py @@ -51,3 +51,4 @@ def validate_del(cls, name, id): except Exception, e: flash(_(u'No se pudo eliminar el %s: %s' % (name, e))) raise redirect('../list') + -- 2.43.0