Skip to content

Commit

Permalink
Add new style migrations and move the old South migrations. Add relea…
Browse files Browse the repository at this point in the history
…se notes about the upgrade process. Fixes #40
  • Loading branch information
mlavin committed Jun 28, 2014
1 parent 8c96c2a commit 07f76e3
Show file tree
Hide file tree
Showing 10 changed files with 192 additions and 118 deletions.
170 changes: 56 additions & 114 deletions allaccess/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -1,115 +1,57 @@
# -*- coding: utf-8 -*-
import datetime
from south.db import db
from south.v2 import SchemaMigration
from django.db import models

from ..compat import get_user_model, AUTH_USER_MODEL

User = get_user_model()


class Migration(SchemaMigration):

def forwards(self, orm):
# Adding model 'Provider'
db.create_table('allaccess_provider', (
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
('name', self.gf('django.db.models.fields.CharField')(unique=True, max_length=50)),
('request_token_url', self.gf('django.db.models.fields.URLField')(max_length=200, blank=True)),
('authorization_url', self.gf('django.db.models.fields.URLField')(max_length=200)),
('access_token_url', self.gf('django.db.models.fields.URLField')(max_length=200)),
('profile_url', self.gf('django.db.models.fields.URLField')(max_length=200)),
('key', self.gf('allaccess.fields.EncryptedField')(default=None, null=True, blank=True)),
('secret', self.gf('allaccess.fields.EncryptedField')(default=None, null=True, blank=True)),
))
db.send_create_signal('allaccess', ['Provider'])

# Adding model 'AccountAccess'
db.create_table('allaccess_accountaccess', (
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
('identifier', self.gf('django.db.models.fields.CharField')(max_length=255)),
('provider', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['allaccess.Provider'])),
('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm[AUTH_USER_MODEL], null=True, blank=True)),
('created', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime.now, auto_now_add=True, blank=True)),
('modified', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime.now, auto_now=True, blank=True)),
('access_token', self.gf('django.db.models.fields.TextField')(default='', blank=True)),
))
db.send_create_signal('allaccess', ['AccountAccess'])

# Adding unique constraint on 'AccountAccess', fields ['identifier', 'provider']
db.create_unique('allaccess_accountaccess', ['identifier', 'provider_id'])


def backwards(self, orm):
# Removing unique constraint on 'AccountAccess', fields ['identifier', 'provider']
db.delete_unique('allaccess_accountaccess', ['identifier', 'provider_id'])

# Deleting model 'Provider'
db.delete_table('allaccess_provider')

# Deleting model 'AccountAccess'
db.delete_table('allaccess_accountaccess')


models = {
'allaccess.accountaccess': {
'Meta': {'unique_together': "(('identifier', 'provider'),)", 'object_name': 'AccountAccess'},
'access_token': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
'created': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'auto_now_add': 'True', 'blank': 'True'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'identifier': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'modified': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'auto_now': 'True', 'blank': 'True'}),
'provider': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['allaccess.Provider']"}),
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['%s']" % AUTH_USER_MODEL, 'null': 'True', 'blank': 'True'})
},
'allaccess.provider': {
'Meta': {'object_name': 'Provider'},
'access_token_url': ('django.db.models.fields.URLField', [], {'max_length': '200'}),
'authorization_url': ('django.db.models.fields.URLField', [], {'max_length': '200'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'key': ('allaccess.fields.EncryptedField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '50'}),
'profile_url': ('django.db.models.fields.URLField', [], {'max_length': '200'}),
'request_token_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
'secret': ('allaccess.fields.EncryptedField', [], {'default': 'None', 'null': 'True', 'blank': 'True'})
},
'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_MODEL: {
'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'})
}
}

complete_apps = ['allaccess']
from __future__ import unicode_literals

from django.db import models, migrations
import django.utils.timezone
from django.conf import settings
import allaccess.fields


class Migration(migrations.Migration):

dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]

operations = [
migrations.CreateModel(
name='AccountAccess',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('identifier', models.CharField(max_length=255)),
('created', models.DateTimeField(default=django.utils.timezone.now, auto_now_add=True)),
('modified', models.DateTimeField(default=django.utils.timezone.now, auto_now=True)),
('access_token', allaccess.fields.EncryptedField(default=None, null=True, blank=True)),
('user', models.ForeignKey(blank=True, to=settings.AUTH_USER_MODEL, null=True)),
],
options={
},
bases=(models.Model,),
),
migrations.CreateModel(
name='Provider',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('name', models.CharField(unique=True, max_length=50)),
('request_token_url', models.CharField(max_length=255, blank=True)),
('authorization_url', models.CharField(max_length=255)),
('access_token_url', models.CharField(max_length=255)),
('profile_url', models.CharField(max_length=255)),
('consumer_key', allaccess.fields.EncryptedField(default=None, null=True, blank=True)),
('consumer_secret', allaccess.fields.EncryptedField(default=None, null=True, blank=True)),
],
options={
},
bases=(models.Model,),
),
migrations.AddField(
model_name='accountaccess',
name='provider',
field=models.ForeignKey(to='allaccess.Provider'),
preserve_default=True,
),
migrations.AlterUniqueTogether(
name='accountaccess',
unique_together=set([('identifier', 'provider')]),
),
]
6 changes: 3 additions & 3 deletions allaccess/models.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
from __future__ import unicode_literals
from datetime import datetime

from django.db import models
from django.utils.encoding import python_2_unicode_compatible
from django.utils.timezone import now

from .clients import get_client
from .compat import AUTH_USER_MODEL
Expand Down Expand Up @@ -61,8 +61,8 @@ class AccountAccess(models.Model):
identifier = models.CharField(max_length=255)
provider = models.ForeignKey(Provider)
user = models.ForeignKey(AUTH_USER_MODEL, null=True, blank=True)
created = models.DateTimeField(auto_now_add=True, default=datetime.now)
modified = models.DateTimeField(auto_now=True, default=datetime.now)
created = models.DateTimeField(auto_now_add=True, default=now)
modified = models.DateTimeField(auto_now=True, default=now)
access_token = EncryptedField(blank=True, null=True, default=None)

objects = AccountAccessManager()
Expand Down
115 changes: 115 additions & 0 deletions allaccess/south_migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
# -*- coding: utf-8 -*-
import datetime
from south.db import db
from south.v2 import SchemaMigration
from django.db import models

from ..compat import get_user_model, AUTH_USER_MODEL

User = get_user_model()


class Migration(SchemaMigration):

def forwards(self, orm):
# Adding model 'Provider'
db.create_table('allaccess_provider', (
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
('name', self.gf('django.db.models.fields.CharField')(unique=True, max_length=50)),
('request_token_url', self.gf('django.db.models.fields.URLField')(max_length=200, blank=True)),
('authorization_url', self.gf('django.db.models.fields.URLField')(max_length=200)),
('access_token_url', self.gf('django.db.models.fields.URLField')(max_length=200)),
('profile_url', self.gf('django.db.models.fields.URLField')(max_length=200)),
('key', self.gf('allaccess.fields.EncryptedField')(default=None, null=True, blank=True)),
('secret', self.gf('allaccess.fields.EncryptedField')(default=None, null=True, blank=True)),
))
db.send_create_signal('allaccess', ['Provider'])

# Adding model 'AccountAccess'
db.create_table('allaccess_accountaccess', (
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
('identifier', self.gf('django.db.models.fields.CharField')(max_length=255)),
('provider', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['allaccess.Provider'])),
('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm[AUTH_USER_MODEL], null=True, blank=True)),
('created', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime.now, auto_now_add=True, blank=True)),
('modified', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime.now, auto_now=True, blank=True)),
('access_token', self.gf('django.db.models.fields.TextField')(default='', blank=True)),
))
db.send_create_signal('allaccess', ['AccountAccess'])

# Adding unique constraint on 'AccountAccess', fields ['identifier', 'provider']
db.create_unique('allaccess_accountaccess', ['identifier', 'provider_id'])


def backwards(self, orm):
# Removing unique constraint on 'AccountAccess', fields ['identifier', 'provider']
db.delete_unique('allaccess_accountaccess', ['identifier', 'provider_id'])

# Deleting model 'Provider'
db.delete_table('allaccess_provider')

# Deleting model 'AccountAccess'
db.delete_table('allaccess_accountaccess')


models = {
'allaccess.accountaccess': {
'Meta': {'unique_together': "(('identifier', 'provider'),)", 'object_name': 'AccountAccess'},
'access_token': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
'created': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'auto_now_add': 'True', 'blank': 'True'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'identifier': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'modified': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'auto_now': 'True', 'blank': 'True'}),
'provider': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['allaccess.Provider']"}),
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['%s']" % AUTH_USER_MODEL, 'null': 'True', 'blank': 'True'})
},
'allaccess.provider': {
'Meta': {'object_name': 'Provider'},
'access_token_url': ('django.db.models.fields.URLField', [], {'max_length': '200'}),
'authorization_url': ('django.db.models.fields.URLField', [], {'max_length': '200'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'key': ('allaccess.fields.EncryptedField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '50'}),
'profile_url': ('django.db.models.fields.URLField', [], {'max_length': '200'}),
'request_token_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
'secret': ('allaccess.fields.EncryptedField', [], {'default': 'None', 'null': 'True', 'blank': 'True'})
},
'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_MODEL: {
'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'})
}
}

complete_apps = ['allaccess']
File renamed without changes.
Empty file.
16 changes: 15 additions & 1 deletion docs/releases.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,21 @@ Release and change history for django-all-access
v0.7.0 (TBD)
------------------------------------

This release adds support for 1.7 and the new style migrations.
This release adds support for 1.7 and the new style migrations. For those using Django < 1.7 and South you'll need
to add the ``SOUTH_MIGRATION_MODULES`` setting to point to the old South migrations.

.. code-block:: python
SOUTH_MIGRATION_MODULES = {
'allaccess': 'allaccess.south_migrations',
}
No new migrations were added for this release but this will be the new location for future migrations. If your
DB tables are up to date from v0.6 then upgrading to 1.7 and running::

python manage.py migrate allaccess

should automatically fake the initial migration using the new-style migrations.


v0.6.0 (2014-02-01)
Expand Down
3 changes: 3 additions & 0 deletions runtests.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,9 @@
LOGIN_REDIRECT_URL='/',
USE_TZ=True,
SOUTH_TESTS_MIGRATE=True,
SOUTH_MIGRATION_MODULES={
'allaccess': 'allaccess.south_migrations',
}
)


Expand Down

0 comments on commit 07f76e3

Please sign in to comment.