[Python-modules-commits] [python-django-otp] 01/07: Import python-django-otp_0.4.0.1.orig.tar.gz

Michael Fladischer fladi at moszumanska.debian.org
Sat Jul 22 13:30:39 UTC 2017


This is an automated email from the git hooks/post-receive script.

fladi pushed a commit to branch master
in repository python-django-otp.

commit 3170ba75d6fa22a5f4b03a90e016a93d4e2b61a6
Author: Michael Fladischer <FladischerMichael at fladi.at>
Date:   Sat Jul 22 14:37:27 2017 +0200

    Import python-django-otp_0.4.0.1.orig.tar.gz
---
 CHANGES                                            |   8 ++
 PKG-INFO                                           |  15 ++--
 README.rst                                         |  10 +--
 django_otp.egg-info/PKG-INFO                       |  15 ++--
 django_otp.egg-info/SOURCES.txt                    |   9 --
 django_otp.egg-info/requires.txt                   |   2 +-
 .../otp_email/south_migrations/0001_initial.py     |  74 ---------------
 .../plugins/otp_email/south_migrations/__init__.py |   0
 .../otp_hotp/south_migrations/0001_initial.py      |  80 -----------------
 .../plugins/otp_hotp/south_migrations/__init__.py  |   0
 .../management/commands/addstatictoken.py          |  13 ++-
 .../otp_static/south_migrations/0001_initial.py    | 100 ---------------------
 .../otp_static/south_migrations/__init__.py        |   0
 .../otp_totp/south_migrations/0001_initial.py      |  91 -------------------
 .../otp_totp/south_migrations/0002_last_t.py       |  82 -----------------
 .../plugins/otp_totp/south_migrations/__init__.py  |   0
 docs/source/conf.py                                |  30 +++++--
 setup.cfg                                          |   1 -
 setup.py                                           |   5 +-
 19 files changed, 51 insertions(+), 484 deletions(-)

diff --git a/CHANGES b/CHANGES
index 1ba8f96..a0a1b43 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,11 @@
+v0.4.0 - July 19, 2017 - Update support matrix
+----------------------------------------------
+
+- Fix addstatictoken on Django 1.10+.
+
+- Drop support for versions of Django that are past EOL.
+
+
 v0.3.14 - May 30, 2017 - addstatictoken fix
 -------------------------------------------
 
diff --git a/PKG-INFO b/PKG-INFO
index 263d3e9..006144f 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,12 +1,14 @@
 Metadata-Version: 1.1
 Name: django-otp
-Version: 0.3.14
+Version: 0.4.0.1
 Summary: A pluggable framework for adding two-factor authentication to Django using one-time passwords.
 Home-page: https://bitbucket.org/psagers/django-otp
 Author: Peter Sagerson
 Author-email: psagers at ignorare.net
 License: BSD
-Description: This project makes it easy to add support for `one-time passwords
+Description: `Package Documentation <http://django-otp-official.readthedocs.io/>`_
+        
+        This project makes it easy to add support for `one-time passwords
         <http://en.wikipedia.org/wiki/One-time_password>`_ (OTPs) to Django. It can be
         integrated at various levels, depending on how much customization is required.
         It integrates with ``django.contrib.auth``, although it is not a Django
@@ -20,13 +22,7 @@ Description: This project makes it easy to add support for `one-time passwords
         <http://tools.ietf.org/html/rfc6238>`_ for convenience, as these are standard
         OTP algorithms used by multiple plugins.
         
-        This version is supported on Python 2.6, 2.7, and 3.3+; and Django >= 1.4.2.
-        
-        .. warning::
-        
-            All plugins now contain both South and Django migrations. If you're using
-            South or upgrading to Django 1.7, please see the `upgrade notes`_ in the
-            documentation first.
+        This version is supported on Python 2.7 and 3.4+; and Django 1.8 and 1.10+.
         
         .. _upgrade notes: https://pythonhosted.org/django-otp/overview.html#upgrading
         
@@ -40,7 +36,6 @@ Classifier: License :: OSI Approved :: BSD License
 Classifier: Programming Language :: Python :: 2
 Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.3
 Classifier: Programming Language :: Python :: 3.4
 Classifier: Programming Language :: Python :: 3.5
 Classifier: Programming Language :: Python :: 3.6
