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 *
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,
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)
"""
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
</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>