Add migrations to convert existing databases to the class based permission system
This commit is contained in:
105
apps/permissions/migrations/0001_initial.py
Normal file
105
apps/permissions/migrations/0001_initial.py
Normal file
@@ -0,0 +1,105 @@
|
||||
# encoding: utf-8
|
||||
import 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 'Permission'
|
||||
db.create_table('permissions_permission', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('namespace', self.gf('django.db.models.fields.CharField')(max_length=64)),
|
||||
('name', self.gf('django.db.models.fields.CharField')(max_length=64)),
|
||||
('label', self.gf('django.db.models.fields.CharField')(max_length=96)),
|
||||
))
|
||||
db.send_create_signal('permissions', ['Permission'])
|
||||
|
||||
# Adding unique constraint on 'Permission', fields ['namespace', 'name']
|
||||
db.create_unique('permissions_permission', ['namespace', 'name'])
|
||||
|
||||
# Adding model 'PermissionHolder'
|
||||
db.create_table('permissions_permissionholder', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('permission', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['permissions.Permission'])),
|
||||
('holder_type', self.gf('django.db.models.fields.related.ForeignKey')(related_name='permission_holder', to=orm['contenttypes.ContentType'])),
|
||||
('holder_id', self.gf('django.db.models.fields.PositiveIntegerField')()),
|
||||
))
|
||||
db.send_create_signal('permissions', ['PermissionHolder'])
|
||||
|
||||
# Adding model 'Role'
|
||||
db.create_table('permissions_role', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('name', self.gf('django.db.models.fields.CharField')(unique=True, max_length=64)),
|
||||
('label', self.gf('django.db.models.fields.CharField')(unique=True, max_length=64)),
|
||||
))
|
||||
db.send_create_signal('permissions', ['Role'])
|
||||
|
||||
# Adding model 'RoleMember'
|
||||
db.create_table('permissions_rolemember', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('role', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['permissions.Role'])),
|
||||
('member_type', self.gf('django.db.models.fields.related.ForeignKey')(related_name='role_member', to=orm['contenttypes.ContentType'])),
|
||||
('member_id', self.gf('django.db.models.fields.PositiveIntegerField')()),
|
||||
))
|
||||
db.send_create_signal('permissions', ['RoleMember'])
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Removing unique constraint on 'Permission', fields ['namespace', 'name']
|
||||
db.delete_unique('permissions_permission', ['namespace', 'name'])
|
||||
|
||||
# Deleting model 'Permission'
|
||||
db.delete_table('permissions_permission')
|
||||
|
||||
# Deleting model 'PermissionHolder'
|
||||
db.delete_table('permissions_permissionholder')
|
||||
|
||||
# Deleting model 'Role'
|
||||
db.delete_table('permissions_role')
|
||||
|
||||
# Deleting model 'RoleMember'
|
||||
db.delete_table('permissions_rolemember')
|
||||
|
||||
|
||||
models = {
|
||||
'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'})
|
||||
},
|
||||
'permissions.permission': {
|
||||
'Meta': {'ordering': "('namespace', 'label')", 'unique_together': "(('namespace', 'name'),)", 'object_name': 'Permission'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'label': ('django.db.models.fields.CharField', [], {'max_length': '96'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
|
||||
'namespace': ('django.db.models.fields.CharField', [], {'max_length': '64'})
|
||||
},
|
||||
'permissions.permissionholder': {
|
||||
'Meta': {'object_name': 'PermissionHolder'},
|
||||
'holder_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
|
||||
'holder_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'permission_holder'", 'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'permission': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['permissions.Permission']"})
|
||||
},
|
||||
'permissions.role': {
|
||||
'Meta': {'ordering': "('label',)", 'object_name': 'Role'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'label': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'})
|
||||
},
|
||||
'permissions.rolemember': {
|
||||
'Meta': {'object_name': 'RoleMember'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'member_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
|
||||
'member_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'role_member'", 'to': "orm['contenttypes.ContentType']"}),
|
||||
'role': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['permissions.Role']"})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['permissions']
|
||||
@@ -0,0 +1,81 @@
|
||||
# encoding: utf-8
|
||||
import 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 'StoredPermission'
|
||||
db.create_table('permissions_storedpermission', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('namespace', self.gf('django.db.models.fields.CharField')(max_length=64)),
|
||||
('name', self.gf('django.db.models.fields.CharField')(max_length=64)),
|
||||
))
|
||||
db.send_create_signal('permissions', ['StoredPermission'])
|
||||
|
||||
# Adding unique constraint on 'StoredPermission', fields ['namespace', 'name']
|
||||
db.create_unique('permissions_storedpermission', ['namespace', 'name'])
|
||||
|
||||
# Changing field 'PermissionHolder.permission'
|
||||
db.alter_column('permissions_permissionholder', 'permission_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['permissions.StoredPermission']))
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Removing unique constraint on 'StoredPermission', fields ['namespace', 'name']
|
||||
db.delete_unique('permissions_storedpermission', ['namespace', 'name'])
|
||||
|
||||
# Deleting model 'StoredPermission'
|
||||
db.delete_table('permissions_storedpermission')
|
||||
|
||||
# Changing field 'PermissionHolder.permission'
|
||||
db.alter_column('permissions_permissionholder', 'permission_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['permissions.Permission']))
|
||||
|
||||
|
||||
models = {
|
||||
'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'})
|
||||
},
|
||||
'permissions.permission': {
|
||||
'Meta': {'ordering': "('namespace',)", 'unique_together': "(('namespace', 'name'),)", 'object_name': 'Permission'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'label': ('django.db.models.fields.CharField', [], {'max_length': '96'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
|
||||
'namespace': ('django.db.models.fields.CharField', [], {'max_length': '64'})
|
||||
},
|
||||
'permissions.permissionholder': {
|
||||
'Meta': {'object_name': 'PermissionHolder'},
|
||||
'holder_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
|
||||
'holder_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'permission_holder'", 'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'permission': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['permissions.StoredPermission']"})
|
||||
},
|
||||
'permissions.role': {
|
||||
'Meta': {'ordering': "('label',)", 'object_name': 'Role'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'label': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'})
|
||||
},
|
||||
'permissions.rolemember': {
|
||||
'Meta': {'object_name': 'RoleMember'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'member_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
|
||||
'member_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'role_member'", 'to': "orm['contenttypes.ContentType']"}),
|
||||
'role': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['permissions.Role']"})
|
||||
},
|
||||
'permissions.storedpermission': {
|
||||
'Meta': {'ordering': "('namespace',)", 'unique_together': "(('namespace', 'name'),)", 'object_name': 'StoredPermission'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
|
||||
'namespace': ('django.db.models.fields.CharField', [], {'max_length': '64'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['permissions']
|
||||
61
apps/permissions/migrations/0003_clear_permission_holders.py
Normal file
61
apps/permissions/migrations/0003_clear_permission_holders.py
Normal file
@@ -0,0 +1,61 @@
|
||||
# encoding: utf-8
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import DataMigration
|
||||
from django.db import models
|
||||
|
||||
class Migration(DataMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
for permission_holder in orm.PermissionHolder.objects.all():
|
||||
permission_holder.delete()
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
raise RuntimeError("Cannot reverse this migration.")
|
||||
|
||||
|
||||
models = {
|
||||
'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'})
|
||||
},
|
||||
'permissions.permission': {
|
||||
'Meta': {'ordering': "('namespace',)", 'unique_together': "(('namespace', 'name'),)", 'object_name': 'Permission'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'label': ('django.db.models.fields.CharField', [], {'max_length': '96'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
|
||||
'namespace': ('django.db.models.fields.CharField', [], {'max_length': '64'})
|
||||
},
|
||||
'permissions.permissionholder': {
|
||||
'Meta': {'object_name': 'PermissionHolder'},
|
||||
'holder_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
|
||||
'holder_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'permission_holder'", 'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'permission': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['permissions.StoredPermission']"})
|
||||
},
|
||||
'permissions.role': {
|
||||
'Meta': {'ordering': "('label',)", 'object_name': 'Role'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'label': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'})
|
||||
},
|
||||
'permissions.rolemember': {
|
||||
'Meta': {'object_name': 'RoleMember'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'member_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
|
||||
'member_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'role_member'", 'to': "orm['contenttypes.ContentType']"}),
|
||||
'role': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['permissions.Role']"})
|
||||
},
|
||||
'permissions.storedpermission': {
|
||||
'Meta': {'ordering': "('namespace',)", 'unique_together': "(('namespace', 'name'),)", 'object_name': 'StoredPermission'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
|
||||
'namespace': ('django.db.models.fields.CharField', [], {'max_length': '64'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['permissions']
|
||||
@@ -0,0 +1,69 @@
|
||||
# encoding: utf-8
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
|
||||
# Removing unique constraint on 'Permission', fields ['namespace', 'name']
|
||||
db.delete_unique('permissions_permission', ['namespace', 'name'])
|
||||
|
||||
# Deleting model 'Permission'
|
||||
db.delete_table('permissions_permission')
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Adding model 'Permission'
|
||||
db.create_table('permissions_permission', (
|
||||
('namespace', self.gf('django.db.models.fields.CharField')(max_length=64)),
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('name', self.gf('django.db.models.fields.CharField')(max_length=64)),
|
||||
('label', self.gf('django.db.models.fields.CharField')(max_length=96)),
|
||||
))
|
||||
db.send_create_signal('permissions', ['Permission'])
|
||||
|
||||
# Adding unique constraint on 'Permission', fields ['namespace', 'name']
|
||||
db.create_unique('permissions_permission', ['namespace', 'name'])
|
||||
|
||||
|
||||
models = {
|
||||
'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'})
|
||||
},
|
||||
'permissions.permissionholder': {
|
||||
'Meta': {'object_name': 'PermissionHolder'},
|
||||
'holder_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
|
||||
'holder_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'permission_holder'", 'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'permission': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['permissions.StoredPermission']"})
|
||||
},
|
||||
'permissions.role': {
|
||||
'Meta': {'ordering': "('label',)", 'object_name': 'Role'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'label': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'})
|
||||
},
|
||||
'permissions.rolemember': {
|
||||
'Meta': {'object_name': 'RoleMember'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'member_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
|
||||
'member_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'role_member'", 'to': "orm['contenttypes.ContentType']"}),
|
||||
'role': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['permissions.Role']"})
|
||||
},
|
||||
'permissions.storedpermission': {
|
||||
'Meta': {'ordering': "('namespace',)", 'unique_together': "(('namespace', 'name'),)", 'object_name': 'StoredPermission'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
|
||||
'namespace': ('django.db.models.fields.CharField', [], {'max_length': '64'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['permissions']
|
||||
0
apps/permissions/migrations/__init__.py
Normal file
0
apps/permissions/migrations/__init__.py
Normal file
@@ -89,9 +89,6 @@ class Permission(object):
|
||||
stored_permission, created = StoredPermission.objects.get_or_create(
|
||||
namespace=self.namespace.name,
|
||||
name=self.name,
|
||||
defaults={
|
||||
'label': self.label
|
||||
}
|
||||
)
|
||||
stored_permission.label = self.label
|
||||
stored_permission.save()
|
||||
@@ -114,7 +111,6 @@ Permission._default_manager = Permission.objects
|
||||
class StoredPermission(models.Model):
|
||||
namespace = models.CharField(max_length=64, verbose_name=_(u'namespace'))
|
||||
name = models.CharField(max_length=64, verbose_name=_(u'name'))
|
||||
label = models.CharField(max_length=96, verbose_name=_(u'label')) # TODO: Create migration
|
||||
|
||||
objects = StoredPermissionManager()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user