From 1752eebd03589151629c19a8fc5f0d61335fe2d0 Mon Sep 17 00:00:00 2001 From: Ahmed Aly Date: Thu, 16 Nov 2017 12:37:43 +0100 Subject: [PATCH] Fall 4448: Multi Company --- ext/custom-addons/dp_custom/__manifest__.py | 2 + .../dp_custom/data/glaser_company_data.xml | 45 +++++++++++++++++ .../data/tz_austria_company_data.xml | 17 +++++++ .../dp_custom/models/__init__.py | 1 + .../dp_custom/models/ir_ui_menu.py | 4 +- .../dp_custom/models/res_company.py | 47 ++++++++++++++++++ .../static/src/img/glaser_favicon.png | Bin 0 -> 329 bytes .../dp_custom/static/src/img/logo_glaser.png | Bin 0 -> 18982 bytes setup/lib/cli.py | 1 + setup/lib/config_at.py | 1 - setup/lib/functions.py | 15 +++++- 11 files changed, 127 insertions(+), 6 deletions(-) create mode 100644 ext/custom-addons/dp_custom/data/glaser_company_data.xml create mode 100644 ext/custom-addons/dp_custom/data/tz_austria_company_data.xml create mode 100644 ext/custom-addons/dp_custom/models/res_company.py create mode 100644 ext/custom-addons/dp_custom/static/src/img/glaser_favicon.png create mode 100644 ext/custom-addons/dp_custom/static/src/img/logo_glaser.png diff --git a/ext/custom-addons/dp_custom/__manifest__.py b/ext/custom-addons/dp_custom/__manifest__.py index 1c2cb0d5..3298cbec 100644 --- a/ext/custom-addons/dp_custom/__manifest__.py +++ b/ext/custom-addons/dp_custom/__manifest__.py @@ -34,6 +34,8 @@ ], 'data': [ 'data/dp_custom_data.xml', + 'data/glaser_company_data.xml', + 'data/tz_austria_company_data.xml', 'views/dp_custom_views.xml', 'security/ir.model.access.csv', ], diff --git a/ext/custom-addons/dp_custom/data/glaser_company_data.xml b/ext/custom-addons/dp_custom/data/glaser_company_data.xml new file mode 100644 index 00000000..c9bc4fd6 --- /dev/null +++ b/ext/custom-addons/dp_custom/data/glaser_company_data.xml @@ -0,0 +1,45 @@ + + + + Glaser & Co. + Neugasse 36 + Spannberg + 2244 + +43 (0)2538/8628-0 + +43 (0)2538/8628-400 + office@glaser-co.at + https://www.glaser-co.at + FN 61793 y + + ATU17860303 + + + + + + + Glaser & Co. ADMIN + glaser-admin + admin@glaser.at + + + + + + + + + + + + + + diff --git a/ext/custom-addons/dp_custom/data/tz_austria_company_data.xml b/ext/custom-addons/dp_custom/data/tz_austria_company_data.xml new file mode 100644 index 00000000..b828b9c5 --- /dev/null +++ b/ext/custom-addons/dp_custom/data/tz_austria_company_data.xml @@ -0,0 +1,17 @@ + + + + TZ Tischlerzentrum ADMIN + tz-admin + + + admin@tz-austria.at + + + + diff --git a/ext/custom-addons/dp_custom/models/__init__.py b/ext/custom-addons/dp_custom/models/__init__.py index 0a5fa5c7..a65b0f2d 100644 --- a/ext/custom-addons/dp_custom/models/__init__.py +++ b/ext/custom-addons/dp_custom/models/__init__.py @@ -21,3 +21,4 @@ from . import ir_ui_menu from . import res_partner +from . import res_company diff --git a/ext/custom-addons/dp_custom/models/ir_ui_menu.py b/ext/custom-addons/dp_custom/models/ir_ui_menu.py index 9167e61b..5b820b1c 100644 --- a/ext/custom-addons/dp_custom/models/ir_ui_menu.py +++ b/ext/custom-addons/dp_custom/models/ir_ui_menu.py @@ -19,9 +19,7 @@ # ############################################################################## -from odoo import models -from odoo import api -from odoo import tools +from odoo import models, api, tools DISABLED_MENUS = [ ] diff --git a/ext/custom-addons/dp_custom/models/res_company.py b/ext/custom-addons/dp_custom/models/res_company.py new file mode 100644 index 00000000..6be7cf00 --- /dev/null +++ b/ext/custom-addons/dp_custom/models/res_company.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# datenpol gmbh +# Copyright (C) 2013-TODAY datenpol 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 os +import base64 + +from odoo import fields, models, api + + +class Company(models.Model): + _inherit = 'res.company' + + @api.model + def set_company_logo(self, company, logo): + filename = os.path.join(os.path.dirname(os.path.realpath(__file__)), logo) + fi = open(filename, 'rb') + content = base64.b64encode(fi.read()) + content = content.decode() + fi.close() + self.browse(company).write({'logo': content}) + + @api.model + def set_company_favicon(self, company, logo): + filename = os.path.join(os.path.dirname(os.path.realpath(__file__)), logo) + fi = open(filename, 'rb') + content = base64.b64encode(fi.read()) + content = content.decode() + fi.close() + self.browse(company).write( + {'favicon_backend': content, 'favicon_backend_mimetype': 'image/x-icon'}) diff --git a/ext/custom-addons/dp_custom/static/src/img/glaser_favicon.png b/ext/custom-addons/dp_custom/static/src/img/glaser_favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..75584135b63aa205d2f9a0838ed4a072f4d157be GIT binary patch literal 329 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