diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/website_slides_forum/models | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/website_slides_forum/models')
| -rw-r--r-- | addons/website_slides_forum/models/__init__.py | 4 | ||||
| -rw-r--r-- | addons/website_slides_forum/models/forum.py | 20 | ||||
| -rw-r--r-- | addons/website_slides_forum/models/slide_channel.py | 46 |
3 files changed, 70 insertions, 0 deletions
diff --git a/addons/website_slides_forum/models/__init__.py b/addons/website_slides_forum/models/__init__.py new file mode 100644 index 00000000..68c2a566 --- /dev/null +++ b/addons/website_slides_forum/models/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- + +from . import forum +from . import slide_channel diff --git a/addons/website_slides_forum/models/forum.py b/addons/website_slides_forum/models/forum.py new file mode 100644 index 00000000..30a0c4d9 --- /dev/null +++ b/addons/website_slides_forum/models/forum.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import api, fields, models + + +class Forum(models.Model): + _inherit = 'forum.forum' + + slide_channel_ids = fields.One2many('slide.channel', 'forum_id', 'Courses', help="Edit the course linked to this forum on the course form.") + slide_channel_id = fields.Many2one('slide.channel', 'Course', compute='_compute_slide_channel_id', store=True) + visibility = fields.Selection(related='slide_channel_id.visibility', help="Forum linked to a Course, the visibility is the one applied on the course.") + + @api.depends('slide_channel_ids') + def _compute_slide_channel_id(self): + for forum in self: + if forum.slide_channel_ids: + forum.slide_channel_id = forum.slide_channel_ids[0] + else: + forum.slide_channel_id = None diff --git a/addons/website_slides_forum/models/slide_channel.py b/addons/website_slides_forum/models/slide_channel.py new file mode 100644 index 00000000..c45dc14c --- /dev/null +++ b/addons/website_slides_forum/models/slide_channel.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import api, fields, models + + +class Channel(models.Model): + _inherit = 'slide.channel' + + forum_id = fields.Many2one('forum.forum', 'Course Forum') + forum_total_posts = fields.Integer('Number of active forum posts', related="forum_id.total_posts") + + _sql_constraints = [ + ('forum_uniq', 'unique (forum_id)', "Only one course per forum!"), + ] + + def action_redirect_to_forum(self): + self.ensure_one() + action = self.env["ir.actions.actions"]._for_xml_id("website_forum.action_forum_post") + action['view_mode'] = 'tree' + action['context'] = { + 'create': False + } + action['domain'] = [('forum_id', '=', self.forum_id.id)] + + return action + + @api.model + def create(self, vals): + channel = super(Channel, self.with_context(mail_create_nosubscribe=True)).create(vals) + if channel.forum_id: + channel.forum_id.privacy = False + return channel + + def write(self, vals): + old_forum = self.forum_id + + res = super(Channel, self).write(vals) + if 'forum_id' in vals: + self.forum_id.privacy = False + if old_forum != self.forum_id: + old_forum.write({ + 'privacy': 'private', + 'authorized_group_id': self.env.ref('website_slides.group_website_slides_officer').id, + }) + return res |
