from odoo import models, fields, api, _ from odoo.exceptions import ValidationError, UserError from datetime import timedelta, datetime import logging class ResPartner(models.Model): """ One2many relationship with CooperativeStatus should be replaced by inheritance. """ _inherit = 'res.partner' worker_store = fields.Boolean(default=False) is_worker = fields.Boolean(string="Worker", compute="_compute_is_worker", store=True) can_shop = fields.Boolean(string="Is worker allowed to shop?", compute="_compute_can_shop", store=True) cooperative_status_ids = fields.One2many('cooperative.status', 'cooperator_id', readonly=True) super = fields.Boolean(related='cooperative_status_ids.super', string="Super Cooperative", readonly=True, store=True) info_session = fields.Boolean(related='cooperative_status_ids.info_session', string='Information Session ?', readonly=True, store=True) info_session_date = fields.Date(related='cooperative_status_ids.info_session_date', string='Information Session Date', readonly=True, store=True) working_mode = fields.Selection(related='cooperative_status_ids.working_mode', readonly=True, store=True) exempt_reason_id = fields.Many2one(related='cooperative_status_ids.exempt_reason_id', readonly=True, store=True) state = fields.Selection(related='cooperative_status_ids.status', readonly=True, store=True) extension_start_time = fields.Date(related='cooperative_status_ids.extension_start_time', string="Extension Start Day", readonly=True, store=True) subscribed_shift_ids = fields.Many2many('beesdoo.shift.template') @api.depends("worker_store") def _compute_is_worker(self): for rec in self: rec.is_worker = rec.worker_store @api.depends("cooperative_status_ids") def _compute_can_shop(self): """ Shopping authorisation may vary on the can_shop status of the cooperative.status but also other parameters. Overwrite this function to change the default behavior. """ for rec in self: if rec.cooperative_status_ids: rec.can_shop = rec.cooperative_status_ids.can_shop else: rec.can_shop = True @api.multi def coop_subscribe(self): return { 'name': _('Subscribe Cooperator'), 'type': 'ir.actions.act_window', 'view_type': 'form', 'view_mode': 'form', 'res_model': 'beesdoo.shift.subscribe', 'target': 'new', } @api.multi def coop_unsubscribe(self): res = self.coop_subscribe() res['context'] = {'default_unsubscribed': True} return res @api.multi def manual_extension(self): return { 'name': _('Manual Extension'), 'type': 'ir.actions.act_window', 'view_type': 'form', 'view_mode': 'form', 'res_model': 'beesdoo.shift.extension', 'target': 'new', } @api.multi def auto_extension(self): res = self.manual_extension() res['context'] = {'default_auto': True} res['name'] = _('Trigger Grace Delay') return res @api.multi def register_holiday(self): return { 'name': _('Register Holiday'), 'type': 'ir.actions.act_window', 'view_type': 'form', 'view_mode': 'form', 'res_model': 'beesdoo.shift.holiday', 'target': 'new', } @api.multi def temporary_exempt(self): return { 'name': _('Temporary Exemption'), 'type': 'ir.actions.act_window', 'view_type': 'form', 'view_mode': 'form', 'res_model': 'beesdoo.shift.temporary_exemption', 'target': 'new', } #TODO access right + vue on res.partner