diff --git a/README.rst b/README.rst
index bceb8bc..1883575 100644
--- a/README.rst
+++ b/README.rst
@@ -1,3 +1,5 @@
+`Package Documentation <http://django-otp-official.readthedocs.io/>`_
+
 This project makes it easy to add support for `one-time passwords
 <http://en.wikipedia.org/wiki/One-time_password>`_ (OTPs) to Django. It can be
 integrated at various levels, depending on how much customization is required.
@@ -12,13 +14,7 @@ separately. This package also includes an implementation of OATH `HOTP
 <http://tools.ietf.org/html/rfc6238>`_ for convenience, as these are standard
 OTP algorithms used by multiple plugins.
 
-This version is supported on Python 2.6, 2.7, and 3.3+; and Django >= 1.4.2.
-
-.. warning::
-
-    All plugins now contain both South and Django migrations. If you're using
-    South or upgrading to Django 1.7, please see the `upgrade notes`_ in the
-    documentation first.
+This version is supported on Python 2.7 and 3.4+; and Django 1.8 and 1.10+.
 
 .. _upgrade notes: https://pythonhosted.org/django-otp/overview.html#upgrading
 
diff --git a/django_otp.egg-info/PKG-INFO b/django_otp.egg-info/PKG-INFO
index 263d3e9..006144f 100644
--- a/django_otp.egg-info/PKG-INFO
+++ b/django_otp.egg-info/PKG-INFO
@@ -1,12 +1,14 @@
 Metadata-Version: 1.1
 Name: django-otp
-Version: 0.3.14
+Version: 0.4.0.1
 Summary: A pluggable framework for adding two-factor authentication to Django using one-time passwords.
 Home-page: https://bitbucket.org/psagers/django-otp
 Author: Peter Sagerson
 Author-email: psagers at ignorare.net
 License: BSD
-Description: This project makes it easy to add support for `one-time passwords
+Description: `Package Documentation <http://django-otp-official.readthedocs.io/>`_
+        
+        This project makes it easy to add support for `one-time passwords
         <http://en.wikipedia.org/wiki/One-time_password>`_ (OTPs) to Django. It can be
         integrated at various levels, depending on how much customization is required.
         It integrates with ``django.contrib.auth``, although it is not a Django
@@ -20,13 +22,7 @@ Description: This project makes it easy to add support for `one-time passwords
         <http://tools.ietf.org/html/rfc6238>`_ for convenience, as these are standard
         OTP algorithms used by multiple plugins.
         
-        This version is supported on Python 2.6, 2.7, and 3.3+; and Django >= 1.4.2.
-        
-        .. warning::
-        
-            All plugins now contain both South and Django migrations. If you're using
-            South or upgrading to Django 1.7, please see the `upgrade notes`_ in the
-            documentation first.
+        This version is supported on Python 2.7 and 3.4+; and Django 1.8 and 1.10+.
         
         .. _upgrade notes: https://pythonhosted.org/django-otp/overview.html#upgrading
         
@@ -40,7 +36,6 @@ Classifier: License :: OSI Approved :: BSD License
 Classifier: Programming Language :: Python :: 2
 Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.3
 Classifier: Programming Language :: Python :: 3.4
 Classifier: Programming Language :: Python :: 3.5
 Classifier: Programming Language :: Python :: 3.6
diff --git a/django_otp.egg-info/SOURCES.txt b/django_otp.egg-info/SOURCES.txt
index 97f81d3..816bc13 100644
--- a/django_otp.egg-info/SOURCES.txt
+++ b/django_otp.egg-info/SOURCES.txt
@@ -29,8 +29,6 @@ django_otp/plugins/otp_email/models.py
 django_otp/plugins/otp_email/tests.py
 django_otp/plugins/otp_email/migrations/0001_initial.py
 django_otp/plugins/otp_email/migrations/__init__.py
-django_otp/plugins/otp_email/south_migrations/0001_initial.py
-django_otp/plugins/otp_email/south_migrations/__init__.py
 django_otp/plugins/otp_email/templates/otp/email/token.txt
 django_otp/plugins/otp_hotp/__init__.py
 django_otp/plugins/otp_hotp/admin.py
