X-Git-Url: https://git.llucax.com/software/sercom.git/blobdiff_plain/dec414f2d451961a1e10dc99fddff0c21958dffe..55ad2b439dc03b110ef97eee05dd5e6151b39bf3:/sercom/subcontrollers/curso/grupo/__init__.py diff --git a/sercom/subcontrollers/curso/grupo/__init__.py b/sercom/subcontrollers/curso/grupo/__init__.py index f6bddb4..f658809 100644 --- a/sercom/subcontrollers/curso/grupo/__init__.py +++ b/sercom/subcontrollers/curso/grupo/__init__.py @@ -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