46 lines
1.5 KiB
Python
46 lines
1.5 KiB
Python
|
# -*- 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', copy=False)
|
||
|
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.forum_post_action")
|
||
|
action['view_mode'] = 'tree'
|
||
|
action['context'] = {
|
||
|
'create': False
|
||
|
}
|
||
|
action['domain'] = [('forum_id', '=', self.forum_id.id)]
|
||
|
|
||
|
return action
|
||
|
|
||
|
@api.model_create_multi
|
||
|
def create(self, vals_list):
|
||
|
channels = super(Channel, self.with_context(mail_create_nosubscribe=True)).create(vals_list)
|
||
|
channels.forum_id.privacy = False
|
||
|
return channels
|
||
|
|
||
|
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
|