X-Git-Url: https://git.llucax.com/software/sercom.git/blobdiff_plain/2c23a167e6fa9631558959fed1120596cb48c07e..57da76833fa5e128c7039d057022d7c2b648626e:/sercom/subcontrollers/curso/__init__.py diff --git a/sercom/subcontrollers/curso/__init__.py b/sercom/subcontrollers/curso/__init__.py index c4defae..8b3c082 100644 --- a/sercom/subcontrollers/curso/__init__.py +++ b/sercom/subcontrollers/curso/__init__.py @@ -10,7 +10,9 @@ from turbogears import identity from turbogears import paginate from docutils.core import publish_parts from sercom.subcontrollers import validate as val -from sercom.model import Curso +from sercom.model import Curso, Ejercicio, Alumno, Docente, Grupo, DocenteInscripto +from curso_alumno import * + #}}} #{{{ Configuración @@ -30,6 +32,18 @@ def validate_new(data): return val.validate_new(cls, name, data) #}}} +def get_ejercicios(): + return [(fk1.id, fk1.shortrepr()) for fk1 in Ejercicio.select()] + +def get_docentes(): + return [(fk1.id, fk1.shortrepr()) for fk1 in Docente.select()] + +def get_alumnos(): + return [(fk1.id, fk1.shortrepr()) for fk1 in Alumno.select()] + +def get_grupos(): + return [(fk1.id, fk1.shortrepr()) for fk1 in Grupo.select()] + #{{{ Formulario class CursoForm(W.TableForm): class Fields(W.WidgetsList): @@ -42,21 +56,21 @@ class CursoForm(W.TableForm): numero = W.TextField(label=_(u'Numero'), help_text=_(u'Requerido'), validator=V.Number(min=1, max=2, strip=True)) - descripcion = W.TextArea(name='descripcion', label=_(u'Descripcion'), + descripcion = W.TextArea(name='descripcion', label=_(u'Descripcion'), help_text=_(u'Descripcion.'), validator=V.UnicodeString(not_empty=False, strip=True)) - docentes = W.MultipleSelectField(name="docentes", label=_(u'Docentes'), - help_text=_(u'Docentes asignados al curso'), - validator=V.UnicodeString(not_empty=True)) - alumnos = W.MultipleSelectField(name="alumnos", label=_(u'Alumnos'), - help_text=_(u'Alumnos del curso'), - validator=V.UnicodeString(not_empty=True)) - grupos = W.MultipleSelectField(name="grupos", label=_(u'Grupos'), - help_text=_(u'Grupos del curso'), - validator=V.UnicodeString(not_empty=True)) - ejercicios = W.MultipleSelectField(name="ejercicios", label=_(u'Ejercicios'), - help_text=_(u'Ejercicios'), - validator=V.UnicodeString(not_empty=True)) + docentes = W.MultipleSelectField(name="docentes", label=_(u'Docentes'), + help_text=_(u'Docentes asignados al curso'), options=get_docentes, + validator=V.Int(not_empty=True)) + alumnos = W.MultipleSelectField(name="alumnos", label=_(u'Alumnos'), + help_text=_(u'Alumnos del curso'), options=get_alumnos, + validator=V.Int(not_empty=True)) +# grupos = W.MultipleSelectField(name="grupos", label=_(u'Grupos'), +# help_text=_(u'Grupos del curso'), options=get_grupos, +# validator=V.Int(not_empty=False)) +# ejercicios = W.MultipleSelectField(name="ejercicios", label=_(u'Ejercicios'), +# help_text=_(u'Ejercicios'), options=get_ejercicios, +# validator=V.Int(not_empty=True)) fields = Fields() javascript = [W.JSSource("MochiKit.DOM.focusOnLoad('anio');")] form = CursoForm() @@ -66,6 +80,7 @@ form = CursoForm() class CursoController(controllers.Controller, identity.SecureResource): """Basic model admin interface""" require = identity.has_permission('admin') + curso_alumno = CursoAlumnoController() @expose() def default(self, tg_errors=None): @@ -103,10 +118,23 @@ class CursoController(controllers.Controller, identity.SecureResource): @expose() def create(self, **kw): """Save or create record to model""" - validate_new(kw) + r = validate_new(kw) + docentes = kw.get('docentes', []) + alumnos = kw.get('alumnos', []) + """ Elimino todos los docentes asignados al curso y los agrego nuevamente""" + for d in DocenteInscripto.selectBy(curso=r): + d.destroySelf() + """ Agrego la nueva seleccion """ + for d in docentes: + r.add_docente(Docente(d)) + """ Elimino a los alumnos y los vuelvo a agregar """ + for a in AlumnoInscripto.selectBy(curso=r): + d.destroySelf() + for a in alumnos: + r.add_alumno(Alumno(a)) flash(_(u'Se creó un nuevo %s.') % name) raise redirect('list') - + @expose(template='kid:%s.templates.edit' % __name__) def edit(self, id, **kw): """Edit record in model"""