PHPSCHEMA = $(wildcard src/T/DBO/schema/*.ini)
DOCS = doc/README $(wildcard doc/schema.*)
EXAMPLES = $(wildcard doc/examples/*)
+UTIL = $(wildcard util/*.py)
.PHONY: all install clean
$(INSTALL) -d -m 0755 $(DESTDIR)$(PREFIX)/lib/cgi-bin
$(INSTALL) -d -m 0755 $(DESTDIR)/etc/sercom
$(INSTALL) -d -m 0755 $(DESTDIR)$(PREFIX)/share/doc/sercom/examples
+ $(INSTALL) -d -m 0755 $(DESTDIR)$(PREFIX)/share/sercom/util
$(INSTALL) -d -m 0755 $(DESTDIR)$(PREFIX)/share/php/T/DBO/schema
$(INSTALL) -d -m 2775 $(DESTDIR)$/var/lib/sercom/ejercicios
$(INSTALL) -d -m 2775 $(DESTDIR)$/var/lib/sercom/intentos
$(INSTALL) -m 0644 $(PHPSCHEMA) $(DESTDIR)$(PREFIX)/share/php/T/DBO/schema
$(INSTALL) -m 0644 $(DOCS) $(DESTDIR)$(PREFIX)/share/doc/sercom
$(INSTALL) -m 0644 $(EXAMPLES) $(DESTDIR)$(PREFIX)/share/doc/sercom/examples
+ $(INSTALL) -m 0755 $(UTIL) $(DESTDIR)$(PREFIX)/share/sercom/util
# Bibliotecas en Python
./setup.py install --optimize 2 --root=$(DESTDIR) --prefix=$(PREFIX)
--- /dev/null
+#!/usr/bin/env python2.4
+# -*- encoding: iso-8859-1 -*-
+# vim: set et sw=4 sts=4 :
+
+'''Script para importar datos de la DB del sistema de notas.
+
+Este script permite importar fácilmente los alumnos inscriptos del sistema de
+notas.
+
+Uso:
+ ./importar.py [-h] [-q] [-d] [-c]
+
+-h Muestra este mensaje de ayuda
+-q Modo silencioso (no muestra salida)
+-d Modo debug (mucha salida)
+-c Modo commit (realiza realmente los cambios)
+
+Por omisión no hace cambios en la DB a menos que se use la opción -c.
+
+Hay que prestar particular atención a los cambios de cursos, porque
+probablemente haya que mover archivos en el directorio de intentos si el
+alumno en cuestión realizó alguno.
+'''
+
+#import sys
+import sqlite, sys
+from sercom.sqlo import Inscripto as Ins, connectionForURI
+
+if '-h' in sys.argv:
+ print __doc__
+ sys.exit(0)
+verbose = True
+if '-q' in sys.argv: verbose = False
+debug = False
+if '-d' in sys.argv: debug = True
+commit = False
+if '-c' in sys.argv: commit = True
+
+cuats = (
+ (200511, 1), # cuatrimestre en db origen, curso en db destino
+ (200512, 2), # cuatrimestre en db origen, curso en db destino
+)
+
+conn = connectionForURI('sqlite:///var/lib/sercom/corrector.sqlite')
+con = sqlite.connect('taller.sqlite')
+cur = con.cursor()
+for cuat in cuats:
+ if verbose:
+ print 'Procesando cuatrimestre %d (curso %d)' % cuat
+ cur.execute('''SELECT padron, mail_alumno
+ FROM alumno
+ WHERE cuatrimestre=%d''', cuat[0])
+ curso = [i.padron for i in Ins.selectBy(cursoID=cuat[1], connection=conn)]
+ # Agrego o modifico existentes
+ if debug:
+ print 'Padrones en original:'
+ [sys.stdout.write(str(p[0])+'\n') for p in cur.fetchall()]
+ print 'Padrones en destino:'
+ [sys.stdout.write(str(p)+'\n') for p in curso]
+ for (padron, mail) in cur.fetchall():
+ if mail is None:
+ if debug:
+ print 'Salteando', padron, 'porque tiene mail nulo.'
+ continue # Si no tiene mail, no está inscripto
+ if padron in curso: # Modifico
+ i = Ins.by(padron=padron, connection=conn)
+ if i.mail <> mail:
+ if verbose:
+ print 'Modificando padrón', padron, '- mail:', mail
+ if commit:
+ i.mail = mail
+ else:
+ if debug:
+ print 'Salteando', padron, 'porque no cambió el mail.'
+ curso.remove(padron)
+ else: # Agrego
+ if verbose:
+ print 'Agregando padrón', padron, '- mail:', mail
+ if commit:
+ Ins(padron=padron, mail=mail, cursoID=cuat[1], connection=conn)
+ # Borro los que no están más
+ for padron in curso:
+ if verbose:
+ print 'Borrando padrón', padron
+ if commit:
+ Ins.by(padron=padron, connection=conn).destroySelf()
+