changeset 626670b9e7c5 in modules/user_role:default
details: https://hg.tryton.org/modules/user_role?cmd=changeset&node=626670b9e7c5
description:
Use datetime for role planning
datetime does not depend on the timezone.
issue11028
review391981002
diffstat:
CHANGELOG | 1 +
res.py | 14 ++++++--------
tests/scenario_user_role.rst | 10 +++++-----
view/user_role_list.xml | 6 ++++--
4 files changed, 16 insertions(+), 15 deletions(-)
diffs (112 lines):
diff -r bd7b5ce421f9 -r 626670b9e7c5 CHANGELOG
--- a/CHANGELOG Sat Apr 16 18:30:20 2022 +0200
+++ b/CHANGELOG Tue Apr 19 13:18:10 2022 +0200
@@ -1,3 +1,4 @@
+* Use datetime for role planning
* Add support for Python 3.10
* Remove support for Python 3.6
diff -r bd7b5ce421f9 -r 626670b9e7c5 res.py
--- a/res.py Sat Apr 16 18:30:20 2022 +0200
+++ b/res.py Tue Apr 19 13:18:10 2022 +0200
@@ -1,6 +1,6 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-import datetime
+import datetime as dt
from trytond.model import ModelSQL, ModelView, fields
from trytond.pool import Pool, PoolMeta
@@ -63,10 +63,8 @@
@classmethod
def sync_roles(cls, users=None, date=None):
- pool = Pool()
- Date = pool.get('ir.date')
if date is None:
- date = Date.today()
+ date = dt.datetime.now()
if users is None:
users = cls.search([])
to_write = []
@@ -92,14 +90,14 @@
user = fields.Many2One(
'res.user', "User", ondelete='CASCADE', select=True, required=True)
role = fields.Many2One('res.role', "Role", required=True)
- from_date = fields.Date(
+ from_date = fields.DateTime(
"From Date",
domain=[
If(Eval('from_date') & Eval('to_date'),
('from_date', '<=', Eval('to_date', None)),
()),
])
- to_date = fields.Date(
+ to_date = fields.DateTime(
"To Date",
domain=[
If(Eval('from_date') & Eval('to_date'),
@@ -114,6 +112,6 @@
cls._order.insert(1, ('to_date', 'ASC NULLS FIRST'))
def valid(self, date):
- from_date = self.from_date or datetime.date.min
- to_date = self.to_date or datetime.date.max
+ from_date = self.from_date or dt.datetime.min
+ to_date = self.to_date or dt.datetime.max
return from_date <= date <= to_date
diff -r bd7b5ce421f9 -r 626670b9e7c5 tests/scenario_user_role.rst
--- a/tests/scenario_user_role.rst Sat Apr 16 18:30:20 2022 +0200
+++ b/tests/scenario_user_role.rst Tue Apr 19 13:18:10 2022 +0200
@@ -4,7 +4,7 @@
Imports::
- >>> import datetime
+ >>> import datetime as dt
>>> from proteus import Model, Wizard
>>> from trytond.tests.tools import activate_modules
@@ -51,7 +51,7 @@
Start the role in the future::
>>> user_role, = user.roles
- >>> user_role.from_date = datetime.date.today() +
datetime.timedelta(days=1)
+ >>> user_role.from_date = dt.datetime.now() + dt.timedelta(days=1)
>>> user_role.to_date = None
>>> user.save()
@@ -62,7 +62,7 @@
>>> user_role, = user.roles
>>> user_role.from_date = None
- >>> user_role.to_date = datetime.date.today() - datetime.timedelta(days=1)
+ >>> user_role.to_date = dt.datetime.now() - dt.timedelta(days=1)
>>> user.save()
>>> len(user.groups)
@@ -71,8 +71,8 @@
Start the role in the past and end in the future::
>>> user_role, = user.roles
- >>> user_role.from_date = datetime.date.today() -
datetime.timedelta(days=1)
- >>> user_role.to_date = datetime.date.today() + datetime.timedelta(days=1)
+ >>> user_role.from_date = dt.datetime.now() - dt.timedelta(days=1)
+ >>> user_role.to_date = dt.datetime.now() + dt.timedelta(days=1)
>>> user.save()
>>> len(user.groups)
diff -r bd7b5ce421f9 -r 626670b9e7c5 view/user_role_list.xml
--- a/view/user_role_list.xml Sat Apr 16 18:30:20 2022 +0200
+++ b/view/user_role_list.xml Tue Apr 19 13:18:10 2022 +0200
@@ -4,6 +4,8 @@
<tree>
<field name="user" expand="1"/>
<field name="role" expand="1"/>
- <field name="from_date"/>
- <field name="to_date"/>
+ <field name="from_date" widget="date"/>
+ <field name="from_date" widget="time" string="Time"/>
+ <field name="to_date" widget="date"/>
+ <field name="to_date" widget="time" string="Time"/>
</tree>