minor bug fixes and improvements

parent 306f47f6
EV3WebController project news 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. * First working prototype.
...@@ -57,7 +57,7 @@ Acceptable values for *sensor_name*: ...@@ -57,7 +57,7 @@ Acceptable values for *sensor_name*:
cve-search is free software released under the "Modified BSD license" 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 # Contact
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
# ***** BEGIN LICENSE BLOCK ***** # ***** BEGIN LICENSE BLOCK *****
# This file is part of EV3WebController. # This file is part of EV3WebController.
# Copyright (c) 2014 Cédric Bonhomme. # Copyright (c) 2014-2015 Cédric Bonhomme.
# All rights reserved. # All rights reserved.
# #
# #
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
# ***** BEGIN LICENSE BLOCK ***** # ***** BEGIN LICENSE BLOCK *****
# This file is part of EV3WebController. # This file is part of EV3WebController.
# Copyright (c) 2014 Cédric Bonhomme. # Copyright (c) 2014-2015 Cédric Bonhomme.
# All rights reserved. # All rights reserved.
# #
# #
...@@ -20,7 +20,6 @@ import os, sys ...@@ -20,7 +20,6 @@ import os, sys
BASE_DIR = os.path.abspath(os.path.dirname(__file__)) BASE_DIR = os.path.abspath(os.path.dirname(__file__))
PATH = os.path.abspath(".") PATH = os.path.abspath(".")
ON_HEROKU = int(os.environ.get('HEROKU', 0)) == 1
DEFAULTS = {"platform_url": "http://0.0.0.0:5000", DEFAULTS = {"platform_url": "http://0.0.0.0:5000",
"host": "0.0.0.0", "host": "0.0.0.0",
"port": "5000", "port": "5000",
...@@ -28,32 +27,13 @@ DEFAULTS = {"platform_url": "http://0.0.0.0:5000", ...@@ -28,32 +27,13 @@ DEFAULTS = {"platform_url": "http://0.0.0.0:5000",
"debug": "true" "debug": "true"
} }
if not ON_HEROKU: try:
try: import configparser as confparser
import configparser as confparser except:
except: import ConfigParser as confparser
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()
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') PLATFORM_URL = config.get('misc', 'platform_url')
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
# ***** BEGIN LICENSE BLOCK ***** # ***** BEGIN LICENSE BLOCK *****
# This file is part of EV3WebController. # This file is part of EV3WebController.
# Copyright (c) 2014 Cédric Bonhomme. # Copyright (c) 2014-2015 Cédric Bonhomme.
# All rights reserved. # All rights reserved.
# #
# #
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
# ***** BEGIN LICENSE BLOCK ***** # ***** BEGIN LICENSE BLOCK *****
# This file is part of EV3WebController. # This file is part of EV3WebController.
# Copyright (c) 2014 Cédric Bonhomme. # Copyright (c) 2014-2015 Cédric Bonhomme.
# All rights reserved. # All rights reserved.
# #
# #
...@@ -14,10 +14,10 @@ import os ...@@ -14,10 +14,10 @@ import os
from flask import Flask from flask import Flask
#from ev3.ev3dev import Ev3Dev #from ev3.ev3dev import Ev3Dev
#from ev3.ev3dev import Key, Motor from ev3.ev3dev import Key, Motor
"""from ev3.lego import LargeMotor from ev3.lego import LargeMotor
from ev3.lego import TouchSensor from ev3.lego import TouchSensor
from ev3.lego import InfraredSensor""" from ev3.lego import InfraredSensor
import conf import conf
...@@ -30,14 +30,16 @@ app.config['SECRET_KEY'] = os.urandom(12) ...@@ -30,14 +30,16 @@ app.config['SECRET_KEY'] = os.urandom(12)
#Ev3Dev.__init__() #Ev3Dev.__init__()
#head = None#Motor(port=Motor.PORT.A) #head = None#Motor(port=Motor.PORT.A)
right_wheel = None#Motor(port=Motor.PORT.B) right_wheel = None
left_wheel = None#Motor(port=Motor.PORT.C) left_wheel = None
button = None
button = None#TouchSensor() ir_sensor = None
ir_sensor = None#InfraredSensor() try:
right_wheel = Motor(port=Motor.PORT.B)
# Views left_wheel = Motor(port=Motor.PORT.C)
#from flask.ext.restful import Api button = TouchSensor()
#api = Api(app, prefix='/api/v1.0') ir_sensor = InfraredSensor()
except Exception:
print("You must run the application as root on the EV3.")
from web import views from web import views
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
# ***** BEGIN LICENSE BLOCK ***** # ***** BEGIN LICENSE BLOCK *****
# This file is part of EV3WebController. # This file is part of EV3WebController.
# Copyright (c) 2014 Cédric Bonhomme. # Copyright (c) 2014-2015 Cédric Bonhomme.
# All rights reserved. # All rights reserved.
# #
# #
......
...@@ -3,7 +3,7 @@ import logging ...@@ -3,7 +3,7 @@ import logging
# ***** BEGIN LICENSE BLOCK ***** # ***** BEGIN LICENSE BLOCK *****
# This file is part of EV3WebController. # This file is part of EV3WebController.
# Copyright (c) 2014 Cédric Bonhomme. # Copyright (c) 2014-2015 Cédric Bonhomme.
# All rights reserved. # All rights reserved.
# #
# #
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
# ***** BEGIN LICENSE BLOCK ***** # ***** BEGIN LICENSE BLOCK *****
# This file is part of EV3WebController. # This file is part of EV3WebController.
# Copyright (c) 2014 Cédric Bonhomme. # Copyright (c) 2014-2015 Cédric Bonhomme.
# All rights reserved. # All rights reserved.
# #
# #
...@@ -11,14 +11,13 @@ ...@@ -11,14 +11,13 @@
# ***** END LICENSE BLOCK ***** # ***** END LICENSE BLOCK *****
__author__ = "Cedric Bonhomme" __author__ = "Cedric Bonhomme"
__version__ = "$Revision: 0.1 $" __version__ = "$Revision: 0.2 $"
__date__ = "$Date: 2014/12/15$" __date__ = "$Date: 2014/12/15$"
__revision__ = "$Date: 2014/12/15 $" __revision__ = "$Date: 2015/10/29 $"
__copyright__ = "Copyright (c) 2014 Cédric BOnhomme" __copyright__ = "Copyright (c) 2014-2015 Cédric BOnhomme"
__license__ = "" __license__ = ""
from flask import render_template, current_app, request, session, \
from flask import render_template, current_app, request, flash, session, \
url_for, redirect, g, send_from_directory, make_response, abort, Markup url_for, redirect, g, send_from_directory, make_response, abort, Markup
from flask.ext.login import LoginManager, login_user, logout_user, \ from flask.ext.login import LoginManager, login_user, logout_user, \
login_required, current_user, AnonymousUserMixin login_required, current_user, AnonymousUserMixin
...@@ -28,68 +27,30 @@ from web.decorators import to_response ...@@ -28,68 +27,30 @@ from web.decorators import to_response
from web import app from web import app
from web import right_wheel, left_wheel, button, ir_sensor 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 = LoginManager(app)
login_manager.login_view = 'login' login_manager.login_view = 'login'
login_manager.login_message = 'Please log in to access this page.' login_manager.login_message = 'Please log in to access this page.'
login_manager.login_message_category = 'danger' login_manager.login_message_category = 'danger'
@app.errorhandler(403) @app.errorhandler(403)
def authentication_failed(e): def authentication_failed(e):
flash('You do not have enough rights.', 'danger') flash('You do not have enough rights.', 'danger')
return redirect(url_for('login')) return redirect(url_for('about'))
@app.errorhandler(401) @app.errorhandler(401)
def authentication_required(e): def authentication_required(e):
flash('Authenticated required.', 'info') flash('Authenticated required.', 'info')
return redirect(url_for('login')) return redirect(url_for('about'))
@login_manager.user_loader @login_manager.user_loader
def load_user(id): def load_user(id):
# Return an instance of the User model # Return an instance of the User model
return models.User.objects(id=id).first() return models.User.objects(id=id).first()
@app.before_request @app.before_request
def before_request(): def before_request():
g.user = current_user 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/<direction>', methods=['GET']) @app.route('/move/<direction>', methods=['GET'])
@app.route('/move/<direction>/<speed>', methods=['GET']) @app.route('/move/<direction>/<speed>', methods=['GET'])
...@@ -105,13 +66,13 @@ def move(direction="forward", speed=60): ...@@ -105,13 +66,13 @@ def move(direction="forward", speed=60):
return_code = 200 return_code = 200
if direction == 'forward': if direction == 'forward':
pass#left_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) right_wheel.run_forever(speed * 1, regulation_mode=False)
elif direction == 'backward': elif direction == 'backward':
try: try:
left_wheel.run_forever(speed, regulation_mode=False) left_wheel.run_forever(speed * -1, regulation_mode=False)
right_wheel.run_forever(speed, regulation_mode=False) right_wheel.run_forever(speed * -1, regulation_mode=False)
except Exception as e: except Exception as e:
result["message"], return_code = "error", 400 result["message"], return_code = "error", 400
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment