log.py 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. from flask import Blueprint
  4. from flask import request
  5. import jimit as ji
  6. import json
  7. from models import Log
  8. from models import Rules
  9. from models import Utils
  10. __author__ = 'James Iter'
  11. __date__ = '2017/4/8'
  12. __contact__ = 'james.iter.cn@gmail.com'
  13. __copyright__ = '(c) 2017 by James Iter.'
  14. blueprint = Blueprint(
  15. 'log',
  16. __name__,
  17. url_prefix='/api/log'
  18. )
  19. blueprints = Blueprint(
  20. 'logs',
  21. __name__,
  22. url_prefix='/api/logs'
  23. )
  24. @Utils.dumps2response
  25. def r_get_by_filter():
  26. page = str(request.args.get('page', 1))
  27. page_size = str(request.args.get('page_size', 50))
  28. args_rules = [
  29. Rules.PAGE.value,
  30. Rules.PAGE_SIZE.value
  31. ]
  32. try:
  33. ji.Check.previewing(args_rules, {'page': page, 'page_size': page_size})
  34. except ji.PreviewingError, e:
  35. return json.loads(e.message)
  36. page = int(page)
  37. page_size = int(page_size)
  38. # 把page和page_size换算成offset和limit
  39. offset = (page - 1) * page_size
  40. # offset, limit将覆盖page及page_size的影响
  41. offset = str(request.args.get('offset', offset))
  42. limit = str(request.args.get('limit', page_size))
  43. order_by = request.args.get('order_by', 'id')
  44. order = request.args.get('order', 'asc')
  45. filter_str = request.args.get('filter', '')
  46. args_rules = [
  47. Rules.OFFSET.value,
  48. Rules.LIMIT.value,
  49. Rules.ORDER_BY.value,
  50. Rules.ORDER.value
  51. ]
  52. try:
  53. ji.Check.previewing(args_rules, {'offset': offset, 'limit': limit, 'order_by': order_by, 'order': order})
  54. offset = int(offset)
  55. limit = int(limit)
  56. ret = dict()
  57. ret['state'] = ji.Common.exchange_state(20000)
  58. ret['data'] = list()
  59. ret['paging'] = {'total': 0, 'offset': offset, 'limit': limit, 'page': page, 'page_size': page_size,
  60. 'next': '', 'prev': '', 'first': '', 'last': ''}
  61. ret['data'], ret['paging']['total'] = Log.get_by_filter(offset=offset, limit=limit, order_by=order_by,
  62. order=order, filter_str=filter_str)
  63. host_url = request.host_url.rstrip('/')
  64. other_str = '&filter=' + filter_str + '&order=' + order + '&order_by=' + order_by
  65. last_pagination = (ret['paging']['total'] + page_size - 1) / page_size
  66. if page <= 1:
  67. ret['paging']['prev'] = host_url + blueprints.url_prefix + '?page=1&page_size=' + page_size.__str__() + \
  68. other_str
  69. else:
  70. ret['paging']['prev'] = host_url + blueprints.url_prefix + '?page=' + str(page-1) + '&page_size=' + \
  71. page_size.__str__() + other_str
  72. if page >= last_pagination:
  73. ret['paging']['next'] = host_url + blueprints.url_prefix + '?page=' + last_pagination.__str__() + \
  74. '&page_size=' + page_size.__str__() + other_str
  75. else:
  76. ret['paging']['next'] = host_url + blueprints.url_prefix + '?page=' + str(page+1) + '&page_size=' + \
  77. page_size.__str__() + other_str
  78. ret['paging']['first'] = host_url + blueprints.url_prefix + '?page=1&page_size=' + \
  79. page_size.__str__() + other_str
  80. ret['paging']['last'] = \
  81. host_url + blueprints.url_prefix + '?page=' + last_pagination.__str__() + '&page_size=' + \
  82. page_size.__str__() + other_str
  83. return ret
  84. except ji.PreviewingError, e:
  85. return json.loads(e.message)
  86. @Utils.dumps2response
  87. def r_content_search():
  88. page = str(request.args.get('page', 1))
  89. page_size = str(request.args.get('page_size', 50))
  90. args_rules = [
  91. Rules.PAGE.value,
  92. Rules.PAGE_SIZE.value
  93. ]
  94. try:
  95. ji.Check.previewing(args_rules, {'page': page, 'page_size': page_size})
  96. except ji.PreviewingError, e:
  97. return json.loads(e.message)
  98. page = int(page)
  99. page_size = int(page_size)
  100. # 把page和page_size换算成offset和limit
  101. offset = (page - 1) * page_size
  102. # offset, limit将覆盖page及page_size的影响
  103. offset = str(request.args.get('offset', offset))
  104. limit = str(request.args.get('limit', page_size))
  105. order_by = request.args.get('order_by', 'id')
  106. order = request.args.get('order', 'asc')
  107. keyword = request.args.get('keyword', '')
  108. args_rules = [
  109. Rules.OFFSET.value,
  110. Rules.LIMIT.value,
  111. Rules.ORDER_BY.value,
  112. Rules.ORDER.value,
  113. Rules.KEYWORD.value
  114. ]
  115. try:
  116. ji.Check.previewing(args_rules, {'offset': offset, 'limit': limit, 'order_by': order_by, 'order': order,
  117. 'keyword': keyword})
  118. offset = int(offset)
  119. limit = int(limit)
  120. ret = dict()
  121. ret['state'] = ji.Common.exchange_state(20000)
  122. ret['data'] = list()
  123. ret['paging'] = {'total': 0, 'offset': offset, 'limit': limit, 'page': page, 'page_size': page_size}
  124. ret['data'], ret['paging']['total'] = Log.content_search(offset=offset, limit=limit, order_by=order_by,
  125. order=order, keyword=keyword)
  126. host_url = request.host_url.rstrip('/')
  127. other_str = '&keyword=' + keyword + '&order=' + order + '&order_by=' + order_by
  128. last_pagination = (ret['paging']['total'] + page_size - 1) / page_size
  129. if page <= 1:
  130. ret['paging']['prev'] = host_url + blueprints.url_prefix + '/_search?page=1&page_size=' + \
  131. page_size.__str__() + other_str
  132. else:
  133. ret['paging']['prev'] = host_url + blueprints.url_prefix + '/_search?page=' + str(page-1) + \
  134. '&page_size=' + page_size.__str__() + other_str
  135. if page >= last_pagination:
  136. ret['paging']['next'] = host_url + blueprints.url_prefix + '/_search?page=' + last_pagination.__str__() + \
  137. '&page_size=' + page_size.__str__() + other_str
  138. else:
  139. ret['paging']['next'] = host_url + blueprints.url_prefix + '/_search?page=' + str(page+1) + \
  140. '&page_size=' + page_size.__str__() + other_str
  141. ret['paging']['first'] = host_url + blueprints.url_prefix + '/_search?page=1&page_size=' + \
  142. page_size.__str__() + other_str
  143. ret['paging']['last'] = \
  144. host_url + blueprints.url_prefix + '/_search?page=' + last_pagination.__str__() + '&page_size=' + \
  145. page_size.__str__() + other_str
  146. return ret
  147. except ji.PreviewingError, e:
  148. return json.loads(e.message)