Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions portal_timesheet/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
##############################################################################
{
"name": "Portal Timesheet",
"version": "18.0.1.2.0",
"version": "19.0.1.0.0",
"category": "Base",
"sequence": 14,
"summary": "",
Expand All @@ -39,13 +39,14 @@
"security/ir.model.access.csv",
"views/base_menus.xml",
"views/hr_employee_views.xml",
"views/project_project_views.xml",
],
"demo": [
# 'demo/hr_demo.xml',
"demo/project_demo.xml",
"demo/res_users_demo.xml",
],
"installable": False,
"installable": True,
"auto_install": False,
"application": False,
}
2 changes: 1 addition & 1 deletion portal_timesheet/demo/res_users_demo.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
<odoo>
<record id="portal_backend.user_portal_advanced" model="res.users" context="{'no_reset_password': True}">
<field name="groups_id" eval="[(4, ref('portal_timesheet.group_portal_backend_timesheet'))]"/>
<field name="group_ids" eval="[(4, ref('portal_timesheet.group_portal_backend_timesheet'))]"/>
</record>
</odoo>
2 changes: 2 additions & 0 deletions portal_timesheet/models/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
from . import ir_http
from . import project
from . import res_users

# from . import res_partner
from . import account_analytic_line
6 changes: 6 additions & 0 deletions portal_timesheet/models/account_analytic_line.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,9 @@ def _get_favorite_project_id(self, employee_id=False):
if self.env.user.has_group("portal_timesheet.group_portal_backend_timesheet"):
self = self.sudo()
return super()._get_favorite_project_id(employee_id=employee_id)

def _compute_readonly_timesheet(self):
if self.env.user.has_group("portal_timesheet.group_portal_backend_timesheet"):
self.readonly_timesheet = False
else:
super()._compute_readonly_timesheet()
4 changes: 4 additions & 0 deletions portal_timesheet/models/project.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,14 @@ class Project(models.Model):
groups="hr_timesheet.group_hr_timesheet_user, portal_timesheet.group_portal_backend_timesheet"
)

message_partner_ids = fields.Many2many(groups="base.group_user,portal_timesheet.group_portal_backend_timesheet")


class Task(models.Model):
_inherit = "project.task"

message_partner_ids = fields.Many2many(groups="base.group_user,portal_timesheet.group_portal_backend_timesheet")

def _ensure_fields_are_accessible(self, fields, operation="read", check_group_user=True):
if not self.env.user.has_group("portal_timesheet.group_portal_backend_timesheet"):
super()._ensure_fields_are_accessible(fields, operation, check_group_user)
33 changes: 33 additions & 0 deletions portal_timesheet/models/res_partner.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# from odoo import api, models


# class ResPartner(models.Model):
# _inherit = "res.partner"

# @api.model
# def _search(self, domain, offset=0, limit=None, order=None, access_rights_uid=None, **kwargs):
# """Use sudo for portal backend users to access partners in message_partner_ids"""
# if self.env.user.has_group("portal_timesheet.group_portal_backend_timesheet"):
# # When using sudo(), don't pass access_rights_uid as it's not needed
# return super(ResPartner, self.sudo())._search(domain, offset=offset, limit=limit, order=order, **kwargs)
# # Only pass access_rights_uid if it was provided
# if access_rights_uid is not None:
# return super()._search(
# domain, offset=offset, limit=limit, order=order, access_rights_uid=access_rights_uid, **kwargs
# )
# return super()._search(domain, offset=offset, limit=limit, order=order, **kwargs)

# def read(self, fields=None, load="_classic_read"):
# """Allow portal backend users to read partners"""
# if self.env.user.has_group("portal_timesheet.group_portal_backend_timesheet"):
# return super(ResPartner, self.sudo()).read(fields=fields, load=load)
# return super().read(fields=fields, load=load)

# @api.model
# def search_read(self, domain=None, fields=None, offset=0, limit=None, order=None, **read_kwargs):
# """Use sudo for portal backend users"""
# if self.env.user.has_group("portal_timesheet.group_portal_backend_timesheet"):
# return super(ResPartner, self.sudo()).search_read(
# domain=domain, fields=fields, offset=offset, limit=limit, order=order, **read_kwargs
# )
# return super().search_read(domain=domain, fields=fields, offset=offset, limit=limit, order=order, **read_kwargs)
5 changes: 3 additions & 2 deletions portal_timesheet/models/res_users.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
from odoo import models


