]> git.llucax.com Git - software/sercom.git/blobdiff - sercom/subcontrollers/curso/grupo/__init__.py
Termino de arreglar controller de instancias de entrega.
[software/sercom.git] / sercom / subcontrollers / curso / grupo / __init__.py
index f6bddb4f2776c8774df05c055fc08d4da13f606c..f6588096de188877ee50ad94c407537c5ca4b0b5 100644 (file)
@@ -125,11 +125,11 @@ ajax = u"""
 
 class GrupoForm(W.TableForm):
     class Fields(W.WidgetsList):
-        cursoID = W.HiddenField()
+        cursoID = W.HiddenField(validator=V.Int)
         nombre = W.TextField(label=_(u'Nombre'), validator=V.UnicodeString(not_empty=True,strip=True))
         responsable = CustomTextField(label=_(u'Responsable'), validator=V.UnicodeString(), attrs=dict(size='8'))
         miembros = AjaxMultiSelect(label=_(u'Miembros'), validator=V.Int(), on_add="alumnos_agregar_a_la_lista")
-        tutores = W.MultipleSelectField(label=_(u'Tutores'), validator=V.Int())
+        tutores = W.MultipleSelectField(label=_(u'Tutores'), validator=V.Int)
 
     fields = Fields()
     javascript = [W.JSSource("MochiKit.DOM.focusOnLoad('form_nombre');"), W.JSSource(ajax)]
@@ -177,6 +177,10 @@ ajaxadmin = u"""
         MochiKit.DOM.getElement('form_listaGrupoB').disabled = disabled;
         MochiKit.DOM.getElement('form_grupos_to').disabled = disabled;
         MochiKit.DOM.getElement('form_grupos_from').disabled = disabled;
+        MochiKit.DOM.getElement('form_tutoresA').disabled = true;
+        MochiKit.DOM.getElement('form_tutoresB').disabled = true;
+        MochiKit.DOM.getElement('form_responsableA').disabled = true;
+        MochiKit.DOM.getElement('form_responsableB').disabled = true;
     }
 
     function onListaAChange() {
@@ -246,6 +250,21 @@ ajaxadmin = u"""
         replaceChildNodes('form_responsableB', '');
         appendChildNodes('form_responsableA', map(makeOption, $('form_grupos_from').options));
         appendChildNodes('form_responsableB', map(makeOption, $('form_grupos_to').options));
+
+        if (getElement('form_grupos_from').options.length == 0) {
+            getElement('form_tutoresA').disabled = true;
+            getElement('form_responsableA').disabled = true;
+        } else {
+            getElement('form_tutoresA').disabled = false;
+            getElement('form_responsableA').disabled = false;
+        }
+        if (getElement('form_grupos_to').options.length == 0) {
+            getElement('form_tutoresB').disabled = true;
+            getElement('form_responsableB').disabled = true;
+        } else {
+            getElement('form_tutoresB').disabled = false;
+            getElement('form_responsableB').disabled = false;
+        }
     }
 """
 
@@ -283,18 +302,20 @@ class GrupoController(controllers.Controller, identity.SecureResource):
         raise redirect(tg.url('/curso/list'))
 
     @expose(template='kid:%s.templates.list' % __name__)
+    @validate(validators=dict(curso=V.Int))
     @paginate('records')
-    def list(self, cursoID):
+    def list(self, curso):
         """List records in model"""
-        r = cls.select(cls.q.cursoID == cursoID)
-        return dict(records=r, name=name, namepl=namepl, cursoID=int(cursoID))
+        r = cls.selectBy(cursoID=curso)
+        return dict(records=r, name=name, namepl=namepl, cursoID=curso)
 
     @expose(template='kid:%s.templates.new' % __name__)
-    def new(self, cursoID, **kw):
+    @validate(validators=dict(curso=V.Int))
+    def new(self, curso, **kw):
         """Create new records in model"""
-        form.fields[0].attrs['value'] = cursoID
-        options = dict(tutores=get_docentes_inscriptos(cursoID))
-        return dict(name=name, namepl=namepl, cursoID=int(cursoID), form=form, options=options, values=kw)
+        kw['cursoID'] = curso # FIXME esto está roto porque los widgets son stateless
+        options = dict(tutores=get_docentes_inscriptos(curso))
+        return dict(name=name, namepl=namepl, form=form, options=options, values=kw)
 
     @validate(form=form)
     @error_handler(new)
@@ -470,7 +491,7 @@ class GrupoController(controllers.Controller, identity.SecureResource):
             flash(_(u'Error A %s.' % e))
             raise redirect(url('/curso/grupo/list' % int(cursoID)))
         # seteo el reponsable del grupo
-        if int(responsableA) != 0:
+        if responsableA and int(responsableA) != 0:
             grupoA.responsable = AlumnoInscripto.get(int(responsableA))
 
         for t in tutoresA:
@@ -496,7 +517,7 @@ class GrupoController(controllers.Controller, identity.SecureResource):
                 nuevosMiembros.append(AlumnoInscripto.get(int(m)))
             nuevosTutores = []
             for t in tutoresB:
-                nuevosTutores.append(Docente.get(t))
+                nuevosTutores.append(DocenteInscripto.get(t))
             #Creo el nuevo grupo
             Grupo(miembros = nuevosMiembros, tutores = nuevosTutores, cursoID=cursoID, nombre='NuevoGrupo'+str(cursoID))
         else:
@@ -520,7 +541,7 @@ class GrupoController(controllers.Controller, identity.SecureResource):
                 flash(_(u'Error B %s.' % e))
                 raise redirect(url('/curso/grupo/list/%d' % int(cursoID)))
             # seteo el reponsable del grupo
-            if int(responsableB) != 0:
+            if responsableB and int(responsableB) != 0:
                 grupoB.responsable = AlumnoInscripto.get(int(responsableB))
 
             #Elimino el grupo si quedo vacio