Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

53 řádky
1.3KB

  1. import json
  2. import sys, os
  3. from flask import Flask, render_template, redirect, json, g
  4. from flask_socketio import SocketIO, emit
  5. import logging
  6. from modules.core.core import CraftBeerPi, ActorBase, SensorBase
  7. from modules.core.db import DBModel
  8. app = Flask(__name__)
  9. logging.basicConfig(filename='./logs/app.log',level=logging.INFO)
  10. app.config['SECRET_KEY'] = 'craftbeerpi'
  11. app.config['UPLOAD_FOLDER'] = './upload'
  12. @app.teardown_appcontext
  13. def close_connection(exception):
  14. db = getattr(g, '_database', None)
  15. if db is not None:
  16. db.close()
  17. class ComplexEncoder(json.JSONEncoder):
  18. def default(self, obj):
  19. try:
  20. if isinstance(obj, DBModel):
  21. return obj.__dict__
  22. elif isinstance(obj, ActorBase):
  23. return obj.state()
  24. elif isinstance(obj, SensorBase):
  25. return obj.get_value()
  26. elif hasattr(obj, "callback"):
  27. return obj()
  28. else:
  29. return None
  30. except TypeError as e:
  31. pass
  32. return None
  33. app.json_encoder = ComplexEncoder
  34. socketio = SocketIO(app, json=json)
  35. cbpi = CraftBeerPi(app, socketio)
  36. app.logger.info("##########################################")
  37. app.logger.info("### NEW STARTUP Version 3.0")
  38. app.logger.info("##########################################")