]> git.llucax.com Git - z.facultad/75.52/sercom.git/blobdiff - sercom/subcontrollers/curso/__init__.py
/me se recurda probas las cosas antes de recordear+sendear
[z.facultad/75.52/sercom.git] / sercom / subcontrollers / curso / __init__.py
index de16547ace0ab80cb786284942b837b4569ca5e3..8b3c0824d5e0050c1c4a02ca512d05d30091042e 100644 (file)
@@ -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,39 +32,47 @@ 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):
-    fields = [
-        W.TextField(name='anio', label=_(u'Anio'),
+    class Fields(W.WidgetsList):
+        anio = W.TextField(label=_(u'Anio'),
             help_text=_(u'Requerido y único.'),
-            validator=V.Number(min=4, max=4, strip=True)),
-        W.TextField(name='cuatrimestre', label=_(u'Cuatrimestre'),
+            validator=V.Number(min=4, max=4, strip=True))
+        cuatrimestre = W.TextField(label=_(u'Cuatrimestre'),
             help_text=_(u'Requerido.'),
-            validator=V.Number(min=1, max=1, strip=True)),
-        W.TextField(name='numero', label=_(u'Numero'),
+            validator=V.Number(min=1, max=1, strip=True))
+        numero = W.TextField(label=_(u'Numero'),
             help_text=_(u'Requerido'),
-            validator=V.Number(min=1, max=2, strip=True)),
-    ]
+            validator=V.Number(min=1, max=2, strip=True))
+        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'), 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');")]
-        # ver que otros campos agregar.
-"""
-        W.TextField(name='telefono', label=_(u'Teléfono'),
-            #help_text=_(u'Texto libre para teléfono, se puede incluir '
-            #    'horarios o varias entradas.'),
-            validator=V.UnicodeString(not_empty=False, min=7, max=255,
-                strip=True)),
-        W.TextField(name='nota', label=_(u'Nota'),
-            #help_text=_(u'Texto libre para teléfono, se puede incluir '
-            #    'horarios o varias entradas.'),
-            validator=V.Number(not_empty=False, strip=True)),
-        W.TextArea(name='observaciones', label=_(u'Observaciones'),
-            #help_text=_(u'Observaciones.'),
-            validator=V.UnicodeString(not_empty=False, strip=True)),
-        W.CheckBox(name='activo', label=_(u'Activo'), default=1,
-            #help_text=_(u'Si no está activo no puede ingresar al sistema.'),
-            validator=V.Bool(if_empty=1)),
-"""
-
 form = CursoForm()
 #}}}
 
@@ -70,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):
@@ -107,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"""
@@ -130,10 +154,6 @@ class CursoController(controllers.Controller, identity.SecureResource):
     def show(self,id, **kw):
         """Show record in model"""
         r = validate_get(id)
-        if r.observaciones is None:
-            r.obs = ''
-        else:
-            r.obs = publish_parts(r.observaciones, writer_name='html')['html_body']
         return dict(name=name, namepl=namepl, record=r)
 
     @expose()