removed predefined data(einweisung), added fix_missing_parnters for migration db purpose

This commit is contained in:
gitea 2025-04-06 20:08:05 +00:00
parent 96a463561f
commit 5cc8ab7113
4 changed files with 68 additions and 17 deletions

View File

@ -16,8 +16,8 @@
'views/assets.xml', 'views/assets.xml',
'views/machine_product_training_views.xml', 'views/machine_product_training_views.xml',
'data/data.xml', 'data/data.xml',
'data/data_product_and_categories.xml', #'data/data_product_and_categories.xml',
'data/machine_product_links.xml', #'data/machine_product_links.xml',
], ],
'qweb': [ 'qweb': [

31
fix_missing_partners.py Normal file
View File

@ -0,0 +1,31 @@
# -*- coding: utf-8 -*-
from odoo import SUPERUSER_ID
from odoo.api import Environment
import logging
_logger = logging.getLogger(__name__)
MISSING_PARTNERS = [
6534, 1594, 4700, 6557, 5392, 4960, 5226, 6535, 4666
]
def insert_missing_partners(cr, registry):
env = Environment(cr, SUPERUSER_ID, {})
for partner_id in MISSING_PARTNERS:
cr.execute("""
INSERT INTO res_partner (
id, name, customer_rank, create_uid, create_date, write_uid, write_date
)
VALUES (%s, %s, 1, %s, now(), %s, now())
ON CONFLICT (id) DO NOTHING;
""", (partner_id, f"Fehlender Partner {partner_id}", SUPERUSER_ID, SUPERUSER_ID))
cr.execute("SELECT setval('res_partner_id_seq', (SELECT MAX(id) FROM res_partner));")
_logger.info(f"[OWS Repair] {len(MISSING_PARTNERS)} fehlende Partner hinzugefügt.")
cr.commit()
# Automatischer Start in odoo-bin shell
if 'env' in globals():
insert_missing_partners(env.cr, env.registry)

View File

@ -3,6 +3,7 @@
# Part of Odoo Open Workshop # Part of Odoo Open Workshop
from odoo import models, fields, api from odoo import models, fields, api
from markupsafe import escape as html_escape
import logging import logging
_logger = logging.getLogger(__name__) _logger = logging.getLogger(__name__)
_logger.info("✅ ows_models.py geladen") _logger.info("✅ ows_models.py geladen")
@ -190,24 +191,37 @@ class ResPartner(models.Model):
('vvow_metall_chop_saw', 'kreissaege_metall'), ('vvow_metall_chop_saw', 'kreissaege_metall'),
] ]
count = 0 MachineAccess = self.env['ows.machine.access']
MailMessage = self.env['mail.message']
count_created = 0
for partner in self.search([]): for partner in self.search([]):
for field_name, machine_code in mapping: for field_name, machine_code in mapping:
if getattr(partner, field_name, False): if getattr(partner, field_name, False):
machine = self.env['ows.machine'].search([('code', '=', machine_code)], limit=1) machine = self.env['ows.machine'].search([('code', '=', machine_code)], limit=1)
if machine: if not machine:
already_exists = self.env['ows.machine.access'].search_count([ continue
('partner_id', '=', partner.id),
('machine_id', '=', machine.id), # Suche nach dem mail.message, das die Änderung dokumentiert
]) body_snippet = self.fields_get([field_name])[field_name]['string']
if not already_exists: message = MailMessage.search([
self.env['ows.machine.access'].create({ ('model', '=', 'res.partner'),
'partner_id': partner.id, ('res_id', '=', partner.id),
'machine_id': machine.id, ('body', 'ilike', html_escape(body_snippet)),
'date_granted': partner.create_date.date() if partner.create_date else date.today(), ('body', 'ilike', 'Ja') # oder ggf. 'True'
}) ], order='create_date ASC', limit=1)
count += 1
_logger.info(f"[OWS Migration] {count} Maschinenfreigaben aus alten Feldern erstellt.") date_granted = message.create_date if message else fields.Datetime.now()
if not MachineAccess.search([('partner_id', '=', partner.id), ('machine_id', '=', machine.id)]):
MachineAccess.create({
'partner_id': partner.id,
'machine_id': machine.id,
'date_granted': date_granted,
})
count_created += 1
_logger.info(f"[OWS Migration] ✅ Maschinenfreigaben erstellt: {count_created}")
self.env.cr.commit() self.env.cr.commit()
class OwsUser(models.Model): class OwsUser(models.Model):

View File

@ -17,4 +17,10 @@ def run_migration(cr, registry):
env['res.partner'].migrate_existing_partners() env['res.partner'].migrate_existing_partners()
_logger.info("[OWS] Automatische Partner-Migration abgeschlossen.") _logger.info("[OWS] Automatische Partner-Migration abgeschlossen.")
except Exception as e: except Exception as e:
_logger.error(f"[OWS] Fehler bei automatischer Migration: {e}") _logger.error(f"[OWS] Fehler bei automatischer Partner-Migration: {e}")
try:
env['res.partner'].migrate_machine_access_from_old_fields()
_logger.info("[OWS] Automatische Felder-Migration für Maschinenfreigaben in res.partner.")
except Exception as e:
_logger.error(f"[OWS] Fehler bei automatischer Felder-Migration: {e}")