diff --git a/muk_web_client_refresh/__manifest__.py b/muk_web_client_refresh/__manifest__.py
index a9ff59f..ab466a2 100644
--- a/muk_web_client_refresh/__manifest__.py
+++ b/muk_web_client_refresh/__manifest__.py
@@ -20,7 +20,7 @@
{
"name": "MuK Web Refresh",
"summary": """Web Client Refresh""",
- "version": "12.0.2.1.4",
+ "version": "12.0.2.1.5",
"category": "Extra Tools",
"license": "AGPL-3",
"website": "http://www.mukit.at",
diff --git a/muk_web_client_refresh/models/__init__.py b/muk_web_client_refresh/models/__init__.py
index 2e18370..b2536e5 100644
--- a/muk_web_client_refresh/models/__init__.py
+++ b/muk_web_client_refresh/models/__init__.py
@@ -17,5 +17,6 @@
#
###################################################################################
+from . import base
from . import ir_actions
from . import res_config_settings
diff --git a/muk_web_client_refresh/models/base.py b/muk_web_client_refresh/models/base.py
new file mode 100644
index 0000000..7674326
--- /dev/null
+++ b/muk_web_client_refresh/models/base.py
@@ -0,0 +1,56 @@
+###################################################################################
+#
+# Copyright (C) 2018 MuK IT GmbH
+#
+# 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 .
+#
+###################################################################################
+
+import logging
+
+from odoo import api, models, fields
+
+_logger = logging.getLogger(__name__)
+
+class Base(models.AbstractModel):
+
+ _inherit = 'base'
+
+ @api.multi
+ def refresh_views(self, model=None, ids=None, user=None, create=False):
+ """ Informs the web client to refresh the views that belong to the
+ corresponding model by sending a message to the bus.
+
+ There are two ways to use this method. First by calling it
+ without any parameters. In this case, the views are determined
+ and updated using the current records in self. Alternatively,
+ the method can also be called with corresponding parameters
+ to explicitly update a view from another model.
+
+ :param model: The model of the records is used to find the
+ corresponding views
+ :param ids: IDs of the records are used to determine which
+ records have been updated
+ :param user: The user (res.users) is used to determine whether
+ the current one has caused the refresh
+ :param create: Indicates whether the record has been newly
+ created or updated
+ """
+ if self.exists() or ids:
+ record = next(iter(self)) if len(self) > 1 else self
+ self.env['bus.bus'].sendone('refresh', {
+ 'create': create if ids else record.exists() and record.create_date == record.write_date or False,
+ 'model': model or self._name,
+ 'uid': user and user.id or False if ids else self.env.user.id,
+ 'ids': ids or self.mapped('id')})
diff --git a/muk_web_client_refresh/models/ir_actions.py b/muk_web_client_refresh/models/ir_actions.py
index ce4acd6..7d3dc85 100644
--- a/muk_web_client_refresh/models/ir_actions.py
+++ b/muk_web_client_refresh/models/ir_actions.py
@@ -2,35 +2,18 @@
#
# Copyright (C) 2018 MuK IT GmbH
#
-# Odoo Proprietary License v1.0
-#
-# This software and associated files (the "Software") may only be used
-# (executed, modified, executed after modifications) if you have
-# purchased a valid license from the authors, typically via Odoo Apps,
-# or if you have received a written agreement from the authors of the
-# Software (see the COPYRIGHT file).
-#
-# You may develop Odoo modules that use the Software as a library
-# (typically by depending on it, importing it and using its resources),
-# but without copying any source code or material from the Software.
-# You may distribute those modules under the license of your choice,
-# provided that this license is compatible with the terms of the Odoo
-# Proprietary License (For example: LGPL, MIT, or proprietary licenses
-# similar to this one).
-#
-# It is forbidden to publish, distribute, sublicense, or sell copies of
-# the Software or modified copies of the Software.
-#
-# The above copyright notice and this permission notice must be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-# DEALINGS IN THE SOFTWARE.
+# 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 .
#
###################################################################################
@@ -59,9 +42,9 @@ class ServerActions(models.Model):
def run_action_refresh_multi(self, action, eval_context={}):
record = eval_context.get('record', None)
records = eval_context.get('records', None)
- self.env["bus.bus"].sendone("refresh", {
- "uid": self.env.uid,
- "model": action.model_name,
- "ids": list(set().union(record and record.ids or [], records and records.ids or [])),
- "create": record and record.exists() and record.create_date == record.write_date,
+ self.env['bus.bus'].sendone('refresh', {
+ 'uid': self.env.uid,
+ 'model': action.model_name,
+ 'ids': list(set().union(record and record.ids or [], records and records.ids or [])),
+ 'create': record and record.exists() and record.create_date == record.write_date,
})
\ No newline at end of file