From 4f624b8944df27b10306192fd2be4c0b996409a7 Mon Sep 17 00:00:00 2001 From: Holger Brunn Date: Thu, 5 Nov 2015 08:41:52 +0100 Subject: [PATCH 01/34] [ADD] web_favicon closes #199 --- web_favicon/README.rst | 68 ++++++++++++++++++++++++ web_favicon/__init__.py | 21 ++++++++ web_favicon/__openerp__.py | 44 +++++++++++++++ web_favicon/controllers/__init__.py | 20 +++++++ web_favicon/controllers/web_favicon.py | 44 +++++++++++++++ web_favicon/models/__init__.py | 20 +++++++ web_favicon/models/res_company.py | 29 ++++++++++ web_favicon/static/description/icon.png | Bin 0 -> 9455 bytes web_favicon/tests/__init__.py | 20 +++++++ web_favicon/tests/test_web_favicon.py | 63 ++++++++++++++++++++++ web_favicon/views/res_company.xml | 17 ++++++ web_favicon/views/templates.xml | 10 ++++ 12 files changed, 356 insertions(+) create mode 100644 web_favicon/README.rst create mode 100644 web_favicon/__init__.py create mode 100644 web_favicon/__openerp__.py create mode 100644 web_favicon/controllers/__init__.py create mode 100644 web_favicon/controllers/web_favicon.py create mode 100644 web_favicon/models/__init__.py create mode 100644 web_favicon/models/res_company.py create mode 100644 web_favicon/static/description/icon.png create mode 100644 web_favicon/tests/__init__.py create mode 100644 web_favicon/tests/test_web_favicon.py create mode 100644 web_favicon/views/res_company.xml create mode 100644 web_favicon/views/templates.xml diff --git a/web_favicon/README.rst b/web_favicon/README.rst new file mode 100644 index 000000000..c9bb1ddb8 --- /dev/null +++ b/web_favicon/README.rst @@ -0,0 +1,68 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :alt: License: AGPL-3 + +==================== +Custom shortcut icon +==================== + +This module was written to allow you to customize your Odoo instance's shortcut +icon (aka favicon). This is useful for branding purposes, but also for +integrators who have many different Odoo instances running and need to see at a +glance which browser tab does what. + +Configuration +============= + +Upload your favicon (16x16, 32x32 or 64x64 pixels, 16 colors) on the company +form. The file format whould be ico, gif or png with 16x16, 32x32 or 64x64 +pixels and 16 colors. + +Note that most browsers cache favicons basically forever, so if you want your +icon to show up, you'll most probably have to delete you browser cache. + +Usage +===== + +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/162/8.0 + +For further information, please visit: + +* https://www.odoo.com/forum/help-1 + +Known issues / Roadmap +====================== + +* allow to upload some big icon (preferrably SVG or the like) and generate icons suitable for mobile devices + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed feedback +`here `_. + +Credits +======= + +Contributors +------------ + +* Holger Brunn + +Maintainer +---------- + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +This module is maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +To contribute to this module, please visit http://odoo-community.org. diff --git a/web_favicon/__init__.py b/web_favicon/__init__.py new file mode 100644 index 000000000..d8724ec7a --- /dev/null +++ b/web_favicon/__init__.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# This module copyright (C) 2015 Therp BV . +# +# 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 . import models +from . import controllers diff --git a/web_favicon/__openerp__.py b/web_favicon/__openerp__.py new file mode 100644 index 000000000..10d188004 --- /dev/null +++ b/web_favicon/__openerp__.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# This module copyright (C) 2015 Therp BV . +# +# 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 . +# +############################################################################## +{ + "name": "Custom shortcut icon", + "version": "8.0.1.0.0", + "author": "Therp BV,Odoo Community Association (OCA)", + "license": "AGPL-3", + "category": "Website", + "summary": "Allows to set a custom shortcut icon", + "depends": [ + 'web', + ], + "data": [ + "views/res_company.xml", + 'views/templates.xml', + ], + "qweb": [ + ], + "test": [ + ], + "auto_install": False, + "installable": True, + "application": False, + "external_dependencies": { + 'python': [], + }, +} diff --git a/web_favicon/controllers/__init__.py b/web_favicon/controllers/__init__.py new file mode 100644 index 000000000..5c319aec6 --- /dev/null +++ b/web_favicon/controllers/__init__.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# This module copyright (C) 2015 Therp BV . +# +# 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 . import web_favicon diff --git a/web_favicon/controllers/web_favicon.py b/web_favicon/controllers/web_favicon.py new file mode 100644 index 000000000..f9212ce42 --- /dev/null +++ b/web_favicon/controllers/web_favicon.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# This module copyright (C) 2015 Therp BV (). +# +# 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 StringIO +import base64 +from openerp import http +from openerp.tools.misc import file_open + + +class WebFavicon(http.Controller): + + @http.route('/web_favicon/favicon', type='http', auth="none") + def icon(self): + request = http.request + if 'uid' in request.env.context: + user = request.env['res.users'].browse(request.env.context['uid']) + company = user.sudo(user.id).company_id + else: + company = request.env['res.company'].search([], limit=1) + favicon = company.favicon_backend + favicon_mimetype = company.favicon_backend_mimetype + if not favicon: + favicon = file_open('web/static/src/img/favicon.ico') + favicon_mimetype = 'image/x-icon' + else: + favicon = StringIO.StringIO(base64.b64decode(favicon)) + return request.make_response( + favicon.read(), [('Content-Type', favicon_mimetype)]) diff --git a/web_favicon/models/__init__.py b/web_favicon/models/__init__.py new file mode 100644 index 000000000..6c860e44a --- /dev/null +++ b/web_favicon/models/__init__.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# This module copyright (C) 2015 Therp BV . +# +# 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 . import res_company diff --git a/web_favicon/models/res_company.py b/web_favicon/models/res_company.py new file mode 100644 index 000000000..6f54bb465 --- /dev/null +++ b/web_favicon/models/res_company.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# This module copyright (C) 2015 Therp BV (). +# +# 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 openerp import models, fields + + +class ResCompany(models.Model): + _inherit = 'res.company' + + favicon_backend = fields.Binary() + favicon_backend_mimetype = fields.Char( + help='Set the mimetype of your file. Usually, that\'s one of\n' + 'image/x-icon, image/gif, image/png') diff --git a/web_favicon/static/description/icon.png b/web_favicon/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/web_favicon/tests/__init__.py b/web_favicon/tests/__init__.py new file mode 100644 index 000000000..15f22fcad --- /dev/null +++ b/web_favicon/tests/__init__.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# This module copyright (C) 2015 Therp BV . +# +# 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 . import test_web_favicon diff --git a/web_favicon/tests/test_web_favicon.py b/web_favicon/tests/test_web_favicon.py new file mode 100644 index 000000000..0301639c2 --- /dev/null +++ b/web_favicon/tests/test_web_favicon.py @@ -0,0 +1,63 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# This module copyright (C) 2015 Therp BV . +# +# 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 base64 +from openerp.tests.common import TransactionCase +from openerp.tools.misc import file_open +from openerp import http + + +class FakeRequest(object): + def __init__(self, env): + self.env = env + + def make_response(self, data, headers): + return FakeResponse(data, headers) + + +class FakeResponse(object): + def __init__(self, data, headers): + self.data = data + self.headers = dict(headers) + + +class TestWebFavicon(TransactionCase): + def test_web_favicon(self): + original_request = http.request + http.request = FakeRequest(self.env) + from openerp.addons.web_favicon.controllers.web_favicon import\ + WebFavicon + company = self.env['res.company'].search([], limit=1) + # default icon + company.write({ + 'favicon_backend': False, + 'favicon_backend_mimetype': False, + }) + data = WebFavicon().icon() + self.assertEqual(data.headers['Content-Type'], 'image/x-icon') + # our own icon + company.write({ + 'favicon_backend': base64.b64encode(file_open( + 'web_favicon/static/description/icon.png').read()), + 'favicon_backend_mimetype': 'image/png', + }) + data = WebFavicon().icon() + self.assertEqual(data.headers['Content-Type'], + company.favicon_backend_mimetype) + http.request = original_request diff --git a/web_favicon/views/res_company.xml b/web_favicon/views/res_company.xml new file mode 100644 index 000000000..fa06e47dc --- /dev/null +++ b/web_favicon/views/res_company.xml @@ -0,0 +1,17 @@ + + + + + res.company + + + + + + + + + + + + diff --git a/web_favicon/views/templates.xml b/web_favicon/views/templates.xml new file mode 100644 index 000000000..ed80510ae --- /dev/null +++ b/web_favicon/views/templates.xml @@ -0,0 +1,10 @@ + + + + + + From 19536a2432a973afad86cef81e9ed66aaf328ea7 Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Thu, 7 Apr 2016 14:30:57 +0200 Subject: [PATCH 02/34] [IMP] web_favicon: Nicer icon + README imp + support files --- web_favicon/README.rst | 40 ++++++++----- web_favicon/__init__.py | 20 +------ web_favicon/__openerp__.py | 37 +++--------- web_favicon/controllers/__init__.py | 20 +------ web_favicon/controllers/web_favicon.py | 21 +------ web_favicon/models/__init__.py | 20 +------ web_favicon/models/res_company.py | 30 +++------- web_favicon/static/description/icon.png | Bin 9455 -> 3398 bytes .../static/src/img/android-chrome-144x144.png | Bin 0 -> 1674 bytes .../static/src/img/android-chrome-192x192.png | Bin 0 -> 2304 bytes .../static/src/img/android-chrome-36x36.png | Bin 0 -> 582 bytes .../static/src/img/android-chrome-48x48.png | Bin 0 -> 693 bytes .../static/src/img/android-chrome-72x72.png | Bin 0 -> 949 bytes .../static/src/img/android-chrome-96x96.png | Bin 0 -> 1213 bytes .../src/img/apple-touch-icon-114x114.png | Bin 0 -> 1275 bytes .../src/img/apple-touch-icon-120x120.png | Bin 0 -> 1267 bytes .../src/img/apple-touch-icon-144x144.png | Bin 0 -> 1508 bytes .../src/img/apple-touch-icon-152x152.png | Bin 0 -> 1570 bytes .../src/img/apple-touch-icon-180x180.png | Bin 0 -> 1875 bytes .../static/src/img/apple-touch-icon-57x57.png | Bin 0 -> 677 bytes .../static/src/img/apple-touch-icon-60x60.png | Bin 0 -> 736 bytes .../static/src/img/apple-touch-icon-72x72.png | Bin 0 -> 869 bytes .../static/src/img/apple-touch-icon-76x76.png | Bin 0 -> 855 bytes .../src/img/apple-touch-icon-precomposed.png | Bin 0 -> 2363 bytes .../static/src/img/apple-touch-icon.png | Bin 0 -> 1875 bytes web_favicon/static/src/img/browserconfig.xml | 12 ++++ web_favicon/static/src/img/favicon-16x16.png | Bin 0 -> 390 bytes web_favicon/static/src/img/favicon-32x32.png | Bin 0 -> 533 bytes web_favicon/static/src/img/favicon-96x96.png | Bin 0 -> 1213 bytes web_favicon/static/src/img/favicon.ico | Bin 0 -> 15086 bytes web_favicon/static/src/img/manifest.json | 41 +++++++++++++ .../src/img/master_original_favicon.png | Bin 0 -> 7242 bytes .../src/img/master_original_favicon.svg | 56 ++++++++++++++++++ web_favicon/static/src/img/mstile-144x144.png | Bin 0 -> 1820 bytes web_favicon/static/src/img/mstile-150x150.png | Bin 0 -> 1632 bytes web_favicon/static/src/img/mstile-310x150.png | Bin 0 -> 1514 bytes web_favicon/static/src/img/mstile-310x310.png | Bin 0 -> 3294 bytes web_favicon/static/src/img/mstile-70x70.png | Bin 0 -> 1232 bytes .../src/img/website_favicon_sample.html | 24 ++++++++ web_favicon/tests/__init__.py | 20 +------ web_favicon/tests/test_web_favicon.py | 21 +------ 41 files changed, 190 insertions(+), 172 deletions(-) create mode 100644 web_favicon/static/src/img/android-chrome-144x144.png create mode 100644 web_favicon/static/src/img/android-chrome-192x192.png create mode 100644 web_favicon/static/src/img/android-chrome-36x36.png create mode 100644 web_favicon/static/src/img/android-chrome-48x48.png create mode 100644 web_favicon/static/src/img/android-chrome-72x72.png create mode 100644 web_favicon/static/src/img/android-chrome-96x96.png create mode 100644 web_favicon/static/src/img/apple-touch-icon-114x114.png create mode 100644 web_favicon/static/src/img/apple-touch-icon-120x120.png create mode 100644 web_favicon/static/src/img/apple-touch-icon-144x144.png create mode 100644 web_favicon/static/src/img/apple-touch-icon-152x152.png create mode 100644 web_favicon/static/src/img/apple-touch-icon-180x180.png create mode 100644 web_favicon/static/src/img/apple-touch-icon-57x57.png create mode 100644 web_favicon/static/src/img/apple-touch-icon-60x60.png create mode 100644 web_favicon/static/src/img/apple-touch-icon-72x72.png create mode 100644 web_favicon/static/src/img/apple-touch-icon-76x76.png create mode 100644 web_favicon/static/src/img/apple-touch-icon-precomposed.png create mode 100644 web_favicon/static/src/img/apple-touch-icon.png create mode 100644 web_favicon/static/src/img/browserconfig.xml create mode 100644 web_favicon/static/src/img/favicon-16x16.png create mode 100644 web_favicon/static/src/img/favicon-32x32.png create mode 100644 web_favicon/static/src/img/favicon-96x96.png create mode 100644 web_favicon/static/src/img/favicon.ico create mode 100644 web_favicon/static/src/img/manifest.json create mode 100644 web_favicon/static/src/img/master_original_favicon.png create mode 100644 web_favicon/static/src/img/master_original_favicon.svg create mode 100644 web_favicon/static/src/img/mstile-144x144.png create mode 100644 web_favicon/static/src/img/mstile-150x150.png create mode 100644 web_favicon/static/src/img/mstile-310x150.png create mode 100644 web_favicon/static/src/img/mstile-310x310.png create mode 100644 web_favicon/static/src/img/mstile-70x70.png create mode 100644 web_favicon/static/src/img/website_favicon_sample.html diff --git a/web_favicon/README.rst b/web_favicon/README.rst index c9bb1ddb8..be9fd7a51 100644 --- a/web_favicon/README.rst +++ b/web_favicon/README.rst @@ -1,25 +1,33 @@ .. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg - :alt: License: AGPL-3 + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 -==================== -Custom shortcut icon -==================== +============================== +Custom shortcut icon (favicon) +============================== This module was written to allow you to customize your Odoo instance's shortcut icon (aka favicon). This is useful for branding purposes, but also for integrators who have many different Odoo instances running and need to see at a glance which browser tab does what. +More info about favicon: https://en.wikipedia.org/wiki/Favicon + Configuration ============= -Upload your favicon (16x16, 32x32 or 64x64 pixels, 16 colors) on the company -form. The file format whould be ico, gif or png with 16x16, 32x32 or 64x64 -pixels and 16 colors. +Upload your favicon (16x16, 32x32, 64x64 or "as big as possible") on the +company form. The file format would be ico, gif or png with 16x16, 32x32 or +64x64 pixels and 16 colors. Highers resolutions or colors support depends on +the used browser, but most modern browsers do. Note that most browsers cache favicons basically forever, so if you want your icon to show up, you'll most probably have to delete you browser cache. +You have a sample SVG that can be used as template for generating your icon +in /static/src/img/master_original_favicon.svg. You can also search for some +favicon generators across the web. + Usage ===== @@ -27,14 +35,15 @@ Usage :alt: Try me on Runbot :target: https://runbot.odoo-community.org/runbot/162/8.0 -For further information, please visit: - -* https://www.odoo.com/forum/help-1 - Known issues / Roadmap ====================== -* allow to upload some big icon (preferrably SVG or the like) and generate icons suitable for mobile devices +* Allow to upload some big icon (preferrably SVG or the like) and generate + all the icons from it +* Generate icons suitable for mobile devices and web apps (see /static/src/img/ + folder inside the module for a sample of the possible current formats. +* Put the icon definition at system level, not at company level. It doesn't + make sense (as the icon is cached) to have a different icon per company. Bug Tracker =========== @@ -42,7 +51,9 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed feedback -`here `_. +`here `_. Credits ======= @@ -51,6 +62,7 @@ Contributors ------------ * Holger Brunn +* Pedro M. Baeza Maintainer ---------- @@ -65,4 +77,4 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -To contribute to this module, please visit http://odoo-community.org. +To contribute to this module, please visit https://odoo-community.org. diff --git a/web_favicon/__init__.py b/web_favicon/__init__.py index d8724ec7a..a2666d4d3 100644 --- a/web_favicon/__init__.py +++ b/web_favicon/__init__.py @@ -1,21 +1,5 @@ # -*- coding: utf-8 -*- -############################################################################## -# -# This module copyright (C) 2015 Therp BV . -# -# 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 . -# -############################################################################## +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + from . import models from . import controllers diff --git a/web_favicon/__openerp__.py b/web_favicon/__openerp__.py index 10d188004..b6d6491fa 100644 --- a/web_favicon/__openerp__.py +++ b/web_favicon/__openerp__.py @@ -1,29 +1,17 @@ # -*- coding: utf-8 -*- -############################################################################## -# -# This module copyright (C) 2015 Therp BV . -# -# 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 . -# -############################################################################## +# © 2015 Therp BV +# © 2016 Pedro M. Baeza +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + { "name": "Custom shortcut icon", "version": "8.0.1.0.0", - "author": "Therp BV,Odoo Community Association (OCA)", + "author": "Therp BV, " + "Tecnativa, " + "Odoo Community Association (OCA)", "license": "AGPL-3", "category": "Website", - "summary": "Allows to set a custom shortcut icon", + "summary": "Allows to set a custom shortcut icon (aka favicon)", "depends": [ 'web', ], @@ -31,14 +19,5 @@ "views/res_company.xml", 'views/templates.xml', ], - "qweb": [ - ], - "test": [ - ], - "auto_install": False, "installable": True, - "application": False, - "external_dependencies": { - 'python': [], - }, } diff --git a/web_favicon/controllers/__init__.py b/web_favicon/controllers/__init__.py index 5c319aec6..7c3fa3f84 100644 --- a/web_favicon/controllers/__init__.py +++ b/web_favicon/controllers/__init__.py @@ -1,20 +1,4 @@ # -*- coding: utf-8 -*- -############################################################################## -# -# This module copyright (C) 2015 Therp BV . -# -# 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 . -# -############################################################################## +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + from . import web_favicon diff --git a/web_favicon/controllers/web_favicon.py b/web_favicon/controllers/web_favicon.py index f9212ce42..f0b92aa0c 100644 --- a/web_favicon/controllers/web_favicon.py +++ b/web_favicon/controllers/web_favicon.py @@ -1,22 +1,7 @@ # -*- coding: utf-8 -*- -############################################################################## -# -# This module copyright (C) 2015 Therp BV (). -# -# 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 . -# -############################################################################## +# © 2015 Therp BV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + import StringIO import base64 from openerp import http diff --git a/web_favicon/models/__init__.py b/web_favicon/models/__init__.py index 6c860e44a..54d77ccf2 100644 --- a/web_favicon/models/__init__.py +++ b/web_favicon/models/__init__.py @@ -1,20 +1,4 @@ # -*- coding: utf-8 -*- -############################################################################## -# -# This module copyright (C) 2015 Therp BV . -# -# 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 . -# -############################################################################## +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + from . import res_company diff --git a/web_favicon/models/res_company.py b/web_favicon/models/res_company.py index 6f54bb465..e30c1b2ad 100644 --- a/web_favicon/models/res_company.py +++ b/web_favicon/models/res_company.py @@ -1,22 +1,8 @@ # -*- coding: utf-8 -*- -############################################################################## -# -# This module copyright (C) 2015 Therp BV (). -# -# 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 . -# -############################################################################## +# © 2015 Therp BV +# © 2016 Pedro M. Baeza +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + from openerp import models, fields @@ -24,6 +10,8 @@ class ResCompany(models.Model): _inherit = 'res.company' favicon_backend = fields.Binary() - favicon_backend_mimetype = fields.Char( - help='Set the mimetype of your file. Usually, that\'s one of\n' - 'image/x-icon, image/gif, image/png') + favicon_backend_mimetype = fields.Selection( + selection=[('image/x-icon', 'image/x-icon'), + ('image/gif', 'image/gif'), + ('image/png', 'image/png')], + help='Set the mimetype of your file.') diff --git a/web_favicon/static/description/icon.png b/web_favicon/static/description/icon.png index 3a0328b516c4980e8e44cdb63fd945757ddd132d..bc0090b3d2d9321a3f225477887f7f7d3e1c68dd 100644 GIT binary patch literal 3398 zcma)9^;Z)P*Pk>vN)QK1cS?6k3={-WVBkhfkQiM9>4AWBONVrKN+Td3BLybiCHmGTtp?gCBe+5WFDDgL09H;}~OKwHwobC@K*}E_KymBibfqkmGHdg*G zChEE#`|Fw^cUz(=5JA*I31pzrH=xlUZzV#FuXjLVxN2Hvf?FWqvSpeA#nILyP#ii@=25lRASa>RS=5KsaMw)b}m8Y-d&OD6teYQbLTZLqrf z%pUVmL0VT)t#AmD(Lk9sr8FZ>3kyhBGfO;h{d}?T__*(bAV`3gBuI&WSwK>X8d!rJ zRm$`;t8MVZZYD?2eGF7%qYG6Byi`K!n2Gk+9A!xq#idMiueM9xBG?J?sb`Vx{Vkl> zH>_*@a0Un-E{P)dA)#Ab26rpu40Y@={^Q8Rg*jc)Db9jiw#W_HK=nZws)rXG(08M# zZWd9kd)9rz!#~WA#-`>bz$c5KzGri_FKOXKL6dqu;!CprCew!JGaq>5_(`dqfw8Q9 z-V6xei>l+@D@Fr+E_|4hs{I+rzB!)_jvsuZlp1w?NMBS?-$E=$!NSZ>Je>zrTgx|# zii{m{je+P$XJui%9~Nr+ed%>w_s%wXu+{Qfar)vr;aA?=F%`A|?A*YoJIh_;oiqLM z`9GM=xi5`p@zPT9t?X|dBb>-HAHUcrSOJ_wTWYHnpyI=(K3nIzUw7>VU&swx+s1Lqy+TBX?3hEqbF;S69Uq7=n$Dm zvDIe>9Nhh%Nw(8vwsW^V=#sRYfg7!73=+zX09#4?2LCCdV@$$sj(SY zz<_bW8^Q3|q&cN+53hGH%rvSe_SYKfOY5mU|Hi}keq1mBmh)6oGecL_bdB8gO6uy9 zYV=7tH!-z>Xmnh?-{6|pD=w&b2xgbY=_KrZs8$2c=sse7YuAg|9lwIb-}Jz7a%DZA zv1|oXp2+rfZdkcg|MBhZ;@nI92{Q3Y*g!3IUfmHSeQDLJ+LK7U`n>+hWweAsZc7Hq`%g|| zdy6piO81&^pvw3L!CUW+{v$ zy+*nMk|r?cU}fwvi=u}Urxf#Y1h1G|CwiAWlX-NRurp<|PeiP6v4OU>Zwa(V^7X6T z{DlC~W{K;w{F_{T+gfbu?5A`;p`jx|q&4>d>~ZU|om#QD{NfGXNSjO4jf}zZ#h*lP zOJ~`DSE^;wQdfgiwjT9ie;q2}^Hil_G?oT67Cq9wPOZGh;(?vHh^Zy#=Fsr))huz_ z|Brayo>NXPqo2V?bj4S9-u}_5UC_Ik4g-1|>ahDYbJ8S~HeB?8Vb5(?u2O4Iqlo^adT#<)+Y!z&%-`$S@af!*i5hApY*hr8rP1JIV>j@#N4 zO@Z{m8}`MIVYe%O1*0Pe7DKc0vdD^MukZqwiM(yTs|E7Q*GBvf_DAF2SP&v0@=YSn zp`>|jIGn}F$!TWKT~}AvV=3S<+YA-UKIZ~WG%KcEwx~4I;`$Chn->+f?)d?%D!Pue z{zyBp5;$i5_r#d84IC7SBJD5I(^y-N-jdL~_6aE_;dmn`g@4k^Ic(3NRYg@Ki+WCB znAX*8E)0{500IAe&YEtIw*1>PmKM0NL!{%pZ)D1BlMna{nTHkGv8}>-4PrME^J>t2MAgES)*cj%GZp#wmi>fKsd9XHq|% zWps*Ev5Ym7wzNZaFevsGSt5bz!dzqiXdiVUI=|yYwb75E)xNi%>}F?YHNqwYo^<$f+4P&8-EQtPQ2qzD ztx424ALc-uK~f5ynl~KGpsyma-zcqmY=PmOuG_y4$h(rCkyCMMuBDE11*%Q8dc(nN zj<&nTbkS3=Bw*?aTsI-FpedzJ# z;G?I=;S2-;DbkDsU0poMD68C)LnpoS{<-XBz?5!VP2ao9A;}H2kd@622W76MBWA z61$-8r}9eu-K?bsB~1z|J5Pdjs2wFeFLDU=)O*+53A?slpNwuyL(aE�pi~x#&pE z^9nyi)_eO+_dnK7X{kEQEo3w}>5u}8d#h2tI%p3M`k|6fuW0Dq2{u8&`h4xbWB* zP79f(Z!ZPIVDvJ`{U5uhE6&YqkARqGOQnlh*Cd2w&j8tVb#?uh0Q<(Y@$qqayCAb< zJaJJ`(^`yrTlX*vRN#qtT4ZoALG{`wJx+z60OX8{Y?UY`F7Czq_fO@s4r*NPL#(T> zUv_T(5!a&!z{kf2{GF-JjVAJzXPj+xAY_v0PSYS#uKJh2x2h_N%ITp7yV)v?ZO{v5 zX&JAB>1xXnhB)AM~<>~1eO++IA<%%_JQuQxgc9euPIp(OKa(DpwP5TGI z-g^S^ch2_Ga6e>6%R`J(y_ zxaW-s$B~@X8L7?%Z|(0tDpkn^;0-*$qx7e6I|0fc1k1qQ?ptR0Jo$G7M-oG~h4b|5w6)#Lt{|DRJhqM3y literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I diff --git a/web_favicon/static/src/img/android-chrome-144x144.png b/web_favicon/static/src/img/android-chrome-144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..47cbf21afcea0e9dd6da61a2bb377010bcab50bc GIT binary patch literal 1674 zcmbW1`#TegAIG;gw{kx?8g^#!#n=fM(Z;YHq%m#?rk z)#_`Tm=0$SxfG!|nsUUn!@+XfwBa~A|H65m&-?R!UZ3arynlQb2L^a)9E2PM000_3 z-Z+B7%m0xoNU_JLx+Mw&C%XH)0|2dMhjwF>6b#HDczFPxzA;`>fLf||c!uJ6>K_3; zENjS$qg$X~Fy1dItqFhoUk_@*pRI_}%OnI40jfR&AQ9xfe7(bh;iwgUHz})d!pABV z08rxk;M{}B(<70BEFnVuxuAyxlJ2-I7r(2`O{#*$fQeDVliWSlwS@Z+@8J@KoR@CY#&_E|;u#n>ho#2% zE=9|E^DC71xJoalN=b=BVs@q(4N*K&Q z6RWmM>QF9}HE!IbZC)T5-LXYm=9#fE%9Zij4gOHiVo(}#G0s-jxNaSm{36l(J7N83 z{f%nLhGTfS6}RHzEF~h*RLm;BiZRlTgxI5|5w2s49mwV7DYcwctw-aOFxWET!L0q! zp^%)K{k0lVk%+D0`visKc1^GDeIX5&v2`ZLw8`F)sMDwMKm=vrT9aTlJmLqd#;1Qm zo)`rn6FQjV{Wo95lY8i)&%{9_hiS3I|1RpaZ zpqzA>XBkaK-tPN}|89(XI@0_$NqLCXQcC$Wu4Rx=xzdgtXP<%x8fVf+R^65Fr`4_p z4eK~u`ewmYLV14G#Ihd{$V=1>r6-rf!^U7Q2Z`TIICxb&x?Z5Gq zeac3Ecx=xTm7g^=N1RZpI=7BZ+ch9f&F_~VvV-wAX4IL7+xjlPX|+7Y%10+K`ay#$ zXFZ4Doa2x34XzKnlx>z!amZ8nBSLFTL%I*d;tKulL^CeI`u22N z)-uRvfnfYQ4=YP(-{%t!kCB`*MRL5C18pw91US2k!Aetr>;$?P#5B{BX$|LE|44(b z8k%zcXgY6S8@C|5alyIxN&*)1wk$nWLIe{&_AGhX_;L%6Aa-7YGb=Vob=_$VwLw|w z=7@GkN{Cl@^Hz8+PxEK1fp>Y94Y4&HCZLhex*uUfpyZY1 zO*?;9&I(y{A`IBDP>$Iy7kco?t4Zzxo9ABhVP89!Km-GostgB2li zQrR^X?_fT9n-3n$w~rFX&=VDlsE*YQ6McR$yk}6q^^{c4sfYI1yr}h)tALo*Ng+z4 zE!Jp@vICd_mr3ThbZ+L>cQMAT^0^v4qgI{0BjfHXxl{vOQR#Ygw^C1|GLEVtji$jU z_$m4=0V&U_!`3LY@J0LuAm^{`N<`D;G0m=!?7_or%T+pWaQk(;XYiGPK676dc`0Y^ou|H9dl_-2;=Kc}BVxy;Su_``N}!LY*&5uU+u4P$rB{l?L>*7XRf+y2WYo#D#8)g_HWE)i#)gnGBhes4ejKcLHp zS&mkHRwl{8}yLG`dw_FnNX%^=`Xb3x{p>KI}n> Qihc+9-~(_^JxG+l0npneIsgCw literal 0 HcmV?d00001 diff --git a/web_favicon/static/src/img/android-chrome-192x192.png b/web_favicon/static/src/img/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..95dd0dfc4ec9765d3bb9d89b8a63056631659ad9 GIT binary patch literal 2304 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 DhW7Pu literal 0 HcmV?d00001 diff --git a/web_favicon/static/src/img/android-chrome-48x48.png b/web_favicon/static/src/img/android-chrome-48x48.png new file mode 100644 index 0000000000000000000000000000000000000000..5a31a338d060f6a17028d9d2575e672cbd56e83d GIT binary patch literal 693 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaMM3p^r=fts&_Fr$;k>jEvTJ}?;m`m2 zYxml=HZH}>~3rzcIB#}u(Y4SPByoKv%Ry|FFae#S@5aKFjC>$^}pNs1+GRNRbHZ2wa!vO zvpBE&uGJgu=W`xjp4RtRf4BOQ`1w1xoZjWwQFy+=M?*4xLwoyQoxGp@i~476;`np< zRO7;4x5pcc3ZK2d@NTBeREu}aHL{O3XBRyyV~W53VcS!kr(71Qd)QB8-fKTLscD&R zWw6W2)x7We7oARAFy+vhUk#>jCwc5$UJ$%8I5V*58GDzJ>bs-=89l>Ka7ZoSP?1&v#wwvD|`(gNm}c_UW@om=#x(r{sP@XhIK z=UhBpnmV^z6BH7!(Enkt?y`m^~sl4f6e2- z1(_wfLU*!eZ7mNx-TQSO(>BJ5jNjv>h3|13;c$JiYtNo^gTH&~-aYT%CSt$r1NU0L WEWW$<`gMTO&*16m=d#Wzp$PykVK_Vh literal 0 HcmV?d00001 diff --git a/web_favicon/static/src/img/android-chrome-72x72.png b/web_favicon/static/src/img/android-chrome-72x72.png new file mode 100644 index 0000000000000000000000000000000000000000..1e22c5202db42c05305214335f65ab51d1fba717 GIT binary patch literal 949 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAifOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%A+0*}aIpyul!%;=;sy8XTWx*tMG~$ktZ;G0<3vk|4ieh9@&` znAa_lV@Sl|wGlTbEm07d;+*GbGvWXL zOQqIkX|tHNm~6YZ%w1SZ`*o4TuVvRP12+rnZcS)hRvCJ@__K|!&*?weLGMpz%um#` zmYOK7#yQtUu1((O*}Tl=)<;vGcv~+N;9K{R?HRM{+qvPv6C{&!_UxI`t)%QLzpg*o zeC9>9?dz&-p16xuNT=WX?0kE+hwE53 zv^Selpa0?`dy0nSDQUeQHBM`ib;jy)bX-LBja zh~pA^q2ci9qNb6jL*7(l59?Fkm301EZ|Z3T+{PB{>d^Z*w&CIvrh^hX!k+J%U zyk6H=Jt}sg%j@NdH1%hr~&;^JdImoXFs_S+~gE#w>sN4i>d7e`@Sv f9+iAO`JVs8<_`}ZiMQzklRtx}tDnm{r-UW|BNMV+ literal 0 HcmV?d00001 diff --git a/web_favicon/static/src/img/android-chrome-96x96.png b/web_favicon/static/src/img/android-chrome-96x96.png new file mode 100644 index 0000000000000000000000000000000000000000..63ba2618c2cfd688f316b15c446e70b325f416fe GIT binary patch literal 1213 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD3?#3*wSy#B(j9#r85lP9bN@+X1@ak-gWR1M z)}51i3FL4VctjQhHD3o|MkkHg6+l6c0G|+7pUlF=uHBTQeeESHfo6)A1o;IsgqmeM z=eflE=i6j4?S=Q`HokY>SAL>JCZ6L30|WDIPZ!6KjC)(7-Zm{(;1OZ`876Syd;R6? z?|I*E#Wgj={4+OEnd!;4eC4SfGfzHzyh%&)#x57%^3%&5)y~ZObLh&?te~|Y6=v^v zU%NQ3^84TGS6+4Od^+!a)x`9ZSBlQuO_Y#2T$y|Dt88M%wDh@OWe&c+Yu_sy9i5fF z{+wB~hx5%@&2!H#o3r+-y?f=ihy$zzA>cG*KPIY+f(+v*?so(=QhvsKwq_{AYep^VL&dEl-6sS@p$Tt&iCJ{oK(# zab;Y$|9{=T*=W7RuKYG`#T_@xRu#|G+?4C}VY1{=b$@wpO@Z$d*$PGO$cwQUIxE$+ zD9OvV#RXgtJL=(A5Oym6?tzV5Q#bM)yxsWhQN>@yz`ZXtPBevH`Xj_J>7j%62ic?U zy6cz{mUJyNs~2UO)aa0r$lVKmMEt4Ro|S2!|&3!P^MiRU!Sxl zdoXx#a5i>c+05(MXEXmz)$W#kmg0|uxZR%ZHVb*NzD@Q`(>&>>%YRmg^*-5mScs)U zxZusMud)n{%jPr8I5k&^ktM4#Y9iZvPbLQO*GCpqzn&ud?`ZAGWetZab~CaHtC_Cy zO1u&{S*C&^V7XA&0|^O7iJ2)H>^Uhjoh~2dGL3qZW5Tgvx@Lbf*NVxHpE&fqJ*>1~ zxy*?fnK4t}%`a+q|GmxT zaL`$E9r>%1c)Fa{tO!?dIvQllbp8Y1kITMJ*SqX|qaJyyCPjI#>tej@6#szX-jw|& zzrABzuTIz==Ja$?fol2ZmY0_K2@TwFr>3(gZ(JPoon1F?$FtJ`C%q$jwL9l~v1n@4 zte)4{{b;kEjfu{-RoCkueZBH&`hJxiOZTbdFa=#`HPDN^)_G?0*3UkZ&aL@#hQZVH z_t(P{LK-(NSU2Cm!AkJuvD>HIFFjy;8rAo)|Im^`=Re|G_9^OfEL`$6_uv0t_4h8F zwb`J(cGBzUty|&_>-(>{U%zHy~gxew2uEKC2s_T$N@ zv`afIyCSd4D^9<%(Y#A(;hw+Mw{}kBn!V0`O~Sl;KP_6`yYmU9FP!o0_WcVpX6`y; z7wNW&{piKO_!k_X7kG+KpUV34_h@~ literal 0 HcmV?d00001 diff --git a/web_favicon/static/src/img/apple-touch-icon-114x114.png b/web_favicon/static/src/img/apple-touch-icon-114x114.png new file mode 100644 index 0000000000000000000000000000000000000000..0aaacd34759dbe8b2807d5cec34d86486ba85902 GIT binary patch literal 1275 zcmVPx#MNmvsMWaQFxpJqaNsiN}$oKE{`}g{?VVwW}|EW%q ztW=fn-RkDb-r2Ix;KA7b{Qm0Gu;hL7JpUztGu_BE6GjNHh~;NS+lL zlxdG6$Uw;np`jl+OL9u&+==u~lasQ#E~K}oiFYS*9Y}8#A#Y=XNT zR$2~7d7bybz9iiG@UJs|a!$Os%jACOZ$$#uFc;2G1ufK=~Bs`uKGON=c6 zgRk*Q_mP-;slq5SC`>4T!lD~RIw(gRkmgcS6Pj685!1hrFi;^BOowGi+2RJGcqb%OPKpaEIb+ zvV(|1-mR#PEV*Hh*%%N0_kWAs(bq%%K$fg|Pj{_>uSpZKqfgK?l4{$Tv+@^zc2x)> zyFR-41t_<)Ji9n#27-A2e?u2`TnG_{Ewy1u_N_U|TpxJpjfE)w{E8Pbu&w@uV@K{d zfMTt=l9DuKc9)!}Y)u`3Mkhh$yFr0+A28XA^fKa4Efy!%oO`p8Nzbbb9UalJz>uIttwAf$~z)4P2O-F~ZZzb3B;Mh(VsnzsnC6~Ft l`x*+LUFQ$-gZ%f9zW_-L^cyqs0oVWl002ovPDHLkV1innXb%7Y literal 0 HcmV?d00001 diff --git a/web_favicon/static/src/img/apple-touch-icon-120x120.png b/web_favicon/static/src/img/apple-touch-icon-120x120.png new file mode 100644 index 0000000000000000000000000000000000000000..3909ec7f00c5abfa485b3122c3e7d180ee73a1ae GIT binary patch literal 1267 zcmVPx#OHfQyMgRZ*q(+SX{r;>~mG|%UvSXd8Pm!ZVi>6AB z`}g|3e68~4@U?29>eJ-q$==YR#Nfc!uUwe!-0IAjzS^|V!iBQAbEnp;%g2tmBzk(5 z000C=Nkl?-btd(*e!+xQ4#_(R8kxzrZF0SQpdf&V>PL1J^O>AH7@~nx|k7)MkTCLYpgN z4~Y!s>AqrEOv2#tq8nOuqP|{rQd6Ry@pNQQqN>nzi@-@c8D9rxEO`u-#YNgwDjBqy z=&H+0N@Yx8x#kq|e3dbU<&o2%Png*@ROJN@X_nbK%_1|fyRAtRaaRDzDu>y~*VL9D zv%Ogt`JL0f&nKm9V;*!uQAqRhD45xT=1M zrt(2{u_ztnz?`sk)WQ^tZ`L4xiHYcyWJyVjqmmcc0*LaF85pZjjyOj23Dwqu$VMAA z3aPvaesFs|xHn^ul#}<@bAp`k)P#b3CtlA%gz0NWMqru%z`Six--!YGB7Z$6GYV*V zSj*RQtT`~mUHbK${#U@VwU0qlb7E9i0fS$pI=5>eAtkp|}-* z+uKME|BIPP=GY2W1G#mSafk&!1~Vb-q}OrCL{p)+HVL)qAvD@DHxHZ(T$RwQ79z0~ah zACnuZ&NGIat~aR4N{|)~I*SgheJFf_;e?6xaG)<5S93ax5BK#J(n@z>!=Ie5>MO#V zzpdp`BsRIkOPRbZuR*Ay_n+xVu8R=ZZ`J7+FKCZwm}7cNMG(>vnaMp_ZFkG`{m9q# z)8eickgg4#9PK~FnKxT>$8os08GpINz+zX$wQt`O=nmZ!SCIL3h%J$Go)(6)-D5q^ zYLNS_6|T(eB3dm*(BB5Xk_5~M_!PO&+qT4{C#=Uu!th1&Dw`8a4n>{NW?W@)W zOLik4>W(!N=db#F7A(+JZ$~~noxPdK>-Rw)_Fl#ut$hs5HmwJ{5mSq`gncwO&Rna_ z$Mp?+<-LvgKKVV4`R?X-tPx#NKi~vMgRZ*#E7)`@b;!jj;vLcv0t0DYNDe>i>XeK z{`~&?_xkJB<)yN7zkaUt=<&&uySj9z*|N{nr^w;L+2!i_H2?qw zI!Q!9RCwC$T-lP`DhzEfn{AAZ*Z=?1bWbX&S z6O_D!c9TtDQes)(u~MTq&gP*rerzlzxkP0ta4`%m>Fk}Qq8%l96wvviBtiq58x~VW z=LNNKt9L&NXDcw7g>~K5Q`<^7G4hEg?31mBUYIm#IF)6A^OA$lEIP}CDb5VbWh^7~ zRm`~jsh@`kCV|I8_W*7cEmgC&wo>7ea{-Gx*cJK4v z>&&){>u;~p59@dclS#@g%nJ0Zae}<7u0v*>l&?l>Mu2y5kys^}6O%=z$L_cK(xx9b z#kOc6^{T9lJ*O-%D~p9GpI6fii=H?v?MQ?SlV9~EvtKn@-jkVt>rfr`1? zXoW++s7et@gBLR7-0ISGB0@E&DAxr;_M)39!y z@UOPYW)qU6cT0hdsp@{5M?MyetGbzhPy+_lGq`pF!tzk??XU_(hMq2LG1Eb{gl?(l zgZUIdA>hnIv-II%uL~&AtSa)loa#ywKN!?$XpO0A9f?{E=4Og%Q{W^PXuc>OQ|t^} zg8LK%lxSqyqkxr2+&;e-rBD>Z2mix<`#fm%2NR(O=&a4{vpqOYg!Wl{(g^c2&Lz>r?xZ zX!H7z3cbcU`DhKXYTIJbum!{Wm*|##;b2r^Hz?5!3yyaT>8B!KJ9vryCAyhAWeyOH$x$R1$D}6pV@%EuW%~Y{kvJuAO8uBI^p)KS z%b7uYQVO7U%aAjJHsyz+D{IQm8Gmz(te3f`nFynmxpR#6b&M>`vhSa~o`2*VUUQ5M zhEMY+J)fjrCjrH_iMSh`KSAqgk$P@D3rm_j{Zb>*%%o3&*GT6CIR>9scEn6>+~0=&vqQAIg@!PL7fkl zqnwiIjN-I&?F9D0FxWrq;oH^M3aQ(9k0;lj1lEUqFk`s(u6(uTM+3+u7D-8ObE^v+ zhCrq?X+O8TPhtog<&?YIkGc8v7V9N+7AM#K#)e-ew=UbRP*R?I^um$LrjpF)w1ju4*~2dHtTNT0Z#TgAYD<4}Ji39Po1y)X41s0000< KMNUMnLSTXlDCzD1 literal 0 HcmV?d00001 diff --git a/web_favicon/static/src/img/apple-touch-icon-152x152.png b/web_favicon/static/src/img/apple-touch-icon-152x152.png new file mode 100644 index 0000000000000000000000000000000000000000..93fd730ba9c06dac2a7124e89fd315e57da044ef GIT binary patch literal 1570 zcmV+-2Hp9IP)0{{R3FC5Sl00004XF*Lt006O% z3;baP00001b5ch_0Itp)=>Px#MNmvsMgRZ*tyY$^WS*o(jHXJC`}O(3gR!GUi~jum zs!)>Nyw$sQsqfwD_wV)c=I_m#z|y70uw9wRkh$vAvCii6Z>InN1$#+E zK~#9!?OfTiQ>!F7pdg!5t{wLIT z!+MO12~ub+X1ND59_x_$PlD=(ZCb+YwEY*U6X3oa>u13AX`RfhmCccIayepmGpytn z>GGidCN0b{+{d?W9d~V!q~)@uTVM@`5z11?1>YXpFiCC6r1!Sa`V*G2Rn!z(J*+Qi zVQXUsoxcL>OV^g6ffQGx?Nw6p;Pz{26qbXuiM;Fz$}*Ake45rB!t#+Dxy*A|wB;l& zac;Y^%p^Ak_42djr}?r=>si(77m14|&`r*^A$RnbyqC7E$W8Ugx`w!}@T{9!;yRJ} zO1*E4>$HHa&K{j@O>+%0FKl~~^gAF*dj}cny_pOt&eHBj3Lf?|8>ii0n&>q85&ip0 zoJse#4k@KB4RQ6O*_~=-njWe6YBoNm?>YKmX4OK?kP7C)5&K*|bp+(c8GN+eFDO`M z>k9cg%CI$Fn481ET8nDi#{~mTVsoby%DT0ClmKwK)rhprsi?Pvu)RAZ*VPn@A*&?C zpV1UQG$fP@D~XYsOQg|p=zob}dP)580D@&DhUuEDurEaf2$mHXrpKz{LlIe-WfQDl zOKnl4aLE-}Hb~wm1R4OS{#|G$$g-jsKprdfNz3(0;0kHV3|Q6yo#UvsO?9&DO|{ivi<7eIAChd$ zFqma|9}B4%3&Y^6Sj39YDL7`9JSVGUkctJajs}$I1` z^jisVe>-2Vam&XqVkL(>3uDt$k_#+(CM(Ye3@|Y@y+4w-WWDkMgOn^Im{4`Uaw=JP ze`3Ew_rYK^158$hN_0<_|DXN+iM$&#tWE#C%E0o^+0 z`APZei2lQX{bxmalU2U*%0GY9j{#OGsh&S@dVZiNzEkf?$$3`-aZjKEbDYrykc%0r zwQ$B`FR!T94>TUed)(MTt`Y^lc{Jb-cN;kw5qw!vr2h+GE{ZL$d>x9MzCm3#Hd#Wo z!CXrfsw)UChXK{@#tJU8*(J~s(pya#iplvymAiZ{1{FMV$tX3cR5e|Duu0FtGO*M+ zRhcpm%OHlit+w2K-N}MIN2oOdHX!VB)t7Zkbu$T)W%Yy{u4My`3#EMcD5%%_;f?y&g)N{2~m2TP1>-{2Jph3^A^L zGJ&v4OO5epWAk5w^J12>aKy2Bdbo1WqJbLe0iJg^0IL}-yknUqR3*{v*MIiPo+!Wa=+j(EG$gJ?lX~?7OrcWm|DCNl8%cHaX4JcS0m3WPnVQ- z_^!#b?hTsOuzm`3Cqq-BIjk>e+d^WS3)5XMMD=GjJL9lvIo|XD(=Tje5HL7BhiMz` zf9k96;t5U)_Z{AuWbS6%hVJz#>bn%TV>DqulU=R;d9iJa>2shSdg!5t9{MBcFY;~+ UAH#I9{r~^~07*qoM6N<$g3rbVO8@`> literal 0 HcmV?d00001 diff --git a/web_favicon/static/src/img/apple-touch-icon-180x180.png b/web_favicon/static/src/img/apple-touch-icon-180x180.png new file mode 100644 index 0000000000000000000000000000000000000000..2899fa5da80dccdf5e8cf0a43bc8d87d02102773 GIT binary patch literal 1875 zcmV-Z2dwysP)Px#LQqUpMgRZ*wrisM_xjMF#QyyKvSFO9SC*qii=;=4 zsZNmd=(%AJfUob~>)W@|)~w6BcdE*jyy3#x=F8uWc*1G`00yr~L_t(| z+U;H0mg6W4ZH&Qe#u)7X|J6yVt9$CqR7CDd%YWp7J_mVh(|ZA)+$ppAKisckbd--J zf0rd*_W%I?gWIZ*w(B)zTBXn!z<+_OaQI7)ol8+K)nbKQuTqogEXpoTVstpCOCYx_ z@|Wd~!(sa)+ND$M*wvCvzCT%k8=}z0if=jS*{>F1yM>!VcWJxyv| z7WY>kbfRSSEF&p35Wyyp~Bo7c8915H)coW&jWo2H#!@yH0FVyT_L zsdER{iA|RAOO0A+E4#?IdDo;%jaukV%xE$tAWuy~EVL=zBquIqMlQ7%m@`Pg-Q(i* zf?DbW@l%Pc_DS&4`dx5z(7IA~qEhq9VdOo5)yigcr-6;uxAjcRzwi=`5Ts zPVkNi!h42U!fIW>Us?4yNy9~q-3#5O+G!eNUm>tU3g5X| ziv0E+PDd@Uxn=l5BbFNQFJNv+t7E$(&rEe}#6R2sm-eSM>)Oy%**qUSg#`lo|jXe*QG~r7T!}{RCC30P&^$`Ac&hXuwdLw_Irev~AUC z!>Q8%J*MCCAj)Rzp)Rx2ko8c_&LuE{4$aO5aO07$BL(t^xf!(Ji}Ik@BQ}SonlGM) zqP)<28W=MdD4v$>>DGRgZ!xJov5i~-^$aQI*-jy_7ja=7)ZzfnAAh6^CaZp2EV>30*PW4-W0sne;q%-MT8tN zHKdf#{(|2#m};;J(4@X2!Qslm8yDyv5WZ$6UuwAA5;C;#g}xznFo=o|@OlbVYU)c{ zM1jfC{~NSf7p9U2bi=TI&|cdjDhd%+7E%AG=oDmCBA{4Fa@$Cov^s(FyyA9YQ6~$iX^(04wTm(8U_K zK88-zILvrb3)wN!)hmtc-mR#Lk+?P#)!a=#B^>6OI0xGzXJwn0!M3?nl^@N>rCv;I z$r;fNMRggeL$|7`RJ+(dVOzIMr3*XIZG$#eHE_)ik&YP_04sK{YnD@HDj_`oQX_ZwC%`G=P=;qH)*gC#yX#SWMS=EEx7LuK{ z4f;lfefEXfGYX+%w=Agqz1O3L_*X=lZ2-D{w?BqDdj=TD-IOyhO8%;=u z2!b0DAI74l;oMvtiJEF;o*TH>U80~l@>wj1*Jr$&70(QTv4ddXunzIsIBUscZg zb?@iQ?x-f|KAxbt^y!?Z;ZDd0ihgT_D96Q!KP|UAWrSydKFP_n`Zs!jYkJbTPr}iB zyS_@ql2-SQFNV#2dosK60scAg_R9-rn}5?6&ThHomRoMQ<(6AO`3I66ZCQXo7SaF! N002ovPDHLkV1mYJt!e-O literal 0 HcmV?d00001 diff --git a/web_favicon/static/src/img/apple-touch-icon-57x57.png b/web_favicon/static/src/img/apple-touch-icon-57x57.png new file mode 100644 index 0000000000000000000000000000000000000000..1f06b9f29d29d5c90410023fa2a4992d4fd919b1 GIT binary patch literal 677 zcmV;W0$TlvP)Px#QBX`&MgRZ*^5*aU{Qjv6DC zvt*vTcdE>ozUIr{zkaTyMvU*?>-X>V_3QH8xzpmr+qP|^$B($#vd`+&Y4ax;Y^(`WujZrM5XPq1`^!1m)%v%nYqF?Dsv23 zQJaQbe(G!I8=WJTfz!P_JU~Kmy$S?G#9ZML)HPxC?%%gs8 zSuaSB8yW&HF-v|_4|MBNHPnxb*-C?{ z;SC4XfL9#dJ8)O2u{?r%Gdfz%AP0AqIca-=8${SZ;rfU3|I)Xv+?{-$NJlB{$Taif z#L`Cbe$o-qcoWat%na=@UIpH>k=+t23!vCLxW}rhC*9)prZL}wuYYUU-2DG_i|%oU zaiVwMw+-Q{xC{^ejPG&hFlhCW#S`Aouj2Ur-u9pWt+5B8uYZg$g77SP%Gq^V00000 LNkvXXu0mjfA@x*5 literal 0 HcmV?d00001 diff --git a/web_favicon/static/src/img/apple-touch-icon-60x60.png b/web_favicon/static/src/img/apple-touch-icon-60x60.png new file mode 100644 index 0000000000000000000000000000000000000000..715f3339829524b03b2c62ccaf958a34e074a9d3 GIT binary patch literal 736 zcmV<60w4W}P)Px#T2M?>MgRZ*{rmm<_WJno_O4l%s7#NxY@?$^i>gqP zq(+SI-|MAGjk02#>(=GFcB$yk;m@7I{{8;MiM6z6px(RG)27Gb#M{AxvA=(>^XKr$ zkh$5h&i3u|%$UBl;OH6v00JaQL_t(Y$L&|yc7q@gjRXZ00TGD{{{L?_Ij5CD0coE* zj{_HmJ1dXJzkJK!?DQIO-BH}=sek?g>a6B9BR|4uGqqJ2beYDEoQ3MX0PYlLBqnri zZ=jWJ;?R%q4P~$0Ym$+Ab!luX7|DxBn%+0$R+dTB_Jh{(I2uhXUuH?!7) z(=!k2)!|dP2d{QP)nlk!zX=+0zFo+|K|t*7;Mb6x0}t}kvk^3!2|1jW4bB*D!O={+ z8#mHEIC%z3I+}oOle)U6c~_iS!SK}z==)Rv8t}9U_!yX^l93Nd6)0vkU($IaY0N$l zAbT#^J*~_KiuTbXbLnpUCHheMCv%qrx1R9kPBH&W9A8W+yQo?|vJz>7`jagSYu<=mNg+U^HYP@1erONnXQ>>2U5@X?> zFB#LqOuZCX65|F$PFN&TksSn+1>Jm3%n(md=P2YAmJ+r{yD-{8SD1q>8(8U71dS9h zuC^)nztQ?a`J&;NGM`R2!3;AR6gG^Y`%;-HjUU5=S-!)(T8s#X4K-XG!NW$%@T@jt zHZ@~*-=HnMHgXo3QFyE?3|n0?7+@RE)~NuEO)A$ndWYpUT^%jYLYe5ZW&M>go$fAQ z;*d!VpPi8RbFbT)$nEc_DVx}zb`7R4M#o*EU;Gl}=a)dc&o|*UN%#M8`jIaj12vs; S26k-#0000Px#R8UM*MWaQF@#OBZVVtg7m;U_yt5cKs@%I1!|D{Qd zs7;W@jknL9!ri*mz=5y5d#wET`nPSP%a^|Y{{OUSq1m&~>(%AdsL1Ed;O^Y%;=|gy zb*T00@tXtxj~P8^m_Y>Tk-dmDfbEosV@NK?K* z22RIdpFmf0Ps9u4B0=X2eXjus7Qfw}K?jVW2Ov0&vv>xfoX!Bm?p4T|g>_>91Y1lM zNDq#30YEThS0Z8*9L%qPTmmF3Lqi_PM2oKQW zZfb-EI<$-Fd#VC4c8a^uT0+6r_~7Ked?ZUnsqb&#X^k)lE)B0x`NrM7Erj zH^*VTnj>=byyEiM$U1r4tO=dXeHE!alFHw@u7YDScMqNKY@F2`bdaOymG;dPzr3~F9P`2#}g{eZ}GxhkJD#OB5pWvgSSUhNx? vEFW{axS?rf*U7dS+_Jy-$nx`|_3fbFQPF9c0n|D100000NkvXXu0mjf!bzjj literal 0 HcmV?d00001 diff --git a/web_favicon/static/src/img/apple-touch-icon-76x76.png b/web_favicon/static/src/img/apple-touch-icon-76x76.png new file mode 100644 index 0000000000000000000000000000000000000000..490ff715a5383f679b0d08e2051e91c048e778ee GIT binary patch literal 855 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 literal 0 HcmV?d00001 diff --git a/web_favicon/static/src/img/apple-touch-icon.png b/web_favicon/static/src/img/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2899fa5da80dccdf5e8cf0a43bc8d87d02102773 GIT binary patch literal 1875 zcmV-Z2dwysP)Px#LQqUpMgRZ*wrisM_xjMF#QyyKvSFO9SC*qii=;=4 zsZNmd=(%AJfUob~>)W@|)~w6BcdE*jyy3#x=F8uWc*1G`00yr~L_t(| z+U;H0mg6W4ZH&Qe#u)7X|J6yVt9$CqR7CDd%YWp7J_mVh(|ZA)+$ppAKisckbd--J zf0rd*_W%I?gWIZ*w(B)zTBXn!z<+_OaQI7)ol8+K)nbKQuTqogEXpoTVstpCOCYx_ z@|Wd~!(sa)+ND$M*wvCvzCT%k8=}z0if=jS*{>F1yM>!VcWJxyv| z7WY>kbfRSSEF&p35Wyyp~Bo7c8915H)coW&jWo2H#!@yH0FVyT_L zsdER{iA|RAOO0A+E4#?IdDo;%jaukV%xE$tAWuy~EVL=zBquIqMlQ7%m@`Pg-Q(i* zf?DbW@l%Pc_DS&4`dx5z(7IA~qEhq9VdOo5)yigcr-6;uxAjcRzwi=`5Ts zPVkNi!h42U!fIW>Us?4yNy9~q-3#5O+G!eNUm>tU3g5X| ziv0E+PDd@Uxn=l5BbFNQFJNv+t7E$(&rEe}#6R2sm-eSM>)Oy%**qUSg#`lo|jXe*QG~r7T!}{RCC30P&^$`Ac&hXuwdLw_Irev~AUC z!>Q8%J*MCCAj)Rzp)Rx2ko8c_&LuE{4$aO5aO07$BL(t^xf!(Ji}Ik@BQ}SonlGM) zqP)<28W=MdD4v$>>DGRgZ!xJov5i~-^$aQI*-jy_7ja=7)ZzfnAAh6^CaZp2EV>30*PW4-W0sne;q%-MT8tN zHKdf#{(|2#m};;J(4@X2!Qslm8yDyv5WZ$6UuwAA5;C;#g}xznFo=o|@OlbVYU)c{ zM1jfC{~NSf7p9U2bi=TI&|cdjDhd%+7E%AG=oDmCBA{4Fa@$Cov^s(FyyA9YQ6~$iX^(04wTm(8U_K zK88-zILvrb3)wN!)hmtc-mR#Lk+?P#)!a=#B^>6OI0xGzXJwn0!M3?nl^@N>rCv;I z$r;fNMRggeL$|7`RJ+(dVOzIMr3*XIZG$#eHE_)ik&YP_04sK{YnD@HDj_`oQX_ZwC%`G=P=;qH)*gC#yX#SWMS=EEx7LuK{ z4f;lfefEXfGYX+%w=Agqz1O3L_*X=lZ2-D{w?BqDdj=TD-IOyhO8%;=u z2!b0DAI74l;oMvtiJEF;o*TH>U80~l@>wj1*Jr$&70(QTv4ddXunzIsIBUscZg zb?@iQ?x-f|KAxbt^y!?Z;ZDd0ihgT_D96Q!KP|UAWrSydKFP_n`Zs!jYkJbTPr}iB zyS_@ql2-SQFNV#2dosK60scAg_R9-rn}5?6&ThHomRoMQ<(6AO`3I66ZCQXo7SaF! N002ovPDHLkV1mYJt!e-O literal 0 HcmV?d00001 diff --git a/web_favicon/static/src/img/browserconfig.xml b/web_favicon/static/src/img/browserconfig.xml new file mode 100644 index 000000000..fe44cae80 --- /dev/null +++ b/web_favicon/static/src/img/browserconfig.xml @@ -0,0 +1,12 @@ + + + + + + + + + #da532c + + + diff --git a/web_favicon/static/src/img/favicon-16x16.png b/web_favicon/static/src/img/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..b9f30800c257dee59bb854cd72c7f2b3e1994aed GIT binary patch literal 390 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM*uE0G|+7pUlF=uH95bM|K7o01cNa3GxeOSl6^b=Hc@{tbXsERD>=~>RkR~ z_YM89;%E!C?0!C=D$W9r$YP-TuY)k7lg8`{px_Ko7sn8Z%c1_BLWdQ2iW?HPwK#0M z_P;)Zb&2s>eyP*bc$Aci-q(c8D=oQ_9T--1Gxy~l1CH_wGj{Oa-59&xW^rI&lEBU2 z$@8pZCUSktl(AlTktN`Z$Q|R28~*d@P5Wj3K_R7HXH}%y#IKgK!X`S&o%dT-*c|)e ziOIjs_YCjd@OG2gyj^CiSgTe~ HDWM4fzJ!|p literal 0 HcmV?d00001 diff --git a/web_favicon/static/src/img/favicon-32x32.png b/web_favicon/static/src/img/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..8e73a16390f07e3927f45e085cae2e8ed067f4bb GIT binary patch literal 533 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaLr1AIbUeKHFdyLM9%9oZRV05n{xB*-tA;fnh#mOIaXe_VOE)mW2PsZcy@ zORCL;>eJDlIrjZPRh$JLk;OpwUk71ECym(^KsTy;x;TbdoNf({p46hi!&13gL*bRk zcl#H+CO0%iU5@uiT0WVtMdU}`>!m@nW?4+OPWyh5bK#4G*&jqQS1H^H`I{G#wcyOs zb2pZ=e_7h|cZvI#6A!1?EVfU(Ef#o6^1{aF8(#kTc(OLaz;)+(hR$8g`nEf3zUwC+ z{#=!-op7u`L*#(`tAiFRoYI9J9;q<43|OaR=&)hiV*U?{6%8KMWeMA`XfU?lIBU~) z#U*vCE}Otd>xXMu5+j`Ubj&%B=s0bmqR_VsEKZj#4Bxd{*lOpxDM zcVx!w7p;pA?~pm4b^Ln5ey1I>7jk6!b*1&s%013YiS+7k`Ba(dANkPG*`{OFw0&9G zX}kDNpEaNSx<}`|Bj>hHzuS891bbP0l+XkK D+M4Dc literal 0 HcmV?d00001 diff --git a/web_favicon/static/src/img/favicon-96x96.png b/web_favicon/static/src/img/favicon-96x96.png new file mode 100644 index 0000000000000000000000000000000000000000..63ba2618c2cfd688f316b15c446e70b325f416fe GIT binary patch literal 1213 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD3?#3*wSy#B(j9#r85lP9bN@+X1@ak-gWR1M z)}51i3FL4VctjQhHD3o|MkkHg6+l6c0G|+7pUlF=uHBTQeeESHfo6)A1o;IsgqmeM z=eflE=i6j4?S=Q`HokY>SAL>JCZ6L30|WDIPZ!6KjC)(7-Zm{(;1OZ`876Syd;R6? z?|I*E#Wgj={4+OEnd!;4eC4SfGfzHzyh%&)#x57%^3%&5)y~ZObLh&?te~|Y6=v^v zU%NQ3^84TGS6+4Od^+!a)x`9ZSBlQuO_Y#2T$y|Dt88M%wDh@OWe&c+Yu_sy9i5fF z{+wB~hx5%@&2!H#o3r+-y?f=ihy$zzA>cG*KPIY+f(+v*?so(=QhvsKwq_{AYep^VL&dEl-6sS@p$Tt&iCJ{oK(# zab;Y$|9{=T*=W7RuKYG`#T_@xRu#|G+?4C}VY1{=b$@wpO@Z$d*$PGO$cwQUIxE$+ zD9OvV#RXgtJL=(A5Oym6?tzV5Q#bM)yxsWhQN>@yz`ZXtPBevH`Xj_J>7j%62ic?U zy6cz{mUJyNs~2UO)aa0r$lVKmMEt4Ro|S2!|&3!P^MiRU!Sxl zdoXx#a5i>c+05(MXEXmz)$W#kmg0|uxZR%ZHVb*NzD@Q`(>&>>%YRmg^*-5mScs)U zxZusMud)n{%jPr8I5k&^ktM4#Y9iZvPbLQO*GCpqzn&ud?`ZAGWetZab~CaHtC_Cy zO1u&{S*C&^V7XA&0|^O7iJ2)H>^Uhjoh~2dGL3qZW5Tgvx@Lbf*NVxHpE&fqJ*>1~ zxy*?fnK4t}%`a+q|GmxT zaL`$E9r>%1c)Fa{tO!?dIvQllbp8Y1kITMJ*SqX|qaJyyCPjI#>tej@6#szX-jw|& zzrABzuTIz==Ja$?fol2ZmY0_K2@TwFr>3(gZ(JPoon1F?$FtJ`C%q$jwL9l~v1n@4 zte)4{{b;kEjfu{-RoCkueZBH&`hJxiOZTbdFa=#`HPDN^)_G?0*3UkZ&aL@#hQZVH z_t(P{LK-(NSU2Cm!AkJuvD>HIFFjy;8rAo)|Im^`=Re|G_9^OfEL`$6_uv0t_4h8F zwb`J(cGBzUty|&_>-(>{U%zHy~gxew2uEKC2s_T$N@ zv`afIyCSd4D^9<%(Y#A(;hw+Mw{}kBn!V0`O~Sl;KP_6`yYmU9FP!o0_WcVpX6`y; z7wNW&{piKO_!k_X7kG+KpUV34_h@~ literal 0 HcmV?d00001 diff --git a/web_favicon/static/src/img/favicon.ico b/web_favicon/static/src/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..cdf7926f95255e6b02c27a8f1b2d93781b24b47d GIT binary patch literal 15086 zcmdU$J&0UY6vyvo61I{J0SSb_E+IlvB@hq-fwjq|O_f**L9pGmOpy%|1wph;3JW2q zl})ge38WIlLczvjM8rai(JE-j^Z$GM&gAafd*3^E=1md@&fbrA?m7SSanHRoybWO` zjKa~QLG4C(=WqzGhY&V4_Qqdm{!`7JKi`aB3t{Wk5YC84kF;WMUQGz%>-v0n<+CHA ztD>(&zl#28i2i-iWzmt849%Yu-4p#Ksxmay{Kuk`u?)tdZ$#~NroTN8zFLM_Frzo- z`Cj99Mc{?#GZ*uKgSFTTE_*hUoxsR5WXE$qX?!|f7x#H4g2!asS0CTn_;$>n z>WlYw#BVWTJ-)h{S`*K~)9~6F)>+@P{>|3F_z{}BUXVKRuv zff#6xwQ-KI=91`$D8_^waJ(2{9)-ic z2z{~NQ+;^Ag0J!UTsXAuR3ii1QhGddVE#mOyx-bq9OB33A4MJ=9-c>%b>W$Yd{2DW zMBw(wE#V<1SMr)e;Q5kt8%}(h^n>QfS&z^04f%Le^maq^Ek{jPt|b=x@XI2VzO?FKIzEqZFCcd6t;bPv`yqb+=E+558}HC9HKoqEw*5BNb8;bfUM+$LnfqdHI@>K6Mfl0%&pu4ZKvt*S z2@K>h^?`lbrz7{AoM0~`~C~I;6f*U#%FF{SJSns+FhxhhH&di2%G%0z|Rbm(Rg*dHXV&OpNw{IJzd$Ys+v}6 zZdRnp_*lc*$=Y;v62dAnk&TWjgsK`#f^_pc#d*v&^oY_FYL9Pj%Cl|H}jX$<>#jZcLmH@%^Aa<-Gh=vUX=I&nZ%Mhh97%#3LX)@Vjp?;s$nO0XL;YQZF*Kx zi%cdhHe&~v_&yCjWEo)_zQ#`KMk#L7MZ7z6R?pGx`R-sc+by<$4;jQ7;yl84ZQhb` zHg6Jfz=!kts05Rj7yFCuU*hKu^)lE1hOM@b`^H+sJ|hmEyNK71rF`fv#va?I_3S&( zchOR8ef;EmQO?A;?!i9HJVyt0X0CH3#vS)1kKY8yCt^{0MtE?;L(O8} zb=JrjS7~3esp;t8+#Dhvc6RJY-k?73vQ4_MgLsfv_u1WrXWnPhPn}|a zU<-FZ&R6n)x`$0*rDcqrJh$&n3+G8yO;#&j9MX$Qb<4{{j3;`zh;|&ph*k!!=#SXy zf!;ULn@#$kDB8`YT@PW(e^BXL<|N#DTDQE=B$VTkUQN>fQH`Z-qITC>y(TqX(RjV8 z9;=n|y>_#zY8?Z#U^Mx(wZ2BL;i0YZ2`6|bcth=!*SBQPl>Z7-TiYu;_pmkokRK}i Ypg+~_o}XrZ;{`3|XD?`}&$#jXe|Fz6@Bjb+ literal 0 HcmV?d00001 diff --git a/web_favicon/static/src/img/manifest.json b/web_favicon/static/src/img/manifest.json new file mode 100644 index 000000000..0f649d7b5 --- /dev/null +++ b/web_favicon/static/src/img/manifest.json @@ -0,0 +1,41 @@ +{ + "name": "Odoo", + "icons": [ + { + "src": "\/android-chrome-36x36.png", + "sizes": "36x36", + "type": "image\/png", + "density": "0.75" + }, + { + "src": "\/android-chrome-48x48.png", + "sizes": "48x48", + "type": "image\/png", + "density": "1.0" + }, + { + "src": "\/android-chrome-72x72.png", + "sizes": "72x72", + "type": "image\/png", + "density": "1.5" + }, + { + "src": "\/android-chrome-96x96.png", + "sizes": "96x96", + "type": "image\/png", + "density": "2.0" + }, + { + "src": "\/android-chrome-144x144.png", + "sizes": "144x144", + "type": "image\/png", + "density": "3.0" + }, + { + "src": "\/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image\/png", + "density": "4.0" + } + ] +} diff --git a/web_favicon/static/src/img/master_original_favicon.png b/web_favicon/static/src/img/master_original_favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..22a0aa8fb9958087b237c0fb78cdb7a2ecd4ab37 GIT binary patch literal 7242 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%0D-R3HoE;>LB}~FOWKyV9a7TBH`{;&S zpn!~|?^&fJHbACpj%~rM;{P$*p60UYIAUw86l9&G2Nq=#u5eW30_V*!x#>N|==Gvh zwT1+~lO{e&T@_dI*@TRhFt<(9w`jKom6G^@n~|YH>Id9J#-ErAZlT>ipx;J1TLhgw zLfLHXE^BKlKUxM*>~Cu=VCa>sT1nrwz_DJBIafkk6P0~x6$E%=eBEI@W_ + + +image/svg+xml \ No newline at end of file diff --git a/web_favicon/static/src/img/mstile-144x144.png b/web_favicon/static/src/img/mstile-144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..e44e2367521d4b7e6c5bf131e770798703baa0fc GIT binary patch literal 1820 zcmb`I=Q|q;1I0tEP$c?_S*lTrqExGt7rlv{Am%l$rbW<(xUs2Go0iBWs<`IWk{H)s zRU_1B5K3dT_NZL7YAe_KKfLF8&iOs(%lUeeEKx@MyyCn70D#}b7>>Rm@qgw4UgXFt zq2vp2U=5H40KngAe5V-Bi_S(s8$AG24oQByC^nYnHVAVszw`gM5SMPzF7_q-(I{&` zv#h`l_YpfwbpEVoGR#bs;*gj*;!~jI_Dhp0&K&^Y(ldb@*aT0}ohQi@MX)d@N2l28 z`T1}T>J1^(xSW@Bq9UQKr@kUYV^GEN*R^L)X1bozuUD=2*F?1D?_qBH#rk*R_Jc2O8`|h9%Z>%`)Oi=rJ=P9XDOY z1=jFohIw^_np`)bHeyCPDO(y;=B=h5W16%IMG%`NkVcQz`IvL>a0kVtphc#}Vpr+F zdlZRS7NS^3W!|HBFvU`wZsDgN#;oY99N&b-1FHztGLX)+O^||7tp|AqZRbY?w`de&G<+@X6eeN+S)u zsFK__N7KCb%fymj+Qrzj__B-@c=(-k|CkR?U!8eu!tng>ah6SwbKWQ`bxX58PeFT- zyntk?LNgy{Of7HMOynatxW+fW$*FQOET9n4SgZ=s`?dviUamC$2~v*rp@?f28s5sx zaAnx9%)$$l*G*L$xu*wUy$!DtHi7<@3}ee>w>J(!pSRt5o+J8?ynuH~^)Zf{mu)M! zL#_+H8H@6a4~=zToFps|l+DaNVJ44CL3iW3XYzj5#?I6Ky8B8%q3;iJ0 zuTiR#q_)<3jiyPyx30F9%f~1(DON0*D2M_}Qv)+ns64zpDd^iPac9lDmbLo#Qtzh= zlc8Iq4rj=#)u;qAQ(29jwdja#HC>LCQqLjYs`q;Y6;UkElCAX_Ew?1&gf8WZiALif zQeY}v1qd{f#-zhz>^@-&#?v6ssE2ypH6Xv-r1~k3tH1=FsE4;-tG{(7SpjebE?C71 ziQ~S#!ns2AKBX;PuB$iZBtYzFD?oIosfSK;Uq?n_jJE6|fIW`gF9=-x^KwG{rUO>e4J7^7ceb8hB-AMd(C9Or;Rs;&x32bQ`nd3?V zJ;may=D)ri03j>jnLn{^`k^o6JQXy$aSlda@F^mNg>PL?kCb_~P9zIXpJs7lYO@qx z5oo=tY5SsgSv$;+fU&kU+hU zzq3Iwu;VOWnWrE6b`v!)^mTir>7=x}ydd0IVlOgR)xCS5+PY!FO2FsfyaZR<-p^Ln zTJ7O&OkB&#_vH;dZrI|Mh2y&x!F#y&amFwNxiNLnxbT;c3$AZCRF5#FgSv64kzVP# zWwQ2ey9L8lRDzcpKI*VJAhfO&-SpiIK7kxf4L#ckQUHAa0}@mo>5y2i%o158|2gRx zl26CqJ8+8mtsecAdoWe=Pbk>+U)ITVPEhfy^V=+%$j_ z*ZIM}G$hvv3$GbEJYH;^m;O0A9@ee5qr9~=JD(JyjALfI(}E8+X7WziJH%J{0OR4I zv=Ue%o%yp1EmSdJCQ}(H?6x`@Mr(eQG4~0&EMJU4 z+PnQ-_UUBC;?>rR8Xx1R6_EEANeab2v({#uHq#&n-1VQ2`z;})&Gv`2i{H`d>HJLK eao4KgIdF5t$er)wrvAm_089`lc;$nK&;JDrs+a2k literal 0 HcmV?d00001 diff --git a/web_favicon/static/src/img/mstile-150x150.png b/web_favicon/static/src/img/mstile-150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..96b4e8657477f4e4cd653f4bb1f9e0e67cb455ae GIT binary patch literal 1632 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 Sasz1UzZeSPWM63)Nck6`8t*dz literal 0 HcmV?d00001 diff --git a/web_favicon/static/src/img/mstile-310x310.png b/web_favicon/static/src/img/mstile-310x310.png new file mode 100644 index 0000000000000000000000000000000000000000..b9b4a3e835e6c16a269988457e36f1295ecd5690 GIT binary patch literal 3294 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 literal 0 HcmV?d00001 diff --git a/web_favicon/static/src/img/mstile-70x70.png b/web_favicon/static/src/img/mstile-70x70.png new file mode 100644 index 0000000000000000000000000000000000000000..c02805fe1800ef77f751ad840be0a03467219e9b GIT binary patch literal 1232 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H3?#oinD`S&v7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgDM4)6(a^~o&!PbCntW=|c^Sc#G#zhH(ZR@@42zW!nn@`}dnGZz0i@a=#7OSPLz$~FtKu^5L&Kdn1{ zB1qZPssDJdw0Yj09fgnC*cK;MabK*`V^zPWw|Zet&DD2@Q<}ay&8v6*WGOSb>fpPQ zyC=Wz{onBZ^_Lj?4a%QB3#AzP7az8;)IYDY#P-VMZR+WgOKO|MBR+nUS97^Fo%^ui z{L%+~rFZ7L6^0#twej}*$->P0_-Yr)AL(q4scLDwCCqPa`hNZ2n@uy#-sPXT$+mv> zH~Swqxh^F&X5RmQmi>oDM$xweJ*i4x)8!-XWTt$3)5Z|lQxCKmGiYhq?dRf{<0!?jVZxJe&KM?Ef0F{f&#P79PX3vYX1`z6 zknKbtTgUVw1`fva>zRyxG`=-h=y5}zU!h-d!alJjj1FPje})Q%ALUl{JfqJ&_sfad z3J+FfI2C<+anv#LgQ~98RA-L~Q@(U<@LKi4S@o5a$QO=Ko_im=kEoUy&wl-$^?~gE z7w!t7T@zTOe>L$PU3ZUl0rRPSMlKu9hnEYu{pjko+kf?J*jec)m4f~?t8Q|Y-|`Or z#qs^5c9ck`U-ietYYFqi)-5&h*wS(8vgC~Jdrmv1MjEJD{T1D$baB-)SFs-HJ8RaS ze9kF8C+X~E56g=S6X(CW_I&qIovV85vx^U&e4#vZ=IX-+Gj?9y9Qf<#vqwjhmUw?! zn7MvRX@SV|K)Dp!zH#49=|fZ`gQkOmEFcuR+bxN#Z>L! z6m2Nk{Pp)2v5%YQ+Me7St#p5VvH$X?0w+$Z-nM?bKk0bpGQIQHFFkC}d~xSs!v&*j zSM8h>oNq@+Ze9B?Up9O8H?x0R`GZwYN1tRldog)V&W#P5b*9<%GK z=kJ>zUM#;(%U0&^y3alPx1Nj3W8(k9d3og{NDKTu&U U`IIvfSX?l8y85}Sb4q9e0QhWd)&Kwi literal 0 HcmV?d00001 diff --git a/web_favicon/static/src/img/website_favicon_sample.html b/web_favicon/static/src/img/website_favicon_sample.html new file mode 100644 index 000000000..db828882d --- /dev/null +++ b/web_favicon/static/src/img/website_favicon_sample.html @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web_favicon/tests/__init__.py b/web_favicon/tests/__init__.py index 15f22fcad..6a5f7312d 100644 --- a/web_favicon/tests/__init__.py +++ b/web_favicon/tests/__init__.py @@ -1,20 +1,4 @@ # -*- coding: utf-8 -*- -############################################################################## -# -# This module copyright (C) 2015 Therp BV . -# -# 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 . -# -############################################################################## +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + from . import test_web_favicon diff --git a/web_favicon/tests/test_web_favicon.py b/web_favicon/tests/test_web_favicon.py index 0301639c2..2af4f83c2 100644 --- a/web_favicon/tests/test_web_favicon.py +++ b/web_favicon/tests/test_web_favicon.py @@ -1,22 +1,7 @@ # -*- coding: utf-8 -*- -############################################################################## -# -# This module copyright (C) 2015 Therp BV . -# -# 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 . -# -############################################################################## +# © 2015 Therp BV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + import base64 from openerp.tests.common import TransactionCase from openerp.tools.misc import file_open From 78f2d47bedff428637f4aafb049a3d71d1334f68 Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Thu, 14 Apr 2016 09:49:32 +0200 Subject: [PATCH 03/34] [MIG] web_favicon: Migration to 9.0 --- web_favicon/README.rst | 6 ++++-- web_favicon/__openerp__.py | 2 +- web_favicon/views/res_company.xml | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/web_favicon/README.rst b/web_favicon/README.rst index be9fd7a51..ff1ffa996 100644 --- a/web_favicon/README.rst +++ b/web_favicon/README.rst @@ -23,6 +23,8 @@ the used browser, but most modern browsers do. Note that most browsers cache favicons basically forever, so if you want your icon to show up, you'll most probably have to delete you browser cache. +Some browsers can refresh the favicon, accessing the URL +/web_favicon/favicon. You have a sample SVG that can be used as template for generating your icon in /static/src/img/master_original_favicon.svg. You can also search for some @@ -33,7 +35,7 @@ Usage .. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas :alt: Try me on Runbot - :target: https://runbot.odoo-community.org/runbot/162/8.0 + :target: https://runbot.odoo-community.org/runbot/162/9.0 Known issues / Roadmap ====================== @@ -53,7 +55,7 @@ In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed feedback `here `_. +9.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_. Credits ======= diff --git a/web_favicon/__openerp__.py b/web_favicon/__openerp__.py index b6d6491fa..e18e739fb 100644 --- a/web_favicon/__openerp__.py +++ b/web_favicon/__openerp__.py @@ -5,7 +5,7 @@ { "name": "Custom shortcut icon", - "version": "8.0.1.0.0", + "version": "9.0.1.0.0", "author": "Therp BV, " "Tecnativa, " "Odoo Community Association (OCA)", diff --git a/web_favicon/views/res_company.xml b/web_favicon/views/res_company.xml index fa06e47dc..fa270399f 100644 --- a/web_favicon/views/res_company.xml +++ b/web_favicon/views/res_company.xml @@ -5,7 +5,7 @@ res.company - + From f0fbe02c48ce8e5a2ae765c4578bc219d7caae24 Mon Sep 17 00:00:00 2001 From: Niki Waibel Date: Sat, 5 Nov 2016 18:46:53 +0100 Subject: [PATCH 04/34] [MIG] web_favicon: Migrated to 10.0 (#459) --- web_favicon/README.rst | 4 ++-- .../{__openerp__.py => __manifest__.py} | 2 +- web_favicon/controllers/web_favicon.py | 4 ++-- web_favicon/models/res_company.py | 2 +- web_favicon/tests/test_web_favicon.py | 8 +++---- web_favicon/views/res_company.xml | 22 +++++++++---------- web_favicon/views/templates.xml | 16 ++++++-------- 7 files changed, 28 insertions(+), 30 deletions(-) rename web_favicon/{__openerp__.py => __manifest__.py} (95%) diff --git a/web_favicon/README.rst b/web_favicon/README.rst index ff1ffa996..a95c5d432 100644 --- a/web_favicon/README.rst +++ b/web_favicon/README.rst @@ -35,7 +35,7 @@ Usage .. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas :alt: Try me on Runbot - :target: https://runbot.odoo-community.org/runbot/162/9.0 + :target: https://runbot.odoo-community.org/runbot/162/10.0 Known issues / Roadmap ====================== @@ -55,7 +55,7 @@ In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed feedback `here `_. +10.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_. Credits ======= diff --git a/web_favicon/__openerp__.py b/web_favicon/__manifest__.py similarity index 95% rename from web_favicon/__openerp__.py rename to web_favicon/__manifest__.py index e18e739fb..ab515f380 100644 --- a/web_favicon/__openerp__.py +++ b/web_favicon/__manifest__.py @@ -5,7 +5,7 @@ { "name": "Custom shortcut icon", - "version": "9.0.1.0.0", + "version": "10.0.1.0.0", "author": "Therp BV, " "Tecnativa, " "Odoo Community Association (OCA)", diff --git a/web_favicon/controllers/web_favicon.py b/web_favicon/controllers/web_favicon.py index f0b92aa0c..7585ce151 100644 --- a/web_favicon/controllers/web_favicon.py +++ b/web_favicon/controllers/web_favicon.py @@ -4,8 +4,8 @@ import StringIO import base64 -from openerp import http -from openerp.tools.misc import file_open +from odoo import http +from odoo.tools.misc import file_open class WebFavicon(http.Controller): diff --git a/web_favicon/models/res_company.py b/web_favicon/models/res_company.py index e30c1b2ad..9fdd8aceb 100644 --- a/web_favicon/models/res_company.py +++ b/web_favicon/models/res_company.py @@ -3,7 +3,7 @@ # © 2016 Pedro M. Baeza # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from openerp import models, fields +from odoo import models, fields class ResCompany(models.Model): diff --git a/web_favicon/tests/test_web_favicon.py b/web_favicon/tests/test_web_favicon.py index 2af4f83c2..90414956b 100644 --- a/web_favicon/tests/test_web_favicon.py +++ b/web_favicon/tests/test_web_favicon.py @@ -3,9 +3,9 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). import base64 -from openerp.tests.common import TransactionCase -from openerp.tools.misc import file_open -from openerp import http +from odoo.tests.common import TransactionCase +from odoo.tools.misc import file_open +from odoo import http class FakeRequest(object): @@ -26,7 +26,7 @@ class TestWebFavicon(TransactionCase): def test_web_favicon(self): original_request = http.request http.request = FakeRequest(self.env) - from openerp.addons.web_favicon.controllers.web_favicon import\ + from odoo.addons.web_favicon.controllers.web_favicon import\ WebFavicon company = self.env['res.company'].search([], limit=1) # default icon diff --git a/web_favicon/views/res_company.xml b/web_favicon/views/res_company.xml index fa270399f..b8d138d31 100644 --- a/web_favicon/views/res_company.xml +++ b/web_favicon/views/res_company.xml @@ -1,17 +1,17 @@ - - - - res.company - - - + + + res.company + + + + - - - - + + + + diff --git a/web_favicon/views/templates.xml b/web_favicon/views/templates.xml index ed80510ae..32385c84c 100644 --- a/web_favicon/views/templates.xml +++ b/web_favicon/views/templates.xml @@ -1,10 +1,8 @@ - - - - - + + + From a5077063a7b3d7558b8b32c6d9b4c155a3c408f3 Mon Sep 17 00:00:00 2001 From: OCA Transbot Date: Tue, 29 Nov 2016 13:43:32 -0500 Subject: [PATCH 05/34] OCA Transbot updated translations from Transifex --- web_favicon/i18n/de.po | 64 +++++++++++++++++++++++++++++++++++++++++ web_favicon/i18n/es.po | 64 +++++++++++++++++++++++++++++++++++++++++ web_favicon/i18n/hr.po | 65 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 193 insertions(+) create mode 100644 web_favicon/i18n/de.po create mode 100644 web_favicon/i18n/es.po create mode 100644 web_favicon/i18n/hr.po diff --git a/web_favicon/i18n/de.po b/web_favicon/i18n/de.po new file mode 100644 index 000000000..148fa6144 --- /dev/null +++ b/web_favicon/i18n/de.po @@ -0,0 +1,64 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_favicon +# +# Translators: +# Niki Waibel , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-22 10:37+0000\n" +"PO-Revision-Date: 2016-11-22 10:37+0000\n" +"Last-Translator: Niki Waibel , 2016\n" +"Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: de\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: web_favicon +#: model:ir.model,name:web_favicon.model_res_company +msgid "Companies" +msgstr "Unternehmen" + +#. module: web_favicon +#: model:ir.ui.view,arch_db:web_favicon.view_company_form +msgid "Favicon" +msgstr "Favicon" + +#. module: web_favicon +#: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend +msgid "Favicon backend" +msgstr "Icon" + +#. module: web_favicon +#: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend_mimetype +msgid "Favicon backend mimetype" +msgstr "MIME-Type" + +#. module: web_favicon +#: model:ir.model.fields,help:web_favicon.field_res_company_favicon_backend_mimetype +msgid "Set the mimetype of your file." +msgstr "Wähle den MIME-Type der Datei." + +#. module: web_favicon +#: model:ir.ui.view,arch_db:web_favicon.view_company_form +msgid "Web Favicon" +msgstr "Web Favicon" + +#. module: web_favicon +#: selection:res.company,favicon_backend_mimetype:0 +msgid "image/gif" +msgstr "image/gif" + +#. module: web_favicon +#: selection:res.company,favicon_backend_mimetype:0 +msgid "image/png" +msgstr "image/png" + +#. module: web_favicon +#: selection:res.company,favicon_backend_mimetype:0 +msgid "image/x-icon" +msgstr "image/x-icon" diff --git a/web_favicon/i18n/es.po b/web_favicon/i18n/es.po new file mode 100644 index 000000000..97e5c5a0e --- /dev/null +++ b/web_favicon/i18n/es.po @@ -0,0 +1,64 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_favicon +# +# Translators: +# Pedro M. Baeza , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 02:13+0000\n" +"PO-Revision-Date: 2016-12-23 02:13+0000\n" +"Last-Translator: Pedro M. Baeza , 2016\n" +"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: web_favicon +#: model:ir.model,name:web_favicon.model_res_company +msgid "Companies" +msgstr "Compañías" + +#. module: web_favicon +#: model:ir.ui.view,arch_db:web_favicon.view_company_form +msgid "Favicon" +msgstr "Favicon" + +#. module: web_favicon +#: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend +msgid "Favicon backend" +msgstr "Favicon del backend" + +#. module: web_favicon +#: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend_mimetype +msgid "Favicon backend mimetype" +msgstr "Tipo MIME del favicon de backend" + +#. module: web_favicon +#: model:ir.model.fields,help:web_favicon.field_res_company_favicon_backend_mimetype +msgid "Set the mimetype of your file." +msgstr "Establece el tipo MIME de su archivo." + +#. module: web_favicon +#: model:ir.ui.view,arch_db:web_favicon.view_company_form +msgid "Web Favicon" +msgstr "Favicon web" + +#. module: web_favicon +#: selection:res.company,favicon_backend_mimetype:0 +msgid "image/gif" +msgstr "image/gif" + +#. module: web_favicon +#: selection:res.company,favicon_backend_mimetype:0 +msgid "image/png" +msgstr "image/png" + +#. module: web_favicon +#: selection:res.company,favicon_backend_mimetype:0 +msgid "image/x-icon" +msgstr "image/x-icon" diff --git a/web_favicon/i18n/hr.po b/web_favicon/i18n/hr.po new file mode 100644 index 000000000..184674f1d --- /dev/null +++ b/web_favicon/i18n/hr.po @@ -0,0 +1,65 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_favicon +# +# Translators: +# OCA Transbot , 2017 +# Bole , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-28 18:03+0000\n" +"PO-Revision-Date: 2017-04-28 18:03+0000\n" +"Last-Translator: Bole , 2017\n" +"Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: hr\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#. module: web_favicon +#: model:ir.model,name:web_favicon.model_res_company +msgid "Companies" +msgstr "Tvrtke" + +#. module: web_favicon +#: model:ir.ui.view,arch_db:web_favicon.view_company_form +msgid "Favicon" +msgstr "Favicon" + +#. module: web_favicon +#: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend +msgid "Favicon backend" +msgstr "Favicon backend" + +#. module: web_favicon +#: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend_mimetype +msgid "Favicon backend mimetype" +msgstr "" + +#. module: web_favicon +#: model:ir.model.fields,help:web_favicon.field_res_company_favicon_backend_mimetype +msgid "Set the mimetype of your file." +msgstr "" + +#. module: web_favicon +#: model:ir.ui.view,arch_db:web_favicon.view_company_form +msgid "Web Favicon" +msgstr "" + +#. module: web_favicon +#: selection:res.company,favicon_backend_mimetype:0 +msgid "image/gif" +msgstr "image/gif" + +#. module: web_favicon +#: selection:res.company,favicon_backend_mimetype:0 +msgid "image/png" +msgstr "image/png" + +#. module: web_favicon +#: selection:res.company,favicon_backend_mimetype:0 +msgid "image/x-icon" +msgstr "image/x-icon" From 0a22a606735ebb5ccdd2b7be1119538f721be40f Mon Sep 17 00:00:00 2001 From: tarteo Date: Mon, 24 Apr 2017 16:00:09 +0200 Subject: [PATCH 06/34] [ADD] Group 'Edit Favicon' --- web_favicon/README.rst | 3 +++ web_favicon/__manifest__.py | 4 ++-- web_favicon/views/res_company.xml | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/web_favicon/README.rst b/web_favicon/README.rst index a95c5d432..d3d67e980 100644 --- a/web_favicon/README.rst +++ b/web_favicon/README.rst @@ -30,6 +30,8 @@ You have a sample SVG that can be used as template for generating your icon in /static/src/img/master_original_favicon.svg. You can also search for some favicon generators across the web. +To allow a user to edit the favicon it has to be member of group "Administration / Settings". + Usage ===== @@ -65,6 +67,7 @@ Contributors * Holger Brunn * Pedro M. Baeza +* Dennis Sluijk Maintainer ---------- diff --git a/web_favicon/__manifest__.py b/web_favicon/__manifest__.py index ab515f380..d70733a7e 100644 --- a/web_favicon/__manifest__.py +++ b/web_favicon/__manifest__.py @@ -13,11 +13,11 @@ "category": "Website", "summary": "Allows to set a custom shortcut icon (aka favicon)", "depends": [ - 'web', + "web", ], "data": [ "views/res_company.xml", - 'views/templates.xml', + "views/templates.xml", ], "installable": True, } diff --git a/web_favicon/views/res_company.xml b/web_favicon/views/res_company.xml index b8d138d31..b35fe55d6 100644 --- a/web_favicon/views/res_company.xml +++ b/web_favicon/views/res_company.xml @@ -5,7 +5,7 @@ - + From bc4febfcdecbadd3a15f47fac927179dd3102ab2 Mon Sep 17 00:00:00 2001 From: OCA Transbot Date: Sat, 24 Jun 2017 12:40:00 +0200 Subject: [PATCH 07/34] OCA Transbot updated translations from Transifex --- web_favicon/i18n/nl_NL.po | 64 +++++++++++++++++++++++++++++++++++++++ web_favicon/i18n/pt_BR.po | 64 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 128 insertions(+) create mode 100644 web_favicon/i18n/nl_NL.po create mode 100644 web_favicon/i18n/pt_BR.po diff --git a/web_favicon/i18n/nl_NL.po b/web_favicon/i18n/nl_NL.po new file mode 100644 index 000000000..3a6652474 --- /dev/null +++ b/web_favicon/i18n/nl_NL.po @@ -0,0 +1,64 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_favicon +# +# Translators: +# Peter Hageman , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-01 03:34+0000\n" +"PO-Revision-Date: 2017-07-01 03:34+0000\n" +"Last-Translator: Peter Hageman , 2017\n" +"Language-Team: Dutch (Netherlands) (https://www.transifex.com/oca/teams/23907/nl_NL/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: nl_NL\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: web_favicon +#: model:ir.model,name:web_favicon.model_res_company +msgid "Companies" +msgstr "Bedrijven" + +#. module: web_favicon +#: model:ir.ui.view,arch_db:web_favicon.view_company_form +msgid "Favicon" +msgstr "Favicon" + +#. module: web_favicon +#: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend +msgid "Favicon backend" +msgstr "" + +#. module: web_favicon +#: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend_mimetype +msgid "Favicon backend mimetype" +msgstr "" + +#. module: web_favicon +#: model:ir.model.fields,help:web_favicon.field_res_company_favicon_backend_mimetype +msgid "Set the mimetype of your file." +msgstr "Stel het afbeeldingstype in voor je bestand." + +#. module: web_favicon +#: model:ir.ui.view,arch_db:web_favicon.view_company_form +msgid "Web Favicon" +msgstr "Web Favicon" + +#. module: web_favicon +#: selection:res.company,favicon_backend_mimetype:0 +msgid "image/gif" +msgstr "afbeelding/gif" + +#. module: web_favicon +#: selection:res.company,favicon_backend_mimetype:0 +msgid "image/png" +msgstr "afbeelding/png" + +#. module: web_favicon +#: selection:res.company,favicon_backend_mimetype:0 +msgid "image/x-icon" +msgstr "afbeelding/x-icon" diff --git a/web_favicon/i18n/pt_BR.po b/web_favicon/i18n/pt_BR.po new file mode 100644 index 000000000..cd2b55ab1 --- /dev/null +++ b/web_favicon/i18n/pt_BR.po @@ -0,0 +1,64 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_favicon +# +# Translators: +# Rodrigo de Almeida Sottomaior Macedo , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-22 08:26+0000\n" +"PO-Revision-Date: 2017-06-22 08:26+0000\n" +"Last-Translator: Rodrigo de Almeida Sottomaior Macedo , 2017\n" +"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/teams/23907/pt_BR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: pt_BR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: web_favicon +#: model:ir.model,name:web_favicon.model_res_company +msgid "Companies" +msgstr "Empresas" + +#. module: web_favicon +#: model:ir.ui.view,arch_db:web_favicon.view_company_form +msgid "Favicon" +msgstr "Favicon" + +#. module: web_favicon +#: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend +msgid "Favicon backend" +msgstr "Favicon backend" + +#. module: web_favicon +#: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend_mimetype +msgid "Favicon backend mimetype" +msgstr "Favicon backend mimetype" + +#. module: web_favicon +#: model:ir.model.fields,help:web_favicon.field_res_company_favicon_backend_mimetype +msgid "Set the mimetype of your file." +msgstr "Defina o tipo mímico do seu arquivo." + +#. module: web_favicon +#: model:ir.ui.view,arch_db:web_favicon.view_company_form +msgid "Web Favicon" +msgstr "Web Favicon" + +#. module: web_favicon +#: selection:res.company,favicon_backend_mimetype:0 +msgid "image/gif" +msgstr "imagem/gif" + +#. module: web_favicon +#: selection:res.company,favicon_backend_mimetype:0 +msgid "image/png" +msgstr "imagem/png" + +#. module: web_favicon +#: selection:res.company,favicon_backend_mimetype:0 +msgid "image/x-icon" +msgstr "imagem/x-icon" From 6fc328074bcf74f445c56bd53413e11f6fad2e93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mar=C3=A7al=20Isern?= Date: Tue, 14 Nov 2017 16:51:57 +0100 Subject: [PATCH 08/34] [11.0][MIG] Standard Migration --- web_favicon/README.rst | 1 + web_favicon/__manifest__.py | 6 +++--- web_favicon/controllers/web_favicon.py | 9 +++++---- web_favicon/models/res_company.py | 4 ++-- web_favicon/tests/test_web_favicon.py | 2 +- 5 files changed, 12 insertions(+), 10 deletions(-) diff --git a/web_favicon/README.rst b/web_favicon/README.rst index d3d67e980..ae78ca98e 100644 --- a/web_favicon/README.rst +++ b/web_favicon/README.rst @@ -68,6 +68,7 @@ Contributors * Holger Brunn * Pedro M. Baeza * Dennis Sluijk +* Marçal Isern Maintainer ---------- diff --git a/web_favicon/__manifest__.py b/web_favicon/__manifest__.py index d70733a7e..dfa8f463b 100644 --- a/web_favicon/__manifest__.py +++ b/web_favicon/__manifest__.py @@ -1,11 +1,11 @@ # -*- coding: utf-8 -*- -# © 2015 Therp BV -# © 2016 Pedro M. Baeza +# Copyright 2015 Therp BV +# Copyright 2016 Pedro M. Baeza # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { "name": "Custom shortcut icon", - "version": "10.0.1.0.0", + "version": "11.0.1.0.0", "author": "Therp BV, " "Tecnativa, " "Odoo Community Association (OCA)", diff --git a/web_favicon/controllers/web_favicon.py b/web_favicon/controllers/web_favicon.py index 7585ce151..a72b31c01 100644 --- a/web_favicon/controllers/web_favicon.py +++ b/web_favicon/controllers/web_favicon.py @@ -1,8 +1,9 @@ # -*- coding: utf-8 -*- -# © 2015 Therp BV +# Copyright 2015 Therp BV +# Copyright 2017 QubiQ 2010 # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -import StringIO +from io import BytesIO import base64 from odoo import http from odoo.tools.misc import file_open @@ -21,9 +22,9 @@ class WebFavicon(http.Controller): favicon = company.favicon_backend favicon_mimetype = company.favicon_backend_mimetype if not favicon: - favicon = file_open('web/static/src/img/favicon.ico') + favicon = file_open('web/static/src/img/favicon.ico', 'rb') favicon_mimetype = 'image/x-icon' else: - favicon = StringIO.StringIO(base64.b64decode(favicon)) + favicon = BytesIO(base64.b64decode(favicon)) return request.make_response( favicon.read(), [('Content-Type', favicon_mimetype)]) diff --git a/web_favicon/models/res_company.py b/web_favicon/models/res_company.py index 9fdd8aceb..36a7b0322 100644 --- a/web_favicon/models/res_company.py +++ b/web_favicon/models/res_company.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# © 2015 Therp BV -# © 2016 Pedro M. Baeza +# Copyright 2015 Therp BV +# Copyright 2016 Pedro M. Baeza # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from odoo import models, fields diff --git a/web_favicon/tests/test_web_favicon.py b/web_favicon/tests/test_web_favicon.py index 90414956b..78222d314 100644 --- a/web_favicon/tests/test_web_favicon.py +++ b/web_favicon/tests/test_web_favicon.py @@ -39,7 +39,7 @@ class TestWebFavicon(TransactionCase): # our own icon company.write({ 'favicon_backend': base64.b64encode(file_open( - 'web_favicon/static/description/icon.png').read()), + 'web_favicon/static/description/icon.png', 'rb').read()), 'favicon_backend_mimetype': 'image/png', }) data = WebFavicon().icon() From 652c9e8e15661d55b1bd79d132c95cc2b336ce16 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Sun, 24 Jun 2018 10:28:11 +0000 Subject: [PATCH 09/34] [UPD] Update web_favicon.pot --- web_favicon/i18n/de.po | 10 +++--- web_favicon/i18n/es.po | 10 +++--- web_favicon/i18n/hr.po | 15 ++++---- web_favicon/i18n/nl_NL.po | 14 ++++---- web_favicon/i18n/pt_BR.po | 16 +++++---- web_favicon/i18n/web_favicon.pot | 60 ++++++++++++++++++++++++++++++++ 6 files changed, 99 insertions(+), 26 deletions(-) create mode 100644 web_favicon/i18n/web_favicon.pot diff --git a/web_favicon/i18n/de.po b/web_favicon/i18n/de.po index 148fa6144..51b17b0af 100644 --- a/web_favicon/i18n/de.po +++ b/web_favicon/i18n/de.po @@ -1,7 +1,7 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * web_favicon -# +# # Translators: # Niki Waibel , 2016 msgid "" @@ -12,10 +12,10 @@ msgstr "" "PO-Revision-Date: 2016-11-22 10:37+0000\n" "Last-Translator: Niki Waibel , 2016\n" "Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\n" +"Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: web_favicon @@ -30,12 +30,14 @@ msgstr "Favicon" #. module: web_favicon #: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend -msgid "Favicon backend" +#, fuzzy +msgid "Favicon Backend" msgstr "Icon" #. module: web_favicon #: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend_mimetype -msgid "Favicon backend mimetype" +#, fuzzy +msgid "Favicon Backend Mimetype" msgstr "MIME-Type" #. module: web_favicon diff --git a/web_favicon/i18n/es.po b/web_favicon/i18n/es.po index 97e5c5a0e..b77d01865 100644 --- a/web_favicon/i18n/es.po +++ b/web_favicon/i18n/es.po @@ -1,7 +1,7 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * web_favicon -# +# # Translators: # Pedro M. Baeza , 2016 msgid "" @@ -12,10 +12,10 @@ msgstr "" "PO-Revision-Date: 2016-12-23 02:13+0000\n" "Last-Translator: Pedro M. Baeza , 2016\n" "Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: web_favicon @@ -30,12 +30,14 @@ msgstr "Favicon" #. module: web_favicon #: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend -msgid "Favicon backend" +#, fuzzy +msgid "Favicon Backend" msgstr "Favicon del backend" #. module: web_favicon #: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend_mimetype -msgid "Favicon backend mimetype" +#, fuzzy +msgid "Favicon Backend Mimetype" msgstr "Tipo MIME del favicon de backend" #. module: web_favicon diff --git a/web_favicon/i18n/hr.po b/web_favicon/i18n/hr.po index 184674f1d..7c2580249 100644 --- a/web_favicon/i18n/hr.po +++ b/web_favicon/i18n/hr.po @@ -1,7 +1,7 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * web_favicon -# +# # Translators: # OCA Transbot , 2017 # Bole , 2017 @@ -13,11 +13,12 @@ msgstr "" "PO-Revision-Date: 2017-04-28 18:03+0000\n" "Last-Translator: Bole , 2017\n" "Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\n" +"Language: hr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: hr\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" #. module: web_favicon #: model:ir.model,name:web_favicon.model_res_company @@ -31,13 +32,15 @@ msgstr "Favicon" #. module: web_favicon #: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend -msgid "Favicon backend" +#, fuzzy +msgid "Favicon Backend" msgstr "Favicon backend" #. module: web_favicon #: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend_mimetype -msgid "Favicon backend mimetype" -msgstr "" +#, fuzzy +msgid "Favicon Backend Mimetype" +msgstr "Favicon backend" #. module: web_favicon #: model:ir.model.fields,help:web_favicon.field_res_company_favicon_backend_mimetype diff --git a/web_favicon/i18n/nl_NL.po b/web_favicon/i18n/nl_NL.po index 3a6652474..ab6f2852b 100644 --- a/web_favicon/i18n/nl_NL.po +++ b/web_favicon/i18n/nl_NL.po @@ -1,7 +1,7 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * web_favicon -# +# # Translators: # Peter Hageman , 2017 msgid "" @@ -11,11 +11,12 @@ msgstr "" "POT-Creation-Date: 2017-07-01 03:34+0000\n" "PO-Revision-Date: 2017-07-01 03:34+0000\n" "Last-Translator: Peter Hageman , 2017\n" -"Language-Team: Dutch (Netherlands) (https://www.transifex.com/oca/teams/23907/nl_NL/)\n" +"Language-Team: Dutch (Netherlands) (https://www.transifex.com/oca/" +"teams/23907/nl_NL/)\n" +"Language: nl_NL\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: nl_NL\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: web_favicon @@ -30,12 +31,13 @@ msgstr "Favicon" #. module: web_favicon #: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend -msgid "Favicon backend" -msgstr "" +#, fuzzy +msgid "Favicon Backend" +msgstr "Favicon" #. module: web_favicon #: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend_mimetype -msgid "Favicon backend mimetype" +msgid "Favicon Backend Mimetype" msgstr "" #. module: web_favicon diff --git a/web_favicon/i18n/pt_BR.po b/web_favicon/i18n/pt_BR.po index cd2b55ab1..516c3642c 100644 --- a/web_favicon/i18n/pt_BR.po +++ b/web_favicon/i18n/pt_BR.po @@ -1,7 +1,7 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * web_favicon -# +# # Translators: # Rodrigo de Almeida Sottomaior Macedo , 2017 msgid "" @@ -10,12 +10,14 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-06-22 08:26+0000\n" "PO-Revision-Date: 2017-06-22 08:26+0000\n" -"Last-Translator: Rodrigo de Almeida Sottomaior Macedo , 2017\n" -"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/teams/23907/pt_BR/)\n" +"Last-Translator: Rodrigo de Almeida Sottomaior Macedo " +", 2017\n" +"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/" +"teams/23907/pt_BR/)\n" +"Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #. module: web_favicon @@ -30,12 +32,14 @@ msgstr "Favicon" #. module: web_favicon #: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend -msgid "Favicon backend" +#, fuzzy +msgid "Favicon Backend" msgstr "Favicon backend" #. module: web_favicon #: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend_mimetype -msgid "Favicon backend mimetype" +#, fuzzy +msgid "Favicon Backend Mimetype" msgstr "Favicon backend mimetype" #. module: web_favicon diff --git a/web_favicon/i18n/web_favicon.pot b/web_favicon/i18n/web_favicon.pot new file mode 100644 index 000000000..1e3374764 --- /dev/null +++ b/web_favicon/i18n/web_favicon.pot @@ -0,0 +1,60 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_favicon +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: web_favicon +#: model:ir.model,name:web_favicon.model_res_company +msgid "Companies" +msgstr "" + +#. module: web_favicon +#: model:ir.ui.view,arch_db:web_favicon.view_company_form +msgid "Favicon" +msgstr "" + +#. module: web_favicon +#: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend +msgid "Favicon Backend" +msgstr "" + +#. module: web_favicon +#: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend_mimetype +msgid "Favicon Backend Mimetype" +msgstr "" + +#. module: web_favicon +#: model:ir.model.fields,help:web_favicon.field_res_company_favicon_backend_mimetype +msgid "Set the mimetype of your file." +msgstr "" + +#. module: web_favicon +#: model:ir.ui.view,arch_db:web_favicon.view_company_form +msgid "Web Favicon" +msgstr "" + +#. module: web_favicon +#: selection:res.company,favicon_backend_mimetype:0 +msgid "image/gif" +msgstr "" + +#. module: web_favicon +#: selection:res.company,favicon_backend_mimetype:0 +msgid "image/png" +msgstr "" + +#. module: web_favicon +#: selection:res.company,favicon_backend_mimetype:0 +msgid "image/x-icon" +msgstr "" + From b8501c7e6cdfc5a569e2ffcb839a59a2120274ab Mon Sep 17 00:00:00 2001 From: Rodrigo Macedo Date: Fri, 3 Aug 2018 13:14:27 +0000 Subject: [PATCH 10/34] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100,0% (9 of 9 strings) Translation: web-11.0/web-11.0-web_favicon Translate-URL: https://translation.odoo-community.org/projects/web-11-0/web-11-0-web_favicon/pt_BR/ --- web_favicon/i18n/pt_BR.po | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/web_favicon/i18n/pt_BR.po b/web_favicon/i18n/pt_BR.po index 516c3642c..97f0859ad 100644 --- a/web_favicon/i18n/pt_BR.po +++ b/web_favicon/i18n/pt_BR.po @@ -9,16 +9,16 @@ msgstr "" "Project-Id-Version: Odoo Server 10.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-06-22 08:26+0000\n" -"PO-Revision-Date: 2017-06-22 08:26+0000\n" -"Last-Translator: Rodrigo de Almeida Sottomaior Macedo " -", 2017\n" -"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/" -"teams/23907/pt_BR/)\n" +"PO-Revision-Date: 2018-08-04 13:35+0000\n" +"Last-Translator: Rodrigo Macedo \n" +"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/teams/" +"23907/pt_BR/)\n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 3.1.1\n" #. module: web_favicon #: model:ir.model,name:web_favicon.model_res_company @@ -32,15 +32,13 @@ msgstr "Favicon" #. module: web_favicon #: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend -#, fuzzy msgid "Favicon Backend" -msgstr "Favicon backend" +msgstr "Favicon back-end" #. module: web_favicon #: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend_mimetype -#, fuzzy msgid "Favicon Backend Mimetype" -msgstr "Favicon backend mimetype" +msgstr "Favicon back-end mimetype" #. module: web_favicon #: model:ir.model.fields,help:web_favicon.field_res_company_favicon_backend_mimetype @@ -50,7 +48,7 @@ msgstr "Defina o tipo mímico do seu arquivo." #. module: web_favicon #: model:ir.ui.view,arch_db:web_favicon.view_company_form msgid "Web Favicon" -msgstr "Web Favicon" +msgstr "Favicon Web" #. module: web_favicon #: selection:res.company,favicon_backend_mimetype:0 From cf46a39bc338c704c2e4c93dff193a01e06731cb Mon Sep 17 00:00:00 2001 From: Hans Henrik Gabelgaard Date: Sat, 1 Sep 2018 05:09:49 +0000 Subject: [PATCH 11/34] Added translation using Weblate (Danish) --- web_favicon/i18n/da.po | 62 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 web_favicon/i18n/da.po diff --git a/web_favicon/i18n/da.po b/web_favicon/i18n/da.po new file mode 100644 index 000000000..cbaa6d78b --- /dev/null +++ b/web_favicon/i18n/da.po @@ -0,0 +1,62 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_favicon +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2018-09-02 06:11+0000\n" +"Last-Translator: Hans Henrik Gabelgaard \n" +"Language-Team: none\n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.1.1\n" + +#. module: web_favicon +#: model:ir.model,name:web_favicon.model_res_company +msgid "Companies" +msgstr "Virksomheder" + +#. module: web_favicon +#: model:ir.ui.view,arch_db:web_favicon.view_company_form +msgid "Favicon" +msgstr "" + +#. module: web_favicon +#: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend +msgid "Favicon Backend" +msgstr "" + +#. module: web_favicon +#: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend_mimetype +msgid "Favicon Backend Mimetype" +msgstr "" + +#. module: web_favicon +#: model:ir.model.fields,help:web_favicon.field_res_company_favicon_backend_mimetype +msgid "Set the mimetype of your file." +msgstr "Sæt mimetypen af din fil." + +#. module: web_favicon +#: model:ir.ui.view,arch_db:web_favicon.view_company_form +msgid "Web Favicon" +msgstr "" + +#. module: web_favicon +#: selection:res.company,favicon_backend_mimetype:0 +msgid "image/gif" +msgstr "" + +#. module: web_favicon +#: selection:res.company,favicon_backend_mimetype:0 +msgid "image/png" +msgstr "" + +#. module: web_favicon +#: selection:res.company,favicon_backend_mimetype:0 +msgid "image/x-icon" +msgstr "" From 9eedb77988ddc6b5c801f0c891e40841b8beac94 Mon Sep 17 00:00:00 2001 From: tarteo Date: Tue, 2 Oct 2018 15:32:25 +0200 Subject: [PATCH 12/34] [MIG] web_favicon: Migration to 12.0 --- web_favicon/README.rst | 77 ++-- web_favicon/__init__.py | 1 - web_favicon/__manifest__.py | 4 +- web_favicon/controllers/__init__.py | 1 - web_favicon/controllers/web_favicon.py | 1 - web_favicon/models/__init__.py | 1 - web_favicon/models/res_company.py | 1 - web_favicon/readme/CONFIGURE.rst | 15 + web_favicon/readme/DESCRIPTION.rst | 10 + web_favicon/readme/ROADMAP.rst | 6 + web_favicon/static/description/index.html | 447 ++++++++++++++++++++++ web_favicon/tests/__init__.py | 1 - web_favicon/tests/test_web_favicon.py | 3 +- web_favicon/views/templates.xml | 6 +- 14 files changed, 534 insertions(+), 40 deletions(-) create mode 100644 web_favicon/readme/CONFIGURE.rst create mode 100644 web_favicon/readme/DESCRIPTION.rst create mode 100644 web_favicon/readme/ROADMAP.rst create mode 100644 web_favicon/static/description/index.html diff --git a/web_favicon/README.rst b/web_favicon/README.rst index ae78ca98e..bc3f9e1db 100644 --- a/web_favicon/README.rst +++ b/web_favicon/README.rst @@ -1,18 +1,46 @@ -.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg - :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html - :alt: License: AGPL-3 +==================== +Custom shortcut icon +==================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github + :target: https://github.com/OCA/web/tree/12.0/web_favicon + :alt: OCA/web +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/web-12-0/web-12-0-web_favicon + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/162/12.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| -============================== -Custom shortcut icon (favicon) -============================== This module was written to allow you to customize your Odoo instance's shortcut icon (aka favicon). This is useful for branding purposes, but also for integrators who have many different Odoo instances running and need to see at a glance which browser tab does what. +The icon is shown also for portal users when the website modules are not +installed. + More info about favicon: https://en.wikipedia.org/wiki/Favicon +**Table of contents** + +.. contents:: + :local: + Configuration ============= @@ -32,13 +60,6 @@ favicon generators across the web. To allow a user to edit the favicon it has to be member of group "Administration / Settings". -Usage -===== - -.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas - :alt: Try me on Runbot - :target: https://runbot.odoo-community.org/runbot/162/10.0 - Known issues / Roadmap ====================== @@ -54,33 +75,33 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us smashing it by providing a detailed and welcomed feedback -`here `_. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. Credits ======= -Contributors ------------- +Authors +~~~~~~~ -* Holger Brunn -* Pedro M. Baeza -* Dennis Sluijk -* Marçal Isern +* Therp BV +* Tecnativa -Maintainer ----------- +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. .. image:: https://odoo-community.org/logo.png :alt: Odoo Community Association :target: https://odoo-community.org -This module is maintained by the OCA. - OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -To contribute to this module, please visit https://odoo-community.org. +This module is part of the `OCA/web `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/web_favicon/__init__.py b/web_favicon/__init__.py index a2666d4d3..185df0eec 100644 --- a/web_favicon/__init__.py +++ b/web_favicon/__init__.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from . import models diff --git a/web_favicon/__manifest__.py b/web_favicon/__manifest__.py index dfa8f463b..421c7b9ff 100644 --- a/web_favicon/__manifest__.py +++ b/web_favicon/__manifest__.py @@ -1,17 +1,17 @@ -# -*- coding: utf-8 -*- # Copyright 2015 Therp BV # Copyright 2016 Pedro M. Baeza # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { "name": "Custom shortcut icon", - "version": "11.0.1.0.0", + "version": "12.0.1.0.0", "author": "Therp BV, " "Tecnativa, " "Odoo Community Association (OCA)", "license": "AGPL-3", "category": "Website", "summary": "Allows to set a custom shortcut icon (aka favicon)", + "website": "https://github.com/OCA/web", "depends": [ "web", ], diff --git a/web_favicon/controllers/__init__.py b/web_favicon/controllers/__init__.py index 7c3fa3f84..7084537ab 100644 --- a/web_favicon/controllers/__init__.py +++ b/web_favicon/controllers/__init__.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from . import web_favicon diff --git a/web_favicon/controllers/web_favicon.py b/web_favicon/controllers/web_favicon.py index a72b31c01..5e135a1b1 100644 --- a/web_favicon/controllers/web_favicon.py +++ b/web_favicon/controllers/web_favicon.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Copyright 2015 Therp BV # Copyright 2017 QubiQ 2010 # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). diff --git a/web_favicon/models/__init__.py b/web_favicon/models/__init__.py index 54d77ccf2..a12c1b8ee 100644 --- a/web_favicon/models/__init__.py +++ b/web_favicon/models/__init__.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from . import res_company diff --git a/web_favicon/models/res_company.py b/web_favicon/models/res_company.py index 36a7b0322..998948248 100644 --- a/web_favicon/models/res_company.py +++ b/web_favicon/models/res_company.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Copyright 2015 Therp BV # Copyright 2016 Pedro M. Baeza # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). diff --git a/web_favicon/readme/CONFIGURE.rst b/web_favicon/readme/CONFIGURE.rst new file mode 100644 index 000000000..55777b650 --- /dev/null +++ b/web_favicon/readme/CONFIGURE.rst @@ -0,0 +1,15 @@ +Upload your favicon (16x16, 32x32, 64x64 or "as big as possible") on the +company form. The file format would be ico, gif or png with 16x16, 32x32 or +64x64 pixels and 16 colors. Highers resolutions or colors support depends on +the used browser, but most modern browsers do. + +Note that most browsers cache favicons basically forever, so if you want your +icon to show up, you'll most probably have to delete you browser cache. +Some browsers can refresh the favicon, accessing the URL +/web_favicon/favicon. + +You have a sample SVG that can be used as template for generating your icon +in /static/src/img/master_original_favicon.svg. You can also search for some +favicon generators across the web. + +To allow a user to edit the favicon it has to be member of group "Administration / Settings". diff --git a/web_favicon/readme/DESCRIPTION.rst b/web_favicon/readme/DESCRIPTION.rst new file mode 100644 index 000000000..832607856 --- /dev/null +++ b/web_favicon/readme/DESCRIPTION.rst @@ -0,0 +1,10 @@ + +This module was written to allow you to customize your Odoo instance's shortcut +icon (aka favicon). This is useful for branding purposes, but also for +integrators who have many different Odoo instances running and need to see at a +glance which browser tab does what. + +The icon is shown also for portal users when the website modules are not +installed. + +More info about favicon: https://en.wikipedia.org/wiki/Favicon diff --git a/web_favicon/readme/ROADMAP.rst b/web_favicon/readme/ROADMAP.rst new file mode 100644 index 000000000..b4d00087c --- /dev/null +++ b/web_favicon/readme/ROADMAP.rst @@ -0,0 +1,6 @@ +* Allow to upload some big icon (preferrably SVG or the like) and generate + all the icons from it +* Generate icons suitable for mobile devices and web apps (see /static/src/img/ + folder inside the module for a sample of the possible current formats. +* Put the icon definition at system level, not at company level. It doesn't + make sense (as the icon is cached) to have a different icon per company. diff --git a/web_favicon/static/description/index.html b/web_favicon/static/description/index.html new file mode 100644 index 000000000..866cc6c6e --- /dev/null +++ b/web_favicon/static/description/index.html @@ -0,0 +1,447 @@ + + + + + + +Custom shortcut icon + + + +
+

