diff options
| author | ryv-odoo <ryv@odoo.com> | 2019-10-10 13:24:27 +0000 |
|---|---|---|
| committer | ryv-odoo <ryv@odoo.com> | 2019-10-10 15:19:43 +0000 |
| commit | e0ba61d9fb6f15c9df5d9cec4b5a6b602dc45899 (patch) | |
| tree | 2f7b4a59b80aab53de5f41b043daa5e58a3f324a | |
| parent | 8c2f6b006fd7e92653706652d5d5eb279887b0fd (diff) | |
[REM] website_links: remove favicon, icon_src for performance
The link tracker model (link.tracker) contained favicon (store)
and icon_src computed fields. Computing favicon took
{3-6.5%} of installing odoo (with demo data) due to syncronous http
call to a external link (google).
Moreover, these fields had no sense to be store in odoo
and only used in one template. This template was modified to
display the same information (icon) as before but without storing fields
and with a lazy loading of icons.
TASK_ID: 2083715
closes odoo/odoo#38405
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
| -rw-r--r-- | addons/link_tracker/models/link_tracker.py | 17 | ||||
| -rw-r--r-- | addons/mass_mailing/tests/test_mass_mailing_shortener.py | 9 | ||||
| -rw-r--r-- | addons/test_mail_full/tests/test_sms_sms.py | 7 | ||||
| -rw-r--r-- | addons/website_links/static/img/default_favicon.png | bin | 0 -> 492 bytes | |||
| -rw-r--r-- | addons/website_links/static/src/xml/recent_link.xml | 3 |
5 files changed, 2 insertions, 34 deletions
diff --git a/addons/link_tracker/models/link_tracker.py b/addons/link_tracker/models/link_tracker.py index bf4d25fe465..e623b4e92f6 100644 --- a/addons/link_tracker/models/link_tracker.py +++ b/addons/link_tracker/models/link_tracker.py @@ -44,8 +44,6 @@ class LinkTracker(models.Model): redirected_url = fields.Char(string='Redirected URL', compute='_compute_redirected_url') short_url_host = fields.Char(string='Host of the short URL', compute='_compute_short_url_host') title = fields.Char(string='Page Title', store=True) - favicon = fields.Char(string='Favicon', compute='_compute_favicon', store=True) - icon_src = fields.Char(string='Favicon Source', compute='_compute_icon_src') # Tracking link_code_ids = fields.One2many('link.tracker.code', 'link_id', string='Codes') code = fields.Char(string='Short URL code', compute='_compute_code') @@ -72,11 +70,6 @@ class LinkTracker(models.Model): record = self.env['link.tracker.code'].search([('link_id', '=', tracker.id)], limit=1, order='id DESC') tracker.code = record.code - @api.depends('favicon') - def _compute_icon_src(self): - for tracker in self: - tracker.icon_src = 'data:image/png;base64,' + tracker.favicon - @api.depends('url') def _compute_redirected_url(self): for tracker in self: @@ -101,16 +94,6 @@ class LinkTracker(models.Model): return title - @api.depends('url') - def _compute_favicon(self): - for tracker in self: - try: - icon = requests.get('http://www.google.com/s2/favicons', params={'domain': tracker.url}, timeout=5).content - icon_base64 = base64.b64encode(icon).replace(b"\n", b"").decode('ascii') - except: - icon_base64 = 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsSAAALEgHS3X78AAACiElEQVQ4EaVTzU8TURCf2tJuS7tQtlRb6UKBIkQwkRRSEzkQgyEc6lkOKgcOph78Y+CgjXjDs2i44FXY9AMTlQRUELZapVlouy3d7kKtb0Zr0MSLTvL2zb75eL838xtTvV6H/xELBptMJojeXLCXyobnyog4YhzXYvmCFi6qVSfaeRdXdrfaU1areV5KykmX06rcvzumjY/1ggkR3Jh+bNf1mr8v1D5bLuvR3qDgFbvbBJYIrE1mCIoCrKxsHuzK+Rzvsi29+6DEbTZz9unijEYI8ObBgXOzlcrx9OAlXyDYKUCzwwrDQx1wVDGg089Dt+gR3mxmhcUnaWeoxwMbm/vzDFzmDEKMMNhquRqduT1KwXiGt0vre6iSeAUHNDE0d26NBtAXY9BACQyjFusKuL2Ry+IPb/Y9ZglwuVscdHaknUChqLF/O4jn3V5dP4mhgRJgwSYm+gV0Oi3XrvYB30yvhGa7BS70eGFHPoTJyQHhMK+F0ZesRVVznvXw5Ixv7/C10moEo6OZXbWvlFAF9FVZDOqEABUMRIkMd8GnLwVWg9/RkJF9sA4oDfYQAuzzjqzwvnaRUFxn/X2ZlmGLXAE7AL52B4xHgqAUqrC1nSNuoJkQtLkdqReszz/9aRvq90NOKdOS1nch8TpL555WDp49f3uAMXhACRjD5j4ykuCtf5PP7Fm1b0DIsl/VHGezzP1KwOiZQobFF9YyjSRYQETRENSlVzI8iK9mWlzckpSSCQHVALmN9Az1euDho9Xo8vKGd2rqooA8yBcrwHgCqYR0kMkWci08t/R+W4ljDCanWTg9TJGwGNaNk3vYZ7VUdeKsYJGFNkfSzjXNrSX20s4/h6kB81/271ghG17l+rPTAAAAAElFTkSuQmCC' - tracker.favicon = icon_base64 - @api.model def create(self, vals): create_vals = vals.copy() diff --git a/addons/mass_mailing/tests/test_mass_mailing_shortener.py b/addons/mass_mailing/tests/test_mass_mailing_shortener.py index 37aff377a0b..c755a6754c4 100644 --- a/addons/mass_mailing/tests/test_mass_mailing_shortener.py +++ b/addons/mass_mailing/tests/test_mass_mailing_shortener.py @@ -23,16 +23,9 @@ class TestMassMailingShortener(common.TransactionCase): def _get_title_from_url(u): return "Hello" - def _compute_favicon(): - # 1px to avoid real request - return 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8DwHwAFBQIAX8jx0gAAAABJRU5ErkJggg==' - - patcher = patch('odoo.addons.link_tracker.models.link_tracker.LinkTracker._compute_favicon', wraps=_compute_favicon) - patcher2 = patch('odoo.addons.link_tracker.models.link_tracker.LinkTracker._get_title_from_url', wraps=_get_title_from_url) + patcher = patch('odoo.addons.link_tracker.models.link_tracker.LinkTracker._get_title_from_url', wraps=_get_title_from_url) patcher.start() - patcher2.start() self.addCleanup(patcher.stop) - self.addCleanup(patcher2.stop) def test_00_test_mass_mailing_shortener(self): mailing_list_A = self.env['mailing.list'].create({ diff --git a/addons/test_mail_full/tests/test_sms_sms.py b/addons/test_mail_full/tests/test_sms_sms.py index ed71654ba4a..8be4881e64c 100644 --- a/addons/test_mail_full/tests/test_sms_sms.py +++ b/addons/test_mail_full/tests/test_sms_sms.py @@ -18,20 +18,13 @@ class LinkTrackerMock(common.BaseCase): def setUp(self): super(LinkTrackerMock, self).setUp() - def _compute_favicon(): - # 1px to avoid real request - return 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8DwHwAFBQIAX8jx0gAAAABJRU5ErkJggg==' - def _get_title_from_url(u): return "Test_TITLE" self.env['ir.config_parameter'].sudo().set_param('web.base.url', 'https://test.odoo.com') - link_tracker_favicon_patch = patch('odoo.addons.link_tracker.models.link_tracker.LinkTracker._compute_favicon', wraps=_compute_favicon) link_tracker_title_patch = patch('odoo.addons.link_tracker.models.link_tracker.LinkTracker._get_title_from_url', wraps=_get_title_from_url) - link_tracker_favicon_patch.start() link_tracker_title_patch.start() - self.addCleanup(link_tracker_favicon_patch.stop) self.addCleanup(link_tracker_title_patch.stop) self.utm_c = self.env.ref('utm.utm_campaign_fall_drive') diff --git a/addons/website_links/static/img/default_favicon.png b/addons/website_links/static/img/default_favicon.png Binary files differnew file mode 100644 index 00000000000..1878008c34a --- /dev/null +++ b/addons/website_links/static/img/default_favicon.png diff --git a/addons/website_links/static/src/xml/recent_link.xml b/addons/website_links/static/src/xml/recent_link.xml index 22008b81203..dc41b9003fe 100644 --- a/addons/website_links/static/src/xml/recent_link.xml +++ b/addons/website_links/static/src/xml/recent_link.xml @@ -8,9 +8,8 @@ <p class="text-muted" style="margin-top: -5px;">clicks</p> </div> <div class="col-md-7 col-7"> - <h4 class="truncate_text"> - <img t-att-src="widget.link_obj.icon_src" alt="Icon"/> + <img t-attf-src="http://www.google.com/s2/favicons?domain={{ widget.link_obj.url }}" loading="lazy" alt="Icon" onerror="this.src='/website_links/static/img/default_favicon.png'"/> <a class="no-link-style" t-att-href="widget.link_obj.url"><t t-esc="widget.link_obj.title"/></a> </h4> <p class="text-muted mb0" style="margin-top: -5px;"> |
