changes
This commit is contained in:
77
fusion_plating/scripts/fp_retro_thickness_30045.py
Normal file
77
fusion_plating/scripts/fp_retro_thickness_30045.py
Normal file
@@ -0,0 +1,77 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""One-off: re-parse RTF on CoC-30045 + populate new metadata fields
|
||||
+ regenerate the cert PDF. Run on entech after deploying the parser
|
||||
extensions.
|
||||
|
||||
Run with:
|
||||
odoo shell -c /etc/odoo/odoo.conf -d admin --no-http < this_file
|
||||
"""
|
||||
import base64
|
||||
from datetime import datetime
|
||||
|
||||
from odoo.addons.fusion_plating_jobs.wizards.fp_cert_issue_wizard import (
|
||||
_fp_parse_fischerscope_rtf,
|
||||
)
|
||||
|
||||
cert = env['fp.certificate'].browse(501)
|
||||
att = env['ir.attachment'].search([
|
||||
('res_model', '=', 'fp.certificate'),
|
||||
('res_id', '=', 501),
|
||||
('name', 'ilike', 'XRF'),
|
||||
], limit=1)
|
||||
|
||||
raw = base64.b64decode(att.datas)
|
||||
parsed = _fp_parse_fischerscope_rtf(raw)
|
||||
print('parsed metadata:', {
|
||||
k: parsed[k] for k in (
|
||||
'operator', 'product', 'application', 'directory',
|
||||
'equipment', 'measuring_time_sec', 'date_str', 'time_str',
|
||||
'calibration',
|
||||
)
|
||||
})
|
||||
|
||||
vals = {
|
||||
'x_fc_thickness_operator': parsed['operator'],
|
||||
'x_fc_thickness_product': parsed['product'],
|
||||
'x_fc_thickness_application': parsed['application'],
|
||||
'x_fc_thickness_directory': parsed['directory'],
|
||||
'x_fc_thickness_equipment': parsed['equipment'] or 'Fischerscope XDAL 600',
|
||||
'x_fc_thickness_measuring_time_sec': parsed['measuring_time_sec'] or 0,
|
||||
'x_fc_thickness_source_filename': att.name,
|
||||
}
|
||||
|
||||
date_str = (parsed.get('date_str') or '').strip()
|
||||
time_str = (parsed.get('time_str') or '').strip()
|
||||
if date_str:
|
||||
combined = ('%s %s' % (date_str, time_str)).strip()
|
||||
for fmt in (
|
||||
'%m/%d/%Y %I:%M:%S %p', '%m/%d/%Y %I:%M %p',
|
||||
'%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M',
|
||||
'%m/%d/%Y',
|
||||
):
|
||||
try:
|
||||
vals['x_fc_thickness_datetime'] = datetime.strptime(combined, fmt)
|
||||
break
|
||||
except ValueError:
|
||||
continue
|
||||
|
||||
cert.write(vals)
|
||||
print('wrote vals:', list(vals.keys()))
|
||||
|
||||
# Backfill calibration on existing readings (created earlier).
|
||||
calib = parsed.get('calibration') or ''
|
||||
if calib:
|
||||
cert.thickness_reading_ids.write({'calibration_std_ref': calib})
|
||||
print('backfilled calibration on %d readings' % len(cert.thickness_reading_ids))
|
||||
|
||||
# Regenerate the cert PDF so the new layout takes effect.
|
||||
if cert.attachment_id:
|
||||
cert.attachment_id.unlink()
|
||||
cert.invalidate_recordset()
|
||||
new_att = cert._fp_render_and_attach_pdf()
|
||||
env.cr.commit()
|
||||
print('done · readings=%d · new PDF=%s · size=%d bytes' % (
|
||||
len(cert.thickness_reading_ids),
|
||||
new_att.name if new_att else 'NONE',
|
||||
new_att.file_size if new_att else 0,
|
||||
))
|
||||
Reference in New Issue
Block a user