예제 #1
0
    def get(self, request):
        """显示"""
        blog_type = request.GET.get('type', 0)
        top = request.GET.get('top', '0')

        # 查询出所有标签
        tag_all = BlogTypeModel.objects.all().order_by('index')
        # 判断top数据是否有误
        if top.isdecimal():
            top = int(top)
            if top > tag_all.count():
                top = 0
                blog_type = 0
        else:
            top = 0
            blog_type = 0

        # 查询博客
        if not blog_type:
            # 查询所有的博客
            blogs = BlogModel.objects.all().order_by('-create_time')
        else:
            try:
                type_obj = BlogTypeModel.objects.get(id=int(blog_type))
            except Exception as e:
                print(f'查询博客报错:{e}')
                blogs = BlogModel.objects.all().order_by('-create_time')
                top = 0
            else:
                blogs = BlogModel.objects.filter(
                    blog_type=int(blog_type)).order_by('-create_time')

        # 分页
        per_page = PER_PAGE_NUM
        page_object = Pagination(
            current_page=request.GET.get('page', 1),
            all_count=blogs.count(),
            base_url=request.path_info,
            query_params=request.GET,
            per_page=per_page,
        )
        blog_object_list = blogs[page_object.start:page_object.end]

        blogs = BlogModel.objects.all()
        # 最新文章
        new_blogs = blogs.order_by('-create_time')[0:5]
        # 最热文章
        hot_blogs = blogs.order_by('-read_count')[0:3]

        # 组织上下文
        context = {
            'blog_object_list': blog_object_list,
            'page_html': page_object.page_html(),
            'tag_all': tag_all,
            'new_blogs': new_blogs,
            'hot_blogs': hot_blogs,
            'top': top * 40,
        }

        return render(request, 'article.html', context)
예제 #2
0
def issues(request, project_id):
    if request.method == "GET":
        # 分页获取数据
        queryset = models.Issues.objects.filter(project_id=project_id)
        page_object = Pagination(current_page=request.GET.get('page'),
                                 all_count=queryset.count(),
                                 base_url=request.path_info,
                                 query_params=request.GET,
                                 per_page=1)
        issues_object_list = queryset[page_object.start:page_object.end]
        form = IssuesModelForm(request)
        return render(
            request, 'web/issues.html', {
                'form': form,
                'issues_object_list': issues_object_list,
                'page_html': page_object.page_html()
            })
    form = IssuesModelForm(request, data=request.POST)
    if form.is_valid():
        # 添加问题
        form.instance.project = request.bug_mgt.project
        form.instance.creator = request.bug_mgt.user
        form.save()
        return JsonResponse({'status': True})
    return JsonResponse({'status': False, 'error': form.errors})
예제 #3
0
파일: views.py 프로젝트: wqqsukida/dera_ops
def init_paginaion(request, queryset):
    # 初始化分页器
    query_params = copy.deepcopy(request.GET)  # QueryDict
    current_page = request.GET.get('page', 1)
    # per_page = config.per_page
    # pager_page_count = config.pager_page_count
    all_count = queryset.count()
    base_url = request.path_info
    page_obj = Pagination(current_page, all_count, base_url, query_params)
    query_set = queryset[page_obj.start:page_obj.end]
    page_html = page_obj.page_html()

    return query_set, page_html
예제 #4
0
파일: views.py 프로젝트: wh0am1i/Blog_site
def index(request):
    # 从请求中过去页码,如果没有获取到默认显示第一页
    current_page = int(request.GET.get('page', 1))
    # 总数据量
    total_count = models.Blog.objects.count()
    # 生成实例,传入当前页码,总数据量,路径
    page_obj = Pagination(current_page, total_count, request.path_info)
    # 数据显示开始行数 结束行数
    data = models.Blog.objects.all()[page_obj.start:page_obj.end]
    # 生成前端代码
    page_html = page_obj.page_html()
    # 返回渲染
    return render(request, "index.html", locals())
예제 #5
0
파일: views.py 프로젝트: wh0am1i/Blog_site
def get_cate(request, name):
    # 从请求中过去页码,如果没有获取到默认显示第一页
    current_page = int(request.GET.get('page', 1))
    # 总数据量
    total_count = models.Blog.objects.filter(
        cate__blog__cate__name=name).distinct().count()
    # 生成实例,传入当前页码,总数据量,路径
    page_obj = Pagination(current_page, total_count, request.path_info)
    # 数据显示开始行数 结束行数
    cate_blog = models.Blog.objects.filter(
        cate__blog__cate__name=name).distinct()[page_obj.start:page_obj.end]
    # 生成前端代码
    page_html = page_obj.page_html()
    # 返回渲染
    return render(request, 'cate_detail.html', locals())
예제 #6
0
def issues(request, project_id):
    if request.method == 'GET':
        # 筛选条件
        allow_filter_name = ['issues_type', 'status', 'priority', ]
        condition = {}
        for name in allow_filter_name:
            value_list = request.GET.getlist(name)
            if not value_list:
                continue
            condition[f'{name}__in'] = value_list

        queryset = models.Issues.objects.filter(project_id=project_id).filter(**condition)
        page_object = Pagination(
            current_page=request.GET.get('page'),
            all_count=queryset.count(),
            base_url=request.path_info,
            query_params=request.GET,
            per_page=10,
        )
        issues_object_list = queryset[page_object.start:page_object.end]

        form = IssuesModelForm(request)
        project_issues_type = models.IssuesType.objects.filter(project_id=project_id).values_list('id', 'title')
        project_total_user = [(request.tracer.project.creator_id, request.tracer.project.creator.username)]
        join_user = models.ProjectUser.objects.filter(project_id=project_id).values_list('user_id', 'user__username')
        project_total_user.extend(join_user)
        invite_form = InviteModelForm()
        context = {'form': form,
                   'invite_form': invite_form,
                   'issues_object_list': issues_object_list,
                   'page_html': page_object.page_html(),
                   'filter_list': [
                       {'title': "问题类型", 'filter': CheckFilter('issues_type', project_issues_type, request)},
                       {'title': "状态", 'filter': CheckFilter('status', models.Issues.status_choices, request)},
                       {'title': "优先级", 'filter': CheckFilter('priority', models.Issues.priority_choices, request)},
                       {'title': "指派者", 'filter': SelectFilter('assign', project_total_user, request)},
                       {'title': "关注者", 'filter': SelectFilter('attention', project_total_user, request)},
                   ]
                   }
        return render(request, 'issues.html', context)
    form = IssuesModelForm(request, data=request.POST)
    if form.is_valid():
        form.instance.creator = request.tracer.user
        form.instance.project = request.tracer.project
        form.save()
        return JsonResponse({'status': True})
    return JsonResponse({'status': False, 'error': form.errors})
예제 #7
0
파일: views.py 프로젝트: wmyzzz/blog
def blog_list(request):

    # 查找所有blog
    queryset = models.Blog.objects.all()
    page_object = Pagination(current_page=request.GET.get('page'),
                             all_count=queryset.count(),
                             base_url=request.path_info,
                             query_params=request.GET,
                             per_page=50)
    blog_object_list = queryset[page_object.start:page_object.end]
    form = BlogListModelForm()
    content = {
        'blog_object_list': blog_object_list,
        'page_html': page_object.page_html(),
        'form': form
    }
    return render(request, 'blog_list.html', content)
예제 #8
0
    def get(self, request, category_id):
        """
        图片缩略图-文章标题
        """
        current_page = request.GET.get('page', 1)
        note_obj = Note.objects.filter(
            category_id=category_id).order_by('-create_datetime')
        note_page = Pagination(current_page=current_page,
                               per_page=12,
                               all_count=note_obj.count(),
                               base_url=request.path,
                               query_params=request.GET,
                               pager_page_count=5)

        notes = note_obj[note_page.start:note_page.end]

        context = {
            'notes': notes,
            'count': note_obj.count(),
            'page_html': note_page.page_html()
        }

        return render(request, 'category_list.html', context)
예제 #9
0
def issues(request, project_id):
    if request.method == "GET":
        # 根据URL做筛选,筛选条件(根据用户通过GET传过来的参数实现)
        # ?status=1&status=2&issues_type=1
        allow_filter_name = [
            "issues_type",
            "status",
            "priority",
            "assign",
            "attention",
        ]
        condition = {}
        for name in allow_filter_name:
            value_list = request.GET.getlist(name)  # [1,2]
            if not value_list:
                continue
            condition["{}__in".format(name)] = value_list
        """
        condition = {
            "status__in":[1,2],
            'issues_type':[1,]
        }
        """

        # 分页获取数据
        queryset = models.Issues.objects.filter(project_id=project_id).filter(
            **condition)
        page_object = Pagination(
            current_page=request.GET.get("page"),
            all_count=queryset.count(),
            base_url=request.path_info,
            query_params=request.GET,
            per_page=50,
        )
        issues_object_list = queryset[page_object.start:page_object.end]

        form = IssuesModelForm(request)

        project_issues_type = models.IssuesType.objects.filter(
            project_id=project_id).values_list("id", "title")

        project_total_user = [(
            request.tracer.project.creator_id,
            request.tracer.project.creator.username,
        )]
        join_user = models.ProjectUser.objects.filter(
            project_id=project_id).values_list("user_id", "user__username")
        project_total_user.extend(join_user)

        invite_form = InviteModelForm()
        context = {
            "form":
            form,
            "invite_form":
            invite_form,
            "issues_object_list":
            issues_object_list,
            "page_html":
            page_object.page_html(),
            "filter_list": [
                {
                    "title":
                    "问题类型",
                    "filter":
                    CheckFilter("issues_type", project_issues_type, request),
                },
                {
                    "title":
                    "状态",
                    "filter":
                    CheckFilter("status", models.Issues.status_choices,
                                request),
                },
                {
                    "title":
                    "优先级",
                    "filter":
                    CheckFilter("priority", models.Issues.priority_choices,
                                request),
                },
                {
                    "title": "指派者",
                    "filter": SelectFilter("assign", project_total_user,
                                           request),
                },
                {
                    "title":
                    "关注者",
                    "filter":
                    SelectFilter("attention", project_total_user, request),
                },
            ],
        }
        return render(request, "issues.html", context)

    form = IssuesModelForm(request, data=request.POST)
    if form.is_valid():
        form.instance.project = request.tracer.project
        form.instance.creator = request.tracer.user
        form.save()
        return JsonResponse({"status": True})

    return JsonResponse({"status": False, "error": form.errors})
예제 #10
0
def issues(request, project_id):
    if request.method == 'GET':
        # 筛选条件(根据用户通过GET传过来的参数实现)
        allow_filter_name = ['issues_type', 'status', 'priority', 'assign', 'attention']
        condition = {}
        for name in allow_filter_name:
            value_list = request.GET.getlist(name)  # [1,2]
            if not value_list:
                continue
            condition["{}__in".format(name)] = value_list
        """
        condition = {
            "status__in":[1,2],
            'issues_type':[1,]
        }
        """
        # 分页获取数据
        queryset = Issues.objects.filter(project_id=project_id).filter(**condition)
        page_object = Pagination(
            current_page=request.GET.get('page'),
            all_count=queryset.count(),  # 总数据
            base_url=request.path_info,
            query_params=request.GET,
            per_page=5
        )
        issues_object_list = queryset[page_object.start:page_object.end]

        form = IssuesModelForm(request)

        project_issues_type = IssuesType.objects.filter(project_id=project_id).values_list('id', 'title')

        project_total_user = [(request.saas.project.creator_id, request.saas.project.creator.name,)]
        join_user = ProjectUser.objects.filter(project_id=project_id).values_list('user_id', 'user__name')
        project_total_user.extend(join_user)

        invite_form = InviteModelForm()
        context = {
            'form': form,
            'invite_form': invite_form,
            'issues_object_list': issues_object_list,
            'page_html': page_object.page_html(),
            'filter_list': [
                {'title': "类型", 'filter': CheckFilter('issues_type',project_issues_type, request)},
                {'title': "状态", 'filter': CheckFilter('status', Issues.status_choices, request)},
                {'title': "优先级", 'filter': CheckFilter('priority', Issues.priority_choices, request)},
                {'title': "指派", 'filter': SelectFilter('assign', project_total_user, request)},
                {'title': "关注", 'filter': SelectFilter('attention', project_total_user, request)},
            ]
        }
        return render(request, 'issues.html', context)
    # print(request.POST)
    form = IssuesModelForm(request, data=request.POST)
    if form.is_valid():
        # 手动赋值
        form.instance.project = request.saas.project
        form.instance.creator = request.saas.user
        # 添加问题
        form.save()
        return JsonResponse({'status': True})

    return JsonResponse({'status': False, 'error': form.errors})
예제 #11
0
def issues(request, project_id):
    """问题首页"""
    if request.method == 'GET':
        form = IssuesModelForm(request)
        invite_form = InviteModelForm()
        # ####### 根据条件查询
        # 根据URL做筛选,筛选条件(根据用户通过GET传过来的参数实现)
        # ?status=1&status=2&issues_type=1
        allow_filter_name = [
            'issues_type', 'priority', 'status', 'assign', 'attention'
        ]
        condition = {}
        for name in allow_filter_name:
            value_list = request.GET.getlist(name)
            if not value_list:
                continue
            condition['{}__in'.format(name)] = value_list
        """
        condition = {
            "status__in":[1,2],
            'issues_type__in':[1,]
        }
        """

        # ####### 分页展示
        queryset = Issues.objects.filter(project_id=project_id).filter(
            **condition)
        page_object = Pagination(current_page=request.GET.get('page'),
                                 all_count=queryset.count(),
                                 base_url=request.path_info,
                                 query_params=request.GET,
                                 per_page=3)
        issues_object_list = queryset[page_object.start:
                                      page_object.end]  # 分页之后的对象

        issues_type_choices = IssuesType.objects.filter(
            project_id=project_id).values_list('id', 'title')
        project_user_choices = [(request.tracer.project.creator.id,
                                 request.tracer.project.creator.username)]
        project_user = ProjectUser.objects.filter(
            project_id=project_id).values_list('user_id', 'user__username')
        project_user_choices.extend(project_user)
        context = {
            'form':
            form,
            'invite_form':
            invite_form,
            'issues_object_list':
            issues_object_list,
            'page_html':
            page_object.page_html(),
            'filter_list': [
                {
                    'title':
                    '问题类型',
                    'filter':
                    CheckFilter('issues_type', issues_type_choices, request)
                },
                {
                    'title': '状态',
                    'filter': CheckFilter('status', Issues.status_choices,
                                          request)
                },
                {
                    'title':
                    '优先级',
                    'filter':
                    CheckFilter('priority', Issues.priority_choices, request)
                },
                {
                    'title': '指派人',
                    'filter': SelectFilter('assign', project_user_choices,
                                           request)
                },
                {
                    'title':
                    '关注者',
                    'filter':
                    SelectFilter('attention', project_user_choices, request)
                },
            ],
            #
            # 'status_list': CheckFilter('status', Issues.status_choices, request),
            # 'priority_list': CheckFilter('priority', Issues.priority_choices, request),
            # 'issues_type_list': CheckFilter('issues_type', issues_type_choices, request)
            #
        }

        return render(request, 'web/issues.html', context)

    # POST方法
    if request.method == 'POST':
        form = IssuesModelForm(request, data=request.POST)
        if form.is_valid():

            form.instance.project_id = project_id
            form.instance.creator = request.tracer.user

            form.save()
            return JsonResponse({'status': True})

        return JsonResponse({'status': False, 'error': form.errors})
예제 #12
0
def my_duty():
    if 'user_id' not in session:
        return redirect(url_for('login'))
    else:
        myname = session['username']
        total_sql = 'select t1.*,t2.name from du_duty as t1  left join du_category as t2 on t2.category_id = t1.category_id where user_id = %s' % session['user_id']
        duty_list_all = db.session.execute(total_sql).fetchall()
        totalcasenum = len(duty_list_all)
        if request.method == 'GET' and request.args.get('category_id'):
            category_id = request.args.get('category_id')
            usercase_sql = 'select t1.*,t2.name from du_duty as t1  left join du_category as t2 on t2.category_id = t1.category_id where t1.user_id = %s  and t1.category_id = %s ' % (session['user_id'],category_id)
            duty_list = db.session.execute(usercase_sql).fetchall()
            print(len(duty_list_all))
            li = []
            for i in range(1, len(duty_list_all) + 1):
                li.append(i)
            pager_obj = Pagination(request.args.get("page", 1), len(li), request.path, request.args, per_page_count=3)
            html = pager_obj.page_html()
            return render_template('my_duty.html',duty_list=duty_list, myname=myname, html=html)

        elif request.method == 'POST':
            category_list = Category.query.order_by(Category.category_id).all()
            print(len(duty_list_all))
            li = []
            for i in range(1, len(duty_list_all) + 1):
                li.append(i)
            pager_obj = Pagination(request.args.get("page", 1), len(li), request.path, request.args, per_page_count=3)
            page = int(int(request.args.get("page")) - 1)
            page_corresponding_num = int(page*3)
            index_list = li[pager_obj.start:pager_obj.end]
            a = [str(x) for x in index_list]
            # b = ",".join(a)
            # print(b)
            # print(type(b))
            print(index_list)
            print(type(index_list))
            html = pager_obj.page_html()
            sql1 = "select t1.*,t2.name from du_duty as t1  left join du_category as t2 on t2.category_id = t1.category_id where user_id = %s ORDER BY t1.duty_id limit %s,3" % (session['user_id'],page_corresponding_num)

            # sql1 = "select t1.*,t2.name from du_duty as t1  left join du_category as t2 on t2.category_id = t1.category_id where user_id = {} and t1.duty_id in ({index_list})".format(session['user_id'],index_list=index_list)
            duty_list = db.session.execute(sql1).fetchall()
            return render_template('my_duty.html', duty_list=duty_list, category_list=category_list, myname=myname, html=html)

        else:
            category_list = Category.query.order_by(Category.category_id).all()
            # print("here")
            li = []
            for i in range(1, len(duty_list_all) + 1):
                li.append(i)
            pager_obj = Pagination(request.args.get("page", 1), len(li), request.path, request.args, per_page_count=3)
            ###登录用户自己名下的case
            if request.args.get("page") is not None and request.args.get("suite") is None:
                page = int(int(request.args.get("page")) - 1)
                page_corresponding_num = int(page*3)
                # print(request.path)
                # print(request.args)
                index_list = li[pager_obj.start:pager_obj.end]
                # a = [str(x) for x in index_list]
                # b = ",".join(a)
                # print(index_list)
                # print(type(index_list))
                html = pager_obj.page_html()
                sql1 = "select t1.*,t2.name from du_duty as t1  left join du_category as t2 on t2.category_id = t1.category_id where user_id = %s ORDER BY t1.duty_id DESC limit %s,3" % (session['user_id'],page_corresponding_num)
                duty_list = db.session.execute(sql1).fetchall()
                print("ggg")
                return render_template('my_duty.html', duty_list=duty_list, category_list=category_list, myname=myname,
                                       html=html)
            ###查询公共的case
            else:
                ###search button 下逻辑
                if request.args.get('suite') is not None:
                    category_id = request.args.get('suite')
                    duty_list1 = db.session.execute(current_suite_sql).fetchall()

                    ###search 情况含page 参数
                    if request.args.get("page") is not None:
                        print("gg")
                        ki = []
                        for i in range(1, len(duty_list1) + 1):
                            ki.append(i)
                        pager_obj = Pagination(request.args.get("page", 1), len(ki), request.path, request.args,
                                               per_page_count=3)
                        page = int(int(request.args.get("page")) - 1)
                        page_corresponding_num1 = int(page * 3)
                        html = pager_obj.page_html()
                        sql3 = 'select du_duty.*,du_category.name from du_duty  left join du_category on du_category.category_id = du_duty.category_id where du_duty.category_id = %s and du_duty.status = 1 ORDER BY du_duty.duty_id DESC limit %s,3' % (category_id,page_corresponding_num1)
                        duty_list3 = db.session.execute(sql3).fetchall()
                        return render_template('my_duty.html',totalcasenum=totalcasenum,duty_list=duty_list3, category_list=category_list,myname=myname, html=html)
                    ###search 情况不含page 参数
                    else:
                        ki = []
                        for i in range(1, len(duty_list1) + 1):
                            ki.append(i)
                        pager_obj = Pagination(request.args.get("page", 1), len(ki), request.path, request.args,
                                               per_page_count=3)
                        # page = int(int(request.args.get("page")) - 1)
                        # page_corresponding_num1 = int(page * 3)
                        html = pager_obj.page_html()

                        sql3 = 'select du_duty.*,du_category.name from du_duty  left join du_category on du_category.category_id = du_duty.category_id where du_duty.category_id = %s and du_duty.is_show = 1 ORDER BY du_duty.duty_id DESC limit 3' % category_id
                        duty_list = db.session.execute(sql3).fetchall()
                        return render_template('my_duty.html', duty_list=duty_list, category_list=category_list,myname=myname, html=html)
                else:
                    print("1")
                    # print(request.args)
                    html = pager_obj.page_html()
                    sql1 = "select t1.*,t2.name from du_duty as t1  left join du_category as t2 on t2.category_id = t1.category_id where user_id =%s ORDER BY t1.duty_id DESC limit 3" % session['user_id']
                    duty_list = db.session.execute(sql1).fetchall()
                    return render_template('my_duty.html', totalcasenum=totalcasenum,duty_list=duty_list, category_list=category_list,
                                           myname=myname, html=html)
        return render_template('my_duty.html',duty_list = duty_list,category_list=category_list,myname=myname,html=html)
예제 #13
0
def issues(request, project_id):
    """问题栏"""
    if request.method == "GET":
        # 筛选条件 -- 通过get来实现参数筛选
        allow_filter_name = [
            'issues_type', 'status', 'priority', 'assign', 'attention'
        ]
        condition = {}  # 条件
        for name in allow_filter_name:
            value_list = request.GET.getlist(name)

            if not value_list:
                continue

            condition['{}__in'.format(name)] = value_list

        # 分页获取数据
        form = IssuesModelForm(request)

        issues_obj = Issues.objects.filter(
            project=request.tracer.project).filter(**condition)

        page_object = Pagination(
            current_page=request.GET.get('page'),
            all_count=issues_obj.count(),
            base_url=request.path_info,
            query_params=request.GET,
            per_page=3,
        )
        issues_object_list = issues_obj[page_object.start:page_object.end]

        project_total_user = [(
            request.tracer.project.create_user_id,
            request.tracer.project.create_user.username,
        )]
        join_user = ProjectUser.objects.filter(
            project_id=project_id).values_list('user_id', 'user__username')
        project_total_user.extend(join_user)

        invite_form = InviteModelForm(data=request.POST)

        context = {
            'form':
            form,
            'invite_form':
            invite_form,
            'issues_object_list':
            issues_object_list,
            'page_html':
            page_object.page_html(),
            'filter_list': [
                {
                    'title':
                    '问题类型',
                    'filter':
                    CheckFilter(
                        'issues_type',
                        IssuesType.objects.filter(
                            project_id=project_id).values_list('id', 'title'),
                        request)
                },
                {
                    'title': '状态',
                    'filter': CheckFilter('status', Issues.STATUS_CHOICES,
                                          request)
                },
                {
                    'title':
                    '优先级',
                    'filter':
                    CheckFilter('priority', Issues.PRIORITY_CHOICES, request)
                },
                {
                    'title': '指派者',
                    'filter': SelectFilter('assign', project_total_user,
                                           request)
                },
                {
                    'title':
                    '关注者',
                    'filter':
                    SelectFilter('attention', project_total_user, request)
                },
            ]
        }
        return render(request, 'web/issues.html', context)

    if request.method == "POST":
        form = IssuesModelForm(request, data=request.POST)

        if form.is_valid():
            # 添加问题数据
            form.instance.project = request.tracer.project
            form.instance.create_user = request.tracer.user

            form.save()

            return JsonResponse({'code': 200})

        return JsonResponse({'msg': form.errors, 'code': 416})
예제 #14
0
def issues(request, project_id):
    if request.method == 'GET':
        # 根据URL携带的参数做筛选。URL类似:?status=1&status&=2&issues_type=1

        allow_filter_name = [
            'issues_type', 'status', 'priority', 'assign', 'attention'
        ]
        condition = {}
        for name in allow_filter_name:
            value_list = request.GET.get(name)
            if value_list:
                condition['{}__in'.format(name)] = value_list
        queryset = models.Issues.objects.filter(project_id=project_id).filter(
            **condition)
        # 分页获取数据
        page_object = Pagination(
            current_page=request.GET.get('page'),
            all_count=queryset.count(),
            base_url=request.path_info,
            query_params=request.GET,
            per_page=5,
        )
        issues_obj_list = queryset[page_object.start:page_object.end]

        form = IssuesModelForm(request)

        project_issues_type = models.IssuesType.objects.filter(
            project_id=project_id).values_list('id', 'title')

        project_total_user = [(request.lxyker.project.creator_id,
                               request.lxyker.project.creator.username)]
        join_user = models.ProjectUser.objects.filter(
            project_id=project_id).values_list('user_id', 'user__username')
        project_total_user.extend(join_user)

        invite_form = InviteModelForm()

        context = {
            'invite_form':
            invite_form,
            'form':
            form,
            'issues_obj_list':
            issues_obj_list,
            'page_html':
            page_object.page_html(),
            'filter_list': [
                {
                    'title':
                    '问题类型',
                    'filter':
                    CheckFilter('issues_type', project_issues_type, request),
                },
                {
                    'title':
                    '状态',
                    'filter':
                    CheckFilter('status', models.Issues.status_choices,
                                request),
                },
                {
                    'title':
                    '优先级',
                    'filter':
                    CheckFilter('priority', models.Issues.priority_choices,
                                request),
                },
                {
                    'title': '指派者',
                    'filter': SelectFilter('assign', project_total_user,
                                           request),
                },
                {
                    'title':
                    '关注者',
                    'filter':
                    SelectFilter('attention', project_total_user, request),
                },
            ],
        }
        return render(request, 'web/issues.html', context)

    form = IssuesModelForm(request, data=request.POST)
    if form.is_valid():
        # 数据校验无误
        form.instance.project = request.lxyker.project
        form.instance.creator = request.lxyker.user
        form.save()
        return JsonResponse({'status': True})
    return JsonResponse({'status': False, 'error': form.errors})
예제 #15
0
def issues(request, project_id):
    """ 问题展示及添加 """
    if request.method == 'GET':
        # 筛选条件(根据用户通过GET传过来的参数
        allow_filter_list = [
            'issues_type', 'status', 'priority', 'assign', 'attention'
        ]
        condition = {}
        for name in allow_filter_list:
            value_list = request.GET.getlist(name)  # 获取所有的值 [1,2,3]
            if not value_list:
                continue

            condition['{}__in'.format(name)] = value_list
        queryset = models.Issues.objects.filter(
            project=request.tracer.project).filter(**condition)
        page_object = Pagination(
            current_page=request.GET.get('page'),
            all_count=queryset.count(),
            base_url=request.path_info,
            query_params=request.GET,
        )
        issues_object_list = queryset[page_object.start:page_object.end]
        form = IssuesModelForm(request)

        issues_type_list = models.IssuesType.objects.filter(
            project_id=project_id).values_list('id', 'title')

        project_total_user = [
            (request.tracer.project.creator_id,
             request.tracer.project.creator.username),
        ]
        project_join_user = models.ProjectUser.objects.filter(
            project_id=project_id).values_list('user_id', 'user__username')

        project_total_user.extend(project_join_user)

        invite_form = InviteModelForm()
        content = {
            'form':
            form,
            'invite_form':
            invite_form,
            'issues_object_list':
            issues_object_list,
            'page_html':
            page_object.page_html(),
            'filter_list': [
                {
                    'title': '问题类型',
                    'filter': CheckFilter('issues_type', issues_type_list,
                                          request)
                },
                {
                    'title':
                    '状态',
                    'filter':
                    CheckFilter('status', models.Issues.status_choices,
                                request)
                },
                {
                    'title':
                    '优先级',
                    'filter':
                    CheckFilter('priority', models.Issues.priority_choices,
                                request)
                },
                {
                    'title': '指派者',
                    'filter': SelectFilter('assign', project_total_user,
                                           request)
                },
                {
                    'title':
                    '关注者',
                    'filter':
                    SelectFilter('attention', project_total_user, request)
                },
            ],
        }
        return render(request, 'issues.html', content)

    form = IssuesModelForm(request, data=request.POST)
    if form.is_valid():
        form.instance.project = request.tracer.project
        form.instance.creator = request.tracer.user
        # 添加问题
        form.save()
        return JsonResponse({'status': True})
    return JsonResponse({'status': False, 'error': form.errors})