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)
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})
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
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())
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())
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})
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)
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)
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})
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})
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})
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)
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})
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})
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})