@@ -38,8 +36,6 @@ django_otp/plugins/otp_hotp/models.py
 django_otp/plugins/otp_hotp/tests.py
 django_otp/plugins/otp_hotp/migrations/0001_initial.py
 django_otp/plugins/otp_hotp/migrations/__init__.py
-django_otp/plugins/otp_hotp/south_migrations/0001_initial.py
-django_otp/plugins/otp_hotp/south_migrations/__init__.py
 django_otp/plugins/otp_hotp/templates/otp_hotp/admin/config.html
 django_otp/plugins/otp_static/__init__.py
 django_otp/plugins/otp_static/admin.py
@@ -51,17 +47,12 @@ django_otp/plugins/otp_static/management/commands/__init__.py
 django_otp/plugins/otp_static/management/commands/addstatictoken.py
 django_otp/plugins/otp_static/migrations/0001_initial.py
 django_otp/plugins/otp_static/migrations/__init__.py
-django_otp/plugins/otp_static/south_migrations/0001_initial.py
-django_otp/plugins/otp_static/south_migrations/__init__.py
 django_otp/plugins/otp_totp/__init__.py
 django_otp/plugins/otp_totp/admin.py
 django_otp/plugins/otp_totp/models.py
 django_otp/plugins/otp_totp/tests.py
 django_otp/plugins/otp_totp/migrations/0001_initial.py
 django_otp/plugins/otp_totp/migrations/__init__.py
-django_otp/plugins/otp_totp/south_migrations/0001_initial.py
-django_otp/plugins/otp_totp/south_migrations/0002_last_t.py
-django_otp/plugins/otp_totp/south_migrations/__init__.py
 django_otp/plugins/otp_totp/templates/otp_totp/admin/config.html
 django_otp/templates/otp/admin14/login.html
 django_otp/templates/otp/admin15/login.html
diff --git a/django_otp.egg-info/requires.txt b/django_otp.egg-info/requires.txt
index 3d48ba4..6bf4f1f 100644
--- a/django_otp.egg-info/requires.txt
+++ b/django_otp.egg-info/requires.txt
@@ -1,4 +1,4 @@
-django >= 1.5.12
+django>=1.8
 
 [qrcode]
 qrcode
