first push message

This commit is contained in:
2026-07-01 14:41:49 +07:00
parent 6667dec2bf
commit 58b5f46cc4
2951 changed files with 316619 additions and 0 deletions
+2
View File
@@ -0,0 +1,2 @@
from . import controllers
from . import models
+34
View File
@@ -0,0 +1,34 @@
{
'name': "project_inherit",
'summary': "Short (1 phrase/line) summary of the module's purpose",
'description': """
Long description of module's purpose
""",
'author': "My Company",
'website': "https://www.yourcompany.com",
# Categories can be used to filter modules in modules listing
# Check https://github.com/odoo/odoo/blob/15.0/odoo/addons/base/data/ir_module_category_data.xml
# for the full list
'category': 'Uncategorized',
'version': '0.1',
# any module necessary for this one to work correctly
'depends': ['base','project','hr','web','mail','hr_timesheet'],
# always loaded
'data': [
'security/security.xml',
'security/ir.model.access.csv',
'views/views.xml',
'views/templates.xml',
],
# only loaded in demonstration mode
'demo': [
'demo/demo.xml',
],
}
+1
View File
@@ -0,0 +1 @@
from . import controllers
@@ -0,0 +1,21 @@
# from odoo import http
# class ProjectInherit(http.Controller):
# @http.route('/project_inherit/project_inherit', auth='public')
# def index(self, **kw):
# return "Hello, world"
# @http.route('/project_inherit/project_inherit/objects', auth='public')
# def list(self, **kw):
# return http.request.render('project_inherit.listing', {
# 'root': '/project_inherit/project_inherit',
# 'objects': http.request.env['project_inherit.project_inherit'].search([]),
# })
# @http.route('/project_inherit/project_inherit/objects/<model("project_inherit.project_inherit"):obj>', auth='public')
# def object(self, obj, **kw):
# return http.request.render('project_inherit.object', {
# 'object': obj
# })
+30
View File
@@ -0,0 +1,30 @@
<odoo>
<data>
<!--
<record id="object0" model="project_inherit.project_inherit">
<field name="name">Object 0</field>
<field name="value">0</field>
</record>
<record id="object1" model="project_inherit.project_inherit">
<field name="name">Object 1</field>
<field name="value">10</field>
</record>
<record id="object2" model="project_inherit.project_inherit">
<field name="name">Object 2</field>
<field name="value">20</field>
</record>
<record id="object3" model="project_inherit.project_inherit">
<field name="name">Object 3</field>
<field name="value">30</field>
</record>
<record id="object4" model="project_inherit.project_inherit">
<field name="name">Object 4</field>
<field name="value">40</field>
</record>
-->
</data>
</odoo>
+1
View File
@@ -0,0 +1 @@
from . import models
+9
View File
@@ -0,0 +1,9 @@
#-*- coding: utf-8 -*-
from odoo import models, fields, api
class Project(models.Model):
_inherit = "project.project"
department_id = fields.Many2many('hr.department', string="Department")
@@ -0,0 +1,21 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_project_project_manager_sa,project.project DS,project.model_project_project,project_inherit.group_sa_manager,1,1,1,1
access_project_project_stage_manager_sa,project.project_stage.manager SA,project.model_project_project_stage,project_inherit.group_sa_manager,1,1,1,1
access_project_task_type_manager_sa,project.task type manager SA,project.model_project_task_type,project_inherit.group_sa_manager,1,1,1,1
access_report_project_task_user_sa,report project task user SA,project.model_report_project_task_user,project_inherit.group_sa_manager,1,1,1,1
access_report_project_task_user_sa,project task SA,project.model_project_task,project_inherit.group_sa_manager,1,1,1,0
access_project_tags_manager_sa,project.project_tags_manager,project.model_project_tags,project_inherit.group_sa_manager,1,1,1,0
access_mail_activity_type_project_manager_sa,mail.activity.type.project.manager SA,mail.model_mail_activity_type,project_inherit.group_sa_manager,1,1,1,1
access_account_analytic_account_user_sa,account.analytic.account SA,analytic.model_account_analytic_account,project_inherit.group_sa_manager,1,1,1,0
access_account_analytic_account_manager_sa,account.analytic.account SA,analytic.model_account_analytic_account,project_inherit.group_sa_manager,1,1,1,1
access_account_analytic_line_project_sa,account.analytic.line project SA,analytic.model_account_analytic_line,project_inherit.group_sa_manager,1,1,1,1
access_project_update_project_manager_sa,project.update.project.manager SA,project.model_project_update,project_inherit.group_sa_manager,1,1,1,1
access_project_milestone_project_manager,_saproject.milestone.project.manager SA,project.model_project_milestone,project_inherit.group_sa_manager,1,1,1,1
access_project_collaborator_manager_sa,project.collaborator SA.manager,project.model_project_collaborator,project_inherit.group_sa_manager,1,1,1,1
access_project_share_manager_sa,project.share.wizard.manager SA,project.model_project_share_wizard,project_inherit.group_sa_manager,1,1,1,0
access_project_task_manager_sa,Access project Task SA,project.model_project_task,project_inherit.group_sa_manager,1,1,1,0
access_mail_alias,Mail Alias,mail.model_mail_alias,project_inherit.group_sa_manager,1,1,1,0
access_spreadsheet_dashboard,spreadsheet_dashboard,spreadsheet_dashboard.model_spreadsheet_dashboard,project_inherit.group_sa_manager,1,1,1,0
access_model_report_project_task_user,report_project_task_user,project.model_report_project_task_user,project_inherit.group_sa_manager,1,1,1,0
access__res_company,acess model res company,base.model_res_company,project_inherit.group_sa_manager,1,1,1,0
access__project_role,acess model project_role,project.model_project_role,project_inherit.group_sa_manager,1,1,1,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_project_project_manager_sa project.project DS project.model_project_project project_inherit.group_sa_manager 1 1 1 1
3 access_project_project_stage_manager_sa project.project_stage.manager SA project.model_project_project_stage project_inherit.group_sa_manager 1 1 1 1
4 access_project_task_type_manager_sa project.task type manager SA project.model_project_task_type project_inherit.group_sa_manager 1 1 1 1
5 access_report_project_task_user_sa report project task user SA project.model_report_project_task_user project_inherit.group_sa_manager 1 1 1 1
6 access_report_project_task_user_sa project task SA project.model_project_task project_inherit.group_sa_manager 1 1 1 0
7 access_project_tags_manager_sa project.project_tags_manager project.model_project_tags project_inherit.group_sa_manager 1 1 1 0
8 access_mail_activity_type_project_manager_sa mail.activity.type.project.manager SA mail.model_mail_activity_type project_inherit.group_sa_manager 1 1 1 1
9 access_account_analytic_account_user_sa account.analytic.account SA analytic.model_account_analytic_account project_inherit.group_sa_manager 1 1 1 0
10 access_account_analytic_account_manager_sa account.analytic.account SA analytic.model_account_analytic_account project_inherit.group_sa_manager 1 1 1 1
11 access_account_analytic_line_project_sa account.analytic.line project SA analytic.model_account_analytic_line project_inherit.group_sa_manager 1 1 1 1
12 access_project_update_project_manager_sa project.update.project.manager SA project.model_project_update project_inherit.group_sa_manager 1 1 1 1
13 access_project_milestone_project_manager _saproject.milestone.project.manager SA project.model_project_milestone project_inherit.group_sa_manager 1 1 1 1
14 access_project_collaborator_manager_sa project.collaborator SA.manager project.model_project_collaborator project_inherit.group_sa_manager 1 1 1 1
15 access_project_share_manager_sa project.share.wizard.manager SA project.model_project_share_wizard project_inherit.group_sa_manager 1 1 1 0
16 access_project_task_manager_sa Access project Task SA project.model_project_task project_inherit.group_sa_manager 1 1 1 0
17 access_mail_alias Mail Alias mail.model_mail_alias project_inherit.group_sa_manager 1 1 1 0
18 access_spreadsheet_dashboard spreadsheet_dashboard spreadsheet_dashboard.model_spreadsheet_dashboard project_inherit.group_sa_manager 1 1 1 0
19 access_model_report_project_task_user report_project_task_user project.model_report_project_task_user project_inherit.group_sa_manager 1 1 1 0
20 access__res_company acess model res company base.model_res_company project_inherit.group_sa_manager 1 1 1 0
21 access__project_role acess model project_role project.model_project_role project_inherit.group_sa_manager 1 1 1 0
+53
View File
@@ -0,0 +1,53 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- 1. Define the Group First -->
<record id="group_sa_manager" model="res.groups">
<field name="name">Manager</field>
<field name="privilege_id" ref="project.res_groups_privilege_project"/>
<field name="implied_ids" eval="[(4, ref('base.group_user'))]"/>
</record>
<!-- 2. Project Manager Rule (Fixed Domain) -->
<record model="ir.rule" id="project_sa_manager_rule">
<field name="name">Project: SA Manager Access</field>
<field name="model_id" ref="project.model_project_project"/>
<field name="domain_force">['|', '|', ('message_follower_ids', 'in', [user.id]), ('user_id', '=', user.id), ('department_id.member_ids.user_id', 'in', [user.id])]</field>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_unlink" eval="False"/>
<field name="groups" eval="[(4, ref('project_inherit.group_sa_manager'))]"/>
</record>
<!-- 3. Timesheet Analysis Rule -->
<record id="hr_timesheet.timesheet_analysis_report_manager" model="ir.rule">
<field name="name">Timesheets Analysis Report manager</field>
<field name="model_id" ref="hr_timesheet.model_timesheets_analysis_report"/>
<field name="domain_force">[(1, '=', 1)]</field>
<field name="groups" eval="[(4, ref('hr_timesheet.group_timesheet_manager')), (4, ref('project.group_project_manager')), (4, ref('project_inherit.group_sa_manager'))]"/>
</record>
<!-- 4. Project Multi-Company Rule -->
<record model="ir.rule" id="project_comp_rule_allow">
<field name="name">Project: multi-company</field>
<field name="model_id" ref="model_project_project"/>
<field name="domain_force">['|','|', ('company_id', '=', False), ('company_id', 'in', company_ids), ('message_follower_ids', 'in', [user.id])]</field>
<field name="groups" eval="[(4, ref('project_inherit.group_sa_manager'))]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_unlink" eval="False"/>
</record>
<!-- 5. Task Multi-Company Rule -->
<record model="ir.rule" id="task_comp_rule_allow">
<field name="name">Project/Task: multi-company</field>
<field name="model_id" ref="project.model_project_task"/>
<field name="domain_force">['|', ('company_id', '=', False),('company_id', 'in', company_ids),('user_ids','=',user.id),('message_follower_ids', 'in', [user.id])]</field>
<field name="groups" eval="[(4, ref('project_inherit.group_sa_manager'))]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_unlink" eval="False"/>
</record>
</odoo>
+24
View File
@@ -0,0 +1,24 @@
<odoo>
<data>
<!--
<template id="listing">
<ul>
<li t-foreach="objects" t-as="object">
<a t-attf-href="#{ root }/objects/#{ object.id }">
<t t-esc="object.display_name"/>
</a>
</li>
</ul>
</template>
<template id="object">
<h1><t t-esc="object.display_name"/></h1>
<dl>
<t t-foreach="object._fields" t-as="field">
<dt><t t-esc="field"/></dt>
<dd><t t-esc="object[field]"/></dd>
</t>
</dl>
</template>
-->
</data>
</odoo>
+9
View File
@@ -0,0 +1,9 @@
<odoo>
<data>
<menuitem name="Project"
id="project.menu_main_pm"
groups="project.group_project_manager,project.group_project_user,project_inherit.group_sa_manager"
web_icon="project,static/description/icon.png"
sequence="3"/>
</data>
</odoo>