diff --git a/provider/oauth2/migrations/0001_initial.py b/provider/oauth2/migrations/0001_initial.py index 52797bf0..61f62c1e 100644 --- a/provider/oauth2/migrations/0001_initial.py +++ b/provider/oauth2/migrations/0001_initial.py @@ -1,153 +1,85 @@ -# encoding: utf-8 -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models +# -*- coding: utf-8 -*- +from __future__ import unicode_literals -from provider.compat import user_model_label +from django.db import models, migrations +import provider.utils +from django.conf import settings -class Migration(SchemaMigration): +class Migration(migrations.Migration): - def forwards(self, orm): - - # Adding model 'Client' - db.create_table('oauth2_client', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm[user_model_label])), - ('url', self.gf('django.db.models.fields.URLField')(max_length=200)), - ('redirect_uri', self.gf('django.db.models.fields.URLField')(max_length=200)), - ('client_id', self.gf('django.db.models.fields.CharField')(default='37b581bdc702c732aa65', max_length=255)), - ('client_secret', self.gf('django.db.models.fields.CharField')(default='5cf90561f7566aa81457f8a32187dcb8147c7b73', max_length=255)), - ('client_type', self.gf('django.db.models.fields.IntegerField')()), - )) - db.send_create_signal('oauth2', ['Client']) + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] - # Adding model 'Grant' - db.create_table('oauth2_grant', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm[user_model_label])), - ('client', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['oauth2.Client'])), - ('code', self.gf('django.db.models.fields.CharField')(default='f0cda1a5f4ae915431ff93f477c012b38e2429c4', max_length=255)), - ('expires', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime(2012, 2, 8, 10, 43, 45, 620301))), - ('redirect_uri', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)), - ('scope', self.gf('django.db.models.fields.IntegerField')(default=0)), - )) - db.send_create_signal('oauth2', ['Grant']) - - # Adding model 'AccessToken' - db.create_table('oauth2_accesstoken', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm[user_model_label])), - ('token', self.gf('django.db.models.fields.CharField')(default='b10b8f721e95117cb13c', max_length=255)), - ('client', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['oauth2.Client'])), - ('expires', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime(2013, 2, 7, 10, 33, 45, 618854))), - ('scope', self.gf('django.db.models.fields.IntegerField')(default=0)), - )) - db.send_create_signal('oauth2', ['AccessToken']) - - # Adding model 'RefreshToken' - db.create_table('oauth2_refreshtoken', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm[user_model_label])), - ('token', self.gf('django.db.models.fields.CharField')(default='84035a870dab7c820c2c501fb0b10f86fdf7a3fe', max_length=255)), - ('access_token', self.gf('django.db.models.fields.related.OneToOneField')(related_name='refresh_token', unique=True, to=orm['oauth2.AccessToken'])), - ('client', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['oauth2.Client'])), - ('expired', self.gf('django.db.models.fields.BooleanField')(default=False)), - )) - db.send_create_signal('oauth2', ['RefreshToken']) - - - def backwards(self, orm): - - # Deleting model 'Client' - db.delete_table('oauth2_client') - - # Deleting model 'Grant' - db.delete_table('oauth2_grant') - - # Deleting model 'AccessToken' - db.delete_table('oauth2_accesstoken') - - # Deleting model 'RefreshToken' - db.delete_table('oauth2_refreshtoken') - - - 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_model_label.split('.')[-1]}, - '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'}) - }, - 'oauth2.accesstoken': { - 'Meta': {'object_name': 'AccessToken'}, - 'client': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['oauth2.Client']"}), - 'expires': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(2013, 2, 7, 10, 33, 45, 624553)'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'scope': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'token': ('django.db.models.fields.CharField', [], {'default': "'d5c1f65020ebdc89f20c'", 'max_length': '255'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['%s']" % user_model_label}) - }, - 'oauth2.client': { - 'Meta': {'object_name': 'Client'}, - 'client_id': ('django.db.models.fields.CharField', [], {'default': "'306fb26cbcc87dd33cdb'", 'max_length': '255'}), - 'client_secret': ('django.db.models.fields.CharField', [], {'default': "'7e5785add4898448d53767f15373636b918cf0e3'", 'max_length': '255'}), - 'client_type': ('django.db.models.fields.IntegerField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'redirect_uri': ('django.db.models.fields.URLField', [], {'max_length': '200'}), - 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['%s']" % user_model_label}) - }, - 'oauth2.grant': { - 'Meta': {'object_name': 'Grant'}, - 'client': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['oauth2.Client']"}), - 'code': ('django.db.models.fields.CharField', [], {'default': "'310b2c63e27306ecf5307569dd62340cc4994b73'", 'max_length': '255'}), - 'expires': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(2012, 2, 8, 10, 43, 45, 625956)'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'redirect_uri': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), - 'scope': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['%s']" % user_model_label}) - }, - 'oauth2.refreshtoken': { - 'Meta': {'object_name': 'RefreshToken'}, - 'access_token': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'refresh_token'", 'unique': 'True', 'to': "orm['oauth2.AccessToken']"}), - 'client': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['oauth2.Client']"}), - 'expired': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'token': ('django.db.models.fields.CharField', [], {'default': "'ef0ab76037f17769ab2975a816e8f41a1c11d25e'", 'max_length': '255'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['%s']" % user_model_label}) - } - } - - complete_apps = ['oauth2'] + operations = [ + migrations.CreateModel( + name='AccessToken', + fields=[ + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('token', models.CharField(default=provider.utils.long_token, max_length=255, db_index=True)), + ('expires', models.DateTimeField()), + ('scope', models.IntegerField(default=2, choices=[(2, b'read'), (4, b'write'), (6, b'read+write')])), + ], + options={ + }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='Client', + fields=[ + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('name', models.CharField(max_length=255, blank=True)), + ('url', models.URLField(help_text=b"Your application's URL.")), + ('redirect_uri', models.URLField(help_text=b"Your application's callback URL")), + ('client_id', models.CharField(default=provider.utils.short_token, max_length=255)), + ('client_secret', models.CharField(default=provider.utils.long_token, max_length=255)), + ('client_type', models.IntegerField(choices=[(0, b'Confidential (Web applications)'), (1, b'Public (Native and JS applications)')])), + ('user', models.ForeignKey(related_name=b'oauth2_client', blank=True, to=settings.AUTH_USER_MODEL, null=True)), + ], + options={ + }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='Grant', + fields=[ + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('code', models.CharField(default=provider.utils.long_token, max_length=255)), + ('expires', models.DateTimeField(default=provider.utils.get_code_expiry)), + ('redirect_uri', models.CharField(max_length=255, blank=True)), + ('scope', models.IntegerField(default=0)), + ('client', models.ForeignKey(to='oauth2.Client')), + ('user', models.ForeignKey(to=settings.AUTH_USER_MODEL)), + ], + options={ + }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='RefreshToken', + fields=[ + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('token', models.CharField(default=provider.utils.long_token, max_length=255)), + ('expired', models.BooleanField(default=False)), + ('access_token', models.OneToOneField(related_name=b'refresh_token', to='oauth2.AccessToken')), + ('client', models.ForeignKey(to='oauth2.Client')), + ('user', models.ForeignKey(to=settings.AUTH_USER_MODEL)), + ], + options={ + }, + bases=(models.Model,), + ), + migrations.AddField( + model_name='accesstoken', + name='client', + field=models.ForeignKey(to='oauth2.Client'), + preserve_default=True, + ), + migrations.AddField( + model_name='accesstoken', + name='user', + field=models.ForeignKey(to=settings.AUTH_USER_MODEL), + preserve_default=True, + ), + ] diff --git a/provider/oauth2/south_migrations/0001_initial.py b/provider/oauth2/south_migrations/0001_initial.py new file mode 100644 index 00000000..52797bf0 --- /dev/null +++ b/provider/oauth2/south_migrations/0001_initial.py @@ -0,0 +1,153 @@ +# encoding: utf-8 +import datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + +from provider.compat import user_model_label + + +class Migration(SchemaMigration): + + def forwards(self, orm): + + # Adding model 'Client' + db.create_table('oauth2_client', ( + ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm[user_model_label])), + ('url', self.gf('django.db.models.fields.URLField')(max_length=200)), + ('redirect_uri', self.gf('django.db.models.fields.URLField')(max_length=200)), + ('client_id', self.gf('django.db.models.fields.CharField')(default='37b581bdc702c732aa65', max_length=255)), + ('client_secret', self.gf('django.db.models.fields.CharField')(default='5cf90561f7566aa81457f8a32187dcb8147c7b73', max_length=255)), + ('client_type', self.gf('django.db.models.fields.IntegerField')()), + )) + db.send_create_signal('oauth2', ['Client']) + + # Adding model 'Grant' + db.create_table('oauth2_grant', ( + ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm[user_model_label])), + ('client', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['oauth2.Client'])), + ('code', self.gf('django.db.models.fields.CharField')(default='f0cda1a5f4ae915431ff93f477c012b38e2429c4', max_length=255)), + ('expires', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime(2012, 2, 8, 10, 43, 45, 620301))), + ('redirect_uri', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)), + ('scope', self.gf('django.db.models.fields.IntegerField')(default=0)), + )) + db.send_create_signal('oauth2', ['Grant']) + + # Adding model 'AccessToken' + db.create_table('oauth2_accesstoken', ( + ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm[user_model_label])), + ('token', self.gf('django.db.models.fields.CharField')(default='b10b8f721e95117cb13c', max_length=255)), + ('client', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['oauth2.Client'])), + ('expires', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime(2013, 2, 7, 10, 33, 45, 618854))), + ('scope', self.gf('django.db.models.fields.IntegerField')(default=0)), + )) + db.send_create_signal('oauth2', ['AccessToken']) + + # Adding model 'RefreshToken' + db.create_table('oauth2_refreshtoken', ( + ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm[user_model_label])), + ('token', self.gf('django.db.models.fields.CharField')(default='84035a870dab7c820c2c501fb0b10f86fdf7a3fe', max_length=255)), + ('access_token', self.gf('django.db.models.fields.related.OneToOneField')(related_name='refresh_token', unique=True, to=orm['oauth2.AccessToken'])), + ('client', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['oauth2.Client'])), + ('expired', self.gf('django.db.models.fields.BooleanField')(default=False)), + )) + db.send_create_signal('oauth2', ['RefreshToken']) + + + def backwards(self, orm): + + # Deleting model 'Client' + db.delete_table('oauth2_client') + + # Deleting model 'Grant' + db.delete_table('oauth2_grant') + + # Deleting model 'AccessToken' + db.delete_table('oauth2_accesstoken') + + # Deleting model 'RefreshToken' + db.delete_table('oauth2_refreshtoken') + + + 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_model_label.split('.')[-1]}, + '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'}) + }, + 'oauth2.accesstoken': { + 'Meta': {'object_name': 'AccessToken'}, + 'client': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['oauth2.Client']"}), + 'expires': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(2013, 2, 7, 10, 33, 45, 624553)'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'scope': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'token': ('django.db.models.fields.CharField', [], {'default': "'d5c1f65020ebdc89f20c'", 'max_length': '255'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['%s']" % user_model_label}) + }, + 'oauth2.client': { + 'Meta': {'object_name': 'Client'}, + 'client_id': ('django.db.models.fields.CharField', [], {'default': "'306fb26cbcc87dd33cdb'", 'max_length': '255'}), + 'client_secret': ('django.db.models.fields.CharField', [], {'default': "'7e5785add4898448d53767f15373636b918cf0e3'", 'max_length': '255'}), + 'client_type': ('django.db.models.fields.IntegerField', [], {}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'redirect_uri': ('django.db.models.fields.URLField', [], {'max_length': '200'}), + 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['%s']" % user_model_label}) + }, + 'oauth2.grant': { + 'Meta': {'object_name': 'Grant'}, + 'client': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['oauth2.Client']"}), + 'code': ('django.db.models.fields.CharField', [], {'default': "'310b2c63e27306ecf5307569dd62340cc4994b73'", 'max_length': '255'}), + 'expires': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(2012, 2, 8, 10, 43, 45, 625956)'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'redirect_uri': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'scope': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['%s']" % user_model_label}) + }, + 'oauth2.refreshtoken': { + 'Meta': {'object_name': 'RefreshToken'}, + 'access_token': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'refresh_token'", 'unique': 'True', 'to': "orm['oauth2.AccessToken']"}), + 'client': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['oauth2.Client']"}), + 'expired': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'token': ('django.db.models.fields.CharField', [], {'default': "'ef0ab76037f17769ab2975a816e8f41a1c11d25e'", 'max_length': '255'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['%s']" % user_model_label}) + } + } + + complete_apps = ['oauth2'] diff --git a/provider/oauth2/migrations/0002_auto__chg_field_client_user.py b/provider/oauth2/south_migrations/0002_auto__chg_field_client_user.py similarity index 100% rename from provider/oauth2/migrations/0002_auto__chg_field_client_user.py rename to provider/oauth2/south_migrations/0002_auto__chg_field_client_user.py diff --git a/provider/oauth2/migrations/0003_auto__add_field_client_name.py b/provider/oauth2/south_migrations/0003_auto__add_field_client_name.py similarity index 100% rename from provider/oauth2/migrations/0003_auto__add_field_client_name.py rename to provider/oauth2/south_migrations/0003_auto__add_field_client_name.py diff --git a/provider/oauth2/migrations/0004_auto__add_index_accesstoken_token.py b/provider/oauth2/south_migrations/0004_auto__add_index_accesstoken_token.py similarity index 100% rename from provider/oauth2/migrations/0004_auto__add_index_accesstoken_token.py rename to provider/oauth2/south_migrations/0004_auto__add_index_accesstoken_token.py diff --git a/provider/oauth2/south_migrations/__init__.py b/provider/oauth2/south_migrations/__init__.py new file mode 100644 index 00000000..e69de29b