Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

58 linhas
1.7KB

  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.api.cache.get(self.cache_key)[name].__dict__.update(**update_data)
  21. m = self.model.update(**self.api.cache.get(self.cache_key)[name].__dict__)
  22. self._post_put_callback(self.api.cache.get(self.cache_key)[name])
  23. return json.dumps(self.api.cache.get(self.cache_key)[name].__dict__)
  24. @route('/<id>', methods=["GET"])
  25. def getOne(self, id):
  26. return ('NOT SUPPORTED', 400)
  27. @route('/<id>', methods=["DELETE"])
  28. def delete(self, id):
  29. return ('NOT SUPPORTED', 400)
  30. @route('/', methods=["POST"])
  31. def post(self):
  32. return ('NOT SUPPORTED', 400)
  33. @classmethod
  34. def init_cache(cls):
  35. with cls.api.app.app_context():
  36. cls.api.cache[cls.cache_key] = {}
  37. for key, value in cls.model.get_all().items():
  38. cls.post_init_callback(value)
  39. cls.api.cache[cls.cache_key][value.name] = value
  40. @cbpi.initalizer(order=0)
  41. def init(cbpi):
  42. ConfigView.register(cbpi.app, route_base='/api/config')
  43. ConfigView.init_cache()