diff --git a/app_admin/urls.py b/app_admin/urls.py index 31e9c14..f4021c8 100644 --- a/app_admin/urls.py +++ b/app_admin/urls.py @@ -12,6 +12,7 @@ urlpatterns = [ path('modify_pwd',views.change_pwd,name="modify_pwd"), # 普通用户修改密码 path('project_manage/',views.admin_project,name='project_manage'), # 文集管理 path('project_role_manage//',views.admin_project_role,name="admin_project_role"), # 管理文集权限 + path('project_manage_istop',views.admin_project_istop,name="admin_project_istop"), # 修改文集置顶状态 path('doc_manage/',views.admin_doc,name='doc_manage'), # 文档管理 path('doctemp_manage/',views.admin_doctemp,name='doctemp_manage'), # 文档模板管理 path('setting/',views.admin_setting,name="sys_setting"), # 应用设置 diff --git a/app_admin/views.py b/app_admin/views.py index 4c8cc41..c580622 100644 --- a/app_admin/views.py +++ b/app_admin/views.py @@ -4,6 +4,7 @@ from django.http.response import JsonResponse,HttpResponse,Http404 from django.contrib.auth import authenticate,login,logout # 认证相关方法 from django.contrib.auth.models import User # Django默认用户模型 from django.contrib.auth.decorators import login_required # 登录需求装饰器 +from django.views.decorators.http import require_http_methods,require_GET,require_POST # 视图请求方法装饰器 from django.core.paginator import Paginator,PageNotAnInteger,EmptyPage,InvalidPage # 后端分页 from app_admin.decorators import superuser_only,open_register from django.core.exceptions import ObjectDoesNotExist @@ -402,6 +403,7 @@ def admin_project(request): 'role': project.role, 'role_value': project.role_value, 'colla_total': ProjectCollaborator.objects.filter(project=project).count(), + 'is_top':project.is_top, 'create_user':project.create_user.username, 'create_time': project.create_time, 'modify_time': project.modify_time @@ -449,6 +451,23 @@ def admin_project_role(request,pro_id): else: return Http404 +# 后台管理 - 控制文集置顶状态 +@superuser_only +@require_POST +def admin_project_istop(request): + try: + project_id = request.POST.get('id') + is_top = request.POST.get('is_top') + if is_top == 'true': + is_top = True + else: + is_top = False + Project.objects.filter(id=project_id).update(is_top=is_top) + return JsonResponse({'status':True}) + except: + logger.exception("置顶文集出错") + return JsonResponse({'status':False,'data':'执行出错'}) + # 后台管理 - 文档管理 @superuser_only diff --git a/app_doc/migrations/0038_project_is_top.py b/app_doc/migrations/0038_project_is_top.py new file mode 100644 index 0000000..66c8c8a --- /dev/null +++ b/app_doc/migrations/0038_project_is_top.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.12 on 2021-01-31 16:24 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('app_doc', '0037_mycollect'), + ] + + operations = [ + migrations.AddField( + model_name='project', + name='is_top', + field=models.BooleanField(default=False, verbose_name='是否置顶'), + ), + ] diff --git a/app_doc/models.py b/app_doc/models.py index ff55596..a4b7ce1 100644 --- a/app_doc/models.py +++ b/app_doc/models.py @@ -13,6 +13,7 @@ class Project(models.Model): is_watermark = models.BooleanField(verbose_name="水印状态",default=False) watermark_type = models.IntegerField(verbose_name="水印类型",default=1) # 1表示文字水印 2表示图片水印 watermark_value = models.CharField(verbose_name="水印内容",null=True,blank=True,default='',max_length=250) + is_top = models.BooleanField(verbose_name="是否置顶",default=False) create_user = models.ForeignKey(User,on_delete=models.CASCADE) create_time = models.DateTimeField(auto_now_add=True) modify_time = models.DateTimeField(auto_now=True) diff --git a/app_doc/views.py b/app_doc/views.py index 2e3256c..3efdeee 100644 --- a/app_doc/views.py +++ b/app_doc/views.py @@ -169,34 +169,36 @@ def project_list(request): Q(role=2,role_value__contains=str(request.user.username)) | \ Q(create_user=request.user) | \ Q(id__in=colla_list) - ).order_by("{}create_time".format(sort_str)) + ).order_by('-is_top',"{}create_time".format(sort_str)) # 没有搜索 and 认证用户 and 有筛选 elif (is_kw is False ) and (is_auth) and (is_role): if role in ['0',0]: - project_list = Project.objects.filter(role=0).order_by("{}create_time".format(sort_str)) + project_list = Project.objects.filter(role=0).order_by('-is_top',"{}create_time".format(sort_str)) elif role in ['1',1]: - project_list = Project.objects.filter(create_user=request.user,role=1).order_by("{}create_time".format(sort_str)) + project_list = Project.objects.filter(create_user=request.user,role=1).order_by( + '-is_top',"{}create_time".format(sort_str)) elif role in ['2',2]: - project_list = Project.objects.filter(role=2,role_value__contains=str(request.user.username)).order_by("{}create_time".format(sort_str)) + project_list = Project.objects.filter(role=2,role_value__contains=str(request.user.username)).order_by( + '-is_top',"{}create_time".format(sort_str)) elif role in ['3',3]: - project_list = Project.objects.filter(role=3).order_by("{}create_time".format(sort_str)) + project_list = Project.objects.filter(role=3).order_by('-is_top',"{}create_time".format(sort_str)) elif role in ['99',99]: colla_list = [i.project.id for i in ProjectCollaborator.objects.filter(user=request.user)] # 用户的协作文集列表 - project_list = Project.objects.filter(id__in=colla_list).order_by("{}create_time".format(sort_str)) + project_list = Project.objects.filter(id__in=colla_list).order_by('-is_top',"{}create_time".format(sort_str)) else: return render(request,'404.html') # 没有搜索 and 游客 and 没有筛选 elif (is_kw is False) and (is_auth is False) and (is_role is False): - project_list = Project.objects.filter(role__in=[0,3]).order_by("{}create_time".format(sort_str)) + project_list = Project.objects.filter(role__in=[0,3]).order_by('-is_top',"{}create_time".format(sort_str)) # 没有搜索 and 游客 and 有筛选 elif (is_kw is False) and (is_auth is False) and (is_role): if role in ['0',0]: - project_list = Project.objects.filter(role=0).order_by("{}create_time".format(sort_str)) + project_list = Project.objects.filter(role=0).order_by('-is_top',"{}create_time".format(sort_str)) elif role in ['3',3]: - project_list = Project.objects.filter(role=3).order_by("{}create_time".format(sort_str)) + project_list = Project.objects.filter(role=3).order_by('-is_top',"{}create_time".format(sort_str)) else: return render(request,'404.html') @@ -210,7 +212,7 @@ def project_list(request): Q(create_user=request.user) | \ Q(id__in=colla_list), Q(name__icontains=kw) | Q(intro__icontains=kw) - ).order_by('{}create_time'.format(sort_str)) + ).order_by('-is_top','{}create_time'.format(sort_str)) # 有搜索 and 认证用户 and 有筛选 elif (is_kw) and (is_auth) and (is_role): @@ -218,29 +220,29 @@ def project_list(request): project_list = Project.objects.filter( Q(name__icontains=kw)|Q(intro__icontains=kw), role=0 - ).order_by("{}create_time".format(sort_str)) + ).order_by('-is_top',"{}create_time".format(sort_str)) elif role in ['1',1]: project_list = Project.objects.filter( Q(name__icontains=kw) | Q(intro__icontains=kw), create_user=request.user - ).order_by("{}create_time".format(sort_str)) + ).order_by('-is_top',"{}create_time".format(sort_str)) elif role in ['2',2]: project_list = Project.objects.filter( Q(name__icontains=kw) | Q(intro__icontains=kw), role=2, role_value__contains=str(request.user.username) - ).order_by("{}create_time".format(sort_str)) + ).order_by('-is_top',"{}create_time".format(sort_str)) elif role in ['3',3]: project_list = Project.objects.filter( Q(name__icontains=kw) | Q(intro__icontains=kw), role=3 - ).order_by("{}create_time".format(sort_str)) + ).order_by('-is_top',"{}create_time".format(sort_str)) elif role in ['99',99]: colla_list = [i.project.id for i in ProjectCollaborator.objects.filter(user=request.user)] # 用户的协作文集列表 project_list = Project.objects.filter( Q(name__icontains=kw) | Q(intro__icontains=kw), id__in=colla_list - ).order_by("{}create_time".format(sort_str)) + ).order_by('-is_top',"{}create_time".format(sort_str)) else: return render(request,'404.html') @@ -249,7 +251,7 @@ def project_list(request): project_list = Project.objects.filter( Q(name__icontains=kw) | Q(intro__icontains=kw), role__in=[0, 3] - ).order_by("{}create_time".format(sort_str)) + ).order_by('-is_top',"{}create_time".format(sort_str)) # 有搜索 and 游客 and 有筛选 elif (is_kw) and (is_auth is False) and (is_role): @@ -257,12 +259,12 @@ def project_list(request): project_list = Project.objects.filter( Q(name__icontains=kw) | Q(intro__icontains=kw), role=0 - ).order_by("{}create_time".format(sort_str)) + ).order_by('-is_top',"{}create_time".format(sort_str)) elif role in ['3',3]: project_list = Project.objects.filter( Q(name__icontains=kw) | Q(intro__icontains=kw), role=3 - ).order_by("{}create_time".format(sort_str)) + ).order_by('-is_top',"{}create_time".format(sort_str)) else: return render(request,'404.html') @@ -2016,7 +2018,6 @@ def report_md(request): def genera_project_file(request): report_type = request.POST.get('types',None) # 获取前端传入到导出文件类型参数 # 导出EPUB文件 - pro_id = request.POST.get('pro_id') try: project = Project.objects.get(id=int(pro_id)) @@ -2136,6 +2137,7 @@ def genera_project_file(request): return JsonResponse({'status': True, 'data': pdf_file}) except Exception as e: + logger.exception("生成出错") return JsonResponse({'status': False, 'data': '生成出错'}) else: return JsonResponse({'status': False, 'data': '不支持的类型'}) diff --git a/template/app_admin/admin_project.html b/template/app_admin/admin_project.html index cd2c160..3b74ae1 100644 --- a/template/app_admin/admin_project.html +++ b/template/app_admin/admin_project.html @@ -80,6 +80,14 @@ {{layui.util.toDateString(d.create_time, "yyyy-MM-dd HH:mm:ss")}} {% endverbatim %} + + + + {% endblock %} {% block custom_script %} {% endblock %} \ No newline at end of file diff --git a/template/app_doc/pro_list.html b/template/app_doc/pro_list.html index 8775803..5b4b2fc 100644 --- a/template/app_doc/pro_list.html +++ b/template/app_doc/pro_list.html @@ -14,6 +14,7 @@ {% if site_name != None and site_name != '' %}{{site_name}} {% else %}{% trans "站点标题" %}{% endif %} - {% if site_sub_name != None %}{{site_sub_name}} {% else %}{% trans "又一个MrDoc站点" %}{% endif %} +