Django应用程序,用于要求用户接受服务条款。
项目描述
此Django应用程序添加了对版本化服务条款的支持。
安装
使用pip安装
$ pip install django-legal
将 legal 添加到您的 INSTALLED_APPS 设置中。
(可选) 添加一个新的设置:LEGAL_TOS_NAME = 'terms_of_service'
更新 urls.py 如下
url(r'^legal/', include('legal.urls')),
创建一个新的协议和协议版本(理想情况下通过数据迁移)
# -*- coding: utf-8 -*- import os from south.v2 import DataMigration # This should be the same value as LEGAL_TOS_NAME (if you overrode it) AGREEMENT_NAME = 'tos' class Migration(DataMigration): def forwards(self, orm): agreement, created = orm['legal.Agreement'].objects.get_or_create(name=AGREEMENT_NAME) # This file should live in the same directory as the migration f = open('%s/tos_content_2013_08_01.html' % os.path.dirname(__file__), 'r') orm['legal.AgreementVersion'].objects.create(agreement=agreement, date='2013-08-01', content=f.read()) def backwards(self, orm): agreement = orm['legal.Agreement'].objects.get(name=AGREEMENT_NAME) agreement.delete() models = { 'legal.agreement': { 'Meta': {'object_name': 'Agreement'}, 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), 'name': ( 'django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'}) }, 'legal.agreementversion': { 'Meta': {'ordering': "['-date']", 'unique_together': "(('agreement', 'date'),)", 'object_name': 'AgreementVersion'}, 'agreement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['legal.Agreement']"}), 'content': ('django.db.models.fields.TextField', [], {}), 'date': ('django.db.models.fields.DateTimeField', [], {}), 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) } } # Change this to be the name of the app where the migration lives complete_apps = ['my-app'] symmetrical = True
测试此应用程序
包含修改后的 manage.py 和Django设置文件,用于测试此应用程序
$ python manage.py test
测试您的应用程序
您可能会发现中间件对您的测试有点过度,因为它要求您创建一个协议和版本,并代表您的测试用户接受协议。如果您想禁用中间件,请将以下内容添加到您的设置中
if 'test' in sys.argv: MIDDLEWARE_CLASSES = list(MIDDLEWARE_CLASSES) MIDDLEWARE_CLASSES.remove('legal.middleware.TermsOfServiceAcceptanceMiddleware')