Для проектов автоматически генерируются вебсайты. Это происходит, когда один из участников или руководитель авторизуется в Odoo (через авторизацию МИЭМ).
Генерация сайтов реализована с помощью последовательностей автоматических действий (Automated Actions).
В модели нужно добавить следующие поля:
- Модель project.project: x_project_number - тип integer
- Модель ir.ui.view: x_project_num - тип integer
- Модель website.page: x_project_num - тип integer
Поля нужны для того, чтобы впоследствии использовать номер проекта для ссылки на страницу.
При авторизации участника или руководителя проекта создается View для страницы.
Код действия:
arch="""<t t-name="website.test">
<t t-call="website.layout">
<div id="wrap" class="oe_structure oe_empty">
<section class="s_cover pt200 pb200 o_cc o_cc4 o_colored_level" data-scroll-background-ratio="1" data-oe-shape-data="{"shape":"web_editor/Floats/02","flip":[]}" data-snippet="s_cover" data-name="Cover" style="background-image: none;">
<div class="o_we_shape o_web_editor_Floats_02"/>
<div class="container s_allow_columns">
<h1 style="text-align: center;">Проект</h1>
<p>
<br/>
</p>
<p class="lead" style="text-align: center;">Создайте страницу для своего проекта</p>
</div>
</section>
</div>
</t>
</t>
"""
x=""
project_manager=env['project.project'].search([('user_id','=',record.id)])
#для руководителя проекта
if project_manager:
for rec in project_manager:
view_search=env['ir.ui.view'].search([('x_project_num','=',rec.x_project_number)])
if view_search:
#если страница уже есть, пользователь добавится в редакторы страницы
page=env['website.page'].search([('id','=',rec.x_website_page.id)])
page.write({'x_editors':[(4, record.id)]})
view_search.write({'x_editors':[(4, record.id)]})
else:
env['ir.ui.view'].create({
'type':'qweb',
'name':'view_project'+str(rec.x_project_number),
'priority':16,
'arch':arch,
'active':True,
'x_project_num':rec.x_project_number,
'x_editors':[(6, 0, [record.id])]
})
project_member=env['project.project'].search([('x_project_members','in',[record.id])])
#для участника проекта
if project_member:
for rec in project_member:
view_search=env['ir.ui.view'].search([('x_project_num','=',rec.x_project_number)])
if view_search:
#если страница уже есть, пользователь добавится в редакторы страницы
page=env['website.page'].search([('id','=',rec.x_website_page.id)])
page.write({'x_editors':[(4, record.id)]})
view_search.write({'x_editors':[(4, record.id)]})
else:
env['ir.ui.view'].create({
'type':'qweb',
'name':'view_project'+str(rec.x_project_number),
'priority':16,
'arch':arch,
'active':True,
'x_project_num':rec.x_project_number,
'x_editors':[(6, 0, [record.id])]
})
Архитектуру страницы можно скопировать на сайте. Создайте новую страницу, соберите ее в конструкторе и сохраните. Далее в верхнем меню выберите Customize->HTML/CSS/JS Editor и скопируйте html-код страницы.
После создания view создается страница с этим view