You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

190 lines
4.8 KiB

12 years ago
12 years ago
  1. from django.shortcuts import render_to_response
  2. from django.http import HttpResponse, HttpResponseRedirect
  3. from django.template import RequestContext
  4. from django.utils import simplejson
  5. from main.views import *
  6. from pydash.settings import TIME_JS_REFRESH
  7. def cpuusage(request):
  8. """
  9. Return CPU Usage in %
  10. """
  11. if not request.user.is_authenticated():
  12. return HttpResponseRedirect('/login')
  13. datasets = []
  14. try:
  15. cpu_usage = get_cpu_usage()
  16. except Exception:
  17. cpu_usage = 0
  18. try:
  19. cookies = request._cookies['cpu_usage']
  20. except Exception:
  21. cookies = None
  22. if not cookies:
  23. datasets.append(0)
  24. else:
  25. datasets = eval(cookies)
  26. if len(datasets) > 10:
  27. while datasets:
  28. del datasets[0]
  29. if len(datasets) == 10:
  30. break
  31. if len(datasets) <= 9:
  32. datasets.append(int(cpu_usage['usage']))
  33. if len(datasets) == 10:
  34. datasets.append(int(cpu_usage['usage']))
  35. del datasets[0]
  36. # Some fix division by 0 Chart.js
  37. if len(datasets) == 10:
  38. if sum(datasets) == 0:
  39. datasets[9] += 0.1
  40. if sum(datasets) / 10 == datasets[0]:
  41. datasets[9] += 0.1
  42. cpu = {
  43. 'labels': [""] * 10,
  44. 'datasets': [
  45. {
  46. "fillColor": "rgba(241,72,70,0.5)",
  47. "strokeColor": "rgba(241,72,70,1)",
  48. "pointColor": "rgba(241,72,70,1)",
  49. "pointStrokeColor": "#fff",
  50. "data": datasets
  51. }
  52. ]
  53. }
  54. data = simplejson.dumps(cpu)
  55. response = HttpResponse()
  56. response['Content-Type'] = "text/javascript"
  57. response.cookies['cpu_usage'] = datasets
  58. response.write(data)
  59. return response
  60. def memusage(request):
  61. """
  62. Return Memory Usage in % and numeric
  63. """
  64. if not request.user.is_authenticated():
  65. return HttpResponseRedirect('/login')
  66. datasets = []
  67. try:
  68. mem_usage = get_mem()
  69. except Exception:
  70. mem_usage = 0
  71. try:
  72. cookies = request._cookies['memory_usage']
  73. except Exception:
  74. cookies = None
  75. if not cookies:
  76. datasets.append(0)
  77. else:
  78. datasets = eval(cookies)
  79. if len(datasets) > 10:
  80. while datasets:
  81. del datasets[0]
  82. if len(datasets) == 10:
  83. break
  84. if len(datasets) <= 9:
  85. datasets.append(int(mem_usage['usage']))
  86. if len(datasets) == 10:
  87. datasets.append(int(mem_usage['usage']))
  88. del datasets[0]
  89. # Some fix division by 0 Chart.js
  90. if len(datasets) == 10:
  91. if sum(datasets) == 0:
  92. datasets[9] += 0.1
  93. if sum(datasets) / 10 == datasets[0]:
  94. datasets[9] += 0.1
  95. memory = {
  96. 'labels': [""] * 10,
  97. 'datasets': [
  98. {
  99. "fillColor": "rgba(249,134,33,0.5)",
  100. "strokeColor": "rgba(249,134,33,1)",
  101. "pointColor": "rgba(249,134,33,1)",
  102. "pointStrokeColor": "#fff",
  103. "data": datasets
  104. }
  105. ]
  106. }
  107. data = simplejson.dumps(memory)
  108. response = HttpResponse()
  109. response['Content-Type'] = "text/javascript"
  110. response.cookies['memory_usage'] = datasets
  111. response.write(data)
  112. return response
  113. def loadaverage(request):
  114. """
  115. Return Load Average numeric
  116. """
  117. if not request.user.is_authenticated():
  118. return HttpResponseRedirect('/login')
  119. datasets = []
  120. try:
  121. load_average = get_load()
  122. except Exception:
  123. load_average = 0
  124. try:
  125. cookies = request._cookies['load_average']
  126. except Exception:
  127. cookies = None
  128. if not cookies:
  129. datasets.append(0)
  130. else:
  131. datasets = eval(cookies)
  132. if len(datasets) > 10:
  133. while datasets:
  134. del datasets[0]
  135. if len(datasets) == 10:
  136. break
  137. if len(datasets) <= 9:
  138. datasets.append(int(load_average))
  139. if len(datasets) == 10:
  140. datasets.append(int(load_average))
  141. del datasets[0]
  142. # Some fix division by 0 Chart.js
  143. if len(datasets) == 10:
  144. if sum(datasets) == 0:
  145. datasets[9] += 0.1
  146. if sum(datasets) / 10 == datasets[0]:
  147. datasets[9] += 0.1
  148. load = {
  149. 'labels': [""] * 10,
  150. 'datasets': [
  151. {
  152. "fillColor" : "rgba(151,187,205,0.5)",
  153. "strokeColor" : "rgba(151,187,205,1)",
  154. "pointColor" : "rgba(151,187,205,1)",
  155. "pointStrokeColor": "#fff",
  156. "data": datasets
  157. }
  158. ]
  159. }
  160. data = simplejson.dumps(load)
  161. response = HttpResponse()
  162. response['Content-Type'] = "text/javascript"
  163. response.cookies['load_average'] = datasets
  164. response.write(data)
  165. return response