Custom shortcut icon

+ + +

Beta License: AGPL-3 OCA/web Translate me on Weblate Try me on Runbot

+

This module was written to allow you to customize your Odoo instance’s shortcut +icon (aka favicon). This is useful for branding purposes, but also for +integrators who have many different Odoo instances running and need to see at a +glance which browser tab does what.

+

The icon is shown also for portal users when the website modules are not +installed.

+

More info about favicon: https://en.wikipedia.org/wiki/Favicon

+

Table of contents

+ +
+

Configuration

+

Upload your favicon (16x16, 32x32, 64x64 or “as big as possible”) on the +company form. The file format would be ico, gif or png with 16x16, 32x32 or +64x64 pixels and 16 colors. Highers resolutions or colors support depends on +the used browser, but most modern browsers do.

+

Note that most browsers cache favicons basically forever, so if you want your +icon to show up, you’ll most probably have to delete you browser cache. +Some browsers can refresh the favicon, accessing the URL +<base_url>/web_favicon/favicon.

+

You have a sample SVG that can be used as template for generating your icon +in /static/src/img/master_original_favicon.svg. You can also search for some +favicon generators across the web.

+

To allow a user to edit the favicon it has to be member of group “Administration / Settings”.

+
+
+

Known issues / Roadmap

+
    +
  • Allow to upload some big icon (preferrably SVG or the like) and generate +all the icons from it
  • +
  • Generate icons suitable for mobile devices and web apps (see /static/src/img/ +folder inside the module for a sample of the possible current formats.
  • +
  • Put the icon definition at system level, not at company level. It doesn’t +make sense (as the icon is cached) to have a different icon per company.
  • +
+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Therp BV
  • +
  • Tecnativa
  • +
+
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/web project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/web_favicon/tests/__init__.py b/web_favicon/tests/__init__.py index 6a5f7312d..9be3cd521 100644 --- a/web_favicon/tests/__init__.py +++ b/web_favicon/tests/__init__.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from . import test_web_favicon diff --git a/web_favicon/tests/test_web_favicon.py b/web_favicon/tests/test_web_favicon.py index 78222d314..99dbe39ad 100644 --- a/web_favicon/tests/test_web_favicon.py +++ b/web_favicon/tests/test_web_favicon.py @@ -1,5 +1,4 @@ -# -*- coding: utf-8 -*- -# © 2015 Therp BV +# Copyright 2015 Therp BV # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). import base64 diff --git a/web_favicon/views/templates.xml b/web_favicon/views/templates.xml index 32385c84c..37edb63bc 100644 --- a/web_favicon/views/templates.xml +++ b/web_favicon/views/templates.xml @@ -1,8 +1,10 @@ From 945f8d6c5e497c407fbef4267659af089930565b Mon Sep 17 00:00:00 2001 From: oca-travis Date: Wed, 24 Oct 2018 09:45:05 +0000 Subject: [PATCH 13/34] [UPD] Update web_favicon.pot --- web_favicon/i18n/web_favicon.pot | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/web_favicon/i18n/web_favicon.pot b/web_favicon/i18n/web_favicon.pot index 1e3374764..fcf6fcc55 100644 --- a/web_favicon/i18n/web_favicon.pot +++ b/web_favicon/i18n/web_favicon.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 11.0\n" +"Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: <>\n" "Language-Team: \n" @@ -19,27 +19,27 @@ msgid "Companies" msgstr "" #. module: web_favicon -#: model:ir.ui.view,arch_db:web_favicon.view_company_form +#: model_terms:ir.ui.view,arch_db:web_favicon.view_company_form msgid "Favicon" msgstr "" #. module: web_favicon -#: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend +#: model:ir.model.fields,field_description:web_favicon.field_res_company__favicon_backend msgid "Favicon Backend" msgstr "" #. module: web_favicon -#: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend_mimetype +#: model:ir.model.fields,field_description:web_favicon.field_res_company__favicon_backend_mimetype msgid "Favicon Backend Mimetype" msgstr "" #. module: web_favicon -#: model:ir.model.fields,help:web_favicon.field_res_company_favicon_backend_mimetype +#: model:ir.model.fields,help:web_favicon.field_res_company__favicon_backend_mimetype msgid "Set the mimetype of your file." msgstr "" #. module: web_favicon -#: model:ir.ui.view,arch_db:web_favicon.view_company_form +#: model_terms:ir.ui.view,arch_db:web_favicon.view_company_form msgid "Web Favicon" msgstr "" From 8b6814ef4adcf06455ea6dbe5465299f4edf5087 Mon Sep 17 00:00:00 2001 From: OCA Transbot Date: Mon, 26 Nov 2018 18:01:51 +0000 Subject: [PATCH 14/34] Update translation files Updated by Update PO files to match POT (msgmerge) hook in Weblate. --- web_favicon/i18n/da.po | 12 ++++++------ web_favicon/i18n/de.po | 10 +++++----- web_favicon/i18n/es.po | 10 +++++----- web_favicon/i18n/hr.po | 10 +++++----- web_favicon/i18n/nl_NL.po | 10 +++++----- web_favicon/i18n/pt_BR.po | 14 +++++++------- 6 files changed, 33 insertions(+), 33 deletions(-) diff --git a/web_favicon/i18n/da.po b/web_favicon/i18n/da.po index cbaa6d78b..771349837 100644 --- a/web_favicon/i18n/da.po +++ b/web_favicon/i18n/da.po @@ -1,6 +1,6 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * web_favicon +# * web_favicon # msgid "" msgstr "" @@ -22,27 +22,27 @@ msgid "Companies" msgstr "Virksomheder" #. module: web_favicon -#: model:ir.ui.view,arch_db:web_favicon.view_company_form +#: model_terms:ir.ui.view,arch_db:web_favicon.view_company_form msgid "Favicon" msgstr "" #. module: web_favicon -#: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend +#: model:ir.model.fields,field_description:web_favicon.field_res_company__favicon_backend msgid "Favicon Backend" msgstr "" #. module: web_favicon -#: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend_mimetype +#: model:ir.model.fields,field_description:web_favicon.field_res_company__favicon_backend_mimetype msgid "Favicon Backend Mimetype" msgstr "" #. module: web_favicon -#: model:ir.model.fields,help:web_favicon.field_res_company_favicon_backend_mimetype +#: model:ir.model.fields,help:web_favicon.field_res_company__favicon_backend_mimetype msgid "Set the mimetype of your file." msgstr "Sæt mimetypen af din fil." #. module: web_favicon -#: model:ir.ui.view,arch_db:web_favicon.view_company_form +#: model_terms:ir.ui.view,arch_db:web_favicon.view_company_form msgid "Web Favicon" msgstr "" diff --git a/web_favicon/i18n/de.po b/web_favicon/i18n/de.po index 51b17b0af..167382a4f 100644 --- a/web_favicon/i18n/de.po +++ b/web_favicon/i18n/de.po @@ -24,29 +24,29 @@ msgid "Companies" msgstr "Unternehmen" #. module: web_favicon -#: model:ir.ui.view,arch_db:web_favicon.view_company_form +#: model_terms:ir.ui.view,arch_db:web_favicon.view_company_form msgid "Favicon" msgstr "Favicon" #. module: web_favicon -#: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend +#: model:ir.model.fields,field_description:web_favicon.field_res_company__favicon_backend #, fuzzy msgid "Favicon Backend" msgstr "Icon" #. module: web_favicon -#: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend_mimetype +#: model:ir.model.fields,field_description:web_favicon.field_res_company__favicon_backend_mimetype #, fuzzy msgid "Favicon Backend Mimetype" msgstr "MIME-Type" #. module: web_favicon -#: model:ir.model.fields,help:web_favicon.field_res_company_favicon_backend_mimetype +#: model:ir.model.fields,help:web_favicon.field_res_company__favicon_backend_mimetype msgid "Set the mimetype of your file." msgstr "Wähle den MIME-Type der Datei." #. module: web_favicon -#: model:ir.ui.view,arch_db:web_favicon.view_company_form +#: model_terms:ir.ui.view,arch_db:web_favicon.view_company_form msgid "Web Favicon" msgstr "Web Favicon" diff --git a/web_favicon/i18n/es.po b/web_favicon/i18n/es.po index b77d01865..56a479224 100644 --- a/web_favicon/i18n/es.po +++ b/web_favicon/i18n/es.po @@ -24,29 +24,29 @@ msgid "Companies" msgstr "Compañías" #. module: web_favicon -#: model:ir.ui.view,arch_db:web_favicon.view_company_form +#: model_terms:ir.ui.view,arch_db:web_favicon.view_company_form msgid "Favicon" msgstr "Favicon" #. module: web_favicon -#: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend +#: model:ir.model.fields,field_description:web_favicon.field_res_company__favicon_backend #, fuzzy msgid "Favicon Backend" msgstr "Favicon del backend" #. module: web_favicon -#: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend_mimetype +#: model:ir.model.fields,field_description:web_favicon.field_res_company__favicon_backend_mimetype #, fuzzy msgid "Favicon Backend Mimetype" msgstr "Tipo MIME del favicon de backend" #. module: web_favicon -#: model:ir.model.fields,help:web_favicon.field_res_company_favicon_backend_mimetype +#: model:ir.model.fields,help:web_favicon.field_res_company__favicon_backend_mimetype msgid "Set the mimetype of your file." msgstr "Establece el tipo MIME de su archivo." #. module: web_favicon -#: model:ir.ui.view,arch_db:web_favicon.view_company_form +#: model_terms:ir.ui.view,arch_db:web_favicon.view_company_form msgid "Web Favicon" msgstr "Favicon web" diff --git a/web_favicon/i18n/hr.po b/web_favicon/i18n/hr.po index 7c2580249..ccb4d1ffc 100644 --- a/web_favicon/i18n/hr.po +++ b/web_favicon/i18n/hr.po @@ -26,29 +26,29 @@ msgid "Companies" msgstr "Tvrtke" #. module: web_favicon -#: model:ir.ui.view,arch_db:web_favicon.view_company_form +#: model_terms:ir.ui.view,arch_db:web_favicon.view_company_form msgid "Favicon" msgstr "Favicon" #. module: web_favicon -#: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend +#: model:ir.model.fields,field_description:web_favicon.field_res_company__favicon_backend #, fuzzy msgid "Favicon Backend" msgstr "Favicon backend" #. module: web_favicon -#: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend_mimetype +#: model:ir.model.fields,field_description:web_favicon.field_res_company__favicon_backend_mimetype #, fuzzy msgid "Favicon Backend Mimetype" msgstr "Favicon backend" #. module: web_favicon -#: model:ir.model.fields,help:web_favicon.field_res_company_favicon_backend_mimetype +#: model:ir.model.fields,help:web_favicon.field_res_company__favicon_backend_mimetype msgid "Set the mimetype of your file." msgstr "" #. module: web_favicon -#: model:ir.ui.view,arch_db:web_favicon.view_company_form +#: model_terms:ir.ui.view,arch_db:web_favicon.view_company_form msgid "Web Favicon" msgstr "" diff --git a/web_favicon/i18n/nl_NL.po b/web_favicon/i18n/nl_NL.po index ab6f2852b..d330c5a6a 100644 --- a/web_favicon/i18n/nl_NL.po +++ b/web_favicon/i18n/nl_NL.po @@ -25,28 +25,28 @@ msgid "Companies" msgstr "Bedrijven" #. module: web_favicon -#: model:ir.ui.view,arch_db:web_favicon.view_company_form +#: model_terms:ir.ui.view,arch_db:web_favicon.view_company_form msgid "Favicon" msgstr "Favicon" #. module: web_favicon -#: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend +#: model:ir.model.fields,field_description:web_favicon.field_res_company__favicon_backend #, fuzzy msgid "Favicon Backend" msgstr "Favicon" #. module: web_favicon -#: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend_mimetype +#: model:ir.model.fields,field_description:web_favicon.field_res_company__favicon_backend_mimetype msgid "Favicon Backend Mimetype" msgstr "" #. module: web_favicon -#: model:ir.model.fields,help:web_favicon.field_res_company_favicon_backend_mimetype +#: model:ir.model.fields,help:web_favicon.field_res_company__favicon_backend_mimetype msgid "Set the mimetype of your file." msgstr "Stel het afbeeldingstype in voor je bestand." #. module: web_favicon -#: model:ir.ui.view,arch_db:web_favicon.view_company_form +#: model_terms:ir.ui.view,arch_db:web_favicon.view_company_form msgid "Web Favicon" msgstr "Web Favicon" diff --git a/web_favicon/i18n/pt_BR.po b/web_favicon/i18n/pt_BR.po index 97f0859ad..b3aba0aa2 100644 --- a/web_favicon/i18n/pt_BR.po +++ b/web_favicon/i18n/pt_BR.po @@ -11,8 +11,8 @@ msgstr "" "POT-Creation-Date: 2017-06-22 08:26+0000\n" "PO-Revision-Date: 2018-08-04 13:35+0000\n" "Last-Translator: Rodrigo Macedo \n" -"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/teams/" -"23907/pt_BR/)\n" +"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/" +"teams/23907/pt_BR/)\n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -26,27 +26,27 @@ msgid "Companies" msgstr "Empresas" #. module: web_favicon -#: model:ir.ui.view,arch_db:web_favicon.view_company_form +#: model_terms:ir.ui.view,arch_db:web_favicon.view_company_form msgid "Favicon" msgstr "Favicon" #. module: web_favicon -#: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend +#: model:ir.model.fields,field_description:web_favicon.field_res_company__favicon_backend msgid "Favicon Backend" msgstr "Favicon back-end" #. module: web_favicon -#: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend_mimetype +#: model:ir.model.fields,field_description:web_favicon.field_res_company__favicon_backend_mimetype msgid "Favicon Backend Mimetype" msgstr "Favicon back-end mimetype" #. module: web_favicon -#: model:ir.model.fields,help:web_favicon.field_res_company_favicon_backend_mimetype +#: model:ir.model.fields,help:web_favicon.field_res_company__favicon_backend_mimetype msgid "Set the mimetype of your file." msgstr "Defina o tipo mímico do seu arquivo." #. module: web_favicon -#: model:ir.ui.view,arch_db:web_favicon.view_company_form +#: model_terms:ir.ui.view,arch_db:web_favicon.view_company_form msgid "Web Favicon" msgstr "Favicon Web" From b8e598cab89a507e1c2b4fa4ed4331bbae6a3d12 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Mon, 29 Jul 2019 03:49:00 +0000 Subject: [PATCH 15/34] [UPD] README.rst --- web_favicon/static/description/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web_favicon/static/description/index.html b/web_favicon/static/description/index.html index 866cc6c6e..49faf960b 100644 --- a/web_favicon/static/description/index.html +++ b/web_favicon/static/description/index.html @@ -3,7 +3,7 @@ - + Custom shortcut icon