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/machine_product_training_views.xml',
'data/data.xml',
'data/data_product_and_categories.xml',
'data/machine_product_links.xml',
#'data/data_product_and_categories.xml',
#'data/machine_product_links.xml',
],
'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
from odoo import models, fields, api
from markupsafe import escape as html_escape
import logging
_logger = logging.getLogger(__name__)
_logger.info("✅ ows_models.py geladen")
@ -190,24 +191,37 @@ class ResPartner(models.Model):
('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 field_name, machine_code in mapping:
if getattr(partner, field_name, False):
machine = self.env['ows.machine'].search([('code', '=', machine_code)], limit=1)
if machine:
already_exists = self.env['ows.machine.access'].search_count([
('partner_id', '=', partner.id),
('machine_id', '=', machine.id),
])
if not already_exists:
self.env['ows.machine.access'].create({
'partner_id': partner.id,
'machine_id': machine.id,
'date_granted': partner.create_date.date() if partner.create_date else date.today(),
})
count += 1
_logger.info(f"[OWS Migration] {count} Maschinenfreigaben aus alten Feldern erstellt.")
if not machine:
continue
# Suche nach dem mail.message, das die Änderung dokumentiert
body_snippet = self.fields_get([field_name])[field_name]['string']
message = MailMessage.search([
('model', '=', 'res.partner'),
('res_id', '=', partner.id),
('body', 'ilike', html_escape(body_snippet)),
('body', 'ilike', 'Ja') # oder ggf. 'True'
], order='create_date ASC', limit=1)
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()
class OwsUser(models.Model):

View File

@ -17,4 +17,10 @@ def run_migration(cr, registry):
env['res.partner'].migrate_existing_partners()
_logger.info("[OWS] Automatische Partner-Migration abgeschlossen.")
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}")