<commit_before>import time
from filtres.filtre import Filtre
import settings
import re
from soa.service import SOAService

import logging
logger = logging.getLogger(__name__)


class FiltreNou(Filtre):

    solicitant = None
    ticket_id = None

    def es_aplicable(self):
        logger.info("Filtre de Nou")
        logger.info("Tinc un mail de %s" % self.msg.get_from())
        self.solicitant = self.get_uid()

        logger.info("UID del solicitant: %s" % self.solicitant)
        return self.solicitant is not None

    def obtenir_parametres_addicionals(self):
        defaults = {"equipResolutor": settings.get("equip_resolutor_nous")}
        if settings.get("valors_defecte") is None:
            return defaults
        for item in settings.get("valors_defecte"):
            regex = re.compile(item['match'], re.IGNORECASE)
            for header_name in item['order']:
                header_value = self.msg.get_header(header_name)
                if header_value and regex.match(header_value):
                    logger.info("Tinc parametres adicionals via %s"
                                % header_name)
                    defaults.update(item['defaults'])

        logger.info("Parametres addicionals: %s" % str(defaults))
        return defaults

    def netejar_html(self, html):
        funcio_netejar_mail_nou = settings.get("netejar_mail_nou")
        if funcio_netejar_mail_nou:
            return funcio_netejar_mail_nou(html)
        else:
            return html

    def filtrar(self):
        logger.info("Aplico filtre...")
        body = self.msg.get_body()

        subject = self.msg.get_subject()
        if len(subject) == 0:
            subject = "Ticket de %s" % self.solicitant

        if self.msg.get_reply_to() is not None:
            from_or_reply_to = self.msg.get_reply_to()
        else:
            from_or_reply_to = self.msg.get_from()

        parametres_addicionals = self.obtenir_parametres_addicionals()
        logger.info("A veure si puc crear el ticket de %s" % self.solicitant)
        descripcio = (
            "[Tiquet creat des del correu de %s a %s del %s a les %s]<br><br>" % (
                self.msg.get_from(),
                self.msg.get_to(),
                self.msg.get_date().strftime("%d/%m/%Y"),
                self.msg.get_date().strftime("%H:%M")
            )
        ) + body

        parametres = {
            'assumpte': subject,
            'solicitant': self.solicitant,
            'emailSolicitant': from_or_reply_to,
            'descripcio': self.netejar_html(descripcio)
        }
        parametres.update(parametres_addicionals)
        resultat = self.tickets.alta_tiquet(**parametres)

        if SOAService.resultat_erroni(resultat):
            logger.info("Error: %s - %s" % (
                resultat['codiRetorn'],
                resultat['descripcioError']
            ))
            return False

        logger.info("Ticket creat")

        ticket_id = resultat['codiTiquet']
        descripcio = self.afegir_attachments_canviant_body(
            ticket_id,
            self.solicitant,
            descripcio
        )<commit_msg>Canvis per complaure el pycodestyle<commit_after>import time
from filtres.filtre import Filtre
import settings
import re
from soa.service import SOAService

import logging
logger = logging.getLogger(__name__)


class FiltreNou(Filtre):

    solicitant = None
    ticket_id = None

    def es_aplicable(self):
        logger.info("Filtre de Nou")
        logger.info("Tinc un mail de %s" % self.msg.get_from())
        self.solicitant = self.get_uid()

        logger.info("UID del solicitant: %s" % self.solicitant)
        return self.solicitant is not None

    def obtenir_parametres_addicionals(self):
        defaults = {"equipResolutor": settings.get("equip_resolutor_nous")}
        if settings.get("valors_defecte") is None:
            return defaults
        for item in settings.get("valors_defecte"):
            regex = re.compile(item['match'], re.IGNORECASE)
            for header_name in item['order']:
                header_value = self.msg.get_header(header_name)
                if header_value and regex.match(header_value):
                    logger.info("Tinc parametres adicionals via %s"
                                % header_name)
                    defaults.update(item['defaults'])

        logger.info("Parametres addicionals: %s" % str(defaults))
        return defaults

    def netejar_html(self, html):
        funcio_netejar_mail_nou = settings.get("netejar_mail_nou")
        if funcio_netejar_mail_nou:
            return funcio_netejar_mail_nou(html)
        else:
            return html

    def filtrar(self):
        logger.info("Aplico filtre...")
        body = self.msg.get_body()

        subject = self.msg.get_subject()
        if len(subject) == 0:
            subject = "Ticket de %s" % self.solicitant

        if self.msg.get_reply_to() is not None:
            from_or_reply_to = self.msg.get_reply_to()
        else:
            from_or_reply_to = self.msg.get_from()

        parametres_addicionals = self.obtenir_parametres_addicionals()
        logger.info("A veure si puc crear el ticket de %s" % self.solicitant)
        descripcio = (
            "[Tiquet creat des del correu de %s a %s del %s a les %s]" % (
                self.msg.get_from(),
                self.msg.get_to(),
                self.msg.get_date().strftime("%d/%m/%Y"),
                self.msg.get_date().strftime("%H:%M")
            )
        ) + "<br><br>" + body

        parametres = {
            'assumpte': subject,
            'solicitant': self.solicitant,
            'emailSolicitant': from_or_reply_to,
            'descripcio': self.netejar_html(descripcio)
        }
        parametres.update(parametres_addicionals)
        resultat = self.tickets.alta_tiquet(**parametres)

        if SOAService.resultat_erroni(resultat):
            logger.info("Error: %s - %s" % (
                resultat['codiRetorn'],
                resultat['descripcioError']
            ))
            return False

        logger.info("Ticket creat")

        ticket_id = resultat['codiTiquet']
        descripcio = self.afegir_attachments_canviant_body(
            ticket_id,
            self.solicitant,
            descripcio
        )
{'fraction_non_alphanumeric': 0.1037541580864882, 'fraction_numerical': 0.0003168065895770632, 'mean_word_length': 2.0605913717886573, 'pattern_counts': {'":': 2, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '566992', 'n_tokens_mistral': 2045, 'n_tokens_neox': 1986, 'n_words': 381}