]> git.llucax.com Git - z.facultad/75.52/sercom.git/commitdiff
Modifico permisos en Enunciado y Ejercicio para que un Entregador pueda consultarlos.
authorRicardo Markiewicz <rmarkie@fi.uba.ar>
Sun, 11 Mar 2007 20:51:23 +0000 (20:51 +0000)
committerRicardo Markiewicz <rmarkie@fi.uba.ar>
Sun, 11 Mar 2007 20:51:23 +0000 (20:51 +0000)
Los permisos ahora por default son para entregar y todos los metodos administrativos fueron
cerrados para admin. El Entregador solo puede listar y show y de esta forma puede bajar los
enunciados, ver las fechas de entrega, etc. Se ocultan columnas de las tablas que no son necesarias
y se sacan links cuando el usuario no es ADMIN.

sercom/subcontrollers/ejercicio/__init__.py
sercom/subcontrollers/ejercicio/entrega/__init__.py
sercom/subcontrollers/ejercicio/entrega/templates/list.kid
sercom/subcontrollers/ejercicio/templates/list.kid
sercom/subcontrollers/enunciado/__init__.py
sercom/subcontrollers/enunciado/templates/list.kid

index cacbad59d6349574b87b747b657fa264f5ecad08..58a36b214671ffaee610bbb8bdac9f4d4947e538 100644 (file)
@@ -165,7 +165,7 @@ form = EjercicioForm()
 #{{{ Controlador
 class EjercicioController(controllers.Controller, identity.SecureResource):
     """Basic model admin interface"""
-    require = identity.has_permission('admin')
+    require = identity.has_permission('entregar')
 
     entrega = EntregaController()
 
@@ -187,12 +187,14 @@ class EjercicioController(controllers.Controller, identity.SecureResource):
         return dict(records=r, name=name, namepl=namepl, parcial=autor)
 
     @expose(template='kid:%s.templates.new' % __name__)
+    @identity.require(identity.has_permission('admin'))
     def new(self, **kw):
         """Create new records in model"""
         return dict(name=name, namepl=namepl, form=form, values=kw)
 
     @validate(form=form)
     @error_handler(new)
+    @identity.require(identity.has_permission('admin'))
     @expose()
     def create(self, **kw):
         """Save or create record to model"""
@@ -201,6 +203,7 @@ class EjercicioController(controllers.Controller, identity.SecureResource):
         raise redirect('list')
 
     @expose(template='kid:%s.templates.edit' % __name__)
+    @identity.require(identity.has_permission('admin'))
     def edit(self, id, **kw):
         """Edit record in model"""
         r = validate_get(id)
@@ -209,6 +212,7 @@ class EjercicioController(controllers.Controller, identity.SecureResource):
     @validate(form=form)
     @error_handler(edit)
     @expose()
+    @identity.require(identity.has_permission('admin'))
     def update(self, id, **kw):
         """Save or create record to model"""
         r = validate_set(id, kw)
@@ -222,6 +226,7 @@ class EjercicioController(controllers.Controller, identity.SecureResource):
         return dict(name=name, namepl=namepl, record=r)
 
     @expose()
+    @identity.require(identity.has_permission('admin'))
     def delete(self, id):
         """Destroy record in model"""
         validate_del(id)
index 18e77b49732b81c349184644ed08f2836bff07e3..069f372e376eda6324277ec814ebbd5b5b77be2e 100644 (file)
@@ -74,7 +74,7 @@ form = EntregaForm()
 #{{{ Controlador
 class EntregaController(controllers.Controller, identity.SecureResource):
     """Basic model admin interface"""
-    require = identity.has_permission('admin')
+    require = identity.has_permission('entregar')
 
     @expose(template='kid:%s.templates.list' % __name__)
     @validate(validators=dict(ejercicio_id=V.Int))
@@ -85,6 +85,7 @@ class EntregaController(controllers.Controller, identity.SecureResource):
         return dict(records=r, name=name, namepl=namepl, parcial=str(ejercicio_id))
 
     @expose(template='kid:%s.templates.new' % __name__)
+    @identity.require(identity.has_permission('admin'))
     def new(self, ejercicio_id, **kw):
         """Create new records in model"""
         form.fields[6].attrs['value'] = ejercicio_id
@@ -93,6 +94,7 @@ class EntregaController(controllers.Controller, identity.SecureResource):
     @validate(form=form)
     @error_handler(new)
     @expose()
+    @identity.require(identity.has_permission('admin'))
     def create(self, ejercicio_id, **kw):
         """Save or create record to model"""
         e = Ejercicio.get(ejercicio_id)
@@ -101,6 +103,7 @@ class EntregaController(controllers.Controller, identity.SecureResource):
         raise redirect('/ejercicio/entrega/'+str(e.id))
 
     @expose()
+    @identity.require(identity.has_permission('admin'))
     def delete(self, id):
         """Destroy record in model"""
         r = validate_get(id)