diff --git a/django_otp/plugins/otp_email/south_migrations/0001_initial.py b/django_otp/plugins/otp_email/south_migrations/0001_initial.py
deleted file mode 100644
index 0b25562..0000000
--- a/django_otp/plugins/otp_email/south_migrations/0001_initial.py
+++ /dev/null
@@ -1,74 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.utils import datetime_utils as datetime
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
-    def forwards(self, orm):
-        # Adding model 'EmailDevice'
-        db.create_table('otp_email_emaildevice', (
-            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
-            ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])),
-            ('name', self.gf('django.db.models.fields.CharField')(max_length=64)),
-            ('confirmed', self.gf('django.db.models.fields.BooleanField')(default=True)),
-            ('key', self.gf('django.db.models.fields.CharField')(default='14ec9e8ed75e3796a267e835ade15653a34de87b', max_length=80)),
-        ))
-        db.send_create_signal('otp_email', ['EmailDevice'])
-
-
-    def backwards(self, orm):
-        # Deleting model 'EmailDevice'
-        db.delete_table('otp_email_emaildevice')
-
-
-    models = {
-        'auth.group': {
-            'Meta': {'object_name': 'Group'},
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
-            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
-        },
-        'auth.permission': {
-            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
-            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
-            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
-        },
-        'auth.user': {
-            'Meta': {'object_name': 'User'},
-            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
-            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
-            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
-            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
-            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
-            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
-            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
-            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
-            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
-            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
-            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
-        },
-        'contenttypes.contenttype': {
-            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
-            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
-            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
-        },
-        'otp_email.emaildevice': {
-            'Meta': {'object_name': 'EmailDevice'},
-            'confirmed': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'key': ('django.db.models.fields.CharField', [], {'default': "'67fe0bf8279a51ad9c3637462a81b16593caee99'", 'max_length': '80'}),
-            'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
-            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
-        }
-    }
-
-    complete_apps = ['otp_email']
diff --git a/django_otp/plugins/otp_email/south_migrations/__init__.py b/django_otp/plugins/otp_email/south_migrations/__init__.py
deleted file mode 100644
index e69de29..0000000
diff --git a/django_otp/plugins/otp_hotp/south_migrations/0001_initial.py b/django_otp/plugins/otp_hotp/south_migrations/0001_initial.py
deleted file mode 100644
index 2551ad0..0000000
--- a/django_otp/plugins/otp_hotp/south_migrations/0001_initial.py
+++ /dev/null
@@ -1,80 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.utils import datetime_utils as datetime
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
-    def forwards(self, orm):
-        # Adding model 'HOTPDevice'
-        db.create_table('otp_hotp_hotpdevice', (
-            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
-            ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])),
-            ('name', self.gf('django.db.models.fields.CharField')(max_length=64)),
-            ('confirmed', self.gf('django.db.models.fields.BooleanField')(default=True)),
-            ('key', self.gf('django.db.models.fields.CharField')(default='9a205c276225bce9c2801a0ab1eddadb05f5109b', max_length=80)),
-            ('digits', self.gf('django.db.models.fields.PositiveSmallIntegerField')(default=6)),
-            ('tolerance', self.gf('django.db.models.fields.PositiveSmallIntegerField')(default=5)),
-            ('counter', self.gf('django.db.models.fields.BigIntegerField')(default=0)),
-        ))
-        db.send_create_signal('otp_hotp', ['HOTPDevice'])
-
-
-    def backwards(self, orm):
-        # Deleting model 'HOTPDevice'
-        db.delete_table('otp_hotp_hotpdevice')
-
-
-    models = {
-        'auth.group': {
-            'Meta': {'object_name': 'Group'},
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
-            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
-        },
-        'auth.permission': {
-            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
-            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
-            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
-        },
-        'auth.user': {
-            'Meta': {'object_name': 'User'},
-            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
-            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
-            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
-            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
-            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
-            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
-            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
-            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
-            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
-            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
-            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
-        },
-        'contenttypes.contenttype': {
-            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
-            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
-            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
-        },
-        'otp_hotp.hotpdevice': {
-            'Meta': {'object_name': 'HOTPDevice'},
-            'confirmed': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
-            'counter': ('django.db.models.fields.BigIntegerField', [], {'default': '0'}),
-            'digits': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '6'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'key': ('django.db.models.fields.CharField', [], {'default': "'6436c8a792dc6160b5a20d90d57e441762ef3a94'", 'max_length': '80'}),
-            'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
-            'tolerance': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '5'}),
-            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
-        }
-    }
-
-    complete_apps = ['otp_hotp']
\ No newline at end of file
diff --git a/django_otp/plugins/otp_hotp/south_migrations/__init__.py b/django_otp/plugins/otp_hotp/south_migrations/__init__.py
deleted file mode 100644
index e69de29..0000000
diff --git a/django_otp/plugins/otp_static/management/commands/addstatictoken.py b/django_otp/plugins/otp_static/management/commands/addstatictoken.py
index 01de42d..817bcac 100644
--- a/django_otp/plugins/otp_static/management/commands/addstatictoken.py
+++ b/django_otp/plugins/otp_static/management/commands/addstatictoken.py
@@ -9,19 +9,16 @@ from django_otp.plugins.otp_static.lib import get_user_model, add_static_token
 
 
 class Command(BaseCommand):
-    option_list = getattr(BaseCommand, 'option_list', ()) + (
-        make_option('-t', '--token', dest='token', help='The token to add. If omitted, one will be randomly generated.'),
-    )
-    args = '<username>'
     help = fill('Adds a single static OTP token to the given user. '
                 'The token will be added to an arbitrary static device '
                 'attached to the user, creating one if necessary.', width=78)
 
-    def handle(self, *args, **options):
-        if len(args) != 1:
-            raise CommandError('Please specify exactly one username.')
+    def add_arguments(self, parser):
+        parser.add_argument('-t', '--token', dest='token', help='The token to add. If omitted, one will be randomly generated.')
+        parser.add_argument('username', help='The user to which the token will be assigned.')
 
-        username = args[0]
+    def handle(self, *args, **options):
+        username = options['username']
 
         try:
             statictoken = add_static_token(username, options.get('token'))
