25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

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