class User(models.Model):
_inherit = ["res.users"]
class ResUsers(models.Model):
_inherit = "res.users"

def get_last_validated_timesheet_date(self):
if not self.env.user.has_group("portal_timesheet.group_portal_backend_timesheet"):
return super().get_last_validated_timesheet_date()
else:
# Portal users should respect the same date validation as internal users
return self.sudo().employee_id.last_validated_timesheet_date
5 changes: 3 additions & 2 deletions portal_timesheet/security/ir.model.access.csv
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
portal_timesheet_account_analytic_account,portal-timesheet-model_account_analytic_account,analytic.model_account_analytic_account,group_portal_backend_timesheet,1,1,0,0
portal_timesheet_account_analytic_line,portal-timesheet-model_account_analytic_line,analytic.model_account_analytic_line,group_portal_backend_timesheet,1,1,1,1
portal_timesheet_account_analytic_plan,portal-timesheet-model_account_analytic_plan,analytic.model_account_analytic_plan,group_portal_backend_timesheet,1,0,0,0
portal_timesheet_res_partner,portal-timesheet-model_res_partner,base.model_res_partner,group_portal_backend_timesheet,1,0,0,0
portal_timesheet_hr_employee_public,portal-timesheet-model_hr_employee_public,hr.model_hr_employee_public,group_portal_backend_timesheet,1,0,0,0
portal_timesheet_project_project,portal-timesheet-model_project_project,project.model_project_project,group_portal_backend_timesheet,1,0,0,0
portal_timesheet_project_project,portal-timesheet-model_project_project,project.model_project_project,group_portal_backend_timesheet,1,1,0,0
portal_timesheet_project_task,portal-timesheet-model_project_task,project.model_project_task,group_portal_backend_timesheet,1,1,0,0
portal_timesheet_resource_calendar,portal-timesheet-model_resource_calendar,resource.model_resource_calendar,group_portal_backend_timesheet,1,0,0,0
portal_timesheet_resource_calendar_attendance,portal-timesheet-model_resource_calendar_attendance,resource.model_resource_calendar_attendance,group_portal_backend_timesheet,1,0,0,0
portal_timesheet_resource_calendar_leaves,portal-timesheet-model_resource_calendar_leaves,resource.model_resource_calendar_leaves,group_portal_backend_timesheet,1,0,0,0
portal_timesheet_timer_timer,portal-timesheet-model_timer_timer,timer.model_timer_timer,group_portal_backend_timesheet,1,0,0,0
portal_timesheet_uom_category,portal-timesheet-model_uom_category,uom.model_uom_category,group_portal_backend_timesheet,1,0,0,0
portal_timesheet_uom_uom,portal-timesheet-model_uom_uom,uom.model_uom_uom,group_portal_backend_timesheet,1,0,0,0
portal_timesheet_calendar_attendee,portal-timesheet-model_calendar_attendee,calendar.model_calendar_attendee,group_portal_backend_timesheet,1,0,0,0
portal_timesheet_access_hr_department_public,hr.department.public,hr.model_hr_department,group_portal_backend_timesheet,1,0,0,0
Expand Down
40 changes: 39 additions & 1 deletion portal_timesheet/security/ir_rule.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,49 @@
<record model="ir.rule" id="account_analytic_line_timesheet_portal_backend_user">
<field name="name">Analytic Line timesheet portal backend</field>
<field name="model_id" ref="analytic.model_account_analytic_line"/>
<field name="domain_force">[('project_id', '!=', False), '|', ('project_id.message_partner_ids', 'child_of', [user.partner_id.commercial_partner_id.id]), ('task_id.message_partner_ids', 'child_of', [user.partner_id.commercial_partner_id.id]), ('project_id.privacy_visibility', '=', 'portal')]</field>
<field name="domain_force">[
('project_id', '!=', False),
('project_id.privacy_visibility', '=', 'portal'),
'|',
('project_id.message_partner_ids', 'child_of', [user.partner_id.commercial_partner_id.id]),
('task_id.message_partner_ids', 'child_of', [user.partner_id.commercial_partner_id.id])
]</field>
<field name="groups" eval="[Command.link(ref('portal_backend.group_portal_backend'))]"/>
<field name="perm_create" eval="True"/>
<field name="perm_read" eval="True"/>
<field name="perm_unlink" eval="True"/>
<field name="perm_write" eval="True"/>
</record>

