tarea_prueba = TareaPruebaController()
- caso_de_prueba = CasoDePruebaController()
-
curso = CursoController()
docente_inscripto = DocenteInscriptoController()
from alumno import AlumnoController
from curso import CursoController
from enunciado import EnunciadoController
-from caso_de_prueba import CasoDePruebaController
from ejercicio import EjercicioController
from docente_inscripto import DocenteInscriptoController
from grupo import GrupoController
from sercom.model import Enunciado, Docente, Curso, Tarea, TareaFuente, TareaPrueba
from cherrypy import request, response
from sercom.widgets import *
+from caso_de_prueba import CasoDePruebaController
#}}}
#{{{ Configuración
"""Basic model admin interface"""
require = identity.has_permission('entregar')
+ caso_de_prueba = CasoDePruebaController()
+
@expose()
def default(self, tg_errors=None):
"""handle non exist urls"""
flash(_(u'No se pudo crear el nuevo %s porque el %s con '
'identificador %d no existe.' % (name, fkname, fk)))
raise redirect('new', **data)
+ else:
+ flash(_(u'No se pudo crear el nuevo %s porque el %s con '
+ 'identificador %d no existe.' % (name, fkname, fk)))
+ raise redirect('new', **data)
data.pop(fkname + 'ID', None)
data[fkname] = fk
return fk
#}}}
#{{{ Formulario
-def get_options():
- return [(0, _(u'<<General>>'))] + [(fk.id, fk.shortrepr())
- for fk in fkcls.select()]
-
class CasoDePruebaForm(W.TableForm):
class Fields(W.WidgetsList):
+ enunciadoID = W.HiddenField()
nombre = W.TextField(label=_(u'Nombre'),
help_text=_(u'Requerido y único.'),
validator=V.UnicodeString(min=5, max=60, strip=True))
- fk = W.SingleSelectField(name=fkname+'ID', label=_(fkname.capitalize()),
- options=get_options, validator=V.Int(not_empty=False))
descripcion = W.TextField(label=_(u'Descripción'),
validator=V.UnicodeString(not_empty=False, max=255,
strip=True))
"""Basic model admin interface"""
require = identity.has_permission('admin')
- @expose()
- def default(self, tg_errors=None):
- """handle non exist urls"""
- raise redirect('list')
-
- @expose()
- def index(self):
- raise redirect('list')
-
@expose(template='kid:%s.templates.list' % __name__)
@validate(validators=dict(enunciado=V.Int))
@paginate('records')
- def list(self, enunciado=None):
+ def list(self, enunciado):
"""List records in model"""
- if enunciado is None:
- r = cls.select()
- else:
- r = cls.selectBy(enunciadoID=enunciado)
- return dict(records=r, name=name, namepl=namepl, parcial=enunciado)
+ r = cls.selectBy(enunciadoID=enunciado)
+ return dict(records=r, name=name, namepl=namepl, enunciado=enunciado)
@expose(template='kid:%s.templates.new' % __name__)
- def new(self, **kw):
+ def new(self, enunciado=0, **kw):
"""Create new records in model"""
- return dict(name=name, namepl=namepl, form=form, values=kw)
+ form.fields[0].attrs['value'] = enunciado or kw['enunciadoID']
+ return dict(name=name, namepl=namepl, form=form, values=kw, enunciado=int(enunciado))
@validate(form=form)
@error_handler(new)
@expose()
def create(self, **kw):
"""Save or create record to model"""
- validate_new(kw)
+ r = validate_new(kw)
flash(_(u'Se creó un nuevo %s.') % name)
- raise redirect('list')
+ raise redirect('list/%d' % r.enunciado.id)
@expose(template='kid:%s.templates.edit' % __name__)
def edit(self, id, **kw):
"""Edit record in model"""
r = validate_get(id)
+ form.fields[0].attrs['value'] = r.enunciado.id
return dict(name=name, namepl=namepl, record=r, form=form)
@validate(form=form)
"""Save or create record to model"""
r = validate_set(id, kw)
flash(_(u'El %s fue actualizado.') % name)
- raise redirect('../list')
+ raise redirect('../list/%d' % r.enunciado.id)
@expose(template='kid:%s.templates.show' % __name__)
def show(self, id, **kw):
return dict(name=name, namepl=namepl, record=r)
@expose()
- def delete(self, id):
+ def delete(self, enunciado, id):
"""Destroy record in model"""
validate_del(id)
flash(_(u'El %s fue eliminado permanentemente.') % name)
- raise redirect('../list')
+ raise redirect('../../list/%d' % int(enunciado))
#}}}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#"
- py:extends="'../../../templates/master.kid'">
+ py:extends="'../../../../templates/master.kid'">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" py:replace="''"/>
<title>edit</title>
<h1>Modificación de <span py:replace="name">Objeto</span></h1>
-<div py:replace="form(value=record, action=tg.url('/caso_de_prueba/update/%d' % record.id),
+<div py:replace="form(value=record, action=tg.url('/enunciado/caso_de_prueba/update/%d' % record.id),
submit_text=_(u'Guardar'))">Formulario</div>
<br/>
-<a href="${tg.url('/caso_de_prueba/show/%d' % record.id)}">Ver (cancela)</a> |
-<a href="${tg.url('/caso_de_prueba/list')}">Volver (cancela)</a>
+<a href="${tg.url('/enunciado/caso_de_prueba/show/%d' % record.id)}">Ver (cancela)</a> |
+<a href="${tg.url('/enunciado/caso_de_prueba/list/%d' % record.enunciado.id)}">Volver (cancela)</a>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#"
- py:extends="'../../../templates/master.kid'">
+ py:extends="'../../../../templates/master.kid'">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" py:replace="''"/>
<title>list</title>
<td><span py:if="record.comando" py:replace="tg.summarize(record.comando, 30)">comando --con-parámetros</span></td>
<td><span py:replace="record.retorno">retorno</span></td>
<td><span py:replace="record.max_tiempo_cpu">máx tiempo de cpu</span></td>
- <td><a href="${tg.url('/caso_de_prueba/edit/%d' % record.id)}">Editar</a>
- <a href="${tg.url('/caso_de_prueba/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>
+ <td><a href="${tg.url('/enunciado/caso_de_prueba/edit/%d' % record.id)}">Editar</a>
+ <a href="${tg.url('/enunciado/caso_de_prueba/delete/%d/%d' % (record.enunciado.id, 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('/caso_de_prueba/new')}">Agregar</a>
-<a py:if="parcial" href="${tg.url('/caso_de_prueba/list')}">Ver todo</a>
+<a href="${tg.url('/enunciado/caso_de_prueba/new/%d' % enunciado)}">Agregar</a>
+<a href="${tg.url('/enunciado/list')}">Volver</a>
<div py:for="page in tg.paginate.pages">
<a py:if="page != tg.paginate.current_page"
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#"
- py:extends="'../../../templates/master.kid'">
+ py:extends="'../../../../templates/master.kid'">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" py:replace="''"/>
<title>new</title>
<h1>Crear Nuevo <span py:replace="name">Objeto</span></h1>
-<p py:replace="form(action=tg.url('/caso_de_prueba/create'), value=values, submit_text=_('Crear'))">Formulario</p>
+<p py:replace="form(action=tg.url('/enunciado/caso_de_prueba/create'), value=values, submit_text=_('Crear'))">Formulario</p>
<br/>
-<a href="${tg.url('/caso_de_prueba/list')}">Cancelar</a>
+<a href="${tg.url('/enunciado/caso_de_prueba/list/%d' % enunciado)}">Cancelar</a>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#"
- py:extends="'../../../templates/master.kid'">
+ py:extends="'../../../../templates/master.kid'">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" py:replace="''"/>
<title>show</title>
</table>
<br/>
-<a href="${tg.url('/caso_de_prueba/edit/%d' % record.id)}">Editar</a> |
-<a href="${tg.url('/caso_de_prueba/list')}">Volver</a>
+<a href="${tg.url('/enunciado/caso_de_prueba/edit/%d' % record.id)}">Editar</a> |
+<a href="${tg.url('/enunciado/caso_de_prueba/list/%d' % record.enunciado.id)}">Volver</a>
</body>
</html>
<td py:if="'admin' in identity.current.permissions"><a py:if="len(record.tareas)"
href="${tg.url('/enunciado/show/%d' % record.id)}"><span
py:replace="len(record.tareas)">cant</span></a></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 py:if="'admin' in identity.current.permissions"><span py:content="len(record.casos_de_prueba)" /></td>
<td>
+ <a py:if="'admin' in identity.current.permissions" href="${tg.url('/enunciado/caso_de_prueba/list/%d' % record.id)}">Casos de Prueba</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>