# Path: pysped/nfse/danfse.py
# class DANFSE(DANFE):
#     def __init__(self):
#         super(DANFSE, self).__init__()
#         self.imprime_descricao_servico = True
#         self.imprime_item_servico      = True
#         self.imprime_codigo_cnae       = True
#         self.imprime_codigo_servico    = False
#         self.imprime_codigo_servico_federal = True
#         self.imprime_construcao_civil  = False
# 
#     def reset(self):
#         super(DANFSE, self).reset()
# 
#     def gerar_danfse(self):
#         if self.NFe is None:
#             raise ValueError('Não é possível gerar um DANFSE sem a informação de uma NFS-e')
# 
#         if self.protNFe is None:
#             self.reset()
# 
#         #
#         # Prepara o queryset para impressão
#         #
#         self.NFe.site = self.site
# 
#         if self.template:
#             if isinstance(self.template, (file, BytesIO)):
#                 template = self.template
#             else:
#                 template = open(self.template, 'rb')
# 
#         else:
#             template = open(os.path.join(DIRNAME, 'danfse_a4.odt'), 'rb')
# 
#         self._gera_pdf(template)
# 
#         if self.salvar_arquivo:
#             #nome_arq = self.caminho + self.NFe.chave + '.pdf'
#             nome_arq = self.caminho + 'nfse.pdf'
#             open(nome_arq, 'wb').write(self.conteudo_pdf)
# 
#     def gerar_danfe(self):
#         self.gerar_danfse()
# 
#     @property
#     def logo_prefeitura(self):
#         import ipdb; ipdb
#         if self.NFe is None:
#             return ''
# 
#         if not self.NFe.nome_cidade:
#             return ''
# 
#         if self.NFe.nome_cidade in CACHE_LOGO:
#             return CACHE_LOGO[self.NFe.nome_cidade]
# 
#         caminho_logo = os.path.join(DIRNAME, 'logo_prefeitura', self.NFe.nome_cidade + '.jpeg')
# 
#         if not os.path.exists(caminho_logo):
#             return ''
# 
#         logo = open(caminho_logo, 'rb').read()
# 
#         CACHE_LOGO[self.NFe.nome_cidade] = base64.encodebytes(logo)
# 
#         return CACHE_LOGO[self.NFe.nome_cidade]
# 
#     def gerar_darl(self):
#         if self.NFe is None:
#             raise ValueError('Não é possível gerar um DARL sem a informação de um Recibo de Locação')
# 
#         if self.protNFe is None:
#             self.reset()
# 
#         #
#         # Prepara o queryset para impressão
#         #
#         self.NFe.site = self.site
# 
#         if self.template:
#             if isinstance(self.template, (file, BytesIO)):
#                 template = self.template
#             else:
#                 template = open(self.template, 'rb')
# 
#         else:
#             template = open(os.path.join(DIRNAME, 'darl_a4.odt'), 'rb')
# 
#         self._gera_pdf(template)
# 
#         if self.salvar_arquivo:
#             #nome_arq = self.caminho + self.NFe.chave + '.pdf'
#             nome_arq = self.caminho + 'recibo_locacao.pdf'
#             open(nome_arq, 'wb').write(self.conteudo_pdf)


import os
import sys
import socket
import ssl
import time
import json
import hashlib
import pybrasil
from datetime import datetime
from uuid import uuid4
from builtins import str
from io import open
    from httplib import HTTPSConnection, HTTPConnection
    from http.client import HTTPSConnection, HTTPConnection
from .danfse import DANFSE
                if self.forca_tls:
                    con.protocolo = ssl.PROTOCOLO_TSL

        #
        # É preciso definir o POST abaixo como bytestring, já que importamos
        # os unicode_literals... Dá um pau com xml com acentos sem isso...
        #
        #con.set_debuglevel(1)

        if sys.version_info.major == 2:
            con.request(b'POST', b'/' + self.url.encode('utf-8'), self.xml_envio.encode('utf-8'), self.header)
        else:
            con.request('POST', '/' + self.url, self.xml_envio.encode('utf-8'), self.header)

        con.sock.settimeout(600.0)

        self.response = con.getresponse()

        if not self.sem_certificado:
            self.certificado.exclui_arquivo_conexao()

        self.xml_resposta = self.response.read().decode('utf-8')

        con.close()


class ProcessadorNFSe(object):
    def __init__(self, certificado=None):
        self.certificado = certificado or pybrasil.certificado.Certificado()
        self.salvar_arquivos = True

