X-Git-Url: https://git.llucax.com/z.facultad/75.52/sercom.git/blobdiff_plain/5abdab4db1be106faafe469314fa939d1948399b..44dcfb7c771112febabc4a325ef836a7c5614f4b:/sercom/subcontrollers/misentregas/__init__.py diff --git a/sercom/subcontrollers/misentregas/__init__.py b/sercom/subcontrollers/misentregas/__init__.py index 004b9df..88259c2 100644 --- a/sercom/subcontrollers/misentregas/__init__.py +++ b/sercom/subcontrollers/misentregas/__init__.py @@ -10,7 +10,7 @@ from turbogears import identity from turbogears import paginate from docutils.core import publish_parts from sercom.subcontrollers import validate as val -from sercom.model import Entrega, Correccion, Curso, Ejercicio, InstanciaDeEntrega, Grupo, Miembro, AlumnoInscripto +from sercom.model import ComandoEjecutado, ComandoPruebaEjecutado, Entrega, Correccion, Curso, Ejercicio, InstanciaDeEntrega, Grupo, Miembro, AlumnoInscripto from sqlobject import * from zipfile import ZipFile, BadZipfile from cStringIO import StringIO @@ -98,6 +98,7 @@ class EntregaForm(W.TableForm): javascript = [W.JSSource("MochiKit.DOM.focusOnLoad('form_ejercicio');"), W.JSSource(ajax)] form = EntregaForm() + #}}} #{{{ Controlador @@ -192,9 +193,30 @@ class MisEntregasController(controllers.Controller, identity.SecureResource): r = validate_get(entregaid) response.headers["Content-Type"] = "application/zip" 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 + @expose() + def file(self, id): + from cherrypy import request, response + r = ComandoEjecutado.get(id) + response.headers["Content-Type"] = "application/zip" + response.headers["Content-disposition"] = "attachment;filename=comando_ejecutado_%d.zip" % (r.id) + return r.archivos + + @expose() + def diff(self, id): + from cherrypy import request, response + r = ComandoEjecutado.get(id) + response.headers["Content-Type"] = "application/zip" + response.headers["Content-disposition"] = "attachment;filename=diferencias_%d.zip" % (r.id) + return r.diferencias + + @expose(template='kid:%s.templates.diff' % __name__) + def verdiff(self, id): + r = ComandoEjecutado.get(id) + zip = ZipFile(StringIO(r.diferencias), 'r') + return dict(zip=zip) + @expose('json') def instancias(self, ejercicio_id): instancias = InstanciaDeEntrega.select(AND(