优化了文档和一些配置

This commit is contained in:
yangjian 2020-01-15 21:03:44 +08:00
parent a9e5030b8c
commit 79f64bb91c
13 changed files with 173 additions and 16 deletions

View File

@ -1,5 +1,12 @@
## 版本更新记录
### v0.2.8 2020-01-15
- 文档页添加上一篇文档和下一篇文档链接;
- 优化文集样式,私密文集会在首页和文集、文档页使用锁图标标识;
- 优化文档搜索页面样式;
- 在Django调试模式下(DEBUG=True)不启用统计代码和广告代码;
### v0.2.7 2020-01-01
- 添加文件权限控制功能支持公开、私密、指定用户可见、访问码可见4中权限模式

View File

@ -25,7 +25,7 @@ SECRET_KEY = '5&71mt9@^58zdg*_!t(x6g14q*@84d%ptr%%s6e0l50zs0we3d'
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False
VERSIONS = '0.2.7'
VERSIONS = '0.2.8'
ALLOWED_HOSTS = ['*']

View File

@ -11,7 +11,7 @@
## 介绍
基于Python的一个简单文档写作系统。
当前版本为:**v0.2.7**,版本发布时间为**2020-01-01**,更新记录详见:[CHANGES.md](./CHANGES.md)
当前版本为:**v0.2.8**,版本发布时间为**2020-01-15**,更新记录详见:[CHANGES.md](./CHANGES.md)
MrDoc拥有以下特点

View File

@ -11,6 +11,8 @@ def sys_setting(request):
setting_dict = dict()
# 设置网站版本
setting_dict['mrdoc_version'] = settings.VERSIONS
# 设置debug状态
setting_dict['debug'] = settings.DEBUG
# 获取系统设置状态
datas = SysSetting.objects.filter(types="basic")
for data in datas:

View File

@ -29,3 +29,14 @@ def open_register(function):
return function(request, *args, **kwargs)
return _inner
# 请求头验证
def check_headers(function):
def _inner(request,*args,**kwargs):
metas = request.META
if 'HTTP_COOKIE' not in metas:
raise Http404
elif 'HTTP_USER_AGENT' not in metas:
raise Http404
return function(request, *args, **kwargs)
return _inner

View File

