]> git.llucax.com Git - z.facultad/75.52/sercom.git/commitdiff
Un dashboard simplon para empezar a informar cosas utiles luego del loggin
authorRicardo Markiewicz <rmarkie@fi.uba.ar>
Fri, 2 Mar 2007 04:16:17 +0000 (04:16 +0000)
committerRicardo Markiewicz <rmarkie@fi.uba.ar>
Fri, 2 Mar 2007 04:16:17 +0000 (04:16 +0000)
sercom/controllers.py
sercom/menu.py
sercom/templates/welcome.kid

index 079ee79d69d05e8c54e42086cda9566f0526732a..48b0086639571e4b3273f5eb8a0ca3cdb8034f7c 100644 (file)
@@ -4,7 +4,7 @@ from turbogears import controllers, expose, view, url
 from turbogears import widgets as W, validators as V
 from turbogears import identity, redirect
 from cherrypy import request, response
-from model import *
+from model import InstanciaDeEntrega, Correccion
 # from sercom import json
 
 from subcontrollers import *
@@ -25,12 +25,26 @@ class LoginForm(W.TableForm):
 
 class Root(controllers.RootController):
 
+    @expose()
+    def index(self):
+        raise redirect('/dashboard')
+
     @expose(template='.templates.welcome')
     @identity.require(identity.has_permission('entregar'))
-    def index(self):
+    def dashboard(self):
         import time
+        record = {}
+        if 'admin' in identity.current.permissions:
+            from sqlobject import DateTimeCol
+            # TODO : Fijar el curso !!
+            record['entregas_para_corregir'] = Correccion.selectBy(corrector=identity.current.user, nota=None).count()
+            try:
+                record['proxima_entrega'] = InstanciaDeEntrega.select(InstanciaDeEntrega.q.inicio >= DateTimeCol.now() and InstanciaDeEntrega.q.fin > DateTimeCol.now()).getOne()
+                record['proxima_entrega'] = record['proxima_entrega'][0]
+            except:
+                record['proxima_entrega'] = None
         log.debug('Happy TurboGears Controller Responding For Duty')
-        return dict(now=time.ctime())
+        return dict(now=time.ctime(), record=record)
 
     @expose(template='.templates.login')
     def login(self, forward_url=None, previous_url=None, tg_errors=None, *args,
index 59c527f50db0a837e884a12d0ad2c03121cc9174..a72d6a29bebf04bb98737bc6a19bc10682f75f0d 100644 (file)
@@ -8,6 +8,7 @@ class Menu:
         self.base = base
         self.items = filter(lambda i: isinstance(getattr(base, i), Controller), base.__dict__)
         self.items.sort()
+        self.items = ['dashboard'] + self.items
 
     def _check(self, c):
         return c.require.eval_with_object(identity.current)
@@ -24,7 +25,7 @@ class Menu:
         """
         s = option % ('', '-----')
         for i in self.items:
-            if self._check(getattr(self.base, i)):
+            if i == 'dashboard' or self._check(getattr(self.base, i)):
                 s += option % (url('/' + i), i.capitalize().replace('_', ' '))
         return template % s
 
index 9a86f7c9d6121b99d43de6e111899dead0bd310e..07c22f0a81bd2d16f8019c4f4fbd0db43fe5912c 100644 (file)
@@ -9,7 +9,21 @@
 </head>
 <body>
        <div py:if="'admin' in identity.current.permissions">
-               <h1>Soy admin</h1>
+               <h1>Dashboard</h1>
+               <h2>Correcciones</h2>
+               <div>
+                       <span py:if="record['entregas_para_corregir'] != 0">
+                               En este momento tenes <a href="${tg.url('/correccion/')}">${record['entregas_para_corregir']}</a> entregas para corregir.
+                       </span> 
+                       <span py:if="record['entregas_para_corregir'] == 0">
+                               No hay entregas que corregir.
+                       </span> 
+               </div>
+               <h2>Instancias de Entrega</h2>
+               <div>
+                       <span py:if="record['proxima_entrega'] is not None">La proxima Entrega vence el ${record['proxima_entrega']}.</span>
+                       <span py:if="record['proxima_entrega'] is None">En este momento no hay ninguna Entrega en curso.</span>
+               </div>
        </div>