Ejemplo n.º 1
0
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))
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
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])