# -*- coding: utf-8 -*- from openerp import http from openerp.http import request from werkzeug.wrappers import Response from werkzeug.datastructures import Headers from dateutil.relativedelta import relativedelta as rd from dateutil.parser import parse from gzip import GzipFile from StringIO import StringIO as IO import simplejson as json import gzip # import logging from eiru_logging import make_info_log # LOGGER = logging.getLogger(__name__) GZIP_COMPRESSION_LEVEL = 9 class Statement(http.Controller): ''' Make JSON response to send ''' def make_response(self, data=None, status=200): return Response(json.dumps(data), status=status, content_type='application/json') ''' Make GZIP to JSON response ''' def make_gzip_response(self, data=None, status=200): gzip_buffer = IO() with GzipFile(mode='wb', compresslevel=GZIP_COMPRESSION_LEVEL, fileobj=gzip_buffer) as gzip_file: gzip_file.write(json.dumps(data)) contents = gzip_buffer.getvalue() gzip_buffer.close() headers = Headers() headers.add('Content-Encoding', 'gzip') headers.add('Vary', 'Accept-Encoding') headers.add('Content-Length', len(contents)) return Response(contents, status=status, headers=headers, content_type='application/json') # ''' Logger info ''' # def make_info_log(self, log): # LOGGER.info('\033[1;34m[INFO] --> \033[m{}'.format(log)) ''' ██ ███ ██ ██ ████████ ██ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ████ ██ ██ ''' @http.route('/eiru_bank_statement/init', auth='user', methods=['GET'], cors='*') def init_bank_statement(self,**kw): from account_bank_statement_type import get_account_bank_statement_type from res_store import get_res_store from res_users import get_res_users, get_user from server_datetime import get_date from res_partner import get_res_partner from account_bank_statement_config import get_account_bank_statement_config from account_journal import get_currencies_from_journal, get_journals from account_bank_statement import get_account_bank_statement make_info_log('Preparing data to {}'.format(kw.get('mode'))) # self.make_info_log('Preparing data to {}'.format(kw.get('mode'))) store = get_res_store(kw.get('mode')) # from eiru_logging import make_info_log # make_info_log('GET Timezone') return self.make_gzip_response({ 'date': get_date(), 'user': get_user(), 'resUsers': get_res_users(store['userIds']), 'statementType': get_account_bank_statement_type(), 'resPartners': get_res_partner(), 'statementConfig': get_account_bank_statement_config(), 'currencies': get_currencies_from_journal(), 'journals': get_journals([kw.get('mode')]), 'statement': get_account_bank_statement(store['journalIds']), }) ''' ██████ █████ ███████ ██ ██ ██████ ██████ ██ ██ ███ ███ ██████ ██ ██ ███████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ████ ████ ██ ██ ██ ██ ██ ██ ███████ ███████ ███████ ██████ ██ ██ ███ ██ ████ ██ ██ ██ ██ ██ █████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██████ ██ ██ ███████ ██ ██ ██████ ██████ ██ ██ ██ ██ ██████ ████ ███████ * Transfer. * Input. * Output. ''' @http.route('/eiru_bank_statement/create_cashbox_move', type='json', auth='user', methods=['POST'],cors='*') def _create_cashbox_move(self, **kw): from account_bank_statement_line import create_statement_line from cashbox_transfer import create_cashbox_transfer from cashbox_input import create_cashbox_input from cashbox_output import create_cashbox_output data = kw.get('data') ''' Transferencia ''' if (data['transfer']): return create_cashbox_transfer(data) ''' Entrada de Dinero ''' if (data['input']): return create_cashbox_input(data) ''' Salida de Dinero ''' if (data['output']): return create_cashbox_output(data) ''' ██████ ██████ ███████ █████ ████████ ███████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██████ █████ ███████ ██ █████ ██ ██ ██ ██ ██ ██ ██ ██ ██████ ██ ██ ███████ ██ ██ ██ ███████ Statement ''' @http.route('/eiru_bank_statement/create_account_bank_statement', type='json', auth='user', methods=['POST'],cors='*') def _create_account_bank_statement(self, **kw): from account_bank_statement import create_account_bank_statement return create_account_bank_statement(kw.get('data')) ''' ██████ ██ ██████ ███████ ██ ███ ██ ██████ ██ ██ ██ ██ ██ ██ ████ ██ ██ ██ ██ ██ ██ ███████ ██ ██ ██ ██ ██ ███ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██████ ███████ ██████ ███████ ██ ██ ████ ██████ STATEMENT ''' @http.route('/eiru_bank_statement/process_closing_statement', type='json', auth='user', methods=['POST'],cors='*') def _process_closing_statement(self, **kw): from account_bank_statement import closing_statement return closing_statement(kw.get('data')) ''' WRITE / UNLINK ''' @http.route('/eiru_bank_statement/process_modify_statement_line', type='json', auth='user', methods=['POST'],cors='*') def _process_modify_statement(self, **kw): from account_bank_statement_line import modify_statement_line return modify_statement_line(kw.get('data'))