<commit_before># -*- coding: utf-8 -*-
#
# Copyright 2016 Taŭga Tecnologia
#   <NAME> <<EMAIL>>
# License AGPL-3 or later (http://www.gnu.org/licenses/agpl)
#

import logging
from odoo import api, fields, models
from ..constante_tributaria import (
    TIPO_CERTIFICADO,
    TIPO_CERTIFICADO_A1,
)
from datetime import datetime
_logger = logging.getLogger(__name__)

try:
    import pysped

    from pybrasil.data import formata_data
    from pybrasil.inscricao import (formata_cnpj, formata_cpf, valida_cnpj,
                                    valida_cpf)
except (ImportError, IOError) as err:
    _logger.debug(err)


class Certificado(models.Model):
    _description = u'Certificado Digital'
    _name = 'sped.certificado'
    _rec_name = 'descricao'
    _order = 'data_fim_validade desc'

    tipo = fields.Selection(
        selection=TIPO_CERTIFICADO,
        default=TIPO_CERTIFICADO_A1,
        string=u'Tipo',
    )
    numero_serie = fields.Char(
        string=u'Nº de série',
        size=32
    )
    senha = fields.Char(
        string=u'Senha',
        max_length=120
    )
    proprietario = fields.Char(
        string=u'Proprietário',
        max_length=120
    )
    cnpj_cpf = fields.Char(
        string=u'CNPJ/CPF',
        size=18
    )
    data_inicio_validade = fields.Datetime(
        string=u'Válido de'
    )
    data_fim_validade = fields.Datetime(
        string=u'Válido até'
    )
    arquivo = fields.Binary(
        string=u'Arquivo',
        attachment=True
    )
    nome_arquivo = fields.Char(
        string=u'Arquivo',
        size=255
    )
    descricao = fields.Char(
        string=u'Certificado digital',
        compute='_compute_descricao',
        store=False,
    )
    fora_validade = fields.Char(
        string=u'Fora da validade?',
        size=1,
        compute='_compute_fora_validade',
        store=False,
    )

    @api.depends('tipo', 'numero_serie', 'proprietario', 'cnpj_cpf',
                 'data_inicio_validade', 'data_fim_validade')
    def _compute_descricao(self):
        for certificado in self:
            if certificado.tipo == TIPO_CERTIFICADO_A1:
                certificado.descricao = u'A1'
            else:
                certificado.descricao = u'A3'

            if certificado.proprietario:
                certificado.descricao += u' - ' + certificado.proprietario

            if certificado.cnpj_cpf:
                certificado.descricao += u' - ' + certificado.cnpj_cpf

            if (certificado.data_inicio_validade and
                    certificado.data_fim_validade):
                certificado.descricao += u', válido de '
                certificado.descricao += formata_data(
                    certificado.data_inicio_validade)
                certificado.descricao += u' até '
                certificado.descricao += formata_data(
                    certificado.data_fim_validade)

    @api.depends('data_fim_validade')
    def _compute_fora_validade(self):
        for certificado in self:
            certificado.fora_validade = certificado.data_fim_validade <= str(
                datetime.now())

    @api.constrains('tipo', 'senha', 'arquivo')
    def _check_certificado(self):
        for certificado in self:
            if certificado.tipo != TIPO_CERTIFICADO_A1:<commit_msg>pep8<commit_after># -*- coding: utf-8 -*-
#
# Copyright 2016 <NAME>
#   <NAME> <<EMAIL> <EMAIL>>
# License AGPL-3 or later (http://www.gnu.org/licenses/agpl)
#


import logging
from odoo import api, fields, models
from ..constante_tributaria import (
    TIPO_CERTIFICADO,
    TIPO_CERTIFICADO_A1,
)
from datetime import datetime
_logger = logging.getLogger(__name__)

try:
    import pysped

    from pybrasil.data import formata_data
    from pybrasil.inscricao import (formata_cnpj, formata_cpf, valida_cnpj,
                                    valida_cpf)
except (ImportError, IOError) as err:
    _logger.debug(err)


class Certificado(models.Model):
    _description = u'Certificado Digital'
    _name = 'sped.certificado'
    _rec_name = 'descricao'
    _order = 'data_fim_validade desc'

    tipo = fields.Selection(
        selection=TIPO_CERTIFICADO,
        default=TIPO_CERTIFICADO_A1,
        string=u'Tipo',
    )
    numero_serie = fields.Char(
        string=u'Nº de série',
        size=32
    )
    senha = fields.Char(
        string=u'Senha',
        max_length=120
    )
    proprietario = fields.Char(
        string=u'Proprietário',
        max_length=120
    )
    cnpj_cpf = fields.Char(
        string=u'CNPJ/CPF',
        size=18
    )
    data_inicio_validade = fields.Datetime(
        string=u'Válido de'
    )
    data_fim_validade = fields.Datetime(
        string=u'Válido até'
    )
    arquivo = fields.Binary(
        string=u'Arquivo',
        attachment=True
    )
    nome_arquivo = fields.Char(
        string=u'Arquivo',
        size=255
    )
    descricao = fields.Char(
        string=u'Certificado digital',
        compute='_compute_descricao',
        store=False,
    )
    fora_validade = fields.Char(
        string=u'Fora da validade?',
        size=1,
        compute='_compute_fora_validade',
        store=False,
    )

    @api.depends('tipo', 'numero_serie', 'proprietario', 'cnpj_cpf',
                 'data_inicio_validade', 'data_fim_validade')
    def _compute_descricao(self):
        for certificado in self:
            if certificado.tipo == TIPO_CERTIFICADO_A1:
                certificado.descricao = u'A1'
            else:
                certificado.descricao = u'A3'

            if certificado.proprietario:
                certificado.descricao += u' - ' + certificado.proprietario

            if certificado.cnpj_cpf:
                certificado.descricao += u' - ' + certificado.cnpj_cpf

            if certificado.data_inicio_validade and certificado.data_fim_validade:
                certificado.descricao += u', válido de '
                certificado.descricao += formata_data(
                    certificado.data_inicio_validade)
                certificado.descricao += u' até '
                certificado.descricao += formata_data(
                    certificado.data_fim_validade)

    @api.depends('data_fim_validade')
    def _compute_fora_validade(self):
        for certificado in self:
            certificado.fora_validade = certificado.data_fim_validade <= str(
                datetime.now())

    @api.constrains('tipo', 'senha', 'arquivo')
    def _check_certificado(self):
        for certificado in self:
            if certificado.tipo != TIPO_CERTIFICADO_A1:
{'fraction_non_alphanumeric': 0.09642966127555691, 'fraction_numerical': 0.008086664632285627, 'mean_word_length': 2.229064039408867, 'pattern_counts': {'":': 0, '<': 13, '<?xml version=': 0, '>': 11, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, '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': '4869103', 'n_tokens_mistral': 2354, 'n_tokens_neox': 2262, 'n_words': 375}