[FIX] website_slides: various models improvements
Purpose of this commit is to fix and improve some model related bits of code: * add an ondelete cascade on some required fields; * make a public method private because it should be accessed only through controllers; * do not add odoobot as channel member; notably for demo data it can create unnecessary of noise in members and notifications; Commit linked to task ID 1941250 and PR #31453
This commit is contained in:
@@ -776,7 +776,7 @@ class WebsiteSlides(WebsiteProfile):
|
||||
try:
|
||||
slide = request.env['slide.slide'].browse(slide_id)
|
||||
if is_embedded:
|
||||
request.env['slide.embed'].sudo().add_embed_url(slide.id, referrer_url)
|
||||
request.env['slide.embed'].sudo()._add_embed_url(slide.id, referrer_url)
|
||||
values = self._get_slide_detail(slide)
|
||||
values['page'] = page
|
||||
values['is_embedded'] = is_embedded
|
||||
|
||||
@@ -280,8 +280,8 @@ class Channel(models.Model):
|
||||
|
||||
@api.model
|
||||
def create(self, vals):
|
||||
# Ensure creator is member of its channel it is easier for him to manage it
|
||||
if not vals.get('channel_partner_ids'):
|
||||
# Ensure creator is member of its channel it is easier for him to manage it (unless it is odoobot)
|
||||
if not vals.get('channel_partner_ids') and not self.env.user._is_superuser():
|
||||
vals['channel_partner_ids'] = [(0, 0, {
|
||||
'partner_id': self.env.user.partner_id.id
|
||||
})]
|
||||
|
||||
@@ -24,21 +24,22 @@ class SlidePartnerRelation(models.Model):
|
||||
_table = 'slide_slide_partner'
|
||||
|
||||
slide_id = fields.Many2one('slide.slide', ondelete="cascade", index=True, required=True)
|
||||
channel_id = fields.Many2one('slide.channel', string="Channel", related="slide_id.channel_id", store=True, index=True)
|
||||
partner_id = fields.Many2one('res.partner', index=True, required=True)
|
||||
channel_id = fields.Many2one(
|
||||
'slide.channel', string="Channel",
|
||||
related="slide_id.channel_id", store=True, index=True, ondelete='cascade')
|
||||
partner_id = fields.Many2one('res.partner', index=True, required=True, ondelete='cascade')
|
||||
vote = fields.Integer('Vote', default=0)
|
||||
completed = fields.Boolean('Completed')
|
||||
|
||||
quiz_attempts_count = fields.Integer(string="Number of times this user attempted the quiz")
|
||||
quiz_attempts_count = fields.Integer('Quiz attempts count', default=0)
|
||||
|
||||
|
||||
class SlideLink(models.Model):
|
||||
_name = 'slide.slide.link'
|
||||
_description = "External URL for a particular slide"
|
||||
|
||||
slide_id = fields.Many2one('slide.slide', required=True)
|
||||
slide_id = fields.Many2one('slide.slide', required=True, ondelete='cascade')
|
||||
name = fields.Char('Title', required=True)
|
||||
link = fields.Char("External Link", required=True)
|
||||
link = fields.Char('External Link', required=True)
|
||||
|
||||
|
||||
class EmbeddedSlide(models.Model):
|
||||
@@ -51,8 +52,10 @@ class EmbeddedSlide(models.Model):
|
||||
url = fields.Char('Third Party Website URL', required=True)
|
||||
count_views = fields.Integer('# Views', default=1)
|
||||
|
||||
def add_embed_url(self, slide_id, url):
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user