From 04c35974ecd2f8a8093735da3fe4694310fd9f5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Bonhomme?= Date: Thu, 29 Oct 2015 22:52:38 +0100 Subject: [PATCH] minor bug fixes and improvements --- CHANGELOG.md | 6 ++++- README.md | 2 +- bootstrap.py | 2 +- conf.py | 34 ++++++-------------------- runserver.py | 2 +- web/__init__.py | 28 +++++++++++---------- web/decorators.py | 2 +- web/lib/utils.py | 2 +- web/views/views.py | 61 +++++++++------------------------------------- 9 files changed, 43 insertions(+), 96 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f618e11..cec3ff4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,8 @@ EV3WebController project news -0.1 (2014-12-15) +0.2 (2015-10-29) +* Beta release. It is possible to control the robot in four directions; +* minor improvements and bug fixed. + +0.1 (2013-04-15) * First working prototype. diff --git a/README.md b/README.md index 43bd85b..464d543 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,7 @@ Acceptable values for *sensor_name*: cve-search is free software released under the "Modified BSD license" -Copyright (c) 2013-2015 Cédric Bonhomme - https://www.cedricbonhomme.org +Copyright (c) 2014-2015 Cédric Bonhomme - https://www.cedricbonhomme.org # Contact diff --git a/bootstrap.py b/bootstrap.py index 452fd54..3f93796 100644 --- a/bootstrap.py +++ b/bootstrap.py @@ -3,7 +3,7 @@ # ***** BEGIN LICENSE BLOCK ***** # This file is part of EV3WebController. -# Copyright (c) 2014 Cédric Bonhomme. +# Copyright (c) 2014-2015 Cédric Bonhomme. # All rights reserved. # # diff --git a/conf.py b/conf.py index 6e1a292..481805c 100644 --- a/conf.py +++ b/conf.py @@ -3,7 +3,7 @@ # ***** BEGIN LICENSE BLOCK ***** # This file is part of EV3WebController. -# Copyright (c) 2014 Cédric Bonhomme. +# Copyright (c) 2014-2015 Cédric Bonhomme. # All rights reserved. # # @@ -20,7 +20,6 @@ import os, sys BASE_DIR = os.path.abspath(os.path.dirname(__file__)) PATH = os.path.abspath(".") -ON_HEROKU = int(os.environ.get('HEROKU', 0)) == 1 DEFAULTS = {"platform_url": "http://0.0.0.0:5000", "host": "0.0.0.0", "port": "5000", @@ -28,32 +27,13 @@ DEFAULTS = {"platform_url": "http://0.0.0.0:5000", "debug": "true" } -if not ON_HEROKU: - try: - import configparser as confparser - except: - import ConfigParser as confparser - # load the configuration - config = confparser.SafeConfigParser(defaults=DEFAULTS) - config.read(os.path.join(BASE_DIR, "conf/conf.cfg")) -else: - class Config(object): - def get(self, _, name): - return os.environ.get(name.upper(), DEFAULTS.get(name)) - - def getint(self, _, name): - return int(self.get(_, name)) - - def getboolean(self, _, name): - value = self.get(_, name) - if value == 'true': - return True - elif value == 'false': - return False - return None - config = Config() +try: + import configparser as confparser +except: + import ConfigParser as confparser -PATH = os.path.abspath(".") +config = confparser.SafeConfigParser(defaults=DEFAULTS) +config.read(os.path.join(BASE_DIR, "conf/conf.cfg")) PLATFORM_URL = config.get('misc', 'platform_url') diff --git a/runserver.py b/runserver.py index 7acc8c8..15e1454 100644 --- a/runserver.py +++ b/runserver.py @@ -3,7 +3,7 @@ # ***** BEGIN LICENSE BLOCK ***** # This file is part of EV3WebController. -# Copyright (c) 2014 Cédric Bonhomme. +# Copyright (c) 2014-2015 Cédric Bonhomme. # All rights reserved. # # diff --git a/web/__init__.py b/web/__init__.py index d262639..7515e11 100644 --- a/web/__init__.py +++ b/web/__init__.py @@ -3,7 +3,7 @@ # ***** BEGIN LICENSE BLOCK ***** # This file is part of EV3WebController. -# Copyright (c) 2014 Cédric Bonhomme. +# Copyright (c) 2014-2015 Cédric Bonhomme. # All rights reserved. # # @@ -14,10 +14,10 @@ import os from flask import Flask #from ev3.ev3dev import Ev3Dev -#from ev3.ev3dev import Key, Motor -"""from ev3.lego import LargeMotor +from ev3.ev3dev import Key, Motor +from ev3.lego import LargeMotor from ev3.lego import TouchSensor -from ev3.lego import InfraredSensor""" +from ev3.lego import InfraredSensor import conf @@ -30,14 +30,16 @@ app.config['SECRET_KEY'] = os.urandom(12) #Ev3Dev.__init__() #head = None#Motor(port=Motor.PORT.A) -right_wheel = None#Motor(port=Motor.PORT.B) -left_wheel = None#Motor(port=Motor.PORT.C) - -button = None#TouchSensor() -ir_sensor = None#InfraredSensor() - -# Views -#from flask.ext.restful import Api -#api = Api(app, prefix='/api/v1.0') +right_wheel = None +left_wheel = None +button = None +ir_sensor = None +try: + right_wheel = Motor(port=Motor.PORT.B) + left_wheel = Motor(port=Motor.PORT.C) + button = TouchSensor() + ir_sensor = InfraredSensor() +except Exception: + print("You must run the application as root on the EV3.") from web import views diff --git a/web/decorators.py b/web/decorators.py index e360925..4329c0c 100644 --- a/web/decorators.py +++ b/web/decorators.py @@ -3,7 +3,7 @@ # ***** BEGIN LICENSE BLOCK ***** # This file is part of EV3WebController. -# Copyright (c) 2014 Cédric Bonhomme. +# Copyright (c) 2014-2015 Cédric Bonhomme. # All rights reserved. # # diff --git a/web/lib/utils.py b/web/lib/utils.py index e4bcc91..637e5ec 100644 --- a/web/lib/utils.py +++ b/web/lib/utils.py @@ -3,7 +3,7 @@ import logging # ***** BEGIN LICENSE BLOCK ***** # This file is part of EV3WebController. -# Copyright (c) 2014 Cédric Bonhomme. +# Copyright (c) 2014-2015 Cédric Bonhomme. # All rights reserved. # # diff --git a/web/views/views.py b/web/views/views.py index 273287a..8925c8c 100644 --- a/web/views/views.py +++ b/web/views/views.py @@ -3,7 +3,7 @@ # ***** BEGIN LICENSE BLOCK ***** # This file is part of EV3WebController. -# Copyright (c) 2014 Cédric Bonhomme. +# Copyright (c) 2014-2015 Cédric Bonhomme. # All rights reserved. # # @@ -11,14 +11,13 @@ # ***** END LICENSE BLOCK ***** __author__ = "Cedric Bonhomme" -__version__ = "$Revision: 0.1 $" +__version__ = "$Revision: 0.2 $" __date__ = "$Date: 2014/12/15$" -__revision__ = "$Date: 2014/12/15 $" -__copyright__ = "Copyright (c) 2014 Cédric BOnhomme" +__revision__ = "$Date: 2015/10/29 $" +__copyright__ = "Copyright (c) 2014-2015 Cédric BOnhomme" __license__ = "" - -from flask import render_template, current_app, request, flash, session, \ +from flask import render_template, current_app, request, session, \ url_for, redirect, g, send_from_directory, make_response, abort, Markup from flask.ext.login import LoginManager, login_user, logout_user, \ login_required, current_user, AnonymousUserMixin @@ -28,68 +27,30 @@ from web.decorators import to_response from web import app from web import right_wheel, left_wheel, button, ir_sensor -# -# Default errors -# -@app.errorhandler(404) -def page_not_found(e): - return render_template('errors/404.html'), 404 - -@app.errorhandler(405) -def method_not_allowed(e): - return render_template('errors/405.html'), 405 - -@app.errorhandler(500) -def page_not_found(e): - return render_template('errors/500.html'), 500 - - -def redirect_url(default='profile'): - return request.args.get('next') or \ - request.referrer or \ - url_for(default) - login_manager = LoginManager(app) login_manager.login_view = 'login' login_manager.login_message = 'Please log in to access this page.' login_manager.login_message_category = 'danger' - @app.errorhandler(403) def authentication_failed(e): flash('You do not have enough rights.', 'danger') - return redirect(url_for('login')) - + return redirect(url_for('about')) @app.errorhandler(401) def authentication_required(e): flash('Authenticated required.', 'info') - return redirect(url_for('login')) - + return redirect(url_for('about')) @login_manager.user_loader def load_user(id): # Return an instance of the User model return models.User.objects(id=id).first() - @app.before_request def before_request(): g.user = current_user -def log_user(user): - """ - Effectively log the user and update the identity with Flask-Principal. - """ - login_user(user) - g.user = user - session['id'] = str(user.id) - - # Tell Flask-Principal the identity changed - identity_changed.send(current_app._get_current_object(), - identity=Identity(str(user.id))) - - @app.route('/move/', methods=['GET']) @app.route('/move//', methods=['GET']) @@ -105,13 +66,13 @@ def move(direction="forward", speed=60): return_code = 200 if direction == 'forward': - pass#left_wheel.run_forever(speed * -1, regulation_mode=False) - #right_wheel.run_forever(speed * -1, regulation_mode=False) + left_wheel.run_forever(speed * 1, regulation_mode=False) + right_wheel.run_forever(speed * 1, regulation_mode=False) elif direction == 'backward': try: - left_wheel.run_forever(speed, regulation_mode=False) - right_wheel.run_forever(speed, regulation_mode=False) + left_wheel.run_forever(speed * -1, regulation_mode=False) + right_wheel.run_forever(speed * -1, regulation_mode=False) except Exception as e: result["message"], return_code = "error", 400 -- GitLab