diff --git a/__manifest__.py b/__manifest__.py index c63f254..7554be0 100644 --- a/__manifest__.py +++ b/__manifest__.py @@ -28,7 +28,7 @@ 'assets': { 'point_of_sale.assets': [ 'static/src/js/partner_access_popup.js', - 'static/src/js/debug.js', + #'static/src/js/debug.js', ], }, diff --git a/models/ows_models.py b/models/ows_models.py index e4a51af..e9a7f2b 100644 --- a/models/ows_models.py +++ b/models/ows_models.py @@ -9,27 +9,33 @@ _logger.info("✅ ows_models.py geladen") class ResPartner(models.Model): _inherit = 'res.partner' - _logger.info("✅ ows ResPartner geladen") - ows_user_id = fields.Many2one( - 'ows.user', - string='OWS Benutzerdaten', - compute='_compute_ows_user', - inverse='_inverse_ows_user', - store=True, - ) - - # ✳️ Related-Felder zur Verwendung im Formular - birthday = fields.Date(related='ows_user_id.birthday', readonly=False) - rfid_card = fields.Text(related='ows_user_id.rfid_card', readonly=False) - security_briefing = fields.Boolean(related='ows_user_id.security_briefing', readonly=False) - security_id = fields.Text(related='ows_user_id.security_id', readonly=False) + _logger.info("✅ ows ResPartner geladen") - def _compute_ows_user(self): + ows_user_id = fields.One2many('ows.user', 'partner_id', string="OWS Benutzerdaten") + + # ✳️ Zugriff auf Felder aus ows.user per compute + inverse (statt related) + birthday = fields.Date(compute='_compute_ows_user_fields', inverse='_inverse_ows_user_fields', store=False) + rfid_card = fields.Text(compute='_compute_ows_user_fields', inverse='_inverse_ows_user_fields', store=False) + security_briefing = fields.Boolean(compute='_compute_ows_user_fields', inverse='_inverse_ows_user_fields', store=False) + security_id = fields.Text(compute='_compute_ows_user_fields', inverse='_inverse_ows_user_fields', store=False) + + @api.depends('ows_user_id') + def _compute_ows_user_fields(self): for partner in self: - partner.ows_user_id = self.env['ows.user'].search( - [('partner_id', '=', partner.id)], - limit=1 - ) + user = partner.ows_user_id[0] if partner.ows_user_id else False + partner.birthday = user.birthday if user else False + partner.rfid_card = user.rfid_card if user else False + partner.security_briefing = user.security_briefing if user else False + partner.security_id = user.security_id if user else False + + def _inverse_ows_user_fields(self): + for partner in self: + user = partner.ows_user_id[0] if partner.ows_user_id else False + if user: + user.birthday = partner.birthday + user.rfid_card = partner.rfid_card + user.security_briefing = partner.security_briefing + user.security_id = partner.security_id @api.model_create_multi def create(self, vals_list): @@ -38,13 +44,11 @@ class ResPartner(models.Model): self.env['ows.user'].create({'partner_id': partner.id}) return partners - machine_access_ids = fields.One2many( 'ows.machine.access', 'partner_id', string='Maschinenfreigaben' - ) - + ) machine_access_html = fields.Html( string="Maschinenfreigaben", @@ -54,21 +58,9 @@ class ResPartner(models.Model): @api.depends('machine_access_ids') def _compute_machine_access_html(self): - """ - Computes an HTML representation of the machine access permissions for each partner. - The HTML is structured as a grid of machine areas, where each area contains a table - listing the machines and whether the partner has access to them. - - - Iterates through all machine areas and their associated machines. - - Checks if the partner has access to each machine. - - Generates an HTML table with a checkmark or cross icon for each machine access status. - - Assigns the generated HTML to the `machine_access_html` field of the partner. - """ + areas = self.env['ows.machine.area'].search([], order="name") for partner in self: - areas = self.env['ows.machine.area'].search([], order="name") - html = """ -