Quellcode durchsuchen

Merge branch 'core_refactoring' from Manuel

pull/147/head
Johannes vor 8 Jahren
Ursprung
Commit
c3512fbf53
16 geänderte Dateien mit 133 neuen und 116 gelöschten Zeilen
  1. +27
    -0
      gittest.py
  2. +1
    -1
      modules/action/__init__.py
  3. +3
    -8
      modules/base_plugins/actor.py
  4. +1
    -3
      modules/base_plugins/sensor.py
  5. +4
    -9
      modules/base_plugins/steps.py
  6. +1
    -1
      modules/core/baseapi.py
  7. +2
    -1
      modules/core/basetypes.py
  8. +8
    -11
      modules/core/core.py
  9. +1
    -2
      modules/core/db_migrate.py
  10. +1
    -1
      modules/example_plugins/WebViewJquery/__init__.py
  11. +1
    -1
      modules/example_plugins/WebViewReactJs/__init__.py
  12. +2
    -2
      modules/fermenter/__init__.py
  13. +3
    -3
      modules/login/__init__.py
  14. +33
    -25
      modules/system/__init__.py
  15. +2
    -5
      modules/ui/__init__.py
  16. +43
    -43
      modules/ui/static/bundle.js

+ 27
- 0
gittest.py Datei anzeigen

@@ -0,0 +1,27 @@
import requests
from git import Repo, Git

repo = Repo('./')
branch = repo.active_branch

print branch.name

for remote in repo.remotes:
remote.fetch()

url = 'https://api.github.com/repos/manuel83/craftbeerpi3/releases'
response = requests.get(url)


result = {"branches":[], "releases": []}

result["branches"].append({"name": "master"})

for branch in repo.branches:
result["branches"].append({"name": branch.name})

for r in response.json():
result["releases"].append({"name": "tags/%s" % r.get("tag_name")})

print result


+ 1
- 1
modules/action/__init__.py Datei anzeigen

