# coding=utf-8 import re import os import json import uuid import random from importlib import import_module from django import http from django.contrib import auth from django.core.cache import cache from django.shortcuts import render from django.conf import settings from common import core_views as cv import common.models as cm class DocView(cv.BaseView): def get(self,request): """ """ modules = list(cm.OperationLogConfig.objects.order_by("order").values()) apis = [] for mo in modules: docstr = None op_url = mo["op_url"] response = mo["op_response"] try: cls = mo["op_view"].split(".")[-1] mod = import_module(".".join(mo["op_view"].split(".")[:-1])) cls = getattr(mod,cls) op_action_flag = mo["op_action_flag"] if op_action_flag == "GET": docstr = cls.get.__doc__ if op_action_flag == "POST": docstr = cls.post.__doc__ if op_action_flag == "PUT": docstr = cls.put.__doc__ if op_action_flag == "DELETE": docstr = cls.delete.__doc__ if docstr: title = "".join(re.findall(r'#.*',docstr)).lstrip("#") params = "\n".join([x.lstrip("@") for x in re.findall(r'@.*',docstr)]).strip() request_note = "
".join([x.lstrip("<") for x in re.findall(r'<.*',docstr)]).strip() response_note = "
".join([x.lstrip(">") for x in re.findall(r'>.*',docstr)]).strip() apis.append({"id":mo["id"],"url":op_url,"title":title,"method":op_action_flag, "params":params,"response":response,"response_note":response_note }) except Exception as e: cv.tracefail() continue isroot = request.GET.get("root",0) if request.GET.get("json"): return cv.to_suc(apis) return render(request,"apidoc.html",{"apis":apis,"isroot":isroot,"project_name":settings.PROJECT_NAME}) def post(self,request): """ """ qdata = request.json ids = qdata.get("ids") for dct in ids: id = dct["id"] order = dct["order"] cm.OperationLogConfig.objects.filter(id=id).update(order=order) return cv.to_suc() def delete(self,request): """ """ qdata = request.json id = qdata.get("id") cm.OperationLogConfig.objects.filter(id=id).delete() return cv.to_suc() class HookView(cv.BaseView): def post(self,request): """ """ cmdstr = "cd /mnt/gzyunweb/pc/gzyun_web & git pull origin master & cnpm run build" os.system(cmdstr) return cv.to_suc() class CanvasView(cv.BaseView): def get(self,request): """ """ ret = {} paper = { "title":u"第一课、空间几何体", "paperno":u"XZBRJB10001", "paperimgs":["/static/test1.jpg","/static/test1.jpg"] } ret["paper"] = paper return render(request,"canvas.html",ret)