예제 #1
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']
        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})
예제 #2
0
#!/usr/bin/python3
예제 #3
0
def index(request, *args, **kwargs):
    """
    公共 首页
    :param request:
    :return:
    """

    article_type_list = models.Article.type_choices

    if kwargs:
        # 获取文章列表 按时间排序倒序
        article_list = models.Article.objects \
            .filter(**kwargs) \
            .order_by('-create_time') \
            .values('title', 'summary', 'create_time', 'category__title', 'comment_count')

        article_count = article_list.count()
        page_info = Pagination(current_page=request.GET.get('page'),
                               data_count=article_count,
                               per_page_count=5,
                               pager_num=5)

        # 最新评论文章
        article_comment_list = models.Comment.objects \
                                   .filter(article__article_type_id=kwargs['article_type_id']) \
                                   .order_by('-create_time') \
                                   .values('article__title', 'article__summary', 'article__create_time')[0:10]

        article_list = article_list[page_info.start:page_info.end]
    else:
        article_list = models.Article.objects \
            .all() \
            .order_by('-create_time') \
            .values('title', 'summary', 'create_time', 'category__title', 'comment_count')
        article_count = article_list.count()
        page_info = Pagination(current_page=request.GET.get('page'),
                               data_count=article_count,
                               per_page_count=5,
                               pager_num=5)

        article_comment_list = models.Comment.objects \
                                   .all() \
                                   .order_by('-create_time') \
                                   .values('article__title', 'article__summary', 'article__create_time')[0:10]

        article_list = article_list[page_info.start:page_info.end]

    article_all = models.Article.objects.all()
    #  查看最多的数据
    article_hot = article_all.aggregate(Max('read_count'))
    article_hot_one = models.Article.objects \
        .filter(read_count=article_hot['read_count__max']) \
        .values('title', 'summary', 'create_time').first()

    # 日志总篇数
    article_sum = article_all.count()

    return render(request=request,
                  template_name='index.html',
                  context={
                      'article_type_list':
                      article_type_list,
                      'article_list':
                      article_list,
                      'page_info':
                      page_info,
                      'page_count_list':
                      [(i + 1) for i in range(page_info.total_count)],
                      'article_comment_list':
                      article_comment_list,
                      'article_hot_one':
                      article_hot_one,
                      'article_sum':
                      article_sum,
                      'article_type_id':
                      int(kwargs['article_type_id'])
                      if kwargs and kwargs['article_type_id'] else 0
                  })
예제 #4
0
def user_list(request):
    page = Pagination(request.GET.get('page', 1), len(user))
    return render(request, 'user_list.html', {
        'user': user[page.start_num:page.end_num],
        'page_html': page.page_html
    })
예제 #5
0
def userlist(request):
    search = request.GET.get("table_search", "")
    users = UserProfile.objects.filter(name__contains=search)
    pager = Pagination(request.GET.get('page', '1'), users.count(), request.GET.copy(), 10)
    return TemplateResponse(request, "userlist.html", {"users": users[pager.start:pager.end], 'page_html': pager.page_html,"page_title":"用户列表",})
예제 #6
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})