diff --git a/django_otp/plugins/otp_static/south_migrations/0001_initial.py b/django_otp/plugins/otp_static/south_migrations/0001_initial.py
deleted file mode 100644
index 9fab1ad..0000000
--- a/django_otp/plugins/otp_static/south_migrations/0001_initial.py
+++ /dev/null
@@ -1,100 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.utils import datetime_utils as datetime
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-try:
-    from django.contrib.auth import get_user_model
-except ImportError:
-    from django.contrib.auth.models import User
-else:
-    User = get_user_model()
-
-user_orm_label = '%s.%s' % (User._meta.app_label, User._meta.object_name)
-user_model_label = '%s.%s' % (User._meta.app_label, User._meta.module_name)
-
-
-class Migration(SchemaMigration):
-
-    def forwards(self, orm):
-        # Adding model 'StaticDevice'
-        db.create_table('otp_static_staticdevice', (
-            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
-            ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm[user_orm_label])),
-            ('name', self.gf('django.db.models.fields.CharField')(max_length=64)),
-            ('confirmed', self.gf('django.db.models.fields.BooleanField')(default=True)),
-        ))
-        db.send_create_signal('otp_static', ['StaticDevice'])
-
-        # Adding model 'StaticToken'
-        db.create_table('otp_static_statictoken', (
-            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
-            ('device', self.gf('django.db.models.fields.related.ForeignKey')(related_name='token_set', to=orm['otp_static.StaticDevice'])),
-            ('token', self.gf('django.db.models.fields.CharField')(max_length=16, db_index=True)),
-        ))
-        db.send_create_signal('otp_static', ['StaticToken'])
-
-
-    def backwards(self, orm):
-        # Deleting model 'StaticDevice'
-        db.delete_table('otp_static_staticdevice')
-
-        # Deleting model 'StaticToken'
-        db.delete_table('otp_static_statictoken')
-
-
-    models = {
-        'auth.group': {
-            'Meta': {'object_name': 'Group'},
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
-            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
-        },
-        'auth.permission': {
-            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
-            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
-            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
-        },
-        user_model_label: {
-            'Meta': {'object_name': User.__name__, 'db_table': "'%s'" % User._meta.db_table},
-            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
-            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
-            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
-            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
-            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
-            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
-            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
-            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
-            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
-            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
-            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
-        },
-        'contenttypes.contenttype': {
-            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
-            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
-            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
-        },
-        'otp_static.staticdevice': {
-            'Meta': {'object_name': 'StaticDevice'},
-            'confirmed': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
-            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm[user_orm_label]"})
-        },
-        'otp_static.statictoken': {
-            'Meta': {'object_name': 'StaticToken'},
-            'device': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'token_set'", 'to': "orm['otp_static.StaticDevice']"}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'token': ('django.db.models.fields.CharField', [], {'max_length': '16', 'db_index': 'True'})
-        }
-    }
-
-    complete_apps = ['otp_static']
\ No newline at end of file
diff --git a/django_otp/plugins/otp_static/south_migrations/__init__.py b/django_otp/plugins/otp_static/south_migrations/__init__.py
deleted file mode 100644
index e69de29..0000000
diff --git a/django_otp/plugins/otp_totp/south_migrations/0001_initial.py b/django_otp/plugins/otp_totp/south_migrations/0001_initial.py
deleted file mode 100644
index 9356d6f..0000000
--- a/django_otp/plugins/otp_totp/south_migrations/0001_initial.py
+++ /dev/null
@@ -1,91 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-try:
-    from django.contrib.auth import get_user_model
-except ImportError:
-    from django.contrib.auth.models import User
-else:
-    User = get_user_model()
-
-user_orm_label = '%s.%s' % (User._meta.app_label, User._meta.object_name)
-user_model_label = '%s.%s' % (User._meta.app_label, User._meta.module_name)
-
-
-class Migration(SchemaMigration):
-
-    def forwards(self, orm):
-        # Adding model 'TOTPDevice'
-        db.create_table('otp_totp_totpdevice', (
-            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
-            ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm[user_orm_label])),
-            ('name', self.gf('django.db.models.fields.CharField')(max_length=64)),
-            ('confirmed', self.gf('django.db.models.fields.BooleanField')(default=True)),
-            ('key', self.gf('django.db.models.fields.CharField')(default='31ca700ecf99ed44834f088dca5c933e361eb126', max_length=80)),
-            ('step', self.gf('django.db.models.fields.PositiveSmallIntegerField')(default=30)),
-            ('t0', self.gf('django.db.models.fields.BigIntegerField')(default=0)),
-            ('digits', self.gf('django.db.models.fields.PositiveSmallIntegerField')(default=6)),
-            ('tolerance', self.gf('django.db.models.fields.PositiveSmallIntegerField')(default=1)),
-            ('drift', self.gf('django.db.models.fields.SmallIntegerField')(default=0)),
-        ))
-        db.send_create_signal('otp_totp', ['TOTPDevice'])
-
-    def backwards(self, orm):
-        # Deleting model 'TOTPDevice'
-        db.delete_table('otp_totp_totpdevice')
-
-    models = {
-        'auth.group': {
-            'Meta': {'object_name': 'Group'},
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
-            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
-        },
-        'auth.permission': {
-            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
-            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
-            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
-        },
-        user_model_label: {
-            'Meta': {'object_name': User.__name__, 'db_table': "'%s'" % User._meta.db_table},
-            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
-            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
-            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
-            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'user_set'", 'blank': 'True', 'to': "orm['auth.Group']"}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
-            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
-            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
-            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
-            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
-            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
-            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'user_set'", 'blank': 'True', 'to': "orm['auth.Permission']"}),
-            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
-        },
-        'contenttypes.contenttype': {
-            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
-            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
-            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
-        },
-        'otp_totp.totpdevice': {
-            'Meta': {'object_name': 'TOTPDevice'},
-            'confirmed': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
-            'digits': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '6'}),
-            'drift': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'key': ('django.db.models.fields.CharField', [], {'default': "'b60739965a1f4b2a6636036f03da754a2ad2375d'", 'max_length': '80'}),
-            'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
-            'step': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '30'}),
-            't0': ('django.db.models.fields.BigIntegerField', [], {'default': '0'}),
-            'tolerance': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '1'}),
-            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm[user_orm_label]"})
-        }
-    }
-
-    complete_apps = ['otp_totp']
diff --git a/django_otp/plugins/otp_totp/south_migrations/0002_last_t.py b/django_otp/plugins/otp_totp/south_migrations/0002_last_t.py
deleted file mode 100644
index bbf2fb0..0000000
--- a/django_otp/plugins/otp_totp/south_migrations/0002_last_t.py
+++ /dev/null
@@ -1,82 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-try:
-    from django.contrib.auth import get_user_model
-except ImportError:
-    from django.contrib.auth.models import User
-else:
-    User = get_user_model()
-
-user_orm_label = '%s.%s' % (User._meta.app_label, User._meta.object_name)
-user_model_label = '%s.%s' % (User._meta.app_label, User._meta.module_name)
-
-
-class Migration(SchemaMigration):
-
-    def forwards(self, orm):
-        # Adding field 'TOTPDevice.last_t'
-        db.add_column('otp_totp_totpdevice', 'last_t',
-                      self.gf('django.db.models.fields.BigIntegerField')(default=-1),
-                      keep_default=False)
-
-    def backwards(self, orm):
-        # Deleting field 'TOTPDevice.last_t'
-        db.delete_column('otp_totp_totpdevice', 'last_t')
-
-    models = {
-        'auth.group': {
-            'Meta': {'object_name': 'Group'},
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
-            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
-        },
-        'auth.permission': {
-            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
-            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
-            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
-        },
-        user_model_label: {
-            'Meta': {'object_name': User.__name__, 'db_table': "'%s'" % User._meta.db_table},
-            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
-            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
-            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
-            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'user_set'", 'blank': 'True', 'to': "orm['auth.Group']"}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
-            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
-            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
-            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
-            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
-            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
-            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'user_set'", 'blank': 'True', 'to': "orm['auth.Permission']"}),
-            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
-        },
-        'contenttypes.contenttype': {
-            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
-            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
-            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
-        },
-        'otp_totp.totpdevice': {
-            'Meta': {'object_name': 'TOTPDevice'},
-            'confirmed': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
-            'digits': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '6'}),
-            'drift': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
-            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
-            'key': ('django.db.models.fields.CharField', [], {'default': "'75f9de9f45165c34419e00a46ca41762c1fe4583'", 'max_length': '80'}),
-            'last_t': ('django.db.models.fields.BigIntegerField', [], {'default': '-1'}),
-            'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
-            'step': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '30'}),
-            't0': ('django.db.models.fields.BigIntegerField', [], {'default': '0'}),
-            'tolerance': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '1'}),
-            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm[user_orm_label]"})
-        }
-    }
-
-    complete_apps = ['otp_totp']
diff --git a/django_otp/plugins/otp_totp/south_migrations/__init__.py b/django_otp/plugins/otp_totp/south_migrations/__init__.py
deleted file mode 100644
index e69de29..0000000
diff --git a/docs/source/conf.py b/docs/source/conf.py
index 0358063..73d0c10 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -36,20 +36,34 @@ extensions = [
 ]
 
 # autodoc and viewcode need valid settings in order to process Django modules.
