Django应用程序,要求用户接受服务条款。

django-legal的Python项目详细描述


这个django应用程序增加了对版本化服务条款的支持。

安装

  1. 使用pip安装:

    $ pip install django-legal
    
  2. legal添加到INSTALLED_APPS设置中。

  3. (可选)添加新设置:LEGAL_TOS_NAME = 'terms_of_service'

  4. 用以下命令更新urls.py

    url(r'^legal/', include('legal.urls')),
    
  5. 创建新的协议和协议版本(最好通过数据迁移):

    # -*- 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')

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Clojure关键字在内存中的大小是多少?   Java中有固定长度的通用数组对象吗?   PostgreSQL:通过Java更新我的用户表   错误:使用java解析xml   java Json显示列表中对象的名称   java比较JodaTime时区   与JAVA中的API和包的区别?   java的int值在for循环中不改变   谷歌应用引擎中的java RSA   迁移到spring 5后出现java非法字符错误   java Websphere管理控制台不工作   JavaGSON如何始终在json中包含毫秒?   带有空格和双引号的windows Java ProcessBuilder命令参数失败   java错误:重复的zip条目[43.jar:org/apache/http/annotation/NotThreadSafe.class]