From: Leandro Lucarella Date: Mon, 4 Apr 2005 00:45:28 +0000 (+0000) Subject: Se agrega zip de entregas rechazadas. X-Git-Tag: svn_import~18 X-Git-Url: https://git.llucax.com/software/sercom-old.git/commitdiff_plain/330b4d4054a7e9a47b376a1ba51e1ec8efe8e9a0?ds=inline;hp=2c809106fee22f48064720dfdf7dbbc29e4b321d Se agrega zip de entregas rechazadas. --- diff --git a/src/sc_suwi b/src/sc_suwi index be47215..cea3886 100755 --- a/src/sc_suwi +++ b/src/sc_suwi @@ -118,6 +118,11 @@ def input_zip(req, entrega_id): return input_entrega(req, entrega_id) \ + '\n' +def input_zip_rechazados(req, entrega_id): + return input_entrega(req, entrega_id) \ + + '\n' \ + + '\n' + def input_inscripto(req, inscripto_id=None): if inscripto_id is not None: return '\n' \ @@ -251,7 +256,7 @@ def intentos(req, entrega_id, inscripto_id): r += footer() return r -def zip(req, entrega_id): +def zip(req, entrega_id, rechazados=False): def zip_path(path, base, zipfd): paths = os.listdir(path) for p in paths: @@ -263,13 +268,26 @@ def zip(req, entrega_id): from zipfile import ZipFile, ZIP_DEFLATED e = Entrega.get(entrega_id, connection=conn) c = e.curso - req.write(http_header_zip(req, 'entrega-%d.%d.%d-%d.%d.zip' - % (c.anio, c.cuatrimestre, c.curso, e.nroEjercicio, e.entrega))) + filename = 'entrega-%d.%d.%d-%d.%d' \ + % (c.anio, c.cuatrimestre, c.curso, e.nroEjercicio, e.entrega) + if rechazados: + filename += '-rechazados' + filename += '.zip' + req.write(http_header_zip(req, filename)) tmpfname = os.tmpnam() zipfd = ZipFile(tmpfname, 'w', ZIP_DEFLATED) - for c in e.correcciones: - zip_path(os.path.join(conf.get('general', 'data_dir'), c.intento.path), - str(c.intento.inscripto.padron), zipfd) + if rechazados: + inscriptos_ok = set([c.inscripto for c in e.correcciones]) + inscriptos = set([i.inscripto for i in e.intentos]) + for i in inscriptos - inscriptos_ok: + intento = list(Intento.selectBy(entregaID=e.id, inscriptoID=i.id, + connection=conn))[-1] + zip_path(os.path.join(conf.get('general', 'data_dir'), + intento.path), str(i.padron), zipfd) + else: + for c in e.correcciones: + zip_path(os.path.join(conf.get('general', 'data_dir'), + c.intento.path), str(c.intento.inscripto.padron), zipfd) zipfd.close() req.write(file(tmpfname, 'r').read()) os.unlink(tmpfname) @@ -334,6 +352,8 @@ def correcciones(req, entrega_id): r += form(req, 'Elegir curso', input_login(req)) r += form(req, 'Elegir entrega', input_curso(req, e.curso.id)) r += form(req, 'Bajar entrega en .zip', input_zip(req, entrega_id)) + r += form(req, 'Bajar entrega rechazadas en .zip', + input_zip_rechazados(req, entrega_id)) r += '

\n' return r @@ -388,7 +408,7 @@ elif f.has_key('intento'): elif f.has_key('inscripto'): print intentos(req, int(f.getfirst('entrega')), int(f.getfirst('inscripto'))) elif f.has_key('zip'): - zip(req, int(f.getfirst('entrega'))) + zip(req, int(f.getfirst('entrega')), f.getfirst('rechazados', False)) else: print correcciones(req, int(f.getfirst('entrega')))