models/ows_models.py aktualisiert
This commit is contained in:
parent
0818daf530
commit
f4a586f2db
|
|
@ -163,9 +163,9 @@ class ResPartner(models.Model):
|
|||
def migrate_machine_access_from_old_fields(self):
|
||||
"""
|
||||
Migriert alte vvow_* Boolean-Felder in strukturierte ows.machine.access Einträge.
|
||||
Das Freigabe-Datum wird aus dem Änderungsverlauf (mail.message.tracking_value_ids) extrahiert.
|
||||
"""
|
||||
mapping = [
|
||||
# (altes Feld, machine.code)
|
||||
('vvow_holz_sander', 'bandschleifer'),
|
||||
('vvow_holz_felder_bandsaw', 'bandsaege_holz'),
|
||||
('vvow_holz_felder_jointer', 'dickenhobel'),
|
||||
|
|
@ -193,33 +193,36 @@ class ResPartner(models.Model):
|
|||
|
||||
MachineAccess = self.env['ows.machine.access']
|
||||
MailMessage = self.env['mail.message']
|
||||
TrackingValue = self.env['mail.tracking.value']
|
||||
|
||||
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 not machine:
|
||||
continue
|
||||
if not getattr(partner, field_name, False):
|
||||
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)
|
||||
machine = self.env['ows.machine'].search([('code', '=', machine_code)], limit=1)
|
||||
if not machine:
|
||||
continue
|
||||
|
||||
date_granted = message.create_date if message else fields.Datetime.now()
|
||||
# Änderungsverlauf durchsuchen: Wann wurde das Feld auf True gesetzt?
|
||||
tracking = TrackingValue.search([
|
||||
('field', '=', field_name),
|
||||
('new_value_boolean', '=', True),
|
||||
('mail_message_id.model', '=', 'res.partner'),
|
||||
('mail_message_id.res_id', '=', partner.id),
|
||||
], order='mail_message_id.date ASC', limit=1)
|
||||
|
||||
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
|
||||
date_granted = tracking.mail_message_id.date if tracking 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()
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user