Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

60 lignes
1.8KB

  1. import time
  2. from flask import json, request
  3. from flask_classy import route
  4. from modules import DBModel, cbpi, get_db
  5. from modules.core.baseview import BaseView
  6. class Config(DBModel):
  7. __fields__ = ["type", "value", "description", "options"]
  8. __table_name__ = "config"
  9. __json_fields__ = ["options"]
  10. __priamry_key__ = "name"
  11. class ConfigView(BaseView):
  12. model = Config
  13. cache_key = "config"
  14. @route('/<name>', methods=["PUT"])
  15. def put(self, name):
  16. data = request.json
  17. data["name"] = name
  18. update_data = {"name": data["name"], "value": data["value"]}
  19. if self.api.cache.get(self.cache_key) is not None:
  20. #self.pre_post_callback(self.api.cache.get(self.cache_key)[name])
  21. print self.api.cache.get(self.cache_key)[name]
  22. self.api.cache.get(self.cache_key)[name].__dict__.update(**update_data)
  23. m = self.model.update(**self.api.cache.get(self.cache_key)[name].__dict__)
  24. self.post_put_callback(self.api.cache.get(self.cache_key)[name])
  25. return json.dumps(self.api.cache.get(self.cache_key)[name].__dict__)
  26. @route('/<id>', methods=["GET"])
  27. def getOne(self, id):
  28. return ('NOT SUPPORTED', 400)
  29. @route('/<id>', methods=["DELETE"])
  30. def delete(self, id):
  31. return ('NOT SUPPORTED', 400)
  32. @route('/', methods=["POST"])
  33. def post(self):
  34. return ('NOT SUPPORTED', 400)
  35. @classmethod
  36. def init_cache(cls):
  37. with cls.api.app.app_context():
  38. cls.api.cache[cls.cache_key] = {}
  39. for key, value in cls.model.get_all().iteritems():
  40. cls.post_init_callback(value)
  41. cls.api.cache[cls.cache_key][value.name] = value
  42. @cbpi.initalizer(order=1)
  43. def init(cbpi):
  44. print "INITIALIZE CONFIG MODULE"
  45. ConfigView.register(cbpi.app, route_base='/api/config')
  46. ConfigView.init_cache()