mirror of
https://github.com/bringout/oca-ocb-hr.git
synced 2026-04-25 05:32:04 +02:00
19.0 vanilla
This commit is contained in:
parent
a1137a1456
commit
e1d89e11e3
2789 changed files with 1093187 additions and 605897 deletions
|
|
@ -1,21 +1,26 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from collections import defaultdict
|
||||
from odoo.fields import Domain
|
||||
from odoo.http import request
|
||||
from odoo.osv import expression
|
||||
|
||||
from odoo.addons.project.controllers.portal import CustomerPortal
|
||||
|
||||
|
||||
class ProjectCustomerPortal(CustomerPortal):
|
||||
|
||||
def _prepare_project_sharing_session_info(self, project, task=None):
|
||||
session_info = super()._prepare_project_sharing_session_info(project, task)
|
||||
|
||||
def _get_project_sharing_company(self, project):
|
||||
company = project.company_id
|
||||
if not company:
|
||||
timesheet = request.env['account.analytic.line'].sudo().search([('project_id', '=', project.id)], limit=1)
|
||||
company = timesheet.company_id or request.env.user.company_id
|
||||
return company
|
||||
|
||||
def _prepare_project_sharing_session_info(self, project):
|
||||
session_info = super()._prepare_project_sharing_session_info(project)
|
||||
company = request.env['res.company'].sudo().browse(session_info['user_companies']['current_company'])
|
||||
timesheet_encode_uom = company.timesheet_encode_uom_id
|
||||
project_time_mode_uom = company.project_time_mode_id
|
||||
|
||||
session_info['user_companies']['allowed_companies'][company.id].update(
|
||||
timesheet_uom_id=timesheet_encode_uom.id,
|
||||
timesheet_uom_factor=project_time_mode_uom._compute_quantity(
|
||||
|
|
@ -33,20 +38,16 @@ class ProjectCustomerPortal(CustomerPortal):
|
|||
'timesheet_widget': uom.timesheet_widget,
|
||||
} for uom in [timesheet_encode_uom, project_time_mode_uom]
|
||||
}
|
||||
session_info['user_context']['allow_timesheets'] = project.allow_timesheets
|
||||
return session_info
|
||||
|
||||
def _task_get_page_view_values(self, task, access_token, **kwargs):
|
||||
values = super(ProjectCustomerPortal, self)._task_get_page_view_values(task, access_token, **kwargs)
|
||||
values = super()._task_get_page_view_values(task, access_token, **kwargs)
|
||||
domain = request.env['account.analytic.line']._timesheet_get_portal_domain()
|
||||
task_domain = expression.AND([domain, [('task_id', '=', task.id)]])
|
||||
subtask_domain = expression.AND([domain, [('task_id', 'in', task.child_ids.ids)]])
|
||||
task_domain = Domain(domain) & Domain('task_id', '=', task.id)
|
||||
timesheets = request.env['account.analytic.line'].sudo().search(task_domain)
|
||||
subtasks_timesheets = request.env['account.analytic.line'].sudo().search(subtask_domain)
|
||||
timesheets_by_subtask = defaultdict(lambda: request.env['account.analytic.line'].sudo())
|
||||
for timesheet in subtasks_timesheets:
|
||||
timesheets_by_subtask[timesheet.task_id] |= timesheet
|
||||
|
||||
values['allow_timesheets'] = task.allow_timesheets
|
||||
values['timesheets'] = timesheets
|
||||
values['timesheets_by_subtask'] = timesheets_by_subtask
|
||||
values['is_uom_day'] = request.env['account.analytic.line']._is_timesheet_encode_uom_day()
|
||||
return values
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue