X-Git-Url: https://git.llucax.com/software/sercom.git/blobdiff_plain/ae57c338835065f04c3fbbeeab29157fdec4528f..f29dbaf102b8f50cb1c968f36fee14ed09b1080b:/sercom/subcontrollers/misentregas/__init__.py?ds=sidebyside diff --git a/sercom/subcontrollers/misentregas/__init__.py b/sercom/subcontrollers/misentregas/__init__.py index d5ec3e4..3cb127b 100644 --- a/sercom/subcontrollers/misentregas/__init__.py +++ b/sercom/subcontrollers/misentregas/__init__.py @@ -2,7 +2,7 @@ #{{{ Imports import cherrypy -from turbogears import controllers, expose, redirect +from turbogears import controllers, expose, redirect, url from turbogears import validate, flash, error_handler from turbogears import validators as V from turbogears import widgets as W @@ -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 ComandoEjecutado, 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 @@ -120,6 +121,11 @@ class MisEntregasController(controllers.Controller, identity.SecureResource): @paginate('records') def list(self): """List records in model""" + # Un admin no tiene sentido en este area y por las dudas + # lo mando al home. + if 'admin' in identity.current.permissions: + raise redirect(url("/dashboard")) + # Grupos en los que el usuario formo parte m = [i.grupo.id for i in Grupo.selectByAlumno(identity.current.user)] try: @@ -210,6 +216,12 @@ class MisEntregasController(controllers.Controller, identity.SecureResource): 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(