def show(self, id, **kw):
"""Show record in model"""
r = validate_get(id)
- if r.descripcion is None:
- r.desc = ''
- else:
- r.desc = publish_parts(r.descripcion, writer_name='html')['html_body']
return dict(name=name, namepl=namepl, record=r)
@expose()
validate_del(id)
flash(_(u'El %s fue eliminado permanentemente.') % name)
raise redirect('../../list/%d' % int(enunciado))
+
+ @expose()
+ def file(self, id, name):
+ from cherrypy import request, response
+ r = validate_get(id)
+ response.headers["Content-Type"] = "application/zip"
+ response.headers["Content-disposition"] = "attachment;filename=%s_%d.zip" % (name, r.id)
+ if name == "archivos_entrada":
+ ret = r.archivos_entrada
+ elif name == "archivos_a_comparar":
+ ret = r.archivos_a_comparar
+ else:
+ raise NotFound
+ return ret
#}}}
<td><span py:replace="record.retorno">retorno</span></td>
<td><span py:replace="tg.strbool(record.publico)">No</span></td>
<td>
- <a href="${tg.url('/caso_de_prueba/show/%d'% record.id)}">Ver</a>
+ <a href="${tg.url('/enunciado/caso_de_prueba/show/%d'% record.id)}">Ver</a>
<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>
href="${tg.url('/enunciado/show/%d' % record.enunciado.id)}"><span
py:replace="record.enunciado.shortrepr()">enunciado</span></a></td>
</tr>
- <tr>
- <th>Descripción:</th>
- <td><span py:replace="XML(record.desc)">descripcion</span></td>
- </tr>
<tr>
<th>Parámetros:</th>
<td>
</tr>
<tr>
<th>Código de retorno:</th>
- <td><span py:replace="record.retorno">retorno</span></td>
+ <td><span py:replace="record.retorno">retorno</span></td>
+ </tr>
+ <tr>
+ <th>Máximo tiempo de CPU [s]:</th>
+ <td><span py:replace="record.max_tiempo_cpu">max_tiempo_cpu</span></td>
+ </tr>
+ <tr>
+ <th>Máximo Memoria [Mb]:</th>
+ <td><span py:replace="record.max_memoria">max_tiempo_cpu</span></td>
+ </tr>
+ <tr>
+ <th>Máximo Tam. Archivo [Mb]:</th>
+ <td><span py:replace="record.max_tam_archivo">max_tiempo_cpu</span></td>
+ </tr>
+ <tr>
+ <th>Máximo Cant. Archivo:</th>
+ <td><span py:replace="record.max_cant_archivos">max_tiempo_cpu</span></td>
+ </tr>
+ <tr>
+ <th>Máximo Cant. Procesos:</th>
+ <td><span py:replace="record.max_cant_procesos">max_tiempo_cpu</span></td>
+ </tr>
+ <tr>
+ <th>Máximo Locks Memoria:</th>
+ <td><span py:replace="record.max_locks_memoria">max_tiempo_cpu</span></td>
+ </tr>
+ <tr>
+ <th>Terminar si falla?:</th>
+ <td><span py:replace="tg.strbool(record.terminar_si_falla)">max_tiempo_cpu</span></td>
+ </tr>
+ <tr>
+ <th>Rechazar si falla?:</th>
+ <td><span py:replace="tg.strbool(record.rechazar_si_falla)">max_tiempo_cpu</span></td>
+ </tr>
+ <tr>
+ <th>Publico?:</th>
+ <td><span py:replace="tg.strbool(record.publico)">max_tiempo_cpu</span></td>
+ </tr>
+ <tr>
+ <th>Archivos de Entrada:</th>
+ <td><a py:if="record.archivos_entrada" href="${tg.url('/enunciado/caso_de_prueba/file/%d/archivos_entrada' % record.id)}">Bajar</a></td>
+ </tr>
+ <tr>
+ <th>Archivos a Comparar:</th>
+ <td><a py:if="record.archivos_a_comparar" href="${tg.url('/enunciado/caso_de_prueba/file/%d/archivos_a_comparar' % record.id)}">Bajar</a></td>
+ </tr>
+ <tr>
+ <th>Archivos a guardar:</th>
+ <td><span py:repalce="', '.join(record.archivos_a_guardar)"></span></td>
</tr>
<tr>
- <th>Máximo tiempo de CPU:</th>
- <td><span py:replace="record.max_tiempo_cpu">max_tiempo_cpu</span></td>
+ <th>Activo?:</th>
+ <td><span py:repalce="tg.strbool(record.activo)"></span></td>
</tr>
</table>
<table class="list">
<tr>
- <th>Cuatrimestre</th>
+ <th>Cuat.</th>
<th>Año</th>
<th>Nombre</th>
<th>Descripción</th>
<th>Operaciones</th>
</tr>
<tr py:for="record in records">
- <td><span py:replace="record.cuatrimestre">descripción</span></td>
- <td><span py:replace="record.anio">descripción</span></td>
+ <td align="center"><span py:replace="record.cuatrimestre">descripción</span></td>
+ <td align="center"><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>
<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.tareas)"
- href="${tg.url('/enunciado/show/%d' % record.id)}"><span
+ <td align="center" py:if="'admin' in identity.current.permissions">
+ <a 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"><span py:content="len(record.casos_de_prueba)" /></td>
+ <td align="center" 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>