Todavía no andan bien las instancias de entrega.
enunciado = EnunciadoController()
- ejercicio = EjercicioController()
-
tarea_fuente = TareaFuenteController()
tarea_prueba = TareaPruebaController()
from alumno import AlumnoController
from curso import CursoController
from enunciado import EnunciadoController
-from ejercicio import EjercicioController
from docente_inscripto import DocenteInscriptoController
from correccion import CorreccionController
from misentregas import MisEntregasController
from sercom.widgets import *
from alumno import AlumnoInscriptoController
from grupo import GrupoController
+from ejercicio import EjercicioController
#}}}
#{{{ Configuración
curso_alumno = CursoAlumnoController()
alumno = AlumnoInscriptoController()
grupo = GrupoController()
+ ejercicio = EjercicioController()
@expose()
def default(self, tg_errors=None):
name = 'ejercicio'
namepl = name + 's'
-fkcls = Curso
-fkname = 'curso'
+fkcls = Enunciado
+fkname = 'enunciado'
fknamepl = fkname + 's'
-
-fk1cls = Enunciado
-fk1name = 'enunciado'
-fk1namepl = fk1name + 's'
#}}}
#{{{ Validación
data[fkname] = fk
return fk
-def validate_fk1(data):
- fk = data.get(fk1name + 'ID', None)
- if fk == 0: fk = None
- if fk is not None:
- try:
- fk = fk1cls.get(fk)
- except LookupError:
- flash(_(u'No se pudo crear el nuevo %s porque el %s con '
- 'identificador %d no existe.' % (name, fk1name, fk)))
- raise redirect('new', **data)
- data.pop(fk1name + 'ID', None)
- data[fk1name] = fk
- return fk
-
def validate_get(id):
return val.validate_get(cls, name, id)
def validate_set(id, data):
validate_fk(data)
- validate_fk1(data)
return val.validate_set(cls, name, id, data)
def validate_new(data):
validate_fk(data)
- validate_fk1(data)
return val.validate_new(cls, name, data)
def validate_del(id):
#}}}
#{{{ Formulario
-def get_options():
- return [(0, _(u'--'))] + [(fk.id, fk.shortrepr()) for fk in fkcls.select()]
-
-# Un poco de ajax para llenar los cursos
-ajax = """
- function showHint()
- {
- MochiKit.DOM.showElement('hint')
- }
-
- function hideHint()
- {
- MochiKit.DOM.hideElement('hint')
- }
-
- function clearEnunciados ()
- {
- l = MochiKit.DOM.getElement('form_enunciadoID');
- l.options.length = 0;
- l.disabled = true;
- }
-
- function mostrarEnunciados (res)
- {
- clearEnunciados();
- for(i in res.enunciados) {
- id = res.enunciados[i].id;
- label = res.enunciados[i].nombre;
- MochiKit.DOM.appendChildNodes("form_enunciadoID", OPTION({"value":id}, label))
- }
- l.disabled = false;
- hideHint();
- }
-
- function err (err)
- {
- alert("The metadata for MochiKit.Async could not be fetched :(");
- hideHint();
- }
-
- function actualizar_enunciados ()
- {
- l = MochiKit.DOM.getElement('form_cursoID');
- id = l.options[l.selectedIndex].value;
- if (id == 0) {
- clearEnunciados();
- return;
- }
-
- url = "/enunciado/de_curso?curso_id="+id;
- var d = loadJSONDoc(url);
- d.addCallbacks(mostrarEnunciados, err);
- showHint();
- }
-
- function prepare()
- {
- connect('form_cursoID', 'onchange', actualizar_enunciados);
- hideHint();
- clearEnunciados();
- actualizar_enunciados();
- if (select_enunciado) {
- wait(0.1).addCallback(function (res) { return select_enunciado() });
- }
- }
-
- MochiKit.DOM.addLoadEvent(prepare)
-"""
-
class EjercicioForm(W.TableForm):
class Fields(W.WidgetsList):
- fk = W.SingleSelectField(name=fkname+'ID', label=_(fkname.capitalize()),
- options=get_options, validator=V.Int(not_empty=True))
+ cursoID = W.HiddenField(validator=V.Int)
numero = W.TextField(name="numero",label=_(u'Nro'),
help_text=_(u'Requerido.'),
validator=V.Int(not_empty=True))
- fk1 = W.SingleSelectField(name=fk1name+'ID', label=_(fk1name.capitalize()),
+ fk = W.SingleSelectField(name=fkname+'ID', label=_(fkname.capitalize()),
validator=V.Int(not_empty=True))
- grupal = W.CheckBox(name='grupal', label=_(u"Grupal?"))
+ grupal = W.CheckBox(name='grupal', label=_(u"Grupal?"), validator=V.Bool(if_empty=0), default=0)
fields = Fields()
- javascript = [W.JSSource("MochiKit.DOM.focusOnLoad('form_nombre');"), W.JSSource(ajax)]
+ javascript = [W.JSSource("MochiKit.DOM.focusOnLoad('form_numero');")]
form = EjercicioForm()
#}}}
@expose()
def default(self, tg_errors=None):
"""handle non exist urls"""
- raise redirect('list')
+ raise redirect('../list')
@expose()
def index(self):
- raise redirect('list')
+ raise redirect('../list')
@expose(template='kid:%s.templates.list' % __name__)
- @validate(validators=dict(autor=V.Int))
+ @validate(validators=dict(curso=V.Int))
@paginate('records')
- def list(self, autor=None):
+ def list(self, curso):
"""List records in model"""
- r = cls.select()
- return dict(records=r, name=name, namepl=namepl, parcial=autor)
+ r = cls.selectBy(cursoID=curso)
+ return dict(records=r, name=name, namepl=namepl, curso=curso)
@expose(template='kid:%s.templates.new' % __name__)
+ @validate(validators=dict(curso=V.Int))
@identity.require(identity.has_permission('admin'))
- def new(self, **kw):
+ def new(self, curso, **kw):
"""Create new records in model"""
- return dict(name=name, namepl=namepl, form=form, values=kw)
+ kw['cursoID'] = curso
+ curso = Curso.get(curso)
+ options = { fkname+'ID': [(fk.id, fk.shortrepr()) for fk in
+ Enunciado.selectBy(anio=curso.anio,
+ cuatrimestre=curso.cuatrimestre)] }
+ return dict(name=name, namepl=namepl, form=form, values=kw, options=options)
@validate(form=form)
@error_handler(new)
"""Save or create record to model"""
validate_new(kw)
flash(_(u'Se creó un nuevo %s.') % name)
- raise redirect('list')
+ raise redirect('list/%s' % kw['cursoID'])
@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)
- return dict(name=name, namepl=namepl, record=r, form=form)
+ curso = Curso.get(r.cursoID)
+ options = { fkname+'ID': [(fk.id, fk.shortrepr()) for fk in
+ Enunciado.selectBy(anio=curso.anio,
+ cuatrimestre=curso.cuatrimestre)] }
+ return dict(name=name, namepl=namepl, record=r, form=form, options=options)
@validate(form=form)
@error_handler(edit)
"""Save or create record to model"""
r = validate_set(id, kw)
flash(_(u'El %s fue actualizado.') % name)
- raise redirect('../list')
+ raise redirect('../list/%s' % r.cursoID)
@expose(template='kid:%s.templates.show' % __name__)
def show(self,id, **kw):
#}}}
#{{{ Formulario
-def get_options():
- return [(0, _(u'--'))] + [(fk.id, fk.shortrepr()) for fk in fkcls.select()]
-
class EntregaForm(W.TableForm):
class Fields(W.WidgetsList):
numero = W.TextField(name="numero",label=_(u'Nro'), help_text=_(u'Requerido.'),
observaciones = W.TextArea(rows="5", cols="40")
ejercicio_id= W.HiddenField()
fields = Fields()
- javascript = [W.JSSource("MochiKit.DOM.focusOnLoad('form_nombre');")]
+ javascript = [W.JSSource("MochiKit.DOM.focusOnLoad('form_numero');")]
form = EntregaForm()
#}}}
@expose(template='kid:%s.templates.list' % __name__)
@validate(validators=dict(ejercicio_id=V.Int))
@paginate('records')
- def default(self, ejercicio_id):
- e = Ejercicio.get(ejercicio_id)
- r = e.instancias
- return dict(records=r, name=name, namepl=namepl, parcial=str(ejercicio_id))
+ def list(self, ejercicio_id):
+ r = cls.selectBy(ejercicioID=ejercicio_id)
+ return dict(records=r, name=name, namepl=namepl, ejercicio=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[5].attrs['value'] = ejercicio_id
- return dict(name=name, namepl=namepl, form=form, values=kw, partial=str(ejercicio_id))
+ kw['ejercicioID'] = ejercicio_id
+ return dict(name=name, namepl=namepl, form=form, values=kw)
@validate(form=form)
@error_handler(new)
@expose()
@identity.require(identity.has_permission('admin'))
- def create(self, ejercicio_id, **kw):
+ def create(self, **kw):
"""Save or create record to model"""
- e = Ejercicio.get(ejercicio_id)
+ e = Ejercicio.get(kw['ejercicioID'])
e.add_instancia(**kw)
flash(_(u'Se creó un nuevo %s.') % name)
- raise redirect('/ejercicio/entrega/'+str(e.id))
+ raise redirect('list/%s' % e.id)
@expose()
@identity.require(identity.has_permission('admin'))
def delete(self, id):
"""Destroy record in model"""
r = validate_get(id)
+ ejercicio_id = r.ejercicioID
r.destroySelf()
flash(_(u'El %s fue eliminado permanentemente.') % name)
- raise redirect('../list')
+ raise redirect('../list/%s' % ejercicio_id)
#}}}
<!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'">
+ 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:replace="tg.strbool(record.activo)">activa</span></td>
<td><span py:replace="record.observaciones">obs</span></td>
<td>
- <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>
+ <a py:if="'admin' in identity.current.permissions" href="${tg.url('/curso/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 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>
+<a py:if="'admin' in identity.current.permissions" href="${tg.url('/curso/ejercicio/entrega/new/%s' % ejercicio)}">Agregar</a>
+<a href="${tg.url('/curso/ejercicio/list')}">Volver a Ejericicios</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>
</head>
-<script type="text/javascript">
- function select_enunciado() {}
-</script>
<body>
<h1>Crear Nuevo <span py:replace="name">Objeto</span></h1>
-<div id="hint">
- Buscando registros ...
-</div>
-
-<p py:replace="form(action=tg.url('/ejercicio/create'), value=values, submit_text=_('Crear'))">Formulario</p>
+<p py:replace="form(action=tg.url('/curso/ejercicio/entrega/create'), value=values, submit_text=_('Crear'))">Formulario</p>
<br/>
-<a href="${tg.url('/ejercicio/list')}">Cancelar</a>
+<a href="${tg.url('/curso/ejercicio/entrega/%s' % values.ejercicioID)}">Cancelar</a>
</body>
</html>
--- /dev/null
+<!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'">
+<head>
+<meta content="text/html; charset=utf-8" http-equiv="Content-Type" py:replace="''"/>
+<title>edit</title>
+</head>
+<body>
+
+<h1>Modificación de <span py:replace="name">Objeto</span></h1>
+
+<div py:replace="form(value=record, action=tg.url('/curso/ejercicio/update/%d' % record.id),
+ options=options, submit_text=_(u'Guardar'))">Formulario</div>
+
+<br/>
+<a href="${tg.url('/curso/ejercicio/show/%s' % record.id)}">Ver (cancela)</a> |
+<a href="${tg.url('/curso/ejercicio/list/%s' % record.cursoID)}">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">
<?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'">
+ py:extends="'../../../../templates/master.kid'">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" py:replace="''"/>
<title>list</title>
<table class="list">
<tr>
- <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 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
- py:replace="record.enunciado.shortrepr()">enunciado</span></a></td>
- <td align="center">
- <span py:replace="tg.strbool(record.grupal)">grupal</span>
- </td>
+ <td><a href="${tg.url('/enunciado/show/%d' % record.enunciado.id)}"><span py:replace="record.enunciado.shortrepr()">enunciado</span></a></td>
+ <td><span py:replace="tg.strbool(record.grupal)">grupal</span></td>
<td>
- <a href="${tg.url('/ejercicio/entrega/%d' % record.id)}">Entregas</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>
+ <a href="${tg.url('/curso/ejercicio/show/%d' % record.id)}">Ver</a>
+ <a href="${tg.url('/curso/ejercicio/entrega/%d' % record.id)}">Entregas</a>
+ <a py:if="'admin' in identity.current.permissions" href="${tg.url('/curso/ejercicio/edit/%d' % record.id)}">Editar</a>
+ <a py:if="'admin' in identity.current.permissions" href="${tg.url('/curso/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 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>
+<a py:if="'admin' in identity.current.permissions" href="${tg.url('/curso/ejercicio/new/%s' % curso)}">Agregar</a>
<div py:for="page in tg.paginate.pages">
<a py:if="page != tg.paginate.current_page"
<h1>Crear Nuevo <span py:replace="name">Objeto</span></h1>
-<p py:replace="form(action=tg.url('/ejercicio/entrega/create'), value=values, submit_text=_('Crear'))">Formulario</p>
+<p py:replace="form(action=tg.url('/curso/ejercicio/create'), options=options, value=values, submit_text=_('Crear'))">Formulario</p>
<br/>
-<a href="${tg.url('/ejercicio/entrega/'+partial)}">Cancelar</a>
+<a href="${tg.url('/curso/ejercicio/list/%s' % values['cursoID'])}">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>
<body>
<table>
- <tr>
- <th>Curso:</th>
- <td>
- <a href="${tg.url('/curso/show/%d' % record.curso.id)}">
- <span py:replace="record.curso.shortrepr()">nombre</span>
- </a>
- </td>
- </tr>
<tr>
<th>Número:</th>
<td><span py:replace="record.numero">descripcion</span></td>
<tr>
<th>Es grupal?:</th>
<td>
- <span py:replace="record.grupal">grupal</span>
+ <span py:replace="tg.strbool(record.grupal)">grupal</span>
</td>
</tr>
</table>
<br/>
-<a href="${tg.url('/ejercicio/edit/%d' % record.id)}">Editar</a> |
-<a href="${tg.url('/ejercicio/list')}">Volver</a>
+<a href="${tg.url('/curso/ejercicio/edit/%s' % record.id)}">Editar</a> |
+<a href="${tg.url('/curso/ejercicio/list/%s' % record.cursoID)}">Volver</a>
</body>
</html>
class GrupoForm(W.TableForm):
class Fields(W.WidgetsList):
- cursoID = W.HiddenField()
+ cursoID = W.HiddenField(validator=V.Int)
nombre = W.TextField(label=_(u'Nombre'), validator=V.UnicodeString(not_empty=True,strip=True))
responsable = CustomTextField(label=_(u'Responsable'), validator=V.UnicodeString(), attrs=dict(size='8'))
miembros = AjaxMultiSelect(label=_(u'Miembros'), validator=V.Int(), on_add="alumnos_agregar_a_la_lista")
- tutores = W.MultipleSelectField(label=_(u'Tutores'), validator=V.Int())
+ tutores = W.MultipleSelectField(label=_(u'Tutores'), validator=V.Int)
fields = Fields()
javascript = [W.JSSource("MochiKit.DOM.focusOnLoad('form_nombre');"), W.JSSource(ajax)]
raise redirect(tg.url('/curso/list'))
@expose(template='kid:%s.templates.list' % __name__)
+ @validate(validators=dict(curso=V.Int))
@paginate('records')
- def list(self, cursoID):
+ def list(self, curso):
"""List records in model"""
- r = cls.select(cls.q.cursoID == cursoID)
- return dict(records=r, name=name, namepl=namepl, cursoID=int(cursoID))
+ r = cls.selectBy(cursoID=curso)
+ return dict(records=r, name=name, namepl=namepl, cursoID=curso)
@expose(template='kid:%s.templates.new' % __name__)
- def new(self, cursoID, **kw):
+ @validate(validators=dict(curso=V.Int))
+ def new(self, curso, **kw):
"""Create new records in model"""
- form.fields[0].attrs['value'] = cursoID
- options = dict(tutores=get_docentes_inscriptos(cursoID))
- return dict(name=name, namepl=namepl, cursoID=int(cursoID), form=form, options=options, values=kw)
+ kw['cursoID'] = curso # FIXME esto está roto porque los widgets son stateless
+ options = dict(tutores=get_docentes_inscriptos(curso))
+ return dict(name=name, namepl=namepl, form=form, options=options, values=kw)
@validate(form=form)
@error_handler(new)
<p py:replace="form(action=tg.url('/curso/grupo/create'), options=options, value=values, submit_text=_('Crear'))">Formulario</p>
<br/>
-<a href="${tg.url('/curso/grupo/list/%d' % cursoID)}">Cancelar</a>
+<a href="${tg.url('/curso/grupo/list/%d' % values['cursoID'])}">Cancelar</a>
</body>
</html>
<th>Docentes</th>
<th>Alumnos</th>
<th>Grupos</th>
- <th>Ejercicios</th>
- <th>Operaciones</th>
+ <th>Ejercicios</th>
+ <th>Operaciones</th>
</tr>
<tr py:for="record in records">
<!--td><input type="checkbox" onclick="var f =
<td><span py:replace="record.cuatrimestre">cuatrimestre</span></td>
<td><span py:replace="record.anio">anio</span></td>
<td><span py:replace="record.descripcion">descripcion</span></td>
- <td><a py:if="len(record.docentes)" href="${tg.url('/docente/list')}"><span py:replace="len(record.docentes)">Docentes</span></a></td>
- <td><a py:if="len(record.alumnos)" href="${tg.url('/curso/alumno/list/%d' % record.id)}"><span py:replace="len(record.alumnos)">Alumnos</span></a></td>
+ <td><a href="${tg.url('/docente/list')}"><span py:replace="len(record.docentes)">Docentes</span></a></td>
+ <td><a href="${tg.url('/curso/alumno/list/%d' % record.id)}"><span py:replace="len(record.alumnos)">Alumnos</span></a></td>
<td align="center"><a href="${tg.url('/curso/grupo/list/%d' % record.id)}"><span py:replace="len(record.grupos)">Grupos</span></a></td>
- <td><a py:if="len(record.ejercicios)" href="${tg.url('/ejercicio/list')}"><span py:replace="len(record.ejercicios)">Ejercicio</span></a></td>
+ <td><a href="${tg.url('/curso/ejercicio/list/%s' % record.id)}"><span py:replace="len(record.ejercicios)">Ejercicio</span></a></td>
<td><a href="${tg.url('/curso/show/%d' % record.id)}">Ver</a>
<a href="${tg.url('/curso/edit/%d' % record.id)}">Editar</a>
<a href="${tg.url('/curso/notas/%d' % record.id)}">Notas</a>
+++ /dev/null
-<!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'">
-<head>
-<meta content="text/html; charset=utf-8" http-equiv="Content-Type" py:replace="''"/>
-<title>edit</title>
-</head>
-<script type="text/javascript">
- function select_enunciado() {
- lista = MochiKit.DOM.getElement('enunciadoID');
- for(i=0; i < l.options.length; i++) {
- if (l.options[i].value == ${record.enunciado.id}) {
- l.options[i].selected = true;
- l.selectedIndex = i;
- break;
- }
- }
- }
-</script>
-<body>
-
-<h1>Modificación de <span py:replace="name">Objeto</span></h1>
-
-<div id="hint">
- Buscando registros ...
-</div>
-
-<div py:replace="form(value=record, action=tg.url('/ejercicio/update/%d' % record.id),
- submit_text=_(u'Guardar'))">Formulario</div>
-
-<br/>
-<a href="${tg.url('/ejercicio/show/%d' % record.id)}">Ver (cancela)</a> |
-<a href="${tg.url('/ejercicio/list')}">Volver (cancela)</a>
-</body>
-</html>