From 290f6f1c7feefd0b7659c91bd6a28d82f46d1db8 Mon Sep 17 00:00:00 2001 From: Sylvain LE GAL Date: Mon, 10 Mar 2014 21:13:54 +0100 Subject: [PATCH] [ADD] new module 'web_easy_switch_company'. --- web_easy_switch_company/__init__.py | 7 ++ web_easy_switch_company/__openerp__.py | 66 ++++++++++ .../controllers/__init__.py | 6 + web_easy_switch_company/controllers/main.py | 13 ++ web_easy_switch_company/model/__init__.py | 7 ++ web_easy_switch_company/model/res_company.py | 32 +++++ web_easy_switch_company/model/res_users.py | 13 ++ .../static/src/img/icon.png | Bin 0 -> 6125 bytes .../static/src/img/selection-off.png | Bin 0 -> 112 bytes .../static/src/img/selection-on.png | Bin 0 -> 445 bytes .../static/src/js/switch_company.js | 115 ++++++++++++++++++ .../static/src/xml/switch_company.xml | 29 +++++ .../view/res_users_view.xml | 15 +++ 13 files changed, 303 insertions(+) create mode 100644 web_easy_switch_company/__init__.py create mode 100644 web_easy_switch_company/__openerp__.py create mode 100644 web_easy_switch_company/controllers/__init__.py create mode 100644 web_easy_switch_company/controllers/main.py create mode 100644 web_easy_switch_company/model/__init__.py create mode 100644 web_easy_switch_company/model/res_company.py create mode 100644 web_easy_switch_company/model/res_users.py create mode 100644 web_easy_switch_company/static/src/img/icon.png create mode 100644 web_easy_switch_company/static/src/img/selection-off.png create mode 100644 web_easy_switch_company/static/src/img/selection-on.png create mode 100644 web_easy_switch_company/static/src/js/switch_company.js create mode 100644 web_easy_switch_company/static/src/xml/switch_company.xml create mode 100644 web_easy_switch_company/view/res_users_view.xml diff --git a/web_easy_switch_company/__init__.py b/web_easy_switch_company/__init__.py new file mode 100644 index 00000000..a14558d4 --- /dev/null +++ b/web_easy_switch_company/__init__.py @@ -0,0 +1,7 @@ +# -*- encoding: utf-8 -*- +################################################################################ +# See __openerp__.py file for Copyright and Licence Informations. +################################################################################ + +import model +import controllers diff --git a/web_easy_switch_company/__openerp__.py b/web_easy_switch_company/__openerp__.py new file mode 100644 index 00000000..8b274345 --- /dev/null +++ b/web_easy_switch_company/__openerp__.py @@ -0,0 +1,66 @@ +# -*- encoding: utf-8 -*- +################################################################################ +# See Copyright and Licence Informations undermentioned. +################################################################################ + +{ + 'name': 'Multicompany - Easy Switch Company', + 'version': '1.0', + 'category': 'web', + 'description': """ +Add menu to allow user to switch to another company more easily +=============================================================== + +Functionnalities : +------------------ + * Add a new menu in the top bar to switch to another company more easily; + * Remove the old behaviour to switch company; + * Remove the display of the current company after the name of the user, + the information is redundant and because the name of the company is displayed + only if company_id != 1 by default. + +Documentations : +---------------- + * Video : http://www.youtube.com/watch?v=Cpm6dg-IEQQ + +Technical informations : +------------------------ + * Create a field function 'logo_topbar' in res_company to have a good resized logo; + +Limits : +-------- + * It would be interesting to show the structure of the companies; + +Copyright and Licence : +----------------------- + * 2014, Groupement Régional Alimentaire de Proximité + * Licence : AGPL-3 (http://www.gnu.org/licenses/) + +Contacts : +---------- + * Sylvain LE GAL (https://twitter.com/legalsylvain); + * for any help or question about this module. + """, + 'author': 'GRAP', + 'website': 'http://www.grap.coop', + 'license': 'AGPL-3', + 'depends': [ + 'web', + ], + 'data': [ + 'view/res_users_view.xml', + ], + 'demo': [], + 'js': [ + 'static/src/js/switch_company.js', + ], + 'css': [], + 'qweb': [ + 'static/src/xml/switch_company.xml', + ], + 'images': [], + 'post_load': '', + 'application': False, + 'installable': True, + 'auto_install': False, +} diff --git a/web_easy_switch_company/controllers/__init__.py b/web_easy_switch_company/controllers/__init__.py new file mode 100644 index 00000000..f02a4515 --- /dev/null +++ b/web_easy_switch_company/controllers/__init__.py @@ -0,0 +1,6 @@ +# -*- encoding: utf-8 -*- +################################################################################ +# See __openerp__.py file for Copyright and Licence Informations. +################################################################################ + +import main diff --git a/web_easy_switch_company/controllers/main.py b/web_easy_switch_company/controllers/main.py new file mode 100644 index 00000000..d9a7c18f --- /dev/null +++ b/web_easy_switch_company/controllers/main.py @@ -0,0 +1,13 @@ +# -*- encoding: utf-8 -*- +################################################################################ +# See __openerp__.py file for Copyright and Licence Informations. +################################################################################ + +import openerp + +class WebEasySwitchCompanyController(openerp.addons.web.http.Controller): + _cp_path = '/web_easy_switch_company/switch' + + @openerp.addons.web.http.jsonrequest + def change_current_company(self, req, company_id): + req.session.model('res.users').change_current_company(company_id) diff --git a/web_easy_switch_company/model/__init__.py b/web_easy_switch_company/model/__init__.py new file mode 100644 index 00000000..cdcfac2d --- /dev/null +++ b/web_easy_switch_company/model/__init__.py @@ -0,0 +1,7 @@ +# -*- encoding: utf-8 -*- +################################################################################ +# See __openerp__.py file for Copyright and Licence Informations. +################################################################################ + +import res_users +import res_company diff --git a/web_easy_switch_company/model/res_company.py b/web_easy_switch_company/model/res_company.py new file mode 100644 index 00000000..8b1fa532 --- /dev/null +++ b/web_easy_switch_company/model/res_company.py @@ -0,0 +1,32 @@ +## -*- encoding: utf-8 -*- +################################################################################# +## See __openerp__.py file for Copyright and Licence Informations. +################################################################################# + +from openerp.osv.orm import Model +from openerp.osv import fields +from openerp.tools import image_resize_image + +class res_company(Model): + _inherit = 'res.company' + + ### Custom Section + def _switch_company_get_companies_from_partner(self, cr, uid, ids, context=None): + return self.pool['res.company'].search(cr, uid, [('partner_id', 'in', ids)], context=context) + + ### Fields function Section + def _get_logo_topbar(self, cr, uid, ids, _field_name, _args, context=None): + result = dict.fromkeys(ids, False) + for record in self.browse(cr, uid, ids, context=context): + size = (48, 48) + result[record.id] = image_resize_image(record.partner_id.image, size) + return result + + ### Columns Section + _columns = { + 'logo_topbar': fields.function(_get_logo_topbar, string="Logo displayed in the switch company menu", + type="binary", store={ + 'res.company': (lambda s, c, u, i, x: i, ['partner_id'], 10), + 'res.partner': (_switch_company_get_companies_from_partner, ['image'], 10), + }), + } diff --git a/web_easy_switch_company/model/res_users.py b/web_easy_switch_company/model/res_users.py new file mode 100644 index 00000000..09dba3d8 --- /dev/null +++ b/web_easy_switch_company/model/res_users.py @@ -0,0 +1,13 @@ +# -*- encoding: utf-8 -*- +################################################################################ +# See __openerp__.py file for Copyright and Licence Informations. +################################################################################ + +from openerp.osv.orm import Model + +class res_users(Model): + _inherit = 'res.users' + + ### Custom Function Section + def change_current_company(self, cr, uid, company_id, context=None): + return self.write(cr, uid, uid, {'company_id': company_id}) diff --git a/web_easy_switch_company/static/src/img/icon.png b/web_easy_switch_company/static/src/img/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ee270eb32c8a2a81c134da15e544c50f69d07315 GIT binary patch literal 6125 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 literal 0 HcmV?d00001 diff --git a/web_easy_switch_company/static/src/img/selection-off.png b/web_easy_switch_company/static/src/img/selection-off.png new file mode 100644 index 0000000000000000000000000000000000000000..c8e922cc52b4e47aeb67397084070164ae6db15a GIT binary patch literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf4nJ z@ErkR#;MwT(m+8WPZ!4!i{9h}3D(64B0WqTKz#xXjP<@1eLz_TPgg&ebxsLQ09bVu A-T(jq literal 0 HcmV?d00001 diff --git a/web_easy_switch_company/static/src/img/selection-on.png b/web_easy_switch_company/static/src/img/selection-on.png new file mode 100644 index 0000000000000000000000000000000000000000..8faf7d4def9060c05b2bd335adc56a42a13834e4 GIT binary patch literal 445 zcmV;u0Yd(XP)F4y14e=>LK&E2J>|n? zM3tMqe1E_4{`>1Qx1|4g1e0bWq~F(`Pf=Y~KUqghTTw+?JC=t@Knq!(paDwaYN?V^ z5|+RIePwv@{^_x|zh9g~mS;ic7|<^RGU_VE+L`?HM<-@N)+4HRY6)0sH`a(sCC z_0fZ;H>T{)Vt9qq04-K|S0!!jqDL=p9pq`hvshVLFJD|zjPLuekALqyyuI%IkLRb+ zU5FBh6`SqP*&4X&{r>ZZ@yhLUuM}jIc)zp1 + + + + + diff --git a/web_easy_switch_company/view/res_users_view.xml b/web_easy_switch_company/view/res_users_view.xml new file mode 100644 index 00000000..af433676 --- /dev/null +++ b/web_easy_switch_company/view/res_users_view.xml @@ -0,0 +1,15 @@ + + + + + + res.users.form + res.users + + + + + + + +