Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
185 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
# 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): | ||
"""Grabs all the existing UserRoles and makes sure that none of the roles are assigned to any | ||
other users. | ||
:param orm: | ||
:return: | ||
""" | ||
roles_with_multiple_user_role = orm.Role.objects.annotate(num_role=models.Count('user_role')).filter(num_role__gt=1) | ||
for multi_role in roles_with_multiple_user_role: | ||
for user_role in multi_role.user_role.all(): | ||
user_privs = orm.Role.objects.get_or_create( | ||
name="Privileges for %s" % user_role.user.username, | ||
slug="%s_privileges" % user_role.user.username, | ||
)[0] | ||
orm.Grant.objects.get_or_create( | ||
from_role=user_privs, | ||
to_role=multi_role, | ||
) | ||
user_role.role = user_privs | ||
user_role.save() | ||
|
||
def backwards(self, orm): | ||
""" do nothing | ||
:param orm: | ||
:return: | ||
""" | ||
|
||
models = { | ||
u'auth.group': { | ||
'Meta': {'object_name': 'Group'}, | ||
u'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': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) | ||
}, | ||
u'auth.permission': { | ||
'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'}, | ||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), | ||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}), | ||
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) | ||
}, | ||
u'auth.user': { | ||
'Meta': {'object_name': 'User'}, | ||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(2014, 7, 28, 18, 44, 31, 286844)'}), | ||
'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': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), | ||
u'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(2014, 7, 28, 18, 44, 31, 286480)'}), | ||
'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': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), | ||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) | ||
}, | ||
u'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'}), | ||
u'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'}) | ||
}, | ||
u'django_prbac.grant': { | ||
'Meta': {'object_name': 'Grant'}, | ||
'assignment': ('json_field.fields.JSONField', [], {'default': '{}', 'blank': 'True'}), | ||
'from_role': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "u'memberships_granted'", 'to': u"orm['django_prbac.Role']"}), | ||
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
'to_role': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "u'members'", 'to': u"orm['django_prbac.Role']"}) | ||
}, | ||
u'django_prbac.role': { | ||
'Meta': {'object_name': 'Role'}, | ||
'description': ('django.db.models.fields.TextField', [], {'default': "u''", 'blank': 'True'}), | ||
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
'name': ('django.db.models.fields.CharField', [], {'max_length': '256'}), | ||
'parameters': ('django_prbac.fields.StringSetField', [], {'default': '[]', 'blank': 'True'}), | ||
'slug': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '256'}) | ||
}, | ||
u'django_prbac.userrole': { | ||
'Meta': {'object_name': 'UserRole'}, | ||
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
'role': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "u'user_role'", 'to': u"orm['django_prbac.Role']"}), | ||
'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "u'prbac_role'", 'unique': 'True', 'to': u"orm['auth.User']"}) | ||
} | ||
} | ||
|
||
complete_apps = ['django_prbac'] |
87 changes: 87 additions & 0 deletions
87
django_prbac/migrations/0006_auto__chg_field_userrole_role__add_unique_userrole_role.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,87 @@ | ||
# 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): | ||
|
||
# Changing field 'UserRole.role' | ||
db.alter_column(u'django_prbac_userrole', 'role_id', self.gf('django.db.models.fields.related.OneToOneField')(unique=True, to=orm['django_prbac.Role'])) | ||
|
||
# Adding unique constraint on 'UserRole', fields ['role'] | ||
db.create_unique(u'django_prbac_userrole', ['role_id']) | ||
|
||
|
||
def backwards(self, orm): | ||
|
||
# Removing unique constraint on 'UserRole', fields ['role'] | ||
db.delete_unique(u'django_prbac_userrole', ['role_id']) | ||
|
||
# Changing field 'UserRole.role' | ||
db.alter_column(u'django_prbac_userrole', 'role_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['django_prbac.Role'])) | ||
|
||
|
||
models = { | ||
u'auth.group': { | ||
'Meta': {'object_name': 'Group'}, | ||
u'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': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) | ||
}, | ||
u'auth.permission': { | ||
'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'}, | ||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), | ||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}), | ||
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) | ||
}, | ||
u'auth.user': { | ||
'Meta': {'object_name': 'User'}, | ||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(2014, 7, 28, 23, 4, 55, 712814)'}), | ||
'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': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), | ||
u'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(2014, 7, 28, 23, 4, 55, 712474)'}), | ||
'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': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), | ||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) | ||
}, | ||
u'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'}), | ||
u'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'}) | ||
}, | ||
u'django_prbac.grant': { | ||
'Meta': {'object_name': 'Grant'}, | ||
'assignment': ('json_field.fields.JSONField', [], {'default': '{}', 'blank': 'True'}), | ||
'from_role': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "u'memberships_granted'", 'to': u"orm['django_prbac.Role']"}), | ||
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
'to_role': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "u'members'", 'to': u"orm['django_prbac.Role']"}) | ||
}, | ||
u'django_prbac.role': { | ||
'Meta': {'object_name': 'Role'}, | ||
'description': ('django.db.models.fields.TextField', [], {'default': "u''", 'blank': 'True'}), | ||
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
'name': ('django.db.models.fields.CharField', [], {'max_length': '256'}), | ||
'parameters': ('django_prbac.fields.StringSetField', [], {'default': '[]', 'blank': 'True'}), | ||
'slug': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '256'}) | ||
}, | ||
u'django_prbac.userrole': { | ||
'Meta': {'object_name': 'UserRole'}, | ||
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
'role': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "u'user_role'", 'unique': 'True', 'to': u"orm['django_prbac.Role']"}), | ||
'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "u'prbac_role'", 'unique': 'True', 'to': u"orm['auth.User']"}) | ||
} | ||
} | ||
|
||
complete_apps = ['django_prbac'] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters