Пример #1
0
def handler_cache(req):
    if req.method == 'POST':
        url = req.POST.get('url')
        url_type = req.POST.get('type')
        username = req.COOKIES.get('username')
        project_id = req.session['project_id']
        token = req.session.get('token')
        ############ 判断是否是当前项目下的域名###########
        pattern = re.compile('http:\/\/(.*?)\/')
        re_result = pattern.findall(url)
        if username == settings.SUPERADMIN:
            domains = Domain.objects.using('api_db').all().values_list('domain_name')
        else:
            domains = Domain.objects.using('api_db').filter(project_id=project_id).values_list('domain_name')
        this_domains = []
        for d in domains:
            this_domains.append(d[0])
        for r in re_result:
            if r not in this_domains:
                result = '请不要操作该项目以外的域名'
                return HttpResponse(result)
        #################################################
        api = DomainApi(token)
        urls_list = url.split('\n')
        if url_type == "0" or url_type == "1":
            # 0 是目录, 1是文件
            if url_type == "1":
                key = "urls"
            else:
                key = "dirs"
            json_str = {key: urls_list, "project_id": project_id, "username": username}
            res = api.purge(json_str)
        else:
            json_str = {"urls": urls_list, "project_id": project_id, "username": username}
            res = api.prefetch(json_str)

        if res.status == 200:
            result = '成功!'
        else:
            result = json.loads(res.read()).get("error")
        return HttpResponse(result)
    else:
        if not req.session.has_key("project_id"):
            return HttpResponseRedirect('/login/')
        else:
            project_id = req.session['project_id']
        username = req.COOKIES.get('username')
        if username == settings.SUPERADMIN:
            tasks = TaskList.objects.using('api_db').all()
        else:
            tasks = TaskList.objects.using('api_db').filter(project_id=project_id)
        for t in tasks:
            t.task_content = t.task_content.replace(',', '<br>')
        project_list = req.session['project_list']
        return render_to_response("refresh_cache.html", locals())