@@ -19,7 +19,7 @@ class ActionView(FlaskView):
200:
description: action invoked
"""
self.logger.info(self.cbpi.cache["actions"])
self.cbpi.cache["actions"][action]["function"](self.cbpi)

return ('',204)


+ 3
- 8
modules/base_plugins/actor.py Datei anzeigen

@@ -11,7 +11,7 @@ class Dummy(Actor):

@cbpi.addon.actor.action("WOHOO")
def myaction(self):
self.logger.debug("HALLO!!!")
pass

def on(self, power=100):
'''
@@ -28,12 +28,10 @@ class Dummy(Actor):

@cbpi.addon.kettle.controller()
class MyController(KettleController):
def __init__(self):
self.logger = logging.getLogger(__name__)

def run(self):
while self.is_running():
self.logger.debug("HALLO")
self.sleep(1)

@cbpi.addon.fermenter.controller()
@@ -50,10 +48,7 @@ class MyController2(FermenterController):
def init(cbpi):

class MyBuzzer(Buzzer):
def __init__(self):
self.logger = logging.getLogger(__name__)

def beep(self):
self.logger.info("BEEEEEEP")
pass

cbpi.buzzer = MyBuzzer()

+ 1
- 3
modules/base_plugins/sensor.py Datei anzeigen

@@ -21,6 +21,7 @@ class Dummy(Sensor):
self.logger.info("INIT SENSOR")

def init(self):

if self.api.get_config_parameter("unit","C") == "C":
self.unit = "°C"
else:
@@ -28,7 +29,6 @@ class Dummy(Sensor):

@cbpi.addon.sensor.action("WOHOO")
def myaction(self):
self.logger.info(self.text)
self.logger.debug("SENSOR ACTION HALLO!!!")

def execute(self):
@@ -41,8 +41,6 @@ class Dummy(Sensor):

@cbpi.addon.core.action(key="clear", label="Clear all Logs")
def woohoo(cbpi):
logger = logging.getLogger(__name__)
logger.info("COOL")

dir = "./logs"
test = os.listdir(dir)


+ 4
- 9
modules/base_plugins/steps.py Datei anzeigen

@@ -1,5 +1,3 @@
import logging

from modules.core.basetypes import Step
from modules.core.core import cbpi
from modules.core.proptypes import Property
@@ -8,23 +6,20 @@ from modules.core.proptypes import Property
@cbpi.addon.step.type("Dummy Step")
class Dummy(Step):

def __init__(self):
self.logger = logging.getLogger(__name__)


@cbpi.addon.step.action("WOHOO")
def myaction(self):
self.stop_timer()
self.start_timer(10)
self.logger.debug("HALLO")

text = Property.Text(label="Text", configurable=True, description="WOHOOO")
time = Property.Text(label="Text", configurable=True, description="WOHOOO")

def execute(self):
self.logger.debug(self.text)
#print self.text
pass

def reset(self):
self.logger.info("RESET STEP!!!")
self.stop_timer()
self.stop_timer()

+ 1
- 1
modules/core/baseapi.py Datei anzeigen

@@ -164,7 +164,7 @@ class CoreAPI(BaseAPI):
self.cbpi.cache["init"] = sorted(self.cbpi.cache["init"], key=lambda k: k['order'])
for value in self.cbpi.cache.get("init"):
self.logger.debug(value)
value["function"](self.cbpi)
def job(interval, method):


+ 2
- 1
modules/core/basetypes.py Datei anzeigen

@@ -20,7 +20,7 @@ class Actor(Base):
@classmethod
def init_global(cls):
cls.__logger.info("GLOBAL INIT ACTOR")
pass
def init(self):
@@ -236,6 +236,7 @@ class Timer(object):
class Step(Base, Timer):
@classmethod
def init_global(cls):
pass


+ 8
- 11
modules/core/core.py Datei anzeigen

@@ -76,7 +76,7 @@ class ActorCore(object):
def init_one(self, id):
try:
self.logger.info("INIT ONE ACTOR [%s]", id)
actor = self.cbpi.cache["actors"][id]
clazz = self.cbpi.cache[self.key].get(actor.type)["class"]
cfg = actor.config.copy()
@@ -150,8 +150,7 @@ class ActorCore(object):
job = self.cbpi._socketio.start_background_task(target=toggle, id=id, seconds=seconds)
def get_state(self, actor_id):
self.logger.debug(actor_id)
self.logger.debug(self.cbpi)
pass
class SensorCore(object):
@@ -177,7 +176,7 @@ class SensorCore(object):
cfg.update(dict(cbpi=self.cbpi, id=id))
self.cbpi.cache["sensors"][id].instance = clazz(**cfg)
self.cbpi.cache["sensors"][id].instance.init()
self.logger.debug(self.cbpi.cache["sensors"][id].instance)
self.cbpi.emit("INIT_SENSOR", id=id)
def job(obj):
@@ -190,7 +189,7 @@ class SensorCore(object):
self.logger.error(e)
def stop_one(self, id):
self.logger.info("OBJ [%s]", self.cbpi.cache["sensors"][id])
self.cbpi.cache["sensors"][id].instance.stop()
self.cbpi.emit("STOP_SENSOR", id=id)
@@ -201,8 +200,7 @@ class SensorCore(object):
return None
def get_state(self, actor_id):
self.logger.info("Get state actor id [%s]", actor_id)
self.logger.debug(self.cbpi)
pass
def write_log(self, id, value, prefix="sensor"):
filename = "./logs/%s_%s.log" % (prefix, str(id))
@@ -281,8 +279,6 @@ class CraftBeerPI(object):
eventbus = {}
def __init__(self):
#FORMAT = '%(asctime)-15s - %(levelname)s - %(message)s'
#logging.basicConfig(filename='./logs/app.log', level=logging.INFO, format=FORMAT)
logging.config.dictConfig(yaml.load(open('./config/logger.yaml', 'r')))
self.logger = logging.getLogger(__name__)
@@ -315,6 +311,7 @@ class CraftBeerPI(object):
port = int(cbpi.get_config_parameter('port', '5000'))
except ValueError:
port = 5000
print port
self._socketio.run(self._app, host='0.0.0.0', port=port)
def beep(self):
@@ -331,7 +328,7 @@ class CraftBeerPI(object):
self._socketio.emit(key, data, namespace='/brew')
def __init_db(self, ):
self.logger.info("INIT DB")
with self._app.app_context():
db = self.get_db()
try:
@@ -390,7 +387,7 @@ class CraftBeerPI(object):
def loadPlugins(self):
for filename in os.listdir("./modules/plugins"):
self.logger.info("Loading plugin [%s]", filename)
if os.path.isdir("./modules/plugins/" + filename) is False:
continue
try:


+ 1
- 2
modules/core/db_migrate.py Datei anzeigen

@@ -19,7 +19,6 @@ def execute_file(curernt_version, data):
conn.commit()

except sqlite3.OperationalError as err:
cbpi._app.logger.info("EXCEPT")
cbpi._app.logger.error(err)

@cbpi.addon.core.initializer(order=-9999)
@@ -37,7 +36,7 @@ def init(cbpi):
pass
result = []
for filename in os.listdir("./update"):
cbpi._app.logger.info(filename)
if filename.endswith(".sql"):
d = {"version": int(filename[:filename.index('_')]), "file": filename}
result.append(d)

+ 1
- 1
modules/example_plugins/WebViewJquery/__init__.py Datei anzeigen

@@ -18,6 +18,6 @@ def web(cbpi):
def index():
return s.send_static_file("index.html")

logger.info("REGISTER")
cbpi.addon.core.add_menu_link("JQuery View", "/web_view")
cbpi._app.register_blueprint(s, url_prefix='/web_view')

+ 1
- 1
modules/example_plugins/WebViewReactJs/__init__.py Datei anzeigen

@@ -17,6 +17,6 @@ def web(cbpi):
def index():
return s.send_static_file("index.html")

logger.info("REGISTER")
cbpi.addon.core.add_menu_link("ReactJS View", "/webviewreact")
cbpi._app.register_blueprint(s, url_prefix='/webviewreact')

+ 2
- 2
modules/fermenter/__init__.py Datei anzeigen

@@ -162,7 +162,7 @@ class FermenterView(BaseView):
def toggle(self, id):
fermenter = cbpi.cache.get(self.cache_key)[id]
try:
self.logger.info("Fermenter [%s] is in state [%s]",fermenter.id, fermenter.state)
if fermenter.state is False:
# Start controller
if fermenter.logic is not None:
@@ -188,7 +188,7 @@ class FermenterView(BaseView):
cbpi.emit("FERMENTER_CONTROLLER_STOPPED", id=id)

except Exception as e:
self.logger.error(e)
cbpi.notify("Toogle Fementer Controller failed", "Pleae check the %s configuration" % fermenter.name,
type="danger", timeout=None)
return ('', 500)


+ 3
- 3
modules/login/__init__.py Datei anzeigen

@@ -10,7 +10,7 @@ class User(flask_login.UserMixin):

@addon.core.initializer(order=0)
def log(cbpi):
logger = logging.getLogger(__name__)

cbpi._login_manager = flask_login.LoginManager()
cbpi._login_manager.init_app(cbpi._app)
@@ -39,8 +39,8 @@ def log(cbpi):

@cbpi._login_manager.user_loader
def user_loader(user):
logger.debug(cbpi.get_config_parameter("password_security", "NO"))
logger.debug(user)

if cbpi.get_config_parameter("password_security", "NO") == "YES":
if user != "craftbeerpi":


+ 33
- 25
modules/system/__init__.py Datei anzeigen

@@ -1,6 +1,7 @@
import flask_login
import requests
import yaml
from flask import json, url_for, Response
from flask import json, url_for, Response, request
from flask_classy import FlaskView, route
from flask_login import login_required, current_user
from git import Repo, Git
@@ -54,8 +55,15 @@ class SystemView(FlaskView):
return ('', 204)
@login_required
@route('/tags/<name>', methods=['GET'])
def checkout_tag(self,name):
@route('/checkout', methods=['POST'])
def checkout_tag(self):
data = request.json
name = data.get("name")
if name is None:
return ('', 500)
repo = Repo('./')
repo.git.reset('--hard')
o = repo.remotes.origin
@@ -65,9 +73,30 @@ class SystemView(FlaskView):
cbpi.notify("Checkout successful", "Please restart the system")
return ('', 204)
@login_required
@route('/git/status', methods=['GET'])
def git_status(self):
repo = Repo('./')
o = repo.remotes.origin
o.fetch()
branch = repo.active_branch
url = 'https://api.github.com/repos/manuel83/craftbeerpi3/releases'
response = requests.get(url)
result = {"current_branch": branch.name, "branches": [], "releases": []}
result["branches"].append({"name": "master"})
for branch in repo.branches:
result["branches"].append({"name": branch.name})
for r in response.json():
result["releases"].append({"name": "tags/%s" % r.get("tag_name")})
"""
Check for GIT status
---
@@ -77,28 +106,7 @@ class SystemView(FlaskView):
200:
description: Git Status
"""
repo = Repo('./')
o = repo.remotes.origin
o.fetch()
# Tags
tags = []
for t in repo.tags:
tags.append({"name": t.name, "commit": str(t.commit), "date": t.commit.committed_date,
"committer": t.commit.committer.name, "message": t.commit.message})
try:
branch_name = repo.active_branch.name
# test1
except:
branch_name = None
changes = []
commits_behind = repo.iter_commits('master..origin/master')
for c in list(commits_behind):
changes.append({"committer": c.committer.name, "message": c.message})
return json.dumps({"tags": tags, "headcommit": str(repo.head.commit), "branchname": branch_name,
"master": {"changes": changes}})
return json.dumps(result)
@login_required
@route('/check_update', methods=['GET'])


+ 2
- 5
modules/ui/__init__.py Datei anzeigen

@@ -2,10 +2,7 @@ from flask import Blueprint,render_template

from modules.core.core import cbpi

import logging

react = Blueprint('ui', __name__, template_folder='templates', static_folder='static')
__logger = logging.getLogger(__name__)

@cbpi.addon.core.initializer(order=10)
def init(cbpi):
@@ -14,13 +11,13 @@ def init(cbpi):

@react.route('/', methods=["GET"])
def index():
# return react.send_static_file("index.html")
#return react.send_static_file("index.html")

js_files = []
for key, value in cbpi.cache["js"].iteritems():
js_files.append(value)

__logger.info(js_files)
return render_template('index.html', js_files=js_files)




+ 43
- 43
modules/ui/static/bundle.js
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


Laden…
Abbrechen
Speichern