]> git.llucax.com Git - software/sercom-old.git/commitdiff
Se agrega listado de entregas rechazadas.
authorLeandro Lucarella <llucax@gmail.com>
Sun, 3 Apr 2005 23:25:27 +0000 (23:25 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Sun, 3 Apr 2005 23:25:27 +0000 (23:25 +0000)
src/sc_suwi

index a6b23bcd97c9fbbc0eead69a9235f43dabdd8b82..be472154a07a86ac261eaa50ed0c18614a9d1adb 100755 (executable)
@@ -52,6 +52,11 @@ def header(req):
                 border: medium black solid;
                 border-collapse: collapse;
             }
+            caption
+            {
+                margin: 5pt;
+                font-weight: bold;
+            }
             th
             {
                 border: thin black solid;
@@ -270,47 +275,84 @@ def zip(req, entrega_id):
     os.unlink(tmpfname)
 
 def correcciones(req, entrega_id):
-    def header():
+    def correccion_header():
         return '''<table>
-    <tr>
-        <th>Padrón</th>
-        <th>Pruebas</th>
-        <th>Intentos</th>
-    <tr>
+    <caption>Entregas aceptadas</caption>
+    <thead>
+        <tr>
+            <th>Padrón</th>
+            <th>Pruebas</th>
+            <th>Intentos</th>
+        <tr>
+    </thead>
+    <tbody>
 '''
         pass
-    def footer():
-        r = '</table>\n<p>\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 += '</p>\n'
-        return r
-    def row(c):
+    def correccion_footer():
+        return '    </tbody>\n</table>\n'
+    def correccion_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 '''
-    <tr>
-        <td>%d</td>
-        <td>%s</td>
-        <td>%s</td>
-    </tr>
+            <tr>
+                <td>%d</td>
+                <td>%s</td>
+                <td>%s</td>
+            </tr>
 ''' % (c.inscripto.padron,
         form(req, pruebas, input_pruebas(req, c.intento.id)),
         form(req, intentos, input_intentos(req, c.entrega.id, c.inscripto.id)))
+    def problematico_header():
+        return '''<table>
+    <caption>Entregas rechazadas</caption>
+    <thead>
+        <tr>
+            <th>Padrón</th>
+            <th>Intentos</th>
+        <tr>
+    </thead>
+    <tbody>
+'''
+        pass
+    def problematico_footer():
+        return '    </tbody>\n</table>\n'
+    def problematico_row(inscripto, entrega):
+        intentos = int(Intento.selectBy(inscriptoID=inscripto.id,
+            entregaID=entrega.id, connection=conn).count())
+        return '''
+        <tr>
+            <td>%d</td>
+            <td>%s</td>
+        </tr>
+''' % (inscripto.padron,
+        form(req, intentos, input_intentos(req, entrega.id, inscripto.id)))
+    def footer():
+        r = '<p>\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 += '</p>\n'
+        return r
 
     e = Entrega.get(entrega_id, connection=conn)
     c = e.curso
     r = '<h1>Entrega %d.%d del curso %d-%d-%d</h1>\n' \
         % (e.nroEjercicio, e.entrega, c.anio, c.cuatrimestre, c.curso)
-    r += header()
     correcciones = list(e.correcciones)
     correcciones.sort(cmp_correccion_padron)
+    r += correccion_header()
     for c in correcciones:
-        r += row(c)
+        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])
+    r += problematico_header()
+    for i in inscriptos - inscriptos_ok:
+        r += problematico_row(i, e)
+    r += problematico_footer()
     r += footer()
     return r