SUWI - Sercom Ugly Web Interface
'''
pass
def footer(req):
return '''
'''
pass
def form(req, submit, str=None):
r = submit
if submit is not None:
r = '\n'
return r
def pre(s):
return '
\n'
r += form(req, 'Volver', input_entrega(req, i.entrega.id)
+ input_inscripto(req, inscripto_id))
#XXX Hack feo y muy hardcodeado para ver los fuentes (morirá con suwi)
r += 'ver fuentes
' \
% (i.inscripto.curso.anio, i.inscripto.curso.cuatrimestre,
i.inscripto.curso.curso, i.entrega.nroEjercicio, i.entrega.entrega,
i.inscripto.padron, i.numero)
r += '\n'
return r
def row(p):
return '''
%s
%s
%s
%s
%s
%s
%s
''' % (p.casoDePrueba.nombre, p.pasada, p.casoDePrueba.privado,
p.casoDePrueba.activo, p.inicio, p.fin,
pre(p.observaciones))
i = Intento.get(intento_id, connection=conn)
r = '
Pruebas del intento %d del alumno %d
\n' \
% (i.numero, i.inscripto.padron)
r += header()
for p in i.pruebas:
r += row(p)
r += footer()
return r
def intentos(req, entrega_id, inscripto_id):
def header():
return '''
Nro
Llegada
Compila
Pruebas
Observaciones
'''
pass
def footer():
r = '
\n
\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 '''
\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 += form(req, 'Bajar entrega rechazadas en .zip',
input_zip_rechazados(req, entrega_id))
r += '
\n'
return r
e = Entrega.get(entrega_id, connection=conn)
c = e.curso
r = '
Entrega %d.%d del curso %d-%d-%d
\n' \
% (e.nroEjercicio, e.entrega, c.anio, c.cuatrimestre, c.curso)
correcciones = list(e.correcciones)
# Ordena comparando padron
correcciones.sort(lambda x, y: cmp(x.inscripto.padron, y.inscripto.padron))
r += correccion_header()
for c in correcciones:
r += correccion_row(c)
r += correccion_footer()
inscriptos_ok = set([c.inscripto for c in correcciones])
inscriptos = set([i.inscripto for i in e.intentos])
rechazados = list(inscriptos - inscriptos_ok)
rechazados.sort(lambda x, y: cmp(x.padron, y.padron))
r += rechazado_header()
for i in rechazados:
r += rechazado_row(i, e)
r += rechazado_footer()
r += footer()
return r
#
# MAIN
#
req = sys.stdout
f = cgi.FieldStorage()
raw = f.has_key('zip')
if not raw:
print http_header_html(req)
print header(req)
path = os.getenv('PATH_INFO')
if not f.has_key('pw'):
print login(req)
elif f.has_key('pw') and f.getfirst('pw') <> PASSWD:
print login(req)
print '
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')), f.getfirst('rechazados', False))
else:
print correcciones(req, int(f.getfirst('entrega')))
if not raw:
print footer(req)