index f4bb28eb49054ac05deffa6c7f8254e90a8c3002..68ecb781aa8166c08c38d6282a5d43ed06f451d0 100644 (file)
@@ -1,4 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<?python from turbogears import identity ?>
 <html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#"
     py:extends="'../../../../templates/master.kid'">
 <head>
         <td><span py:replace="record.activo">activa</span></td>
         <td><span py:replace="record.observaciones">obs</span></td>
         <td>
-            <a href="${tg.url('/ejercicio/entrega/delete/%d' % record.id)}" onclick="if (confirm('${_(u'Estás seguro? Yo creo que no...')}')) { var f = document.createElement('form'); this.parentNode.appendChild(f); f.method = 'POST'; f.action = this.href; f.submit(); };return false;">Eliminar</a>
+            <a py:if="'admin' in identity.current.permissions" href="${tg.url('/ejercicio/entrega/delete/%d' % record.id)}" onclick="if (confirm('${_(u'Estás seguro? Yo creo que no...')}')) { var f = document.createElement('form'); this.parentNode.appendChild(f); f.method = 'POST'; f.action = this.href; f.submit(); };return false;">Eliminar</a>
         </td>
     </tr>
 </table>
 
 <br/>
-<a href="${tg.url('/ejercicio/entrega/new/'+parcial)}">Agregar</a>
+<a py:if="'admin' in identity.current.permissions" href="${tg.url('/ejercicio/entrega/new/'+parcial)}">Agregar</a>
 <a href="${tg.url('/ejercicio/list')}">Volver a Ejericicios</a>
 
 <div py:for="page in tg.paginate.pages">
index 25ee50dea9c56ce9e97a11f643e7861c1599c45c..6c2931dfdf924269aa10006450698158eb870099 100644 (file)
@@ -1,4 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<?python from turbogears import identity ?>
 <html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#"
     py:extends="'../../../templates/master.kid'">
 <head>
 
 <table class="list">
     <tr>
-        <th>Curso</th>
+        <th py:if="'admin' in identity.current.permissions">Curso</th>
         <th>Numero</th>
         <th>Enunciado</th>
         <th>Es Grupal?</th>
         <th>Operaciones</th>
     </tr>
     <tr py:for="record in records">
-        <td><a href="${tg.url('/curso/show/%d' % record.id)}"><span py:replace="record.curso.shortrepr()">curso</span></a></td>
+        <td py:if="'admin' in identity.current.permissions"><a href="${tg.url('/curso/show/%d' % record.id)}"><span py:replace="record.curso.shortrepr()">curso</span></a></td>
         <td><span py:replace="record.numero">numero</span></td>
         <td><a py:if="record.enunciadoID is not None"
                 href="${tg.url('/enunciado/show/%d' % record.enunciado.id)}"><span
         </td>
         <td>
             <a href="${tg.url('/ejercicio/entrega/%d' % record.id)}">Entregas</a>
-            <a href="${tg.url('/ejercicio/edit/%d' % record.id)}">Editar</a>
-            <a href="${tg.url('/ejercicio/delete/%d' % record.id)}" onclick="if (confirm('${_(u'Estás seguro? Yo creo que no...')}')) { var f = document.createElement('form'); this.parentNode.appendChild(f); f.method = 'POST'; f.action = this.href; f.submit(); };return false;">Eliminar</a>
+            <a py:if="'admin' in identity.current.permissions" href="${tg.url('/ejercicio/edit/%d' % record.id)}">Editar</a>
+            <a py:if="'admin' in identity.current.permissions" href="${tg.url('/ejercicio/delete/%d' % record.id)}" onclick="if (confirm('${_(u'Estás seguro? Yo creo que no...')}')) { var f = document.createElement('form'); this.parentNode.appendChild(f); f.method = 'POST'; f.action = this.href; f.submit(); };return false;">Eliminar</a>
         </td>
     </tr>
 </table>
 
 <br/>
-<a href="${tg.url('/ejercicio/new')}">Agregar</a>
+<a py:if="'admin' in identity.current.permissions" href="${tg.url('/ejercicio/new')}">Agregar</a>
 <a py:if="parcial" href="${tg.url('/ejercicio/list')}">Ver todo</a>
 
 <div py:for="page in tg.paginate.pages">
index 8f22b9420619ae9337c60f55c240f1ff208e2054..d265192c3ffb7908f4e627fea48cb1e7c2a5e857 100644 (file)
@@ -79,7 +79,7 @@ form = EnunciadoForm()
 #{{{ Controlador
 class EnunciadoController(controllers.Controller, identity.SecureResource):
     """Basic model admin interface"""
-    require = identity.has_permission('admin')
+    require = identity.has_permission('entregar')
 
     @expose()
     def default(self, tg_errors=None):
@@ -102,6 +102,7 @@ class EnunciadoController(controllers.Controller, identity.SecureResource):
         return dict(records=r, name=name, namepl=namepl, parcial=autor)
 
     @expose(template='kid:%s.templates.new' % __name__)
+    @identity.require(identity.has_permission('admin'))
     def new(self, **kw):
         """Create new records in model"""
         return dict(name=name, namepl=namepl, form=form, values=kw)
@@ -109,6 +110,7 @@ class EnunciadoController(controllers.Controller, identity.SecureResource):
     @validate(form=form)
     @error_handler(new)
     @expose()
