import uuid from .dsslogger import OdooCustomLogger import logging import datetime from odoo import api, fields, models, _ from odoo import tools logging.setLoggerClass(OdooCustomLogger) _logger = logging.getLogger(__name__) class dssm2mvalues(models.Model): @api.model def analyze_emails(self): # Prüfe, ob der Datensatz ein Email-Objekt ist email_text = self.website_message_ids.body # Prüfe, ob der Text "ProjektID:" enthält if "ProjektID:" in email_text: # Finde die Position von "ProjektID:" pos = email_text.find("ProjektID:") _logger.info("Import M2M Emails - Get ID. File - Message : pos "+str(pos)) # Extrahiere die nächsten 3 Ziffern project_id = email_text[pos + 11:pos + 14].strip() self.project_id = project_id pos = email_text.find("Schwellwert ") _logger.info("Import M2M Emails - Get ID. File - Message : pos "+str(pos)) # Extrahiere die nächsten 3 Ziffern level = email_text[pos + 12:pos + 13].strip() self.level = level self.analyzed = True @api.model def create(self, vals): result = super(dssm2mvalues, self).create(vals) settings = self.env['dss.settings'].search([],limit=1) cron_job = settings.m2mcron if cron_job: _logger.info("Import M2M Emails - Create - Cron activating : "+str(cron_job)) cron_job._trigger() return result def write(self, vals): # Reset latitude/longitude in case we modify the address without # updating the related geolocation fields result = super().write(vals) return result _name = "dss.m2mmail" _description = "DigitalSignage M2M Rückmeldungen" # _rec_name = "statusname" _inherit = ['mail.thread', 'mail.activity.mixin'] uuid = fields.Char(default=lambda self: self._default_uuid(), required=True, readonly=True, copy=False, string='UUID') date_create = fields.Datetime('Erstellungsdatum',default=lambda self: self._default_create_date()) date_lastedit = fields.Datetime('Änderungsdatum') analyzed = fields.Boolean('Analysiert', default=False, tracking=True) project_id = fields.Char(string='Projekt-ID',tracking=True) project = fields.Many2one('dss.projects', string='Projekt', compute='_compute_project') level = fields.Char('Schwellengrenze',tracking=True) @api.model def _default_create_date(self): return datetime.datetime.now() @api.depends('project_id') def _compute_project(self): self.project = False for record in self: if record.project_id: project = self.env['dss.projects'].search([('projectid', '=', int(record.project_id))],limit=1) if project: record.project = project # ... andere Methoden ... @api.model def _default_uuid(self): return str(uuid.uuid4())