diff --git a/addons/knowledge/__init__.py b/addons/knowledge/__init__.py index 88710707227..d1d1d566d49 100644 --- a/addons/knowledge/__init__.py +++ b/addons/knowledge/__init__.py @@ -4,3 +4,10 @@ from . import controllers from . import models from . import wizard + +from odoo import api, SUPERUSER_ID + + +def _init_private_article_per_user(cr, registry): + env = api.Environment(cr, SUPERUSER_ID, {}) + env['res.users'].search([('partner_share', '=', False)])._generate_tutorial_articles() diff --git a/addons/knowledge/__manifest__.py b/addons/knowledge/__manifest__.py index ee9ab51b8f3..b2c13c5393b 100644 --- a/addons/knowledge/__manifest__.py +++ b/addons/knowledge/__manifest__.py @@ -14,6 +14,7 @@ 'portal' ], 'data': [ + 'data/article_templates.xml', 'data/knowledge_data.xml', 'data/ir_actions_data.xml', 'data/mail_templates.xml', @@ -32,6 +33,7 @@ 'application': True, 'auto_install': False, 'license': 'LGPL-3', + 'post_init_hook': '_init_private_article_per_user', 'assets': { 'web.assets_backend': [ ('remove', 'web_editor/static/src/scss/web_editor.backend.scss'), diff --git a/addons/knowledge/data/article_templates.xml b/addons/knowledge/data/article_templates.xml new file mode 100644 index 00000000000..e908e4a941b --- /dev/null +++ b/addons/knowledge/data/article_templates.xml @@ -0,0 +1,299 @@ + + + + + + + diff --git a/addons/knowledge/models/__init__.py b/addons/knowledge/models/__init__.py index a1793b669d8..0100fc90b42 100644 --- a/addons/knowledge/models/__init__.py +++ b/addons/knowledge/models/__init__.py @@ -5,3 +5,4 @@ from . import knowledge_article_favorite from . import knowledge_article_member from . import knowledge_article from . import res_partner +from . import res_users diff --git a/addons/knowledge/models/res_users.py b/addons/knowledge/models/res_users.py new file mode 100644 index 00000000000..d401b707ad4 --- /dev/null +++ b/addons/knowledge/models/res_users.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import models, api +from odoo.tools.translate import _lt + + +class Users(models.Model): + _name = 'res.users' + _inherit = 'res.users' + @api.model_create_multi + def create(self, vals_list): + users = super(Users, self).create(vals_list) + if not self.env.context.get('knowledge_skip_onboarding_article'): + users.filtered(lambda user: not user.partner_share)._generate_tutorial_articles() + return users + + def _generate_tutorial_articles(self): + articles_to_create = [] + for user in self: + self = self.with_context(lang=user.lang or self.env.user.lang) + render_ctx = {'object': user} + body = self.env['ir.qweb']._render( + 'knowledge.knowledge_article_user_onboarding', + render_ctx, + minimal_qcontext=True, + raise_if_not_found=False + ) + if not body: + break + + welcome = _lt('Welcome %s', user.name) + articles_to_create.append({ + 'article_member_ids': [(0, 0, { + 'partner_id': user.partner_id.id, + 'permission': 'write', + })], + 'body': body, + 'icon': "👋", + 'internal_permission': 'none', + 'favorite_ids': [(0, 0, { + 'sequence': 0, + 'user_id': user.id, + })], + 'name': welcome, + }) + + if articles_to_create: + self.env['knowledge.article'].sudo().create(articles_to_create) diff --git a/once b/once new file mode 100644 index 00000000000..e69de29bb2d