From 1c22f485469a78a586c24fbcc668ad458b886a79 Mon Sep 17 00:00:00 2001 From: Damien Crier Date: Mon, 9 Apr 2018 13:20:47 +0200 Subject: [PATCH] [IMP] replace erppeek by odoorpc --- app.py | 31 +++++++++++++++++++------------ form.py | 2 +- requirements.txt | 5 +++++ 3 files changed, 25 insertions(+), 13 deletions(-) create mode 100644 requirements.txt diff --git a/app.py b/app.py index 2d31bb9..5826ccf 100644 --- a/app.py +++ b/app.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- import os import ConfigParser -import erppeek +import odoorpc import bz2 import socket from functools import wraps @@ -10,9 +10,10 @@ from flask import ( Flask, render_template, request, abort, session, redirect, url_for, flash) -from flask.ext.babel import Babel, gettext as _ +from flask_babel import Babel, gettext as _ from form import LoginForm + def get_config(): '''Get values from cfg file''' conf_file = '%s/config.ini' % os.path.dirname(os.path.realpath(__file__)) @@ -26,6 +27,7 @@ def get_config(): results[section][option] = config.get(section, option) return results + def create_app(config=None): '''Create Flask APP''' cfg = get_config() @@ -35,24 +37,24 @@ def create_app(config=None): app.config.from_pyfile(config) return app + def parse_setup(filename): globalsdict = {} # put predefined things here localsdict = {} # will be populated by executed script execfile(filename, globalsdict, localsdict) return localsdict + def get_lang(): return app.config.get('LANGUAGE') + def erp_connect(): '''OpenERP Connection''' server = app.config.get('OPENERP_SERVER') - database = app.config.get('OPENERP_DATABASE') - username = session['username'] - password = bz2.decompress(session['password']) + port = app.config.get('OPENERP_SERVER_PORT') try: - Client = erppeek.Client(server, db=database, user=username, - password=password) + Client = odoorpc.ODOO(server, port=port) except socket.error: flash(_("Can't connect to ERP server. Check network-ports" "or ERP server was running.")) @@ -61,6 +63,7 @@ def erp_connect(): abort(500) return Client + def login_required(f): @wraps(f) def decorated_function(*args, **kwargs): @@ -70,12 +73,14 @@ def decorated_function(*args, **kwargs): return f(*args, **kwargs) return decorated_function + conf_file = '%s/config.cfg' % os.path.dirname(os.path.realpath(__file__)) app = create_app(conf_file) app.config['BABEL_DEFAULT_LOCALE'] = get_lang() app.root_path = os.path.dirname(os.path.abspath(__file__)) babel = Babel(app) + @app.route("/login", methods=["GET", "POST"]) def login(): '''Login''' @@ -86,21 +91,23 @@ def login(): password = bz2.compress(request.form.get('password')) session['username'] = username session['password'] = password - + database = app.config.get('OPENERP_DATABASE') Client = erp_connect() - login = Client.login(username, bz2.decompress(password), - app.config.get('OPENERP_DATABASE')) - if login: + try: + Client.login(database, username, + bz2.decompress(password)) session['logged_in'] = True flash(_('You were logged in.')) return redirect(url_for('index')) - else: + except odoorpc.error.RPCError as e: + print e.message flash(_('Error: Invalid username %s or password' % session.get('username'))) data['username'] = username return render_template('login.html', form=form, data=data) + @app.route('/logout') @login_required def logout(): diff --git a/form.py b/form.py index ec206c8..fed05c3 100644 --- a/form.py +++ b/form.py @@ -1,7 +1,7 @@ #This file is part openerp-sale-payment app for Flask. #The COPYRIGHT file at the top level of this repository contains #the full copyright notices and license terms. -from flask.ext.wtf import Form +from flask_wtf import Form from wtforms import TextField, PasswordField, validators diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..05b0a45 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,5 @@ +Flask==0.12.2 +odoorpc==0.6.1 +flask_bootstrap +flask_babel +flask_wtf