一个django应用程序,将组与需要登录成员同意的条款关联起来。
django-letsagree的Python项目详细描述
<<<<<
<<<<<<<
让我们同意
功能
- 在"
deque
-style"中,使用maxlen=1
- 每个组术语关联,每个用户术语接受用户所属的每个组。
- 对于每个登录的用户,每个请求或每天最多查询1次。
- 多语言就绪。
- 每个用户都可以在任何时候撤销同意。
关于
django letsagree
是遵循《欧盟通用数据保护条例》(GDPR)精神的结果。
登录的用户可以属于一个或多个组。
如果一个或多个组与django letsagree
关联,则将要求作为这些组成员登录的所有用户同意与每个组相关的条款。此操作将记录在数据库中。
与组关联的术语可以更新为新版本。
这样的决定将再次触发一种机制,该机制在允许站点上的任何其他操作之前,要求每个用户的同意。
如果用户未提供同意,则仅允许以下操作:
- 注销。
- 查看并删除提供的所有自己同意的实例。
- 查看所有条款
先决条件
- 巨蟒3.5、3.6、3.7
- Django 2.1,2.2
- django管理站点(在django中默认启用)
- django会话(在django中默认启用)
- 一个支持窗口函数的数据库
django翻译字段
安装
pip安装django letsagree
项目/设置.py
INSTALLED_APPS=[...'letsagree.apps.LetsagreeConfig',...]MIDDLEWARE=[...'letsagree.middleware.LetsAgreeMiddleware',# Near the end of the list...]
django letsagree
本身不附带任何迁移。建议 在项目中为其模型添加迁移,并避免使用 word迁移
作为文件夹的名称。相关的django设置是
迁移模块
。 在下面的示例中,我们将创建一个名为3p_migrations的文件夹 在
settings.py
所在的主项目文件夹中。如果您想使用新文件夹,请不要忘记在其中创建一个空的
\uu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuy
。项目/设置.py:
MIGRATION_MODULES={'letsagree':'project.3p_migrations.letsagree',}
- 确保按照翻译部分中的说明正确设置语言。
默认实现将创建为许多字段因为默认设置了
语言的数量
django。
./manage.pymakemigrationsletsagree./manage.pymigrate
- 确保按照翻译部分中的说明正确设置语言。
默认实现将创建为许多字段因为默认设置了
project/url.py:
urlpatterns=[...path('path/to/letsagree/',include('letsagree.urls')),...]
设置
默认设置
LETSAGREE_CACHE=FalseLETSAGREE_CSS={}LETSAGREE_JS=()LETSAGREE_LOGOUT_APP_NAME='admin'LETSAGREE_BROWSER_TITLE=''LETSAGREE_BORDER_HEADER=''
< A/>
数据库查询
中间件为每个请求生成一个数据库查询,以确保用户已同意与其所属组相关的所有条款。
如果letsagree_cache=true
,将使用django的缓存框架并且中间件每24小时只生成一个数据库查询。
默认情况下不启用Letsagree_缓存为每个用户设置唯一的id 提示:django hashid field是一个隐藏唯一id < A/> 注意你的语言! 默认情况下, 此列表的第一个条目被视为"默认语言"。相关的数据库字段标记为 与 尽管 示例: 模型 一个好的起点可能是由django letsagree提供的默认css文件: 设置.py: 当然,可以完全覆盖模板。
在这种情况下,请记住,如果 其格式为 注销链接默认为 您有责任将每个新用户分配给与django letsagree相关联的组。该组至少应包括 如果将 如果术语的两个实例与同一组关联,则最后保存的实例是最新版本。所有登录的用户都必须提供此最新版本的许可,而不必考虑他们可能已经或尚未就与此组相关的条款提供的任何先前许可。 要运行测试套件,您需要: 不幸的是,测试套件相当复杂。对不起的! 1.0.1:增加了travis、coverage、lgtm、pyup ciid
s而不影响其唯一性的库。
翻译
数据库
lestage
安装django-translated-fields
以满足翻译项的
标题
、摘要
和内容
字段的需要。此库将为列表中的每个条目创建单独的字段。blank=false
,并用作回退值。如果请求语言的条目不存在,则返回此值。语言
列表中其他语言相关的所有其他字段都标记为blank=true
并且可以保持为空。语言代码
设置与letsagree
或django翻译字段
没有直接关系,但建议匹配FIR语言设置中的ST语言。
LANGUAGES=(('fr','French'),('en','English'))LANGUAGE_CODE='fr'
术语
将包括以下字段:{'title_fr':{'blank':False},'title_en':{'blank':True},'summary_fr':{'blank':False},'summary_en':{'blank':True},'content_fr':{'blank':False},'content_en':{'blank':True},}
字符串
django letsagree
中的所有字符串都用以下允许翻译的方式之一进行标记:django.utils.translation.gettext_lazy('<;string>;')
{%trans"<;string>;"%}
自定义表单资产
django letsagree
使用扩展admin/index.html的
letsagree/pending.html
模板。通过formview
这个模板接收一个formset
它包括所有应该得到用户同意的条款。
letsagree_css
和letsagree_js
设置时,将相关资产传递到表单的
media
类中,作为上述表单集的基础。语法在相关的django文档中有描述。LETSAGREE_CSS={'all':('letsagree/letsagree.css',)}
{{empty{u form}
为false,则{{form}
包含一个表单集。其他设置
Letsagree_logout_a p p_name
:两个模板的右上角都会出现一个注销链接。反向(<;letsagree_logout_app_name>;:logout)
reverse('admin:logout')
letsagree_browser_title
:默认模板的标题。letsagree_border_header
:将出现在默认模板左上角的文本。< A/>
权限
delete_notarypublic
权限,以防用户选择撤销他的同意。django letsagree
模型的所有权限委托给一个组,下表说明了允许用户执行的操作,其中是工作人员=true
或是超级用户=true
: < /广告><正文>操作 超级用户自己的条目 超级用户其他条目 管理员用户自己的条目 管理员用户其他条目 查看术语 正确 正确 正确 正确 添加术语 正确 正确 更改术语 错误 错误 错误 错误 删除术语 错误 错误 错误 错误 查看公证人 正确 正确 正确 错误 添加"公证人" 错误 错误 更改公证人 错误 错误 错误 错误 删除公证人 正确 错误 正确 错误 < A/>
新术语版本
django letsagree
考虑登录用户是否只为与所属组关联的每个术语的最新版本提供了同意。如果没有,用户只能注销或访问django letsagree
管理页,保留删除其提供的任何同意实例的权利。测试
tox-db-u-name
,tox-db-u-user
,tox-db-u-passwd
覆盖范围:未测试
更改日志
推荐PyPI第三方库