Test Failed
Push — main ( 0a80b2...05d6aa )
by Sat CFDI
03:21
created

satdigitalinvoice.log_tools.log_item()   A

Complexity

Conditions 1

Size

Total Lines 5
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 5
dl 0
loc 5
rs 10
c 0
b 0
f 0
cc 1
nop 2
1
import logging
2
3
import yaml
4
from satcfdi import Code, CFDI
5
6
7
class LogAdapter(logging.LoggerAdapter):
8
    def info_yaml(self, data):
9
        self.info(
10
            yaml.safe_dump(data, allow_unicode=True, width=1280, sort_keys=False)
11
        )
12
13
14
logger = LogAdapter(logging.getLogger())
15
16
17
class LogHandler(logging.StreamHandler):
18
    def __init__(self, console):
19
        super().__init__()
20
        self.buffer = ""
21
        self.console = console
22
23
    def emit(self, record):
24
        msg = self.format(record)
25
        self.buffer += msg + '\n'
26
        self.console.update(value=self.buffer)
27
28
    def clear(self):
29
        self.buffer = ""
30
        self.console.update(value="")
31
32
33
def log_email(receptor, notify_invoices, facturas_pendientes):
34
    logger.info_yaml({
35
        "Rfc": Code(receptor["Rfc"], receptor["RazonSocial"]),
36
        "Facturas": [f"{i.name} - {i.uuid}" for i in notify_invoices],
37
        "Pendientes Meses Anteriores": [f"{i.name} - {i.uuid}" for i in facturas_pendientes],
38
        "Correos": receptor["Email"]
39
    })
40
41
42
def log_line(text, exc_info=False):
43
    ln = (150 - len(text)) // 2
44
    logger.info(
45
        ("=" * ln) + " " + text + " " + ("=" * ln),
46
        exc_info=exc_info
47
    )
48
49
50
def log_item(text, exc_info=False):
51
    ln = (150 - len(text)) // 2
52
    logger.info(
53
        ("*" * ln) + " " + text + " " + ("*" * ln),
54
        exc_info=exc_info
55
    )
56
57
58
def cfdi_header(cfdi):
59
    receptor = Code(cfdi['Receptor']['Rfc'], cfdi['Receptor']['Nombre'])
60
    return f"{cfdi.name} - {cfdi.uuid} {receptor}"