]> git.llucax.com Git - software/sercom.git/blobdiff - sercom/subcontrollers/ejercicio/__init__.py
Mass upload de alumnos
[software/sercom.git] / sercom / subcontrollers / ejercicio / __init__.py
index f0b0157f78651493b25b4fa6d6ff7f15a1d67ff7..962a088ca575e4371512382d93b63c4b745ec9a0 100644 (file)
@@ -11,6 +11,9 @@ from docutils.core import publish_parts
 from sercom.subcontrollers import validate as val
 from sercom.model import Ejercicio, Curso, Enunciado
 from cherrypy import request, response
 from sercom.subcontrollers import validate as val
 from sercom.model import Ejercicio, Curso, Enunciado
 from cherrypy import request, response
+
+from entrega import  *
+
 #}}}
 
 #{{{ Configuración
 #}}}
 
 #{{{ Configuración
@@ -74,8 +77,64 @@ def validate_new(data):
 def get_options():
     return [(0, _(u'--'))] + [(fk.id, fk.shortrepr()) for fk in fkcls.select()]
 
 def get_options():
     return [(0, _(u'--'))] + [(fk.id, fk.shortrepr()) for fk in fkcls.select()]
 
-def get_options1():
-    return [(0, _(u'--'))] + [(fk1.id, fk1.shortrepr()) for fk1 in fk1cls.select()]
+# Un poco de ajax para llenar los cursos
+ajax = """
+    function showHint()
+    {
+        MochiKit.DOM.showElement('hint')
+    }
+
+    function hideHint()
+    {
+        MochiKit.DOM.hideElement('hint')
+    }
+
+    function clearEnunciados ()
+    {
+        l = MochiKit.DOM.getElement('form_enunciadoID');
+        l.options.length = 0;
+    }
+
+    function mostrarEnunciados (res)
+    {
+        clearEnunciados();
+        for(i in res.enunciados) {
+            id = res.enunciados[i].id;
+            label = res.enunciados[i].nombre;
+            MochiKit.DOM.appendChildNodes("form_enunciadoID", OPTION({"value":id}, label))
+        }
+        hideHint();
+    }
+
+    function err (err)
+    {
+        alert("The metadata for MochiKit.Async could not be fetched :(");
+        hideHint();
+    }
+
+    function actualizar_enunciados ()
+    {
+        l = MochiKit.DOM.getElement('form_cursoID');
+        id = l.options[l.selectedIndex].value;
+        if (id == 0) {
+            clearEnunciados();
+            return;
+        }
+
+        url = "/enunciado/de_curso?curso_id="+id;
+        var d = loadJSONDoc(url);
+        d.addCallbacks(mostrarEnunciados, err);
+        showHint();
+    }
+
+    function prepare()
+    {
+        connect('form_cursoID', 'onchange', actualizar_enunciados);
+        hideHint();
+    }
+
+    MochiKit.DOM.addLoadEvent(prepare)
+"""
 
 class EjercicioForm(W.TableForm):
     class Fields(W.WidgetsList):
 
 class EjercicioForm(W.TableForm):
     class Fields(W.WidgetsList):
@@ -85,10 +144,10 @@ class EjercicioForm(W.TableForm):
             help_text=_(u'Requerido.'),
             validator=V.Int(not_empty=True))
         fk1 = W.SingleSelectField(name=fk1name+'ID', label=_(fk1name.capitalize()),
             help_text=_(u'Requerido.'),
             validator=V.Int(not_empty=True))
         fk1 = W.SingleSelectField(name=fk1name+'ID', label=_(fk1name.capitalize()),
-            options=get_options1, validator=V.Int(not_empty=True))
+            validator=V.Int(not_empty=True))
         grupal = W.CheckBox(name='grupal', label=_(u"Grupal?"))
     fields = Fields()
         grupal = W.CheckBox(name='grupal', label=_(u"Grupal?"))
     fields = Fields()
-    javascript = [W.JSSource("MochiKit.DOM.focusOnLoad('form_nombre');")]
+    javascript = [W.JSSource("MochiKit.DOM.focusOnLoad('form_nombre');"), W.JSSource(ajax)]
 
 form = EjercicioForm()
 #}}}
 
 form = EjercicioForm()
 #}}}
@@ -98,6 +157,8 @@ class EjercicioController(controllers.Controller, identity.SecureResource):
     """Basic model admin interface"""
     require = identity.has_permission('admin')
 
     """Basic model admin interface"""
     require = identity.has_permission('admin')
 
+    entrega = EntregaController()
+
     @expose()
     def default(self, tg_errors=None):
         """handle non exist urls"""
     @expose()
     def default(self, tg_errors=None):
         """handle non exist urls"""
@@ -148,10 +209,6 @@ class EjercicioController(controllers.Controller, identity.SecureResource):
     def show(self,id, **kw):
         """Show record in model"""
         r = validate_get(id)
     def show(self,id, **kw):
         """Show record in model"""
         r = validate_get(id)
-        if r.descripcion is None:
-            r.desc = ''
-        else:
-            r.desc = publish_parts(r.descripcion, writer_name='html')['html_body']
         return dict(name=name, namepl=namepl, record=r)
 
     @expose()
         return dict(name=name, namepl=namepl, record=r)
 
     @expose()