@ -21,4 +21,98 @@ def get_doc_parent(value):
if int(value) != 0:
return Doc.objects.get(id=int(value))
else:
return '无上级文档'
return '无上级文档'
# 获取文档的下一篇文档
@register.filter(name='get_doc_next')
def get_doc_next(value):
try:
doc_id = value
doc = Doc.objects.get(id=int(doc_id)) # 当前文档
docs = Doc.objects.filter(parent_doc=doc.parent_doc, top_doc=doc.top_doc, status=1).order_by('sort') # 同级所有文档
docs_list = [d.id for d in docs]
subdoc = Doc.objects.filter(parent_doc=doc.id,top_doc=doc.top_doc, status=1) # 获取当前文档的所有子级文档
# 没有下级文档
if subdoc.count() == 0:
# 如果文档为同级最后一个文档,则没有下一篇文档
if docs_list.index(doc.id) == len(docs_list) - 1:
try:
parentdoc = Doc.objects.get(id=doc.parent_doc) # 获取当前文档的上级文档
parents = Doc.objects.filter(parent_doc=parentdoc.parent_doc, top_doc=doc.top_doc, status=1).order_by('sort') # 获取上级文档的所有同级文档
parent_list = [d.id for d in parents]
except:
return None
if parent_list.index(parentdoc.id) == len(parent_list) - 1:
# 获取上级文档的上一级文档
try:
parentdoc2 = Doc.objects.get(id=parentdoc.parent_doc)
parents2 = Doc.objects.filter(parent_doc = parentdoc2.parent_doc,top_doc=parentdoc.top_doc,status=1).order_by('sort')
parent_list2 = [d.id for d in parents2]
except:
return None
if parent_list2.index(parentdoc2.id) == len(parent_list2) - 1:
next_doc = None
return next_doc
else:
next_id = parent_list2[parent_list2.index(parentdoc2.id) + 1]
return next_id
else:
next_id = parent_list[parent_list.index(parentdoc.id) + 1]
return next_id
else:
next_id = docs_list[docs_list.index(doc.id) + 1]
next_doc = Doc.objects.get(id=next_id)
# print("下一篇:", next_doc.id, next_doc)
return next_doc.id
# 存在下级文档
else:
# 下一篇文档为下级第一篇文档
next_doc = subdoc.order_by('sort')[0]
# print("下一篇:", next_doc.id, next_doc)
return next_doc.id
except Exception as e:
import traceback
print(traceback.print_exc())
# 获取文档的上一篇文档
@register.filter(name='get_doc_previous')
def get_doc_previous(value):
try:
doc_id = value
doc = Doc.objects.get(id=int(doc_id)) # 当前文档
docs = Doc.objects.filter(parent_doc=doc.parent_doc,top_doc=doc.top_doc,status=1).order_by('sort') # 同级所有文档
docs_list = [d.id for d in docs]
# 文档为同级中的第一个,
if docs_list.index(doc.id) == 0:
# 如果其为顶级文档,那么没有上一篇文档,
if doc.parent_doc == 0:
# print("无上一篇文档")
previous = None
return previous
# 如果其为次级文档,那么其上一篇文档为上级文档
else:
previous = Doc.objects.get(id=doc.parent_doc) # 获取
# print("上一篇:", previous.id, previous)
return previous.id
# 文档为同级中的非第一个,那么上一篇为索引号的前一个文档
else:
previou_id = docs_list[docs_list.index(doc.id) - 1] # 获取前一个文档的ID
previous = Doc.objects.get(id=previou_id) # 获取前一个文档
# 查询以此文档为上级的文档
previous_subdoc = Doc.objects.filter(parent_doc=previous.id,top_doc=doc.top_doc,status=1).order_by('-sort')
# 如果没有文档以此文档为上级文档,那么为上一篇文档
if previous_subdoc.count() == 0:
return previou_id
else:# 否则,上一篇文档为以此文档作为上级文档的文档里面的最后一篇文档
previous = previous_subdoc[:1][0]
parent_list = Doc.objects.filter(parent_doc=previous.id,top_doc=doc.top_doc,status=1).order_by('-sort')
if parent_list.count() == 0:
return previous.id
else:
previous = parent_list[:1][0]
return previous.id
except Exception as e:
import traceback
print(traceback.print_exc())

View File

@ -11,6 +11,7 @@ from django.db.models import Q
import datetime
import traceback
from app_doc.report_utils import *
from app_admin.decorators import check_headers
# 文集列表
@ -53,6 +54,7 @@ def create_project(request):
# 文集页
@require_http_methods(['GET'])
@check_headers
def project_index(request,pro_id):
# 获取文集
try:

View File

@ -223,7 +223,7 @@ body, html {
background: #fff;
border-bottom: 1px solid rgba(0,0,0,.07);
border-top: 1px solid rgba(0,0,0,.07);
/*margin-bottom: 10px;*/
border-radius:9px;
margin-top: -1px;
}
.doc-summary ul.summary {

View File

@ -40,7 +40,7 @@
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">统计代码</label>
<div class="layui-input-block">
<textarea name="static_code" placeholder="如果需要调用第三方的统计功能,请将第三方统计工具代码输入至此,可以包含<script>标签" class="layui-textarea"></textarea>
<textarea name="static_code" placeholder="如果需要调用第三方的统计功能,请将第三方统计工具代码输入至此,可以包含<script>标签" class="layui-textarea">{{static_code}}</textarea>
</div>
</div>

View File

@ -33,4 +33,24 @@
}
</style>
<textarea id="" style="display: none;">{{ doc.pre_content }}</textarea>
{% endblock %}
{% block doc_previous_next %}
{% load doc_filter %}
<div class="layui-row" style="margin-top: 10px;padding:10px;display:flex;justify-content:space-around;">
<div>
{% if doc.id|get_doc_previous == None %}
<button class="layui-btn layui-btn-disabled layui-btn-sm"><i class="layui-icon layui-icon-prev "></i>上一篇</button>
{% else %}
<a href="{% url 'doc' doc.top_doc doc.id|get_doc_previous %}" class="layui-btn layui-btn-normal layui-btn-sm"><i class="layui-icon layui-icon-prev "></i>上一篇</a>
{% endif %}
</div>
<div>
{% if doc.id|get_doc_next == None %}
<button class="layui-btn layui-btn-disabled layui-btn-sm">下一篇<i class="layui-icon layui-icon-next"></i></button>
{% else %}
<a href="{% url 'doc' doc.top_doc doc.id|get_doc_next %}" class="layui-btn layui-btn-normal layui-btn-sm">下一篇<i class="layui-icon layui-icon-next"></i></a>
{% endif %}
</div>
</div>
{% endblock %}