# Path: pysped/nfse/danfse.py
# class DANFSE(DANFE):
#     def __init__(self):
#         super(DANFSE, self).__init__()
#         self.imprime_descricao_servico = True
#         self.imprime_item_servico      = True
#         self.imprime_codigo_cnae       = True
#         self.imprime_codigo_servico    = False
#         self.imprime_codigo_servico_federal = True
#         self.imprime_construcao_civil  = False
# 
#     def reset(self):
#         super(DANFSE, self).reset()
# 
#     def gerar_danfse(self):
#         if self.NFe is None:
#             raise ValueError('Não é possível gerar um DANFSE sem a informação de uma NFS-e')
# 
#         if self.protNFe is None:
#             self.reset()
# 
#         #
#         # Prepara o queryset para impressão
#         #
#         self.NFe.site = self.site
# 
#         if self.template:
#             if isinstance(self.template, (file, BytesIO)):
#                 template = self.template
#             else:
#                 template = open(self.template, 'rb')
# 
#         else:
#             template = open(os.path.join(DIRNAME, 'danfse_a4.odt'), 'rb')
# 
#         self._gera_pdf(template)
# 
#         if self.salvar_arquivo:
#             #nome_arq = self.caminho + self.NFe.chave + '.pdf'
#             nome_arq = self.caminho + 'nfse.pdf'
#             open(nome_arq, 'wb').write(self.conteudo_pdf)
# 
#     def gerar_danfe(self):
#         self.gerar_danfse()
# 
#     @property
#     def logo_prefeitura(self):
#         import ipdb; ipdb
#         if self.NFe is None:
#             return ''
# 
#         if not self.NFe.nome_cidade:
#             return ''
# 
#         if self.NFe.nome_cidade in CACHE_LOGO:
#             return CACHE_LOGO[self.NFe.nome_cidade]
# 
#         caminho_logo = os.path.join(DIRNAME, 'logo_prefeitura', self.NFe.nome_cidade + '.jpeg')
# 
#         if not os.path.exists(caminho_logo):
#             return ''
# 
#         logo = open(caminho_logo, 'rb').read()
# 
#         CACHE_LOGO[self.NFe.nome_cidade] = base64.encodebytes(logo)
# 
#         return CACHE_LOGO[self.NFe.nome_cidade]
# 
#     def gerar_darl(self):
#         if self.NFe is None:
#             raise ValueError('Não é possível gerar um DARL sem a informação de um Recibo de Locação')
# 
#         if self.protNFe is None:
#             self.reset()
# 
#         #
#         # Prepara o queryset para impressão
#         #
#         self.NFe.site = self.site
# 
#         if self.template:
#             if isinstance(self.template, (file, BytesIO)):
#                 template = self.template
#             else:
#                 template = open(self.template, 'rb')
# 
#         else:
#             template = open(os.path.join(DIRNAME, 'darl_a4.odt'), 'rb')
# 
#         self._gera_pdf(template)
# 
#         if self.salvar_arquivo:
#             #nome_arq = self.caminho + self.NFe.chave + '.pdf'
#             nome_arq = self.caminho + 'recibo_locacao.pdf'
#             open(nome_arq, 'wb').write(self.conteudo_pdf)


# Path: pysped/nfse/processador_nfse.py
import os
import sys
import socket
import ssl
import time
import json
import hashlib
import pybrasil
from datetime import datetime
from uuid import uuid4
from builtins import str
from io import open
    from httplib import HTTPSConnection, HTTPConnection
    from http.client import HTTPSConnection, HTTPConnection
from .danfse import DANFSE

                if self.forca_tls:
                    con.protocolo = ssl.PROTOCOLO_TSL

        #
        # É preciso definir o POST abaixo como bytestring, já que importamos
        # os unicode_literals... Dá um pau com xml com acentos sem isso...
        #
        #con.set_debuglevel(1)

        if sys.version_info.major == 2:
            con.request(b'POST', b'/' + self.url.encode('utf-8'), self.xml_envio.encode('utf-8'), self.header)
        else:
            con.request('POST', '/' + self.url, self.xml_envio.encode('utf-8'), self.header)

        con.sock.settimeout(600.0)

        self.response = con.getresponse()

        if not self.sem_certificado:
            self.certificado.exclui_arquivo_conexao()

        self.xml_resposta = self.response.read().decode('utf-8')

        con.close()


class ProcessadorNFSe(object):
    def __init__(self, certificado=None):
        self.certificado = certificado or pybrasil.certificado.Certificado()
        self.salvar_arquivos = True

        self.danfse = DANFSE()