Skip to content

Commit ab8c031

Browse files
committed
Changed application permission creation to account for changing of the permissions name and codename if the applications name changes. Handles permission creation in a new way since the signal was changed from a post_Save to a pre_save.
1 parent b3c5a86 commit ab8c031

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

models.py

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from django.db.models import signals
55
from django.contrib.auth.models import Permission, User
66
from django.contrib.contenttypes.models import ContentType
7+
from django.core.exceptions import ObjectDoesNotExist
78

89
from core import log
910
log = log.getLogger()
@@ -71,22 +72,26 @@ class UserFeedback(models.Model):
7172
load_time = models.IntegerField()
7273

7374
######## Signal Handler Functions ############
74-
def create_application_permission(sender, instance, created, **kwargs):
75-
log.debug("App created")
76-
if created:
77-
log.debug('Application created')
75+
def create_application_permission(sender, instance, **kwargs):
76+
app = sender.objects.get(pk=instance.id)
77+
try:
78+
perm = Permission.objects.get(codename='use_%s' % app.name)
79+
if not instance.name == app.name:
80+
log.debug("Application being saved - name: " + str(app.name))
81+
perm.name = 'Use %s' % instance.name
82+
perm.codename = 'use_%s' % instance.name
83+
perm.save()
84+
except ObjectDoesNotExist:
85+
log.debug("No permission")
7886
log.debug('Use %s' % instance.name)
7987
log.debug('vdi.use_%s' % instance.name)
8088
ct = ContentType.objects.get(model='application')
81-
log.debug(ct)
8289
perm = Permission.objects.create(name='Use %s' % instance.name, content_type = ct, codename='use_%s' % instance.name)
83-
log.debug(perm)
8490

8591
def delete_application_permission(sender, instance, **kwargs):
8692
perm = Permission.objects.get(codename='use_%s' % instance.name)
8793
perm.delete()
8894

8995
######## Signal Declarations ############
90-
signals.post_save.connect(create_application_permission, sender=Application)
96+
signals.pre_save.connect(create_application_permission, sender=Application)
9197
signals.post_delete.connect(delete_application_permission, sender=Application)
92-

0 commit comments

Comments
 (0)