View File

@ -45,7 +45,11 @@
</form>
<!-- 文集名称 -->
<div class="project-title">
<a href="{% url 'pro_index' pro_id=project.id %}">{{ project.name }}</a>
<a href="{% url 'pro_index' pro_id=project.id %}">{{ project.name }}
{% if project.role == 1 %}
<i class="layui-icon layui-icon-password"></i>
{% endif %}
</a>
</div>
<hr>
<!-- 遍历文集大纲 -->
@ -89,7 +93,7 @@
</ul>
</nav>
<div class="bq">
<a href="" class="mrdoc-link">本文档使用MrDoc发布</a>
<a href="https://gitee.com/zmister/MrDoc" target="_blank" class="mrdoc-link">本文档使用MrDoc发布</a>
</div>
</div>
<!-- 左侧目录栏结束 -->
@ -132,10 +136,13 @@
{% endblock %}
<!-- 广告代码开始 -->
{% if ad_code %}
<div class="ad-code">
{{ ad_code | safe }}
</div>
{% if debug %}
{% else %}
{% if ad_code %}
<div class="ad-code">
{{ ad_code | safe }}
</div>
{% endif %}
{% endif %}
<!-- 广告代码结束 -->
</div>
@ -151,6 +158,7 @@
<div class="doc-cata">
<div id="toc-container"></div>
</div>
{% block doc_previous_next %}{% endblock %}
<!-- 社交分享 -->
<div class="share-div" style="margin-top: 10px;padding:10px;text-align: center;background-color: #fafafa">
分享到:<span class="social-share"></span>
@ -342,7 +350,10 @@
</script>
<!-- 统计代码开始 -->
{{ static | safe }}
{% if debug %}
{% else %}
{{ static_code | safe }}
{% endif %}
<!-- 统计代码结束 -->
{% endblock %}
</body>

View File

@ -26,7 +26,14 @@
<a href="{% url 'pro_index' p.id %}">
<div class="layui-card">
<div class="layui-card-header">
<strong>{{ p.name }}</strong>
{% if p.role == 1 %}
<strong><i class="layui-icon layui-icon-password"></i> {{ p.name }}</strong>
{% elif p.role == 2 %}
<strong><i class="layui-icon layui-icon-user"></i> {{ p.name }}</strong>
{% else %}
<strong>{{ p.name }}</strong>
{% endif %}
</div>
<div class="layui-card-body">
<p>作者:{{p.create_user}}</p>
@ -151,7 +158,10 @@
};
</script>
<!-- 统计代码开始 -->
{{ static | safe }}
{% if debug %}
{% else %}
{{ static_code | safe }}
{% endif %}
<!-- 统计代码结束 -->
{% endblock %}
</body>

View File

@ -3,7 +3,7 @@
<!-- 引入静态文件 -->
{% load staticfiles %}
{% block title %}搜索{{kw}}结果 - {{ project.name }}{% endblock %}
{% block title %}搜索{{kw}}”的结果 - {{ project.name }}{% endblock %}
{% block head_toolbar %}
{% if request.user == project.create_user %}
@ -14,7 +14,7 @@
{% endblock %}
{% block content_head %}
<h1>搜索{{kw}}共有{{ search_result.count }}个结果 - {{project.name}}</h1><hr>
<h1>搜索{{kw}}共有{{ search_result.count }}个结果 - {{project.name}}</h1><hr>
{% endblock %}
{% block page_content %}