1 #!/usr/bin/env python2.4
2 # -*- encoding: iso-8859-1 -*-
3 # vim: set et sw=4 sts=4 :
5 '''Script para importar datos de la DB del sistema de notas.
7 Este script permite importar fácilmente los alumnos inscriptos del sistema de
11 ./importar.py [-h] [-q] [-d] [-c]
13 -h Muestra este mensaje de ayuda
14 -q Modo silencioso (no muestra salida)
15 -d Modo debug (mucha salida)
16 -c Modo commit (realiza realmente los cambios)
18 Por omisión no hace cambios en la DB a menos que se use la opción -c.
20 Hay que prestar particular atención a los cambios de cursos, porque
21 probablemente haya que mover archivos en el directorio de intentos si el
22 alumno en cuestión realizó alguno.
27 from sercom.sqlo import Inscripto as Ins, connectionForURI
33 if '-q' in sys.argv: verbose = False
35 if '-d' in sys.argv: debug = True
37 if '-c' in sys.argv: commit = True
40 (200511, 1), # cuatrimestre en db origen, curso en db destino
41 (200512, 2), # cuatrimestre en db origen, curso en db destino
44 conn = connectionForURI('sqlite:///var/lib/sercom/corrector.sqlite')
45 con = sqlite.connect('taller.sqlite')
49 print 'Procesando cuatrimestre %d (curso %d)' % cuat
50 cur.execute('''SELECT padron, mail_alumno
52 WHERE cuatrimestre=%d''', cuat[0])
53 curso = [i.padron for i in Ins.selectBy(cursoID=cuat[1], connection=conn)]
54 # Agrego o modifico existentes
56 print 'Padrones en original:'
57 [sys.stdout.write(str(p[0])+'\n') for p in cur.fetchall()]
58 print 'Padrones en destino:'
59 [sys.stdout.write(str(p)+'\n') for p in curso]
60 for (padron, mail) in cur.fetchall():
63 print 'Salteando', padron, 'porque tiene mail nulo.'
64 continue # Si no tiene mail, no está inscripto
65 if padron in curso: # Modifico
66 i = Ins.by(padron=padron, connection=conn)
69 print 'Modificando padrón', padron, '- mail:', mail
74 print 'Salteando', padron, 'porque no cambió el mail.'
78 print 'Agregando padrón', padron, '- mail:', mail
80 Ins(padron=padron, mail=mail, cursoID=cuat[1], connection=conn)
81 # Borro los que no están más
84 print 'Borrando padrón', padron
86 Ins.by(padron=padron, connection=conn).destroySelf()