diff --git a/qweb_usertime/README.rst b/qweb_usertime/README.rst new file mode 100644 index 000000000..3c766de8d --- /dev/null +++ b/qweb_usertime/README.rst @@ -0,0 +1,38 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :alt: License: AGPL-3 + +QWeb Usertime Tag +================= + +This module adds a new tag renderer to QWeb, "usertime", which allows adding +the current time in the timezone of the user. It can be used as:: + + + +or, if you want to use the default date and time formats based on the users +language:: + + + + +Credits +======= + +Contributors +------------ + +* Vincent Vinet + +Maintainer +---------- + +.. image:: http://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: http://odoo-community.org + +This module is maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. + +To contribute to this module, please visit http://odoo-community.org. + diff --git a/qweb_usertime/__init__.py b/qweb_usertime/__init__.py new file mode 100644 index 000000000..cb9ce2e6f --- /dev/null +++ b/qweb_usertime/__init__.py @@ -0,0 +1,25 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# This module copyright (C) 2015 Savoir-faire Linux +# (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +""" QWeb usertime addon """ + +from . import qweb diff --git a/qweb_usertime/__openerp__.py b/qweb_usertime/__openerp__.py new file mode 100644 index 000000000..55186fada --- /dev/null +++ b/qweb_usertime/__openerp__.py @@ -0,0 +1,41 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# This module copyright (C) 2015 Savoir-faire Linux +# (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +{ + 'name': 'QWeb User Time', + 'version': '1.0', + 'author': 'Savoir-faire Linux,Odoo Community Association (OCA)', + 'maintainer': 'Odoo Community Association (OCA)', + 'website': 'http://www.savoirfairelinux.com', + 'license': 'AGPL-3', + 'category': 'Tools', + 'summary': 'Add user time rendering support in QWeb', + 'depends': [ + 'base', + ], + 'external_dependencies': { + 'python': [], + }, + 'data': [ + ], + 'installable': True, +} diff --git a/qweb_usertime/qweb.py b/qweb_usertime/qweb.py new file mode 100644 index 000000000..1d257675e --- /dev/null +++ b/qweb_usertime/qweb.py @@ -0,0 +1,70 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# This module copyright (C) 2015 Savoir-faire Linux +# (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +""" QWeb usertime : adds support for t-usertime on qweb reports """ + +from datetime import datetime +import logging +import pytz + +from openerp import models +from openerp.tools import DEFAULT_SERVER_DATETIME_FORMAT + +_logger = logging.getLogger(__name__) + + +class QWeb(models.Model): + _inherit = 'ir.qweb' + + def render_tag_usertime(self, element, template_attributes, + generated_attributes, qwebcontext): + tformat = template_attributes['usertime'] + if not tformat: + # No format, use default time and date formats from qwebcontext + lang = ( + qwebcontext['env'].lang or + qwebcontext['env'].context['lang'] or + qwebcontext['user'].lang + ) + if lang: + lang = qwebcontext['env']['res.lang'].search( + [('code', '=', lang)] + ) + tformat = "{0.date_format} {0.time_format}".format(lang) + else: + tformat = DEFAULT_SERVER_DATETIME_FORMAT + + now = datetime.now() + + tz_name = qwebcontext['user'].tz + if tz_name: + try: + utc = pytz.timezone('UTC') + context_tz = pytz.timezone(tz_name) + utc_timestamp = utc.localize(now, is_dst=False) # UTC = no DST + now = utc_timestamp.astimezone(context_tz) + except Exception: + _logger.debug( + "failed to compute context/client-specific timestamp, " + "using the UTC value", + exc_info=True) + return now.strftime(tformat) diff --git a/qweb_usertime/static/description/icon.png b/qweb_usertime/static/description/icon.png new file mode 100644 index 000000000..3a0328b51 Binary files /dev/null and b/qweb_usertime/static/description/icon.png differ