<!-- permiso a usuarios portal-backend para ver proyectos compartidos con ellos -->
<!-- <record model="ir.rule" id="project_project_portal_backend_user">
<field name="name">Project: portal backend users can see followed projects with portal visibility</field>
<field name="model_id" ref="project.model_project_project"/>
<field name="domain_force">[
('privacy_visibility', '=', 'portal'),
('message_partner_ids', 'child_of', [user.partner_id.commercial_partner_id.id])
]</field>
<field name="groups" eval="[Command.link(ref('portal_backend.group_portal_backend'))]"/>
<field name="perm_create" eval="False"/>
<field name="perm_read" eval="True"/>
<field name="perm_unlink" eval="False"/>
<field name="perm_write" eval="False"/>
</record> -->

<!-- permiso a usuarios portal-backend para ver tareas si son seguidores del proyecto o de la tarea -->
<!-- <record model="ir.rule" id="project_task_portal_backend_user">
<field name="name">Project Task: portal backend users can see followed tasks</field>
<field name="model_id" ref="project.model_project_task"/>
<field name="domain_force">[
('project_id.privacy_visibility', '=', 'portal'),
'|',
('message_partner_ids', 'child_of', [user.partner_id.commercial_partner_id.id]),
('project_id.message_partner_ids', 'child_of', [user.partner_id.commercial_partner_id.id]),
]</field>
<field name="groups" eval="[Command.link(ref('portal_backend.group_portal_backend'))]"/>
<field name="perm_create" eval="False"/>
<field name="perm_read" eval="True"/>
<field name="perm_unlink" eval="False"/>
<field name="perm_write" eval="False"/>
</record> -->
</odoo>
17 changes: 10 additions & 7 deletions portal_timesheet/security/res_groups.xml
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record model="ir.module.category" id="category_portal_timesheet">
<field name="name">Portal Timesheet</field>
<field name="parent_id" ref="portal_backend.category_portal_advanced"/>
<record model="res.groups.privilege" id="privilege_portal_advanced_timesheet">
<field name="name">Advanced Timesheet</field>
<field name="description">Advanced timesheet permissions</field>
<field name="category_id" ref="portal_backend.category_portal_advanced"/>
<field name="sequence">10</field>
</record>

<record id="group_portal_backend_timesheet" model="res.groups">
<field name="name">Portal Timesheet</field>
<field name="comment">Allows portal backend users to access the application dashboard to record hours worked on tasks and projects that have been shared with them.</field>
<field name="category_id" ref="category_portal_timesheet"/>
<record model="res.groups" id="group_portal_backend_timesheet" >
<field name="name">Portal Backend: Timesheets</field>
<field name="comment">Allows portal backend users to access the application dashboard to record hours worked on tasks and projects that have been shared with them..</field>
<field name="privilege_id" ref="privilege_portal_advanced_timesheet"/>
<field name="implied_ids" eval="[Command.link(ref('portal_backend.group_portal_backend'))]"/>
</record>
</odoo>
4 changes: 2 additions & 2 deletions portal_timesheet/views/base_menus.xml
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="hr_timesheet.timesheet_menu_root" model="ir.ui.menu">
<field name="groups_id" eval="[Command.link(ref('portal_timesheet.group_portal_backend_timesheet'))]"/>
<field name="group_ids" eval="[Command.link(ref('portal_timesheet.group_portal_backend_timesheet'))]"/>
</record>

<record id="hr_timesheet.timesheet_menu_activity_user" model="ir.ui.menu">
<field name="groups_id" eval="[Command.link(ref('portal_timesheet.group_portal_backend_timesheet'))]"/>
<field name="group_ids" eval="[Command.link(ref('portal_timesheet.group_portal_backend_timesheet'))]"/>
</record>
</odoo>
13 changes: 13 additions & 0 deletions portal_timesheet/views/project_project_views.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<odoo>
<!-- rule for avoiding error when portal timesheet portal enter on project view from timesheet -->
<record id="project_templates_view_form_inherited" model="ir.ui.view">
<field name="name">project.project.template.form</field>
<field name="model">project.project</field>
<field name="inherit_id" ref="project.edit_project"/>
<field name="arch" type="xml">
<xpath expr="//chatter" position="attributes">
<attribute name="groups">!portal_backend.group_portal_backend</attribute>
</xpath>
</field>
</record>
</odoo>