From e8f9427c284275a68bec0ab057625b855bd14140 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 7 Mar 2012 10:09:28 +0100 Subject: [PATCH 01/31] [ADD] Moved base_need_action file from addons/mail to server, in res/res.need_action file, holding the need_action mechanism. Also cleaned code. bzr revid: tde@openerp.com-20120307090928-0wxjmukqj9n0kkay --- openerp/addons/base/res/__init__.py | 1 + openerp/addons/base/res/res_needaction.py | 67 +++++++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 openerp/addons/base/res/res_needaction.py diff --git a/openerp/addons/base/res/__init__.py b/openerp/addons/base/res/__init__.py index 2b4da739f54..8bfaba2fe24 100644 --- a/openerp/addons/base/res/__init__.py +++ b/openerp/addons/base/res/__init__.py @@ -34,6 +34,7 @@ import res_request import res_lang import res_log import res_widget +import res_needaction import ir_property import wizard diff --git a/openerp/addons/base/res/res_needaction.py b/openerp/addons/base/res/res_needaction.py new file mode 100644 index 00000000000..529444b6e4e --- /dev/null +++ b/openerp/addons/base/res/res_needaction.py @@ -0,0 +1,67 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2009-Today OpenERP SA () +# +# 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 time +from osv import osv, fields +from tools.translate import _ + +class res_needaction(osv.osv): + '''Mixin class for object implementing a need_action mechanism + + Need action mechanism can be used by objects wanting to be able to + signal that an action is required on a particular record. If in the + business logic an action must be performed by somebody, for instance + validation by a manager, this mechanism allows to add have a field + linking to the user requested to perform the action. + + Technically, this class adds a need_action_user_id field; when + set to false, no action is required; when an user_id is set, + this user has an action to perform. Setting an user_id is done + through redefining the get_needaction_user_id method, that + stores the need_action_user_id function fields. + + This mechanism is used for instance to display the number of pending action + in menus. + ''' + _name = 'res.needaction' + _description = 'Need action Engine' + + def get_needaction_user_id(self, cr, uid, ids, name, arg, context=None): + if context is None: + context = {} + result = {} + for obj in self.browse(cr, uid, ids, context=context): + result[obj.id] = False + return result + + ''' Wrapper: in 6.1 the reference to a method is given to a function + field, not the function name. Inheritance is therefore not directly + possible.''' + def get_needaction_user_id_wrapper(self, cr, uid, ids, name, arg, context=None): + return self.get_needaction_user_id(cr, uid, ids, name, arg, context=context) + + _columns = { + 'need_action_user_id': fields.function(get_needaction_user_id_wrapper, + type='many2one', relation='res.users', store=True, + select=1, string='User'), + } + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: From 2781e5c06d2d188f4236bf02f997204f5a66aa3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 21 Mar 2012 10:10:02 +0100 Subject: [PATCH 02/31] [FIX] Added a type checking in write method, because sometimes an id is given instead of ids. bzr revid: tde@openerp.com-20120321091002-40yogha4vho3d6vi --- openerp/addons/base/base_needaction.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/openerp/addons/base/base_needaction.py b/openerp/addons/base/base_needaction.py index 62a36162e89..e7ef518e14e 100644 --- a/openerp/addons/base/base_needaction.py +++ b/openerp/addons/base/base_needaction.py @@ -131,6 +131,8 @@ class base_needaction(osv.osv): def write(self, cr, uid, ids, values, context=None): if context is None: context = {} + if isinstance(ids, (int, long)): + ids = [ids] # perform write write_res = super(base_needaction, self).write(cr, uid, ids, values, context=context) # get and update user_ids From c1737b12b758c1a10e619a51663876410094df13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Mon, 26 Mar 2012 16:00:03 +0200 Subject: [PATCH 03/31] [IMP] res.users: form and preference views: added name to some fields, for view inheritance purpose. bzr revid: tde@openerp.com-20120326140003-g9ghmx40st6rlhcf --- openerp/addons/base/base_update.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/openerp/addons/base/base_update.xml b/openerp/addons/base/base_update.xml index 5d6f214c0a9..2e595864691 100644 --- a/openerp/addons/base/base_update.xml +++ b/openerp/addons/base/base_update.xml @@ -85,7 +85,7 @@ - + @@ -128,11 +128,11 @@ - + - + From f8510eee62b6389e231f1b7fc76e62545f8061ed Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Fri, 30 Mar 2012 16:27:31 +0530 Subject: [PATCH 04/31] [IMP] Improved code to show need action counter bzr revid: tpa@tinyerp.com-20120330105731-ss03y3l4fi5mq3jd --- addons/web/controllers/main.py | 4 ++-- addons/web/static/src/css/base.css | 11 +++++++++++ addons/web/static/src/xml/base.xml | 5 +++++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index c159929ead0..2dc1c32f88f 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -875,13 +875,13 @@ class Menu(openerpweb.Controller): context = req.session.eval_context(req.context) Menus = req.session.model('ir.ui.menu') - menu_roots = Menus.read(self.do_get_user_roots(req), ['name', 'sequence', 'parent_id', 'action'], context) + menu_roots = Menus.read(self.do_get_user_roots(req), ['name', 'sequence', 'parent_id', 'action', 'needaction_uid_ctr', 'uses_needaction'], context) menu_root = {'id': False, 'name': 'root', 'parent_id': [-1, ''], 'children' : menu_roots} # menus are loaded fully unlike a regular tree view, cause there are a # limited number of items (752 when all 6.1 addons are installed) menu_ids = Menus.search([], 0, False, False, context) - menu_items = Menus.read(menu_ids, ['name', 'sequence', 'parent_id', 'action'], context) + menu_items = Menus.read(menu_ids, ['name', 'sequence', 'parent_id', 'action', 'needaction_uid_ctr', 'uses_needaction'], context) # adds roots at the end of the sequence, so that they will overwrite # equivalent menu items from full menu read when put into id:item # mapping, resulting in children being correctly set on the roots. diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index b0a2b7945b9..3f44d6f6cda 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -264,6 +264,17 @@ border-right: 4px solid transparent; border-top: 4px solid #4c4c4c; } +.oe_menu_counter { + float:right; + background: #eeeeee; + color: #8a89ba; + font-weight: bold; + border-width:1px; + padding-top:2px; + padding-right:4px; + padding-left:4px; + border-radius:2px; +} .openerp2 .oe_dropdown { position: relative; } diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 894f7353c1a..fdef85aae5d 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -368,6 +368,11 @@ t-att-data-action-model="menu.action ? menu.action.split(',')[0] : ''" t-att-data-action-id="menu.action ? menu.action.split(',')[1] : ''"> + +
+ +
+
From a3a5ea21ed063492df027edb641790f8e6fa919f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Fri, 30 Mar 2012 14:59:28 +0200 Subject: [PATCH 05/31] [IMP] Propagated ir.ui.menu new fields name change. bzr revid: tde@openerp.com-20120330125928-ku9oqpb0pq4ehu6m --- addons/web/controllers/main.py | 4 ++-- addons/web/static/src/xml/base.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index 2dc1c32f88f..47e02080adc 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -875,13 +875,13 @@ class Menu(openerpweb.Controller): context = req.session.eval_context(req.context) Menus = req.session.model('ir.ui.menu') - menu_roots = Menus.read(self.do_get_user_roots(req), ['name', 'sequence', 'parent_id', 'action', 'needaction_uid_ctr', 'uses_needaction'], context) + menu_roots = Menus.read(self.do_get_user_roots(req), ['name', 'sequence', 'parent_id', 'action', 'needaction_enabled', 'needaction_counter'], context) menu_root = {'id': False, 'name': 'root', 'parent_id': [-1, ''], 'children' : menu_roots} # menus are loaded fully unlike a regular tree view, cause there are a # limited number of items (752 when all 6.1 addons are installed) menu_ids = Menus.search([], 0, False, False, context) - menu_items = Menus.read(menu_ids, ['name', 'sequence', 'parent_id', 'action', 'needaction_uid_ctr', 'uses_needaction'], context) + menu_items = Menus.read(menu_ids, ['name', 'sequence', 'parent_id', 'action', 'needaction_enabled', 'needaction_counter'], context) # adds roots at the end of the sequence, so that they will overwrite # equivalent menu items from full menu read when put into id:item # mapping, resulting in children being correctly set on the roots. diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index fdef85aae5d..80e097e4a5e 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -368,9 +368,9 @@ t-att-data-action-model="menu.action ? menu.action.split(',')[0] : ''" t-att-data-action-id="menu.action ? menu.action.split(',')[1] : ''"> - +
- +
From 5959157cc55ad80dd93347ca698a88c8d2ba6342 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Mon, 2 Apr 2012 13:47:46 +0200 Subject: [PATCH 06/31] [REM] Removed res.log feature in ORM. However, the res.log table stays, because it is still used notably in publisher_warranty, that must be checked to see how it should be updated with OpenChatter. bzr revid: tde@openerp.com-20120402114746-unxkhxutivx2hp7f --- openerp/addons/base/ir/ir_model.py | 4 ++-- .../base/publisher_warranty/publisher_warranty.py | 1 + openerp/modules/loading.py | 5 +---- openerp/osv/orm.py | 12 +----------- 4 files changed, 5 insertions(+), 17 deletions(-) diff --git a/openerp/addons/base/ir/ir_model.py b/openerp/addons/base/ir/ir_model.py index 1af5818438a..bfbe734adbf 100644 --- a/openerp/addons/base/ir/ir_model.py +++ b/openerp/addons/base/ir/ir_model.py @@ -717,8 +717,8 @@ class ir_model_data(osv.osv): model_obj = self.pool.get(model) if not context: context = {} - # records created during module install should result in res.log entries that are already read! - context = dict(context, res_log_read=True) + # TODO: records created during module install should not display the messages of OpenChatter + context = dict(context) if xml_id and ('.' in xml_id): assert len(xml_id.split('.'))==2, _("'%s' contains too many dots. XML ids should not contain dots ! These are used to refer to other modules data, as in module.reference_id") % (xml_id) module, xml_id = xml_id.split('.') diff --git a/openerp/addons/base/publisher_warranty/publisher_warranty.py b/openerp/addons/base/publisher_warranty/publisher_warranty.py index 0669dadb228..2f885f318a4 100644 --- a/openerp/addons/base/publisher_warranty/publisher_warranty.py +++ b/openerp/addons/base/publisher_warranty/publisher_warranty.py @@ -187,6 +187,7 @@ class publisher_warranty_contract(osv.osv): limit_date = (datetime.datetime.now() - _PREVIOUS_LOG_CHECK).strftime(misc.DEFAULT_SERVER_DATETIME_FORMAT) + # TODO: must be updated with OpenChatter ? for message in result["messages"]: ids = self.pool.get("res.log").search(cr, uid, [("res_model", "=", "publisher_warranty.contract"), ("create_date", ">=", limit_date), diff --git a/openerp/modules/loading.py b/openerp/modules/loading.py index efc73d44a58..8ed79a4d615 100644 --- a/openerp/modules/loading.py +++ b/openerp/modules/loading.py @@ -212,10 +212,7 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, skip_modules= delattr(package, kind) cr.commit() - - # mark new res_log records as read - cr.execute("update res_log set read=True where create_date >= %s", (dt_before_load,)) - + cr.commit() return loaded_modules, processed_modules diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index 6d65edfbb5c..776d639bf43 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -710,17 +710,7 @@ class BaseModel(object): CONCURRENCY_CHECK_FIELD = '__last_update' def log(self, cr, uid, id, message, secondary=False, context=None): - if context and context.get('disable_log'): - return True - return self.pool.get('res.log').create(cr, uid, - { - 'name': message, - 'res_model': self._name, - 'secondary': secondary, - 'res_id': id, - }, - context=context - ) + return _logger.warning("log() is deprecated. Please use OpenChatter notification system instead of the res.log mechanism.") @staticmethod def get_needaction_info(cr, uid, model_name, user_id, limit=None, order=None, domain=False, context=None): From ecad81b8814802bd3c57bc2752339a8b35eaaebd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 3 Apr 2012 09:47:35 +0200 Subject: [PATCH 07/31] [IMP] Added a variable in context for install mode bzr revid: tde@openerp.com-20120403074735-6gv0d64xb6dq7fzu --- openerp/addons/base/ir/ir_model.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/ir/ir_model.py b/openerp/addons/base/ir/ir_model.py index bfbe734adbf..50f9872d522 100644 --- a/openerp/addons/base/ir/ir_model.py +++ b/openerp/addons/base/ir/ir_model.py @@ -718,7 +718,7 @@ class ir_model_data(osv.osv): if not context: context = {} # TODO: records created during module install should not display the messages of OpenChatter - context = dict(context) + context = dict(context, install_mode=True) if xml_id and ('.' in xml_id): assert len(xml_id.split('.'))==2, _("'%s' contains too many dots. XML ids should not contain dots ! These are used to refer to other modules data, as in module.reference_id") % (xml_id) module, xml_id = xml_id.split('.') From cb43134c3c6b0a2aaee37fc559e6f5e067e8ca0b Mon Sep 17 00:00:00 2001 From: "Sbh (Openerp)" Date: Tue, 3 Apr 2012 16:58:16 +0530 Subject: [PATCH 08/31] [ADD]: Add the fetuare of bold font in list view bzr revid: sbh@tinyerp.com-20120403112816-qccbdf3c4alh0k2g --- addons/web/static/src/js/view_list.js | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js index e8fff450c6e..53f66f52d76 100644 --- a/addons/web/static/src/js/view_list.js +++ b/addons/web/static/src/js/view_list.js @@ -82,8 +82,13 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView# } self.compute_aggregates(); }); - this.no_leaf = false; + var domain = [['res_model','=', this.model]]; + new openerp.web.DataSetSearch( + this, 'ir.needaction_users_rel', this.dataset.get_context(), domain) + .read_slice().done(function(result) { + self.needaction_ids = _.pluck(result, 'res_id'); + }) }, /** * Retrieves the view's number of records per page (|| section) @@ -154,16 +159,21 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView# current_date: new Date().toString('yyyy-MM-dd') // TODO: time, datetime, relativedelta }); + var style= ''; + if(this.needaction_ids.indexOf(record.attributes.id) >= 0) { + style = 'font-weight: bold;'; + } for(var i=0, len=this.colors.length; i Date: Tue, 3 Apr 2012 17:19:16 +0530 Subject: [PATCH 09/31] [IMP] set user_id bzr revid: kjo@tinyerp.com-20120403114916-6eopf4c97ivk718p --- addons/web/static/src/js/view_list.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js index 53f66f52d76..bca01516d1a 100644 --- a/addons/web/static/src/js/view_list.js +++ b/addons/web/static/src/js/view_list.js @@ -83,7 +83,7 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView# self.compute_aggregates(); }); this.no_leaf = false; - var domain = [['res_model','=', this.model]]; + var domain = [['res_model','=', this.model], ['user_id' , '=', this.session.uid]]; new openerp.web.DataSetSearch( this, 'ir.needaction_users_rel', this.dataset.get_context(), domain) .read_slice().done(function(result) { From 741381eb21a3f4d335b79438c3d442910ba73511 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 3 Apr 2012 17:29:49 +0200 Subject: [PATCH 10/31] [REF] Removed res.log. bzr revid: tde@openerp.com-20120403152949-tw1mphjf2tia4q9a --- openerp/addons/base/__openerp__.py | 1 - .../publisher_warranty/publisher_warranty.py | 30 +++---- openerp/addons/base/res/__init__.py | 1 - openerp/addons/base/res/res_log.py | 80 ------------------- openerp/addons/base/res/res_log_view.xml | 65 --------------- .../addons/base/security/ir.model.access.csv | 1 - 6 files changed, 15 insertions(+), 163 deletions(-) delete mode 100644 openerp/addons/base/res/res_log.py delete mode 100644 openerp/addons/base/res/res_log_view.xml diff --git a/openerp/addons/base/__openerp__.py b/openerp/addons/base/__openerp__.py index a353344190f..393e7651bda 100644 --- a/openerp/addons/base/__openerp__.py +++ b/openerp/addons/base/__openerp__.py @@ -58,7 +58,6 @@ 'module/wizard/base_update_translations_view.xml', 'res/res_request_view.xml', 'res/res_lang_view.xml', - 'res/res_log_view.xml', 'res/res_partner_report.xml', 'res/res_partner_view.xml', 'res/res_partner_shortcut_data.xml', diff --git a/openerp/addons/base/publisher_warranty/publisher_warranty.py b/openerp/addons/base/publisher_warranty/publisher_warranty.py index 2f885f318a4..55e26d9623e 100644 --- a/openerp/addons/base/publisher_warranty/publisher_warranty.py +++ b/openerp/addons/base/publisher_warranty/publisher_warranty.py @@ -188,21 +188,21 @@ class publisher_warranty_contract(osv.osv): limit_date = (datetime.datetime.now() - _PREVIOUS_LOG_CHECK).strftime(misc.DEFAULT_SERVER_DATETIME_FORMAT) # TODO: must be updated with OpenChatter ? - for message in result["messages"]: - ids = self.pool.get("res.log").search(cr, uid, [("res_model", "=", "publisher_warranty.contract"), - ("create_date", ">=", limit_date), - ("name", "=", message)]) - if ids: - continue - self.pool.get('res.log').create(cr, uid, - { - 'name': message, - 'res_model': "publisher_warranty.contract", - "read": True, - "user_id": False, - }, - context=context - ) + #for message in result["messages"]: + #ids = self.pool.get("res.log").search(cr, uid, [("res_model", "=", "publisher_warranty.contract"), + #("create_date", ">=", limit_date), + #("name", "=", message)]) + #if ids: + #continue + #self.pool.get('res.log').create(cr, uid, + #{ + #'name': message, + #'res_model': "publisher_warranty.contract", + #"read": True, + #"user_id": False, + #}, + #context=context + #) except Exception: if cron_mode: return False # we don't want to see any stack trace in cron diff --git a/openerp/addons/base/res/__init__.py b/openerp/addons/base/res/__init__.py index 2b4da739f54..1131564a812 100644 --- a/openerp/addons/base/res/__init__.py +++ b/openerp/addons/base/res/__init__.py @@ -32,7 +32,6 @@ import res_company import res_users import res_request import res_lang -import res_log import res_widget import ir_property diff --git a/openerp/addons/base/res/res_log.py b/openerp/addons/base/res/res_log.py deleted file mode 100644 index ef49b52ee52..00000000000 --- a/openerp/addons/base/res/res_log.py +++ /dev/null @@ -1,80 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# Copyright (C) 2004-2009 Tiny SPRL (). -# -# 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 . -# -############################################################################## - -from osv import fields, osv - -class res_log(osv.osv): - _name = 'res.log' - _columns = { - 'name': fields.char('Message', size=250, help='The logging message.', required=True, select=1), - 'user_id': fields.many2one('res.users','User'), - 'res_model': fields.char('Object', size=128, select=1), - 'context': fields.char('Context', size=250), - 'res_id': fields.integer('Object ID'), - 'secondary': fields.boolean('Secondary Log', help='Do not display this log if it belongs to the same object the user is working on'), - 'create_date': fields.datetime('Creation Date', readonly=True, select=1), - 'read': fields.boolean('Read', help="If this log item has been read, get() should not send it to the client"), - } - _defaults = { - 'user_id': lambda self,cr,uid,ctx: uid, - 'context': "{}", - 'read': False, - } - _order='create_date desc' - - _index_name = 'res_log_uid_read' - def _auto_init(self, cr, context=None): - super(res_log, self)._auto_init(cr, context) - cr.execute('SELECT 1 FROM pg_indexes WHERE indexname=%s', - (self._index_name,)) - if not cr.fetchone(): - cr.execute('CREATE INDEX %s ON res_log (user_id, read)' % - self._index_name) - - def create(self, cr, uid, vals, context=None): - create_context = context and dict(context) or {} - if 'res_log_read' in create_context: - vals['read'] = create_context.pop('res_log_read') - if create_context and not vals.get('context'): - vals['context'] = create_context - return super(res_log, self).create(cr, uid, vals, context=context) - - # TODO: do not return secondary log if same object than in the model (but unlink it) - def get(self, cr, uid, context=None): - unread_log_ids = self.search(cr, uid, - [('user_id','=',uid), ('read', '=', False)], context=context) - res = self.read(cr, uid, unread_log_ids, - ['name','res_model','res_id','context'], - context=context) - res.reverse() - result = [] - res_dict = {} - for r in res: - t = (r['res_model'], r['res_id']) - if t not in res_dict: - res_dict[t] = True - result.insert(0,r) - self.write(cr, uid, unread_log_ids, {'read': True}, context=context) - return result - -res_log() - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/addons/base/res/res_log_view.xml b/openerp/addons/base/res/res_log_view.xml deleted file mode 100644 index e8cb912e227..00000000000 --- a/openerp/addons/base/res/res_log_view.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - res.log.search - res.log - search - - - - - - - - - - - - - - - - - res.log.tree - res.log - tree - - - - - - - - - - res.log.form - res.log - form - -
- - - - - - - - -
-
-
- - - Client Logs - res.log - form - {'search_default_my': 1} - - -
-
diff --git a/openerp/addons/base/security/ir.model.access.csv b/openerp/addons/base/security/ir.model.access.csv index 1ed4d96c223..dbd263137dc 100644 --- a/openerp/addons/base/security/ir.model.access.csv +++ b/openerp/addons/base/security/ir.model.access.csv @@ -117,7 +117,6 @@ "access_ir_filters","ir_filters_all","model_ir_filters",,1,1,1,1 "access_res_widget","res.widget","model_res_widget","group_erp_manager",1,1,1,1 "access_res_widget_user","res.widget.user","model_res_widget",,1,0,0,0 -"access_res_log_all","res.log","model_res_log",,1,1,1,1 "access_ir_config_parameter","ir_config_parameter","model_ir_config_parameter",,1,0,0,0 "access_ir_mail_server_all","ir_mail_server","model_ir_mail_server",,1,0,0,0 "access_ir_actions_todo_category","ir_actions_todo_category","model_ir_actions_todo_category","group_system",1,1,1,1 From 51024e1dcb06d0c376d37fcc7815254d805fe3bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 3 Apr 2012 22:48:48 +0200 Subject: [PATCH 11/31] [REM] Removed res.log references in publisher_warranty. TODO: solve this. bzr revid: tde@openerp.com-20120403204848-knh44gjnenbmcp6p --- .../publisher_warranty/publisher_warranty.py | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/openerp/addons/base/publisher_warranty/publisher_warranty.py b/openerp/addons/base/publisher_warranty/publisher_warranty.py index 55e26d9623e..8dc46870642 100644 --- a/openerp/addons/base/publisher_warranty/publisher_warranty.py +++ b/openerp/addons/base/publisher_warranty/publisher_warranty.py @@ -216,22 +216,14 @@ class publisher_warranty_contract(osv.osv): @return: A list of html messages with ids, can be False or empty. @rtype: list of tuples(int,string) """ - ids = self.pool.get('res.log').search(cr, uid, [("res_model", "=", "publisher_warranty.contract")] - , order="create_date desc", limit=limit) + ids = [] + #ids = self.pool.get('res.log').search(cr, uid, [("res_model", "=", "publisher_warranty.contract")] + #, order="create_date desc", limit=limit) if not ids: return [] - messages = [(x.id, x.name) for x in self.pool.get('res.log').browse(cr, uid, ids)] - + messages = [(x.id, x.name) for x in self.pool.get('res.log').browse(cr, uid, ids), context=context] return messages - def del_user_message(self, cr, uid, id, context=None): - """ - Delete a message. - """ - self.pool.get('res.log').unlink(cr, uid, [id]) - - return True - _columns = { 'name' : fields.char('Serial Key', size=384, required=True, help="Your OpenERP Publisher's Warranty Contract unique key, also called serial number."), 'date_start' : fields.date('Starting Date', readonly=True), From 4229755f81418a3ba34111bc1daf7eb595cdaa15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 3 Apr 2012 22:54:53 +0200 Subject: [PATCH 12/31] [REM] Removed references to res.log. bzr revid: tde@openerp.com-20120403205453-5e43bfk65xkuqpum --- addons/web/static/src/css/base_old.css | 39 -------------------- addons/web/static/src/js/views.js | 50 -------------------------- addons/web/static/src/xml/base.xml | 7 ---- 3 files changed, 96 deletions(-) diff --git a/addons/web/static/src/css/base_old.css b/addons/web/static/src/css/base_old.css index 2b6f6fbf639..dbeac36f852 100644 --- a/addons/web/static/src/css/base_old.css +++ b/addons/web/static/src/css/base_old.css @@ -1354,45 +1354,6 @@ label.error { text-decoration: underline; color: inherit; } -.openerp .oe-view-manager-logs { - clear: both; - background: #fff; - margin: 0.25em 0; - font-size: 85%; - color: #4C4C4C; - position: relative; - overflow: hidden; -} -.openerp .oe-view-manager-logs ul { - margin: 0; - padding: 0 10px; - list-style: none; -} -.openerp .oe-view-manager-logs li:before { - content: '\2192 '; -} -.openerp .oe-view-manager-logs a { - text-decoration: none; - color: inherit; -} -/* only display first three log items of a folded logs list */ -.openerp .oe-view-manager-logs.oe-folded li:nth-child(n+4) { - display: none; -} -/* display link to more logs if there are more logs to view and the logview is - currently folded */ -.openerp .oe-view-manager-logs a.oe-more-logs { - display: none; -} -.openerp .oe-view-manager-logs.oe-folded.oe-has-more a.oe-more-logs { - display: block; -} -.openerp .oe-view-manager-logs a.oe-remove-everything { - position: absolute; - top: 0; - right: 0; - cursor: pointer; -} .openerp .view-manager-main-sidebar { width: 180px; diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index 43ecc8444fc..b54eff91078 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -547,17 +547,6 @@ session.web.ViewManagerAction = session.web.ViewManager.extend(/** @lends oepner } } - var $res_logs = this.$element.find('.oe-view-manager-logs:first'); - $res_logs.delegate('a.oe-more-logs', 'click', function () { - $res_logs.removeClass('oe-folded'); - return false; - }).delegate('a.oe-remove-everything', 'click', function () { - $res_logs.removeClass('oe-has-more').find('ul').empty(); - $res_logs.css('display','none'); - return false; - }); - $res_logs.css('display','none'); - return manager_ready; }, on_debug_changed: function (evt) { @@ -661,8 +650,6 @@ session.web.ViewManagerAction = session.web.ViewManager.extend(/** @lends oepner return $.when(this._super(view_type, no_store)).then(function () { self.shortcut_check(self.views[view_type]); - self.$element.find('.oe-view-manager-logs:first').addClass('oe-folded').removeClass('oe-has-more').css('display','none').find('ul').empty(); - var controller = self.views[self.active_view].controller, fvg = controller.fields_view, view_id = (fvg && fvg.view_id) || '--'; @@ -744,43 +731,6 @@ session.web.ViewManagerAction = session.web.ViewManager.extend(/** @lends oepner } }); }, - /** - * Intercept do_action resolution from children views - */ - on_action_executed: function () { - return new session.web.DataSet(this, 'res.log') - .call('get', [], this.do_display_log); - }, - /** - * @param {Array} log_records - */ - do_display_log: function (log_records) { - var self = this; - var cutoff = 3; - var $logs = this.$element.find('.oe-view-manager-logs:first').addClass('oe-folded').css('display', 'block'); - var $logs_list = $logs.find('ul').empty(); - $logs.toggleClass('oe-has-more', log_records.length > cutoff); - _(log_records.reverse()).each(function (record) { - var context = {}; - if (record.context) { - try { context = py.eval(record.context); } - catch (e) { /* TODO: what do I do now? */ } - } - $(_.str.sprintf('
  • %s
  • ', record.name)) - .appendTo($logs_list) - .delegate('a', 'click', function () { - self.do_action({ - type: 'ir.actions.act_window', - res_model: record.res_model, - res_id: record.res_id, - // TODO: need to have an evaluated context here somehow - context: context, - views: [[context.view_id || false, 'form']] - }); - return false; - }); - }); - }, display_title: function () { return this.action.name; } diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 80e097e4a5e..c3df9880fe9 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -457,13 +457,6 @@