# Path: sathub/comum/util.py
# def hexdump(data):
#     def _cut(sequence, size):
#         for i in xrange(0, len(sequence), size):
#             yield sequence[i:i+size]
#     _hex = lambda seq: ['{0:02x}'.format(b) for b in seq]
#     _chr = lambda seq: [chr(b) if 32 <= b <= 126 else '.' for b in seq]
#     raw_data = map(ord, data)
#     hexpanel = [' '.join(line) for line in _cut(_hex(raw_data), 16)]
#     chrpanel = [''.join(line) for line in _cut(_chr(raw_data), 16)]
#     hexpanel[-1] = hexpanel[-1] + (chr(32) * (47 - len(hexpanel[-1])))
#     chrpanel[-1] = chrpanel[-1] + (chr(32) * (16 - len(chrpanel[-1])))
#     return '\n'.join('%s  %s' % (h, c) for h, c in zip(hexpanel, chrpanel))
# 
# Path: sathub/comum/util.py
# @memoize
# def instanciar_funcoes_sat(numero_caixa):
#     funcoes_sat = FuncoesSAT(BibliotecaSAT(conf.caminho_biblioteca,
#                     convencao=conf.convencao_chamada),
#             codigo_ativacao=conf.codigo_ativacao,
#             numerador_sessao=instanciar_numerador_sessao(numero_caixa))
#     return funcoes_sat
# 
# Path: sathub/custom.py
# def request_parser():
#     global parser
#     return parser.copy()


import logging
from flask import abort
from flask.ext import restful
from ..comum.util import hexdump
from ..comum.util import instanciar_funcoes_sat
from ..custom import request_parser

    Se o código de ativação original tiver sido perdido, então o código de
    ativação de emergência deverá ser escrito no arquivo de configurações e
    deverá ser usada a opção ``2`` para que seja reconhecido pelo equipamento
    SAT como o código de ativação de emergência.

    Será muito mais prático usar o software de gerenciamento do fabricante para
    efetuar a troca do código de ativação, a menos que o estabelecimento siga
    uma política de troca frequente do código de ativação devido a questões de
    segurança. Neste caso, seria muito mais interessante implementar esta
    funcionalidade na aplicação de retaguarda, já que é uma operação puramente
    administrativa. Mas isso é apenas uma sugestão.
"""





logger = logging.getLogger('sathub.resource')


def opcao_codigo(value, name):
    # 1 - codigo de ativação normal
    # 2 - código de ativação de emergência
    opcao = int(value)
    if opcao not in [1, 2]: # FIXME: deveriam ser constantes em `satcomum`
        raise ValueError('Parametro {} invalido: {}'.format(name, value))
    return opcao



# Path: sathub/comum/util.py
# def hexdump(data):
#     def _cut(sequence, size):
#         for i in xrange(0, len(sequence), size):
#             yield sequence[i:i+size]
#     _hex = lambda seq: ['{0:02x}'.format(b) for b in seq]
#     _chr = lambda seq: [chr(b) if 32 <= b <= 126 else '.' for b in seq]
#     raw_data = map(ord, data)
#     hexpanel = [' '.join(line) for line in _cut(_hex(raw_data), 16)]
#     chrpanel = [''.join(line) for line in _cut(_chr(raw_data), 16)]
#     hexpanel[-1] = hexpanel[-1] + (chr(32) * (47 - len(hexpanel[-1])))
#     chrpanel[-1] = chrpanel[-1] + (chr(32) * (16 - len(chrpanel[-1])))
#     return '\n'.join('%s  %s' % (h, c) for h, c in zip(hexpanel, chrpanel))
# 
# Path: sathub/comum/util.py
# @memoize
# def instanciar_funcoes_sat(numero_caixa):
#     funcoes_sat = FuncoesSAT(BibliotecaSAT(conf.caminho_biblioteca,
#                     convencao=conf.convencao_chamada),
#             codigo_ativacao=conf.codigo_ativacao,
#             numerador_sessao=instanciar_numerador_sessao(numero_caixa))
#     return funcoes_sat
# 
# Path: sathub/custom.py
# def request_parser():
#     global parser
#     return parser.copy()


# Path: sathub/resources/trocarcodigodeativacao.py
import logging
from flask import abort
from flask.ext import restful
from ..comum.util import hexdump
from ..comum.util import instanciar_funcoes_sat
from ..custom import request_parser


    Se o código de ativação original tiver sido perdido, então o código de
    ativação de emergência deverá ser escrito no arquivo de configurações e
    deverá ser usada a opção ``2`` para que seja reconhecido pelo equipamento
    SAT como o código de ativação de emergência.

    Será muito mais prático usar o software de gerenciamento do fabricante para
    efetuar a troca do código de ativação, a menos que o estabelecimento siga
    uma política de troca frequente do código de ativação devido a questões de
    segurança. Neste caso, seria muito mais interessante implementar esta
    funcionalidade na aplicação de retaguarda, já que é uma operação puramente
    administrativa. Mas isso é apenas uma sugestão.
"""





logger = logging.getLogger('sathub.resource')


def opcao_codigo(value, name):
    # 1 - codigo de ativação normal
    # 2 - código de ativação de emergência
    opcao = int(value)
    if opcao not in [1, 2]: # FIXME: deveriam ser constantes em `satcomum`
        raise ValueError('Parametro {} invalido: {}'.format(name, value))
    return opcao



parser = request_parser()