#!/usr/bin/env python2.4 # -*- encoding: iso-8859-1 -*- # vim: set et sw=4 sts=4 : # Módulos estándar import os import sys import cgi # Módulos externos import sqlobject # Módulos locales import sercom from sercom.sqlo import * # Inicializo conf, conn, log = sercom.init('cgi') # Para debug web import cgitb; cgitb.enable() #XXX HORRIBLE PASSWD = conf.get('general', 'cgipw') def http_header_html(req): return 'Content-type: text/html\r\n\r\n' def http_header_zip(req, filename): return 'Content-type: application/zip\r\n' \ 'Content-Disposition: attachment;filename=%s\r\n' \ '\r\n' % filename def header(req): return '''
%s' % cgi.escape(str(s)) def input_login(req): return '\n' % PASSWD def input_curso(req, curso_id): return input_login(req) \ + '\n' % curso_id def input_entrega(req, entrega_id): e = Entrega.get(entrega_id, connection=conn) return input_curso(req, e.curso.id) \ + '\n' % entrega_id def input_zip(req, entrega_id): return input_entrega(req, entrega_id) \ + '\n' def input_inscripto(req, inscripto_id=None): if inscripto_id is not None: return '\n' \ % inscripto_id return '' def input_pruebas(req, intento_id, inscripto_id=None): i = Intento.get(intento_id, connection=conn) r = input_entrega(req, i.entrega.id) r += '\n' % intento_id r += input_inscripto(req, inscripto_id) return r def input_intentos(req, entrega_id, inscripto_id): return input_entrega(req, entrega_id) + input_inscripto(req, inscripto_id) def login(req): r = '
Debe ingresar la contraseña para seguir...
\n' return r + form(req, 'Entrar', 'Contraseña:
') def curso(req): cursos = [c for c in Curso.select(connection=conn) if len(c.entregas)] r = 'Curso:
\n' else: r += 'No hay cursos con entregas
\n' return form(req, 'Ver', r + input_login(req)) def entrega(req, curso_id): c = Curso.get(curso_id, connection=conn) r = 'Entrega:
\n' return form(req, 'Ver', r + input_curso(req, curso_id)) def pruebas(req, intento_id, inscripto_id=None): def header(): return '''Nombre | Pasada | Privada | Activa | Inicio | Fin | Observaciones |
---|---|---|---|---|---|---|
\n' r += form(req, 'Volver', input_entrega(req, i.entrega.id) + input_inscripto(req, inscripto_id)) r += '
\n' return r def row(p): return '''Nro | Llegada | Compila | Pruebas | Observaciones |
---|---|---|---|---|
\n' r += form(req, 'Volver', input_entrega(req, entrega_id)) r += '
\n' return r def row(i): if i.pruebasPasadas: pruebas = 'BIEN' elif not i.compila: pruebas = None else: pruebas = 'MAL' return '''Padrón | Pruebas | Intentos |
---|---|---|
\n' r += form(req, 'Elegir curso', input_login(req)) r += form(req, 'Elegir entrega', input_curso(req, e.curso.id)) r += form(req, 'Bajar entrega en .zip', input_zip(req, entrega_id)) r += '
\n' return r def row(c): if c.intento.pruebasPasadas: pruebas = 'BIEN' elif not c.intento.compila: prubas = None else: pruebas = 'MAL' intentos = int(Intento.selectBy(inscriptoID=c.inscriptoID, entregaID=c.entregaID, connection=conn).count()) return '''Password Incorrecto!
\n' elif not f.has_key('curso'): print curso(req) elif not f.has_key('entrega'): print entrega(req, int(f.getfirst('curso'))) elif f.has_key('intento'): inscripto_id = None if f.has_key('inscripto'): inscripto_id = int(f.getfirst('inscripto')) print pruebas(req, int(f.getfirst('intento')), inscripto_id) elif f.has_key('inscripto'): print intentos(req, int(f.getfirst('entrega')), int(f.getfirst('inscripto'))) elif f.has_key('zip'): zip(req, int(f.getfirst('entrega'))) else: print correcciones(req, int(f.getfirst('entrega'))) if not raw: print footer(req)