forked from Mapan/odoo17e
81 lines
2.7 KiB
Python
81 lines
2.7 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details
|
|
|
|
from contextlib import contextmanager
|
|
|
|
from odoo import fields
|
|
|
|
from odoo.tests.common import TransactionCase
|
|
|
|
|
|
class TestCommonForecast(TransactionCase):
|
|
|
|
@classmethod
|
|
def setUpEmployees(cls):
|
|
cls.employee_joseph = cls.env['hr.employee'].create({
|
|
'name': 'joseph',
|
|
'work_email': 'joseph@a.be',
|
|
'employee_type': 'freelance', # to avoid using contract if hr_contract is installed before
|
|
'tz': 'UTC'
|
|
})
|
|
cls.resource_joseph = cls.employee_joseph.resource_id
|
|
cls.employee_bert = cls.env['hr.employee'].create({
|
|
'name': 'bert',
|
|
'work_email': 'bert@a.be',
|
|
'employee_type': 'freelance', # to avoid using contract if hr_contract is installed before
|
|
'tz': 'UTC'
|
|
})
|
|
cls.resource_bert = cls.employee_bert.resource_id
|
|
|
|
@classmethod
|
|
def setUpProjects(cls):
|
|
Project = cls.env['project.project'].with_context(tracking_disable=True)
|
|
Task = cls.env['project.task'].with_context(tracking_disable=True)
|
|
|
|
cls.project_opera = Project.create({
|
|
'name': 'Opera',
|
|
'color': 2,
|
|
'privacy_visibility': 'employees',
|
|
})
|
|
cls.task_opera_place_new_chairs = Task.create({
|
|
'name': 'Add the new chairs in room 9',
|
|
'project_id': cls.project_opera.id,
|
|
})
|
|
cls.project_horizon = Project.create({
|
|
'name': 'Horizon',
|
|
'color': 1,
|
|
'privacy_visibility': 'employees',
|
|
})
|
|
cls.task_horizon_dawn = Task.create({
|
|
'name': 'Dawn',
|
|
'project_id': cls.project_horizon.id,
|
|
})
|
|
|
|
# --------------------------------------------------------------------------
|
|
# Helpers
|
|
# --------------------------------------------------------------------------
|
|
|
|
@contextmanager
|
|
def _patch_now(self, datetime_str):
|
|
datetime_now_old = getattr(fields.Datetime, 'now')
|
|
datetime_today_old = getattr(fields.Datetime, 'today')
|
|
|
|
def new_now():
|
|
return fields.Datetime.from_string(datetime_str)
|
|
|
|
def new_today():
|
|
return fields.Datetime.from_string(datetime_str).replace(hour=0, minute=0, second=0)
|
|
|
|
try:
|
|
setattr(fields.Datetime, 'now', new_now)
|
|
setattr(fields.Datetime, 'today', new_today)
|
|
|
|
yield
|
|
finally:
|
|
# back
|
|
setattr(fields.Datetime, 'now', datetime_now_old)
|
|
setattr(fields.Datetime, 'today', datetime_today_old)
|
|
|
|
def get_by_employee(self, employee):
|
|
return self.env['planning.slot'].search([('employee_id', '=', employee.id)])
|