DigitalSignage/models/dss_m2mmail.py

76 lines
3.0 KiB
Python
Executable File

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())