MuK IT GmbH
6 years ago
4 changed files with 75 additions and 35 deletions
-
2muk_web_client_refresh/__manifest__.py
-
1muk_web_client_refresh/models/__init__.py
-
56muk_web_client_refresh/models/base.py
-
47muk_web_client_refresh/models/ir_actions.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 <http://www.gnu.org/licenses/>. |
|||
# |
|||
################################################################################### |
|||
|
|||
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')}) |
Write
Preview
Loading…
Cancel
Save
Reference in new issue