+import django
 import django.conf
+
 django.conf.settings.configure(
     DATABASES={
         'default': {
             'ENGINE': 'django.db.backends.sqlite3',
-            'NAME': '/tmp/django_otp.sqlite',
         }
-    }
+    },
+    INSTALLED_APPS = [
+        'django.contrib.auth',
+        'django.contrib.contenttypes',
+        'django.contrib.sessions',
+        'django.contrib.messages',
+
+        'django_otp',
+        'django_otp.plugins.otp_hotp',
+        'django_otp.plugins.otp_totp',
+        'django_otp.plugins.otp_static',
+        'django_otp.plugins.otp_email',
+    ]
 )
+django.setup()
 
 intersphinx_mapping = {
-    'python': ('http://docs.python.org/2/', None),
-    'django': ('https://docs.djangoproject.com/en/1.10/',
-               'https://docs.djangoproject.com/en/1.10/_objects/'),
+    'python': ('http://docs.python.org/3/', None),
+    'django': ('https://docs.djangoproject.com/en/1.11/',
+               'https://docs.djangoproject.com/en/1.11/_objects/'),
 }
 
 # Add any paths that contain templates here, relative to this directory.
@@ -73,9 +87,9 @@ copyright = u'2012, Peter Sagerson'
 # built documents.
 #
 # The short X.Y version.
