def getfile(request): r = re.compile('\.psd$',re.I) if request.GET.get("path"): path = request.GET["path"] l = [i for i in walkDir([path],formats = "relative")["files"] if r.search(i)] l.sort() return HttpResponse(",".join(l))
def inotify(request): '''检测指定目录的修改时间,并返回一个状态值 请求形式:/system/inotify/?path=/projectname&file=/projectname/filepath path 和 file 参数的值均可在具体页面的view中得到 如test项目abc目录下的index.html页面: /system/inotify/?path=/test&file=/test/abc/index.html 多个文件用|分割 ''' import stat user_agent = request.META["HTTP_USER_AGENT"] if request.session.get(user_agent,None): pass else: request.session[user_agent] = {} newModifyTime = {} path = request.GET.get("path",None) curpage = request.GET.get("file",None) flist = eval(curpage) #获取所有相关文件 files = [sc.P_PROJECT_PATH + path + '/' + f for f in flist] if request.session.get("currentpage",None): pass else: request.session["currentpage"] = files[0] files.extend([sc.P_STATIC_PATH + "/" + f for f in os.listdir(sc.P_STATIC_PATH) if os.path.isfile(sc.P_STATIC_PATH + "/" + f) and not os.path.basename(f).startswith(".")]) files.extend([f for f in walkDir([sc.P_STATIC_PATH + path],formats = "absolute")["files"] if not os.path.basename(f).startswith(".")]) print "::"*100 print files print "::"*100 for f in files: try: filestat = os.stat(f) newModifyTime[f] = filestat[stat.ST_MTIME] except OSError: pass if request.session[user_agent] != newModifyTime: if not request.session[user_agent] or request.session["currentpage"] != files[0]: stat = "0" request.session["currentpage"] = files[0] else: stat = "1" request.session[user_agent] = newModifyTime else: stat = "0" return HttpResponse(stat)
def p(request,p = "", tpl = ""): '''view page''' import time src = request.SRC static = request.STATIC pfix = p pdir = sc.P_PROJECT_PATH stamp = "?v=" + str(time.time()) if p: static_path = sc.P_STATIC_PATH + "/" + p tpl_path = sc.P_PROJECT_PATH + "/" + p pattern = "\.pyc$|^\.|\.py$|_import.html|.*footer.*" dirHtml = dirTree(tpl_path, "/p/", pattern) dirHtml = re.sub("\n","",dirHtml) try: pobj = sm.Project.objects.get(name_en = p) except sm.Project.DoesNotExist: pobj = None if not p and not tpl: return HttpResponseRedirect("/v/project/") elif p and not tpl: if pobj: dirHtml = dirTree(tpl_path, "/p/", pattern) return render_to_response("system/dir.html",locals()) else: return HttpResponse(u"404 page") else: css_reg = re.compile("\w+\.css$") js_reg = re.compile("\w+\.js$") less_reg = re.compile("\w+\.less$") tpl_filter = re.compile("^(.*\/)?_.*\.html$") merge_reg = re.compile("_merge.html$") import_reg = re.compile("_import.html$") if tpl.find("/") != -1: subDir = tpl[0:tpl.find("/")] else: subDir = None if os.path.exists(static_path): files = [] for item in sc.STATIC_TYPE: files.extend([item + "/" +f for f in os.listdir(static_path + "/" + item) if not os.path.isdir(static_path + "/" + item + "/" + f)]) if subDir: subFiles = walkDir([static_path + "/" + item + "/" + subDir],formats = "relative")["files"] files.extend(item + "/" + subDir + "/" + f for f in subFiles) files.sort() files.reverse() if os.path.exists(tpl_path): tplfiles = [f for f in os.listdir(tpl_path) if not os.path.isdir(tpl_path + "/" + f)] if subDir: subFiles = walkDir([tpl_path + "/" + subDir],formats = "relative")["files"] tplfiles.extend(subDir + "/" + f for f in subFiles) tpls = [f for f in tplfiles if tpl_filter.search(f)] tpls.sort() #如果是目录,则显示目录树 if os.path.isdir(tpl_path + "/" + tpl): dirHtml = dirTree(tpl_path + "/" + tpl, "/p/", pattern) return render_to_response("system/dir.html",locals()) #否则显示相应页面 else: try: return render_to_response("system/view.html",locals()) except: return HttpResponse(sys.exc_info()[0])