views.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. # coding=utf-8
  2. import re
  3. import os
  4. import json
  5. import uuid
  6. import random
  7. from importlib import import_module
  8. from django import http
  9. from django.contrib import auth
  10. from django.core.cache import cache
  11. from django.shortcuts import render
  12. from django.conf import settings
  13. from common import core_views as cv
  14. import common.models as cm
  15. class DocView(cv.BaseView):
  16. def get(self,request):
  17. """
  18. """
  19. modules = list(cm.OperationLogConfig.objects.order_by("order").values())
  20. apis = []
  21. for mo in modules:
  22. docstr = None
  23. op_url = mo["op_url"]
  24. response = mo["op_response"]
  25. try:
  26. cls = mo["op_view"].split(".")[-1]
  27. mod = import_module(".".join(mo["op_view"].split(".")[:-1]))
  28. cls = getattr(mod,cls)
  29. op_action_flag = mo["op_action_flag"]
  30. if op_action_flag == "GET":
  31. docstr = cls.get.__doc__
  32. if op_action_flag == "POST":
  33. docstr = cls.post.__doc__
  34. if op_action_flag == "PUT":
  35. docstr = cls.put.__doc__
  36. if op_action_flag == "DELETE":
  37. docstr = cls.delete.__doc__
  38. if docstr:
  39. title = "".join(re.findall(r'#.*',docstr)).lstrip("#")
  40. params = "\n".join([x.lstrip("@") for x in re.findall(r'@.*',docstr)]).strip()
  41. request_note = "<br>".join([x.lstrip("<") for x in re.findall(r'<.*',docstr)]).strip()
  42. response_note = "<br>".join([x.lstrip(">") for x in re.findall(r'>.*',docstr)]).strip()
  43. apis.append({"id":mo["id"],"url":op_url,"title":title,"method":op_action_flag,
  44. "params":params,"response":response,"response_note":response_note
  45. })
  46. except Exception as e:
  47. cv.tracefail()
  48. continue
  49. isroot = request.GET.get("root",0)
  50. if request.GET.get("json"):
  51. return cv.to_suc(apis)
  52. return render(request,"apidoc.html",{"apis":apis,"isroot":isroot,"project_name":settings.PROJECT_NAME})
  53. def post(self,request):
  54. """
  55. """
  56. qdata = request.json
  57. ids = qdata.get("ids")
  58. for dct in ids:
  59. id = dct["id"]
  60. order = dct["order"]
  61. cm.OperationLogConfig.objects.filter(id=id).update(order=order)
  62. return cv.to_suc()
  63. def delete(self,request):
  64. """
  65. """
  66. qdata = request.json
  67. id = qdata.get("id")
  68. cm.OperationLogConfig.objects.filter(id=id).delete()
  69. return cv.to_suc()
  70. class HookView(cv.BaseView):
  71. def post(self,request):
  72. """
  73. """
  74. cmdstr = "cd /mnt/gzyunweb/pc/gzyun_web & git pull origin master & cnpm run build"
  75. os.system(cmdstr)
  76. return cv.to_suc()
  77. class CanvasView(cv.BaseView):
  78. def get(self,request):
  79. """
  80. """
  81. ret = {}
  82. paper = {
  83. "title":u"第一课、空间几何体",
  84. "paperno":u"XZBRJB10001",
  85. "paperimgs":["/static/test1.jpg","/static/test1.jpg"]
  86. }
  87. ret["paper"] = paper
  88. return render(request,"canvas.html",ret)