+    @identity.require(identity.has_permission('admin'))
     def create(self, archivo, **kw):
         """Save or create record to model"""
         kw['archivo'] = archivo.file.read()
@@ -119,6 +121,7 @@ class EnunciadoController(controllers.Controller, identity.SecureResource):
         raise redirect('list')
 
     @expose(template='kid:%s.templates.edit' % __name__)
+    @identity.require(identity.has_permission('admin'))
     def edit(self, id, **kw):
         """Edit record in model"""
         r = validate_get(id)
@@ -127,6 +130,7 @@ class EnunciadoController(controllers.Controller, identity.SecureResource):
     @validate(form=form)
     @error_handler(edit)
     @expose()
+    @identity.require(identity.has_permission('admin'))
     def update(self, id, **kw):
         """Save or create record to model"""
         r = validate_set(id, kw)
@@ -144,6 +148,7 @@ class EnunciadoController(controllers.Controller, identity.SecureResource):
         return dict(name=name, namepl=namepl, record=r)
 
     @expose()
+    @identity.require(identity.has_permission('admin'))
     def delete(self, id):
         """Destroy record in model"""
         r = validate_get(id)
@@ -160,6 +165,7 @@ class EnunciadoController(controllers.Controller, identity.SecureResource):
         return r.archivo
 
     @expose("json")
+    @identity.require(identity.has_permission('admin'))
     def de_curso(self, curso_id):
         c = Curso.get(curso_id)
         e = Enunciado.selectByCurso(c)
index 12991f7e93d700457f0aef492a654a58f2b86425..a6fde05e30bacdbf1d4f9a48776b26d2be82ba9c 100644 (file)
@@ -1,4 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<?python from turbogears import identity ?>
 <html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#"
     py:extends="'../../../templates/master.kid'">
 <head>
@@ -16,7 +17,7 @@
         <th>Nombre</th>
         <th>Descripción</th>
         <th>Autor</th>
-        <th title="Casos de Prueba">CP</th>
+        <th py:if="'admin' in identity.current.permissions" title="Casos de Prueba">CP</th>
         <th>Operaciones</th>
     </tr>
                <tr py:for="record in records">
         <td><span py:replace="record.anio">descripción</span></td>
         <td><a href="${tg.url('/enunciado/show/%d' % record.id)}"><span py:replace="record.nombre">nombre</span></a></td>
         <td><span py:replace="tg.summarize(record.descripcion, 30)">descripción</span></td>
-        <td><a py:if="record.autorID is not None"
-                href="${tg.url('/docente/show/%d' % record.autor.id)}"><span
-                    py:replace="tg.summarize(record.autor.shortrepr(), 30)">autor</span></a></td>
-        <td><a py:if="len(record.casos_de_prueba)"
+                               <td>
+                                       <a py:if="'admin' in identity.current.permissions and record.autorID is not None"
+                                               href="${tg.url('/docente/show/%d' % record.autor.id)}" py:content="tg.summarize(record.autor.shortrepr(), 30)">autor</a>
+                                       <span py:if="'admin' not in identity.current.permissions and record.autorID is not None"
+                                               py:replace="tg.summarize(record.autor.shortrepr(), 30)">autor</span>
+                               </td>
+        <td py:if="'admin' in identity.current.permissions"><a py:if="len(record.casos_de_prueba)"
                 href="${tg.url('/caso_de_prueba/list', enunciado=record.id)}"><span
                     py:replace="len(record.casos_de_prueba)">cant</span></a></td>
         <td>
-            <a href="${tg.url('/enunciado/edit/%d' % record.id)}">Editar</a>
-            <a href="${tg.url('/enunciado/delete/%d' % record.id)}" onclick="if (confirm('${_(u'Estás seguro? Yo creo que no...')}')) { var f = document.createElement('form'); this.parentNode.appendChild(f); f.method = 'POST'; f.action = this.href; f.submit(); };return false;">Eliminar</a>
+            <a py:if="'admin' in identity.current.permissions" href="${tg.url('/enunciado/edit/%d' % record.id)}">Editar</a>
+            <a py:if="'admin' in identity.current.permissions" href="${tg.url('/enunciado/delete/%d' % record.id)}" onclick="if (confirm('${_(u'Estás seguro? Yo creo que no...')}')) { var f = document.createElement('form'); this.parentNode.appendChild(f); f.method = 'POST'; f.action = this.href; f.submit(); };return false;">Eliminar</a>
             <a py:if="record.archivo" href="${tg.url('/enunciado/files/%d' % record.id)}">Bajar Enunciado</a>
         </td>
     </tr>
 </table>
 
 <br/>
-<a href="${tg.url('/enunciado/new')}">Agregar</a>
-<a py:if="parcial" href="${tg.url('/enunciado/list')}">Ver todo</a>
+<a py:if="'admin' in identity.current.permissions" href="${tg.url('/enunciado/new')}">Agregar</a>
 
 <div py:for="page in tg.paginate.pages">
     <a py:if="page != tg.paginate.current_page"