From: tailor Date: Tue, 13 Mar 2007 21:08:21 +0000 (+0000) Subject: grupo admin X-Git-Tag: 0_9_0~155 X-Git-Url: https://git.llucax.com/software/sercom.git/commitdiff_plain/68e0c481543b220f3be21cf29ad676e5bed0a7ac?ds=sidebyside grupo admin * algunos cacheos de excepciones y minima mejora. --- diff --git a/doc/alumno_curso_test.csv b/doc/alumno_curso_test.csv index 53f6da0..df5b425 100644 --- a/doc/alumno_curso_test.csv +++ b/doc/alumno_curso_test.csv @@ -1,4 +1,9 @@ 78226,Ricardo Markiewicz,rmarkie@fi.uba.ar,45524413 12345,juan perez,jperez@gmail.com,12345 -78945,pepe parada,ppepe@gmail.com,78945 -65444,marcelo araujo,marcelo@gmail.com,65444 +78945,Ramón Díaz,ppepe@gmail.com,78945 +65444,Marcelo Araujo,marcelo@gmail.com,65444 +79941,Martín Palermo,mpalermo@gmail.com,79941 +77456,Lionel Messi,lmesi@barcelona.com.es,77456 +80123,Alejandra Martinez,amartinez@hotmail.com,80123 +81654,Marcos Gutierrez,marcosg@yahoo.com.ar,81654 +77624,Nicolas Dimov,ndimov@gmail.com,77624 diff --git a/doc/alumnos_test.csv b/doc/alumnos_test.csv index 188f9a0..d0ac2d5 100644 --- a/doc/alumnos_test.csv +++ b/doc/alumnos_test.csv @@ -1,2 +1,7 @@ 78226,Ricardo Markiewicz,rmarkie@fi.uba.ar,45524413 -12345,pepe le pua,bla@ble.com, +77624,Nicolas Dimov,ndimov@gmail.com,77624 +80324,Pablo Salazar,psalaz@hotmail.com,80324 +79555,Luis Leyria,lley@gmail.com,79555 +84777,Diego Fernandez,dfernan@gmail.com,84777 +77852,Pedro Trotacielos,peterskywalker@yahoo.com,77852 +64557,Luciana Aymar,leona@gmail.com,64557 diff --git a/sercom/subcontrollers/grupo_admin/__init__.py b/sercom/subcontrollers/grupo_admin/__init__.py index b431e84..5e3676e 100644 --- a/sercom/subcontrollers/grupo_admin/__init__.py +++ b/sercom/subcontrollers/grupo_admin/__init__.py @@ -12,8 +12,11 @@ from docutils.core import publish_parts from sercom.subcontrollers import validate as val from sercom.model import Curso, AlumnoInscripto, Docente, Grupo, Alumno, Miembro from sqlobject import * - +from sqlobject.dberrors import * from sercom.widgets import * +import logging + +log = logging.getLogger('sercom.tester') #}}} """ Administrador de grupos, mezclar, juntar, dividir""" @@ -250,7 +253,7 @@ class GrupoAdminController(controllers.Controller, identity.SecureResource): def update(self, cursoid, **kw): """Save or create record to model""" - print kw + log.debug(kw) grupoAId = kw['listaGrupoA'] grupoBId = kw['listaGrupoB'] miembrosA = kw.get('grupos_from', []) @@ -260,6 +263,8 @@ class GrupoAdminController(controllers.Controller, identity.SecureResource): tutoresA = kw.get('tutoresA', []) tutoresB = kw.get('tutoresB', []) + log.debug(miembrosA) + log.debug(miembrosB) """ levanto los grupos originales """ grupoAorig = validate_get(int(grupoAId)) @@ -269,16 +274,27 @@ class GrupoAdminController(controllers.Controller, identity.SecureResource): if str(mA.alumno.id) not in miembrosA: grupoAorig.remove_miembro(mA.alumno.id) - for a in miembrosA: - try: - grupoA = Grupo.get(grupoAId) - grupoA.add_miembro(a) - except: - continue + try: + grupoA = validate_get(grupoAId) + for a in miembrosA: + try: + grupoA.add_miembro(a, baja=None) + except DuplicateEntryError: + continue + except Exception, e: + flash(_(u'Error A %s.' % e)) + raise redirect('/grupo/list') # seteo el reponsable del grupo if int(responsableA) != 0: grupoA.responsable = AlumnoInscripto.get(int(responsableA)) + for t in tutoresA: + try: + grupoA.add_tutor(int(t)) + except: + #TODO ver por que no anda el duplicate error, por ahora cacheo silencioso + pass + #Elimino el grupo si quedo vacio if len(miembrosA) == 0: @@ -304,19 +320,33 @@ class GrupoAdminController(controllers.Controller, identity.SecureResource): for mB in Miembro.selectBy(grupo=grupoBorig, baja=None): if str(mB.alumno.id) not in miembrosB: grupoBorig.remove_miembro(mB.alumno.id) - for b in miembrosB: - try: - grupoB = Grupo.get(grupoBId) - grupoB.add_miembro(b) - except: - continue + try: + grupoB = validate_get(grupoBId) + for b in miembrosB: + try: + grupoB.add_miembro(b, baja=None) + except DuplicateEntryError: + continue + except Exception, e: + flash(_(u'Error B %s.' % e)) + raise redirect('/grupo/list') # seteo el reponsable del grupo if int(responsableB) != 0: grupoB.responsable = AlumnoInscripto.get(int(responsableB)) #Elimino el grupo si quedo vacio if len(miembrosB) == 0: - validate_del(grupoBId) + try: + validate_del(grupoBId) + except: + pass + + for t in tutoresB: + try: + grupoB.add_tutor(int(t)) + except: + #TODO ver por que no anda el duplicate error, por ahora cahceo silencioso + pass flash(_(u'Los grupos fueron actualizado.'))