on va commence par du lourd. c'est un validator qu'on a eu besoin de creer pour une application. la fonction de ce validator. c'est que l'utilisateur rentre les donnée en heure minute et seconde.
et les données sont convertie directement dans la base de donnée en seconde pour etre réutilise pour des calcules. et l'avantage c'est que l'utilisateur lui ne le voit pas du tout. tout se passe dans la cuisine interne de la base de donnée.
si vous avez des questions n'hesitez pas.
class IS_SECONDS(Validator):
def __init__(self, error_message='Enter time as hh:mm:ss'):
self.error_message = error_message
def __call__(self, value):
try:
ivalue = value
value = regex_time.match(value.lower())
(h, m, s) = (int(value.group('h')), 0, 0)
if not value.group('m') is None:
m = int(value.group('m'))
if not value.group('s') is None:
s = int(value.group('s'))
return (h*3600 + m*60 + s, None)
except AttributeError:
pass
except ValueError:
pass
return (ivalue, translate(self.error_message))
db.define_table('planing',
Field('heure_travaille', 'integer', widget=SQLFORM.widgets.time.widget, requires=IS_SECONDS(), label=T('heure travaille')),
Field('vacance', 'integer', widget=SQLFORM.widgets.time.widget, requires=IS_SECONDS(), label=T('heure de vacance')),
Field('total', 'integer', writable=False, compute=lambda row: row.heure_travaille + row.vacance)