-version = '0.3'
+version = '0.4'
 # The full version, including alpha/beta/rc tags.
-release = '0.3.14'
+release = '0.4.0'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
@@ -145,7 +159,7 @@ html_theme = 'default'
 # Add any paths that contain custom static files (such as style sheets) here,
 # relative to this directory. They are copied after the builtin static files,
 # so a file named "default.css" will overwrite the builtin "default.css".
-html_static_path = ['_static']
+#html_static_path = ['_static']
 
 # If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
 # using the given strftime format.
diff --git a/setup.cfg b/setup.cfg
index 85106ed..f3b3d61 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -7,5 +7,4 @@ universal = 1
 [egg_info]
 tag_build = 
 tag_date = 0
-tag_svn_revision = 0
 
diff --git a/setup.py b/setup.py
index 09c7abe..b1e41b2 100755
--- a/setup.py
+++ b/setup.py
@@ -5,7 +5,7 @@ from setuptools import setup, find_packages
 
 setup(
     name='django-otp',
-    version='0.3.14',
+    version='0.4.0.1',
     description='A pluggable framework for adding two-factor authentication to Django using one-time passwords.',
     long_description=open('README.rst').read(),
     author='Peter Sagerson',
@@ -16,7 +16,7 @@ setup(
     url='https://bitbucket.org/psagers/django-otp',
     license='BSD',
     install_requires=[
-        'django >= 1.5.12'
+        'django >= 1.8'
     ],
     extras_require={
         'qrcode': ['qrcode'],
@@ -29,7 +29,6 @@ setup(
         "Programming Language :: Python :: 2",
         "Programming Language :: Python :: 2.7",
         "Programming Language :: Python :: 3",
-        "Programming Language :: Python :: 3.3",
         "Programming Language :: Python :: 3.4",
         "Programming Language :: Python :: 3.5",
         "Programming Language :: Python :: 3.6",

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/python-django-otp.git



More information about the Python-modules-commits mailing list