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})
#!/usr/bin/python3
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 })
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 })
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":"用户列表",})
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})