base.py 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. """
  4. demeter load
  5. author:rabin
  6. """
  7. import tornado.web
  8. from demeter.core import *
  9. import json
  10. class Base(tornado.web.RequestHandler):
  11. def initialize(self):
  12. self.data = {}
  13. self.page()
  14. self.search()
  15. self.cookie()
  16. self.setting()
  17. self.assign()
  18. def get_current_user(self):
  19. return self.get_secure_cookie(self.KEYS[1])
  20. def assign(self):
  21. self.data['setting'] = Demeter.config['setting']
  22. def cookie(self):
  23. for key in self.KEYS:
  24. cookie = None
  25. if key in Demeter.config['base']:
  26. cookie = Demeter.config['base'][key]
  27. if not cookie:
  28. cookie = self.get_secure_cookie(key)
  29. #cookie = self.get_cookie(key)
  30. if not cookie:
  31. value = self.input(key)
  32. if value:
  33. #self.set_secure_cookie(key, value)
  34. Demeter.config['setting'][key] = value
  35. else:
  36. Demeter.config['setting'][key] = 0
  37. else:
  38. Demeter.config['setting'][key] = cookie
  39. def page(self):
  40. Demeter.config['page'] = {}
  41. page = self.input('page')
  42. if page:
  43. Demeter.config['page']['ajax'] = True
  44. else:
  45. Demeter.config['page']['ajax'] = False
  46. page = 1
  47. Demeter.config['page']['current'] = page
  48. Demeter.config['page']['total'] = 0
  49. self.data['page'] = Demeter.config['page']
  50. def search(self):
  51. data = self.request.arguments
  52. self.data['search'] = {}
  53. self.data['update'] = {}
  54. for key in data:
  55. if 'search_' in key:
  56. index = key.replace('search_', '')
  57. self.data['search'][index] = ",".join(data[key])
  58. if 'update_' in key:
  59. index = key.replace('update_', '')
  60. self.data['update'][index] = ",".join(data[key])
  61. def input(self, key, value=None):
  62. return self.get_argument(key, value)
  63. def service(self, name):
  64. return Demeter.service(name)
  65. def model(self, name):
  66. return Demeter.model(name)
  67. def common(self, **kwd):
  68. self.data['common'] = kwd
  69. farm = str(Demeter.config['setting']['farm'])
  70. self.data['common']['argvs'] = '&farm=' + farm + '&search_farm_id-select-=' + farm
  71. def commonView(self, name):
  72. self.view('common/'+name+'.html')
  73. def commonList(self, model):
  74. self.data['state'] = self.input('state', True)
  75. self.data['list'] = self.service('common').list(model, state=self.data['state'], search=self.data['search'], page=True)
  76. def commonOne(self, model, **kwd):
  77. id = self.input('id')
  78. self.data['info'] = {}
  79. if id:
  80. kwd['id'] = id
  81. if kwd:
  82. self.data['info'] = self.service('common').one(model, **kwd)
  83. if not self.data['info'] and Demeter.config['setting']['farm'] > 0:
  84. self.data['info']['farm_id'] = Demeter.config['setting']['farm']
  85. def commonUpdate(self, model, msg='', id=0, **kwd):
  86. if not self.data['auth']:
  87. self.auth()
  88. else:
  89. if id <= 0:
  90. id = self.input('id')
  91. if kwd:
  92. info = self.service('common').one(model, **kwd)
  93. if id:
  94. id = int(id)
  95. if info and (id != info['id']):
  96. self.out(msg)
  97. return
  98. state = self.service('common').update(model, id, self.data['update'])
  99. self.log(model, 'update', self.data['update'])
  100. self.out('yes', {'id':state})
  101. return state
  102. def commonDelete(self, model):
  103. if not self.data['auth']:
  104. self.auth()
  105. else:
  106. id = self.input('id')
  107. state = self.input('state', False)
  108. state = self.service('common').delete(model, id, state)
  109. self.log(model, 'delete', {id:id, state:state})
  110. self.out('yes', {'state':state})
  111. def log(self, model, method, data):
  112. insert = {}
  113. insert['admin_id'] = Demeter.config['setting']['admin']
  114. insert['model'] = model
  115. insert['method'] = method
  116. insert['data'] = json.dumps(data)
  117. self.service('common').update('manage_log', None, insert)
  118. def view(self, name):
  119. if not self.data['auth']:
  120. self.auth()
  121. else:
  122. self.render(name, data=self.data)
  123. def auth(self):
  124. self.out('您没有权限')
  125. def out(self, msg='', data={}, code=0):
  126. callback = self.input('callback')
  127. function = self.input('function')
  128. result = ''
  129. send = {}
  130. send['status'] = 1
  131. send['msg'] = msg
  132. send['data'] = data
  133. send['code'] = code
  134. if not send['data']:
  135. send['status'] = 2
  136. result = json.dumps(send)
  137. if callback:
  138. result = callback + '(' + result + ')'
  139. elif function:
  140. result = '<script>parent.' + function + '(' + result + ')' + '</script>';
  141. self.write(result)
  142. #self.finish(result)