]> git.llucax.com Git - z.facultad/75.52/sercom.git/blob - sercom/subcontrollers/validate.py
Reportar error de URL como 404 en vez de un redirect.
[z.facultad/75.52/sercom.git] / sercom / subcontrollers / validate.py
1 # vim: set et sw=4 sts=4 encoding=utf-8 :
2
3 __all__ = ('validate_get', 'validate_set', 'validate_new')
4
5 from turbogears import redirect
6 from cherrypy import NotFound
7
8 def validate_get(cls, name, id, url='../list'):
9     try:
10         return cls.get(int(id))
11     except (ValueError, LookupError):
12         raise NotFound
13
14 def validate_set(cls, name, id, data, url='../edit'):
15     r = validate_get(cls, name, id)
16     try:
17         r.set(**data)
18     except Exception, e:
19         raise redirect('%s/%s' % (url, id), tg_flash=_(u'No se pudo ' \
20             'modificar el %s (error: %s).') % (name, e), **data)
21
22 def validate_new(cls, name, data, url='new'):
23     try:
24         return cls(**data)
25     except Exception, e:
26         raise redirect(url, tg_flash=_(u'No se pudo crear el nuevo %s ' \
27             '(error: %s).') % (name, e), **data)
28