From 1a21b0896a3cb9bd392f8a0982dd5afcf2eda106 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Warnon?= Date: Tue, 5 Oct 2021 12:52:20 +0000 Subject: [PATCH] [MOV] website_slides: move slide.embed model into its own file As we are going to do some rework on the slide.embed feature, let's put the model into its own python file. Task-2654009 Part-of: odoo/odoo#77736 --- addons/website_slides/models/__init__.py | 1 + addons/website_slides/models/slide_embed.py | 31 +++++++++++++++++++++ addons/website_slides/models/slide_slide.py | 24 ---------------- 3 files changed, 32 insertions(+), 24 deletions(-) create mode 100644 addons/website_slides/models/slide_embed.py diff --git a/addons/website_slides/models/__init__.py b/addons/website_slides/models/__init__.py index 7b958fbdc78..335bfd8fb08 100644 --- a/addons/website_slides/models/__init__.py +++ b/addons/website_slides/models/__init__.py @@ -5,6 +5,7 @@ from . import ir_http from . import gamification_challenge from . import slide_slide from . import slide_question +from . import slide_embed from . import slide_channel from . import slide_channel_tag from . import slide_slide_resource diff --git a/addons/website_slides/models/slide_embed.py b/addons/website_slides/models/slide_embed.py new file mode 100644 index 00000000000..7cbe5fbc56d --- /dev/null +++ b/addons/website_slides/models/slide_embed.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from werkzeug import urls + +from odoo import fields, models + + +class EmbeddedSlide(models.Model): + """ Embedding in third party websites. Track view count, generate statistics. """ + _name = 'slide.embed' + _description = 'Embedded Slides View Counter' + _rec_name = 'slide_id' + + slide_id = fields.Many2one('slide.slide', string="Presentation", required=True, index=True) + url = fields.Char('Third Party Website URL', required=True) + count_views = fields.Integer('# Views', default=1) + + def _add_embed_url(self, slide_id, url): + baseurl = urls.url_parse(url).netloc + if not baseurl: + return 0 + embeds = self.search([('url', '=', baseurl), ('slide_id', '=', int(slide_id))], limit=1) + if embeds: + embeds.count_views += 1 + else: + embeds = self.create({ + 'slide_id': slide_id, + 'url': baseurl, + }) + return embeds.count_views diff --git a/addons/website_slides/models/slide_slide.py b/addons/website_slides/models/slide_slide.py index 3ebb23d7899..dd4e697aefd 100644 --- a/addons/website_slides/models/slide_slide.py +++ b/addons/website_slides/models/slide_slide.py @@ -56,30 +56,6 @@ class SlidePartnerRelation(models.Model): ('partner_id', 'in', self.partner_id.ids), ])._recompute_completion() -class EmbeddedSlide(models.Model): - """ Embedding in third party websites. Track view count, generate statistics. """ - _name = 'slide.embed' - _description = 'Embedded Slides View Counter' - _rec_name = 'slide_id' - - slide_id = fields.Many2one('slide.slide', string="Presentation", required=True, index=True) - url = fields.Char('Third Party Website URL', required=True) - count_views = fields.Integer('# Views', default=1) - - def _add_embed_url(self, slide_id, url): - baseurl = urls.url_parse(url).netloc - if not baseurl: - return 0 - embeds = self.search([('url', '=', baseurl), ('slide_id', '=', int(slide_id))], limit=1) - if embeds: - embeds.count_views += 1 - else: - embeds = self.create({ - 'slide_id': slide_id, - 'url': baseurl, - }) - return embeds.count_views - class SlideTag(models.Model): """ Tag to search slides across channels. """