From 27970ad2ab0ff4cb01b5f41d98e41eeb1213f9ed Mon Sep 17 00:00:00 2001 From: oihane Date: Fri, 1 Aug 2014 19:24:17 +0200 Subject: [PATCH 1/3] [ADD] Migrated for Odoo --- .../ChangeLog.txt | 0 .../wizard => mass_editing}/__init__.py | 8 ++-- .../__openerp__.py | 25 ++++++----- .../mass_editing => mass_editing}/i18n/es.po | 0 .../mass_editing => mass_editing}/i18n/fr.po | 0 .../i18n/fr_CA.po | 0 .../i18n/mass_editing.pot | 0 .../models}/__init__.py | 9 ++-- .../models}/mass_editing.py | 45 +++++++++---------- .../security/ir.model.access.csv | 0 .../views}/mass_editing_view.xml | 0 mass_editing/wizard/__init__.py | 23 ++++++++++ .../wizard/mass_editing_wizard.py | 23 ++++------ 13 files changed, 74 insertions(+), 59 deletions(-) rename {__unported__/mass_editing => mass_editing}/ChangeLog.txt (100%) rename {__unported__/mass_editing/wizard => mass_editing}/__init__.py (83%) rename {__unported__/mass_editing => mass_editing}/__openerp__.py (75%) rename {__unported__/mass_editing => mass_editing}/i18n/es.po (100%) rename {__unported__/mass_editing => mass_editing}/i18n/fr.po (100%) rename {__unported__/mass_editing => mass_editing}/i18n/fr_CA.po (100%) rename {__unported__/mass_editing => mass_editing}/i18n/mass_editing.pot (100%) rename {__unported__/mass_editing => mass_editing/models}/__init__.py (83%) rename {__unported__/mass_editing => mass_editing/models}/mass_editing.py (81%) rename {__unported__/mass_editing => mass_editing}/security/ir.model.access.csv (100%) rename {__unported__/mass_editing => mass_editing/views}/mass_editing_view.xml (100%) create mode 100644 mass_editing/wizard/__init__.py rename {__unported__/mass_editing => mass_editing}/wizard/mass_editing_wizard.py (95%) diff --git a/__unported__/mass_editing/ChangeLog.txt b/mass_editing/ChangeLog.txt similarity index 100% rename from __unported__/mass_editing/ChangeLog.txt rename to mass_editing/ChangeLog.txt diff --git a/__unported__/mass_editing/wizard/__init__.py b/mass_editing/__init__.py similarity index 83% rename from __unported__/mass_editing/wizard/__init__.py rename to mass_editing/__init__.py index dc5322f17..686e4a83a 100644 --- a/__unported__/mass_editing/wizard/__init__.py +++ b/mass_editing/__init__.py @@ -2,7 +2,8 @@ ############################################################################## # # This module uses OpenERP, Open Source Management Solution Framework. -# Copyright (C) 2012-Today Serpent Consulting Services () +# Copyright (C): +# 2012-Today Serpent Consulting Services (", + ], "category": "Tools", "website": "http://www.serpentcs.com", "description": """ -This module provides the functionality to add, update or remove the values""" - """of more than one records on the fly at the same time. + This module provides the functionality to add, update or remove the values + of more than one records on the fly at the same time. You can configure mass editing for any OpenERP model. - The video explaining the features and how-to for OpenERP Version 6""" - """ is here http://t.co/wukYMx1A - The video explaining the features and how-to for OpenERP Version 7 is""" - """ here : http://www.youtube.com/watch?v=9BH0o74A748&feature=youtu.be - For more details/customization/feedback contact us on""" - """ contact@serpentcs.com. + The video explaining the features and how-to for OpenERP Version 6 + is here http://t.co/wukYMx1A + The video explaining the features and how-to for OpenERP Version 7 is + here : http://www.youtube.com/watch?v=9BH0o74A748&feature=youtu.be + For more details/customization/feedback contact us on + contact@serpentcs.com. """, 'depends': ['base'], 'data': [ "security/ir.model.access.csv", - 'mass_editing_view.xml', + 'views/mass_editing_view.xml', ], - 'installable': False, + 'installable': True, 'application': True, 'auto_install': False, } - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/__unported__/mass_editing/i18n/es.po b/mass_editing/i18n/es.po similarity index 100% rename from __unported__/mass_editing/i18n/es.po rename to mass_editing/i18n/es.po diff --git a/__unported__/mass_editing/i18n/fr.po b/mass_editing/i18n/fr.po similarity index 100% rename from __unported__/mass_editing/i18n/fr.po rename to mass_editing/i18n/fr.po diff --git a/__unported__/mass_editing/i18n/fr_CA.po b/mass_editing/i18n/fr_CA.po similarity index 100% rename from __unported__/mass_editing/i18n/fr_CA.po rename to mass_editing/i18n/fr_CA.po diff --git a/__unported__/mass_editing/i18n/mass_editing.pot b/mass_editing/i18n/mass_editing.pot similarity index 100% rename from __unported__/mass_editing/i18n/mass_editing.pot rename to mass_editing/i18n/mass_editing.pot diff --git a/__unported__/mass_editing/__init__.py b/mass_editing/models/__init__.py similarity index 83% rename from __unported__/mass_editing/__init__.py rename to mass_editing/models/__init__.py index f203ff27f..c6f9baf33 100644 --- a/__unported__/mass_editing/__init__.py +++ b/mass_editing/models/__init__.py @@ -2,7 +2,8 @@ ############################################################################## # # This module uses OpenERP, Open Source Management Solution Framework. -# Copyright (C) 2012-Today Serpent Consulting Services () +# Copyright (C): +# 2012-Today Serpent Consulting Services () # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -19,8 +20,4 @@ # ############################################################################## -import mass_editing -import wizard - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: - +from . import mass_editing diff --git a/__unported__/mass_editing/mass_editing.py b/mass_editing/models/mass_editing.py similarity index 81% rename from __unported__/mass_editing/mass_editing.py rename to mass_editing/models/mass_editing.py index 9f7245743..053ddf77f 100644 --- a/__unported__/mass_editing/mass_editing.py +++ b/mass_editing/models/mass_editing.py @@ -20,11 +20,12 @@ # ############################################################################## -from openerp.osv import orm, fields, osv +from openerp import SUPERUSER_ID +from openerp.osv import orm, fields from openerp.tools.translate import _ -class ir_model_fields(orm.Model): +class IrModelFields(orm.Model): _inherit = 'ir.model.fields' def search( @@ -38,14 +39,12 @@ class ir_model_fields(orm.Model): 'model_id', 'in', map(int, domain[2][1:-1].split(',')))] else: model_domain.append(domain) - return super(ir_model_fields, self).search( + return super(IrModelFields, self).search( cr, uid, model_domain, offset=offset, limit=limit, order=order, context=context, count=count) -ir_model_fields() - -class mass_object(orm.Model): +class MassObject(orm.Model): _name = "mass.object" _columns = { @@ -75,7 +74,7 @@ class mass_object(orm.Model): if not model_id: return {'value': {'model_ids': [(6, 0, [])]}} model_ids = [model_id] - model_obj = self.pool.get('ir.model') + model_obj = self.pool['ir.model'] active_model_obj = self.pool.get(model_obj.browse( cr, uid, model_id).model) if active_model_obj._inherits: @@ -87,12 +86,12 @@ class mass_object(orm.Model): def create_action(self, cr, uid, ids, context=None): vals = {} - action_obj = self.pool.get('ir.actions.act_window') - ir_values_obj = self.pool.get('ir.values') + action_obj = self.pool['ir.actions.act_window'] + ir_values_obj = self.pool['ir.values'] for data in self.browse(cr, uid, ids, context=context): src_obj = data.model_id.model button_name = _('Mass Editing (%s)') % data.name - vals['ref_ir_act_window'] = action_obj.create(cr, uid, { + vals['ref_ir_act_window'] = action_obj.create(cr, SUPERUSER_ID, { 'name': button_name, 'type': 'ir.actions.act_window', 'res_model': 'mass.editing.wizard', @@ -103,7 +102,7 @@ class mass_object(orm.Model): 'target': 'new', 'auto_refresh': 1, }, context) - vals['ref_ir_value'] = ir_values_obj.create(cr, uid, { + vals['ref_ir_value'] = ir_values_obj.create(cr, SUPERUSER_ID, { 'name': button_name, 'model': src_obj, 'key2': 'client_action_multi', @@ -122,28 +121,28 @@ class mass_object(orm.Model): for template in self.browse(cr, uid, ids, context=context): try: if template.ref_ir_act_window: - self.pool.get('ir.actions.act_window').unlink( - cr, uid, template.ref_ir_act_window.id, context) + act_window_obj = self.pool['ir.actions.act_window'] + act_window_obj.unlink( + cr, SUPERUSER_ID, [template.ref_ir_act_window.id], + context=context) if template.ref_ir_value: - ir_values_obj = self.pool.get('ir.values') + ir_values_obj = self.pool['ir.values'] ir_values_obj.unlink( - cr, uid, template.ref_ir_value.id, context) + cr, SUPERUSER_ID, template.ref_ir_value.id, + context=context) except: - raise osv.except_osv( + raise orm.except_orm( _("Warning"), _("Deletion of the action record failed.")) return True def unlink(self, cr, uid, ids, context=None): - self.unlink_action(cr, uid, ids, context) - return super(mass_object, self).unlink(cr, uid, ids, context) + self.unlink_action(cr, uid, ids, context=context) + return super(MassObject, self).unlink(cr, uid, ids, context=context) def copy(self, cr, uid, record_id, default=None, context=None): if default is None: default = {} default.update({'name': '', 'field_ids': []}) - return super(mass_object, self).copy( - cr, uid, record_id, default, context) - -mass_object() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: + return super(MassObject, self).copy( + cr, uid, record_id, default, context=context) diff --git a/__unported__/mass_editing/security/ir.model.access.csv b/mass_editing/security/ir.model.access.csv similarity index 100% rename from __unported__/mass_editing/security/ir.model.access.csv rename to mass_editing/security/ir.model.access.csv diff --git a/__unported__/mass_editing/mass_editing_view.xml b/mass_editing/views/mass_editing_view.xml similarity index 100% rename from __unported__/mass_editing/mass_editing_view.xml rename to mass_editing/views/mass_editing_view.xml diff --git a/mass_editing/wizard/__init__.py b/mass_editing/wizard/__init__.py new file mode 100644 index 000000000..4f383ddc9 --- /dev/null +++ b/mass_editing/wizard/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# This module uses OpenERP, Open Source Management Solution Framework. +# Copyright (C): +# 2012-Today Serpent Consulting Services ( +# +############################################################################## + +from . import mass_editing_wizard diff --git a/__unported__/mass_editing/wizard/mass_editing_wizard.py b/mass_editing/wizard/mass_editing_wizard.py similarity index 95% rename from __unported__/mass_editing/wizard/mass_editing_wizard.py rename to mass_editing/wizard/mass_editing_wizard.py index 64c668334..21381019b 100644 --- a/__unported__/mass_editing/wizard/mass_editing_wizard.py +++ b/mass_editing/wizard/mass_editing_wizard.py @@ -25,19 +25,16 @@ import openerp.tools as tools from lxml import etree -class mass_editing_wizard(orm.TransientModel): +class MassEditingWizard(orm.TransientModel): _name = 'mass.editing.wizard' - _columns = { - } - def fields_view_get( self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False): - result = super(mass_editing_wizard, self).fields_view_get( + result = super(MassEditingWizard, self).fields_view_get( cr, uid, view_id, view_type, context, toolbar, submenu) if context.get('mass_editing_object'): - mass_object = self.pool.get('mass.object') + mass_object = self.pool['mass.object'] editing_data = mass_object.browse( cr, uid, context.get('mass_editing_object'), context) all_fields = {} @@ -47,7 +44,7 @@ class mass_editing_wizard(orm.TransientModel): etree.SubElement(xml_group, 'label', { 'string': '', 'colspan': '2'}) xml_group = etree.SubElement(xml_form, 'group', {'colspan': '4'}) - model_obj = self.pool.get(context.get('active_model')) + model_obj = self.pool[context.get('active_model')] field_info = model_obj.fields_get(cr, uid, [], context) for field in editing_data.field_ids: if field.ttype == "many2many": @@ -174,11 +171,12 @@ class mass_editing_wizard(orm.TransientModel): etree.SubElement( xml_form, 'separator', {'string': '', 'colspan': '4'}) xml_group3 = etree.SubElement(xml_form, 'footer', {}) - etree.SubElement(xml_group3, 'button', { - 'string': 'Close', 'icon': "gtk-close", 'special': 'cancel'}) etree.SubElement(xml_group3, 'button', { 'string': 'Apply', 'icon': "gtk-execute", - 'type': 'object', 'name': "action_apply"}) + 'type': 'object', 'name': "action_apply", + 'class': "oe_highlight"}) + etree.SubElement(xml_group3, 'button', { + 'string': 'Close', 'icon': "gtk-close", 'special': 'cancel'}) root = xml_form.getroottree() result['arch'] = etree.tostring(root) result['fields'] = all_fields @@ -207,11 +205,8 @@ class mass_editing_wizard(orm.TransientModel): if dict: model_obj.write( cr, uid, context.get('active_ids'), dict, context) - result = super(mass_editing_wizard, self).create(cr, uid, {}, context) + result = super(MassEditingWizard, self).create(cr, uid, {}, context) return result def action_apply(self, cr, uid, ids, context=None): return {'type': 'ir.actions.act_window_close'} - -mass_editing_wizard() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: From 89dcf08a1e466971d243043417798a4959a60b95 Mon Sep 17 00:00:00 2001 From: oihane Date: Fri, 1 Aug 2014 19:50:53 +0200 Subject: [PATCH 2/3] [MOD] Some changes --- mass_editing/i18n/es.po | 2 +- mass_editing/views/mass_editing_view.xml | 85 ++++++++++++++-------- mass_editing/wizard/mass_editing_wizard.py | 3 +- 3 files changed, 59 insertions(+), 31 deletions(-) diff --git a/mass_editing/i18n/es.po b/mass_editing/i18n/es.po index 460b91c9e..26ef75bb8 100644 --- a/mass_editing/i18n/es.po +++ b/mass_editing/i18n/es.po @@ -59,7 +59,7 @@ msgstr "Campos" #: code:addons/mass_editing/mass_editing.py:62 #, python-format msgid "Mass Editing (%s)" -msgstr "Edición Masica (%s)" +msgstr "Edición Masiva (%s)" #. module: mass_editing #: view:mass.object:0 diff --git a/mass_editing/views/mass_editing_view.xml b/mass_editing/views/mass_editing_view.xml index 0a51891ad..1ab945f79 100644 --- a/mass_editing/views/mass_editing_view.xml +++ b/mass_editing/views/mass_editing_view.xml @@ -7,26 +7,51 @@ mass.object
- - - - - - - - - - + + + + + + + + + + + + + + + @@ -36,8 +61,8 @@ mass.object - - + + @@ -51,21 +76,23 @@ - + tree - - + + - + form - - + + - + - + diff --git a/mass_editing/wizard/mass_editing_wizard.py b/mass_editing/wizard/mass_editing_wizard.py index 21381019b..4af12c34d 100644 --- a/mass_editing/wizard/mass_editing_wizard.py +++ b/mass_editing/wizard/mass_editing_wizard.py @@ -43,7 +43,8 @@ class MassEditingWizard(orm.TransientModel): xml_group = etree.SubElement(xml_form, 'group', {'colspan': '4'}) etree.SubElement(xml_group, 'label', { 'string': '', 'colspan': '2'}) - xml_group = etree.SubElement(xml_form, 'group', {'colspan': '4'}) + xml_group = etree.SubElement(xml_form, 'group', {'colspan': '4', + 'col': '4'}) model_obj = self.pool[context.get('active_model')] field_info = model_obj.fields_get(cr, uid, [], context) for field in editing_data.field_ids: From 9e24c6fc35b23ee5b9f791b5ea7b2450d346492e Mon Sep 17 00:00:00 2001 From: oihane Date: Mon, 4 Aug 2014 09:48:36 +0200 Subject: [PATCH 3/3] [MOD] Splitted mass_editing.py into two files --- mass_editing/models/__init__.py | 3 +- mass_editing/models/ir_model_fields.py | 42 +++++++++++++++++++ .../{mass_editing.py => mass_object.py} | 19 --------- 3 files changed, 44 insertions(+), 20 deletions(-) create mode 100644 mass_editing/models/ir_model_fields.py rename mass_editing/models/{mass_editing.py => mass_object.py} (88%) diff --git a/mass_editing/models/__init__.py b/mass_editing/models/__init__.py index c6f9baf33..64fd501ae 100644 --- a/mass_editing/models/__init__.py +++ b/mass_editing/models/__init__.py @@ -20,4 +20,5 @@ # ############################################################################## -from . import mass_editing +from . import ir_model_fields +from . import mass_object diff --git a/mass_editing/models/ir_model_fields.py b/mass_editing/models/ir_model_fields.py new file mode 100644 index 000000000..725791083 --- /dev/null +++ b/mass_editing/models/ir_model_fields.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# This module uses OpenERP, Open Source Management Solution Framework. +# Copyright (C): +# 2012-Today Serpent Consulting Services () +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see +# +############################################################################## + +from openerp.osv import orm + + +class IrModelFields(orm.Model): + _inherit = 'ir.model.fields' + + def search( + self, cr, uid, args, offset=0, limit=0, order=None, context=None, + count=False): + model_domain = [] + for domain in args: + if domain[0] == 'model_id' and domain[2]\ + and type(domain[2]) != list: + model_domain += [( + 'model_id', 'in', map(int, domain[2][1:-1].split(',')))] + else: + model_domain.append(domain) + return super(IrModelFields, self).search( + cr, uid, model_domain, offset=offset, limit=limit, order=order, + context=context, count=count) diff --git a/mass_editing/models/mass_editing.py b/mass_editing/models/mass_object.py similarity index 88% rename from mass_editing/models/mass_editing.py rename to mass_editing/models/mass_object.py index 053ddf77f..8e7737d25 100644 --- a/mass_editing/models/mass_editing.py +++ b/mass_editing/models/mass_object.py @@ -25,25 +25,6 @@ from openerp.osv import orm, fields from openerp.tools.translate import _ -class IrModelFields(orm.Model): - _inherit = 'ir.model.fields' - - def search( - self, cr, uid, args, offset=0, limit=0, order=None, context=None, - count=False): - model_domain = [] - for domain in args: - if domain[0] == 'model_id' and domain[2]\ - and type(domain[2]) != list: - model_domain += [( - 'model_id', 'in', map(int, domain[2][1:-1].split(',')))] - else: - model_domain.append(domain) - return super(IrModelFields, self).search( - cr, uid, model_domain, offset=offset, limit=limit, order=order, - context=context, count=count) - - class MassObject(orm.Model): _name = "mass.object"