|
4 | 4 | from django.db.models import signals
|
5 | 5 | from django.contrib.auth.models import Permission, User
|
6 | 6 | from django.contrib.contenttypes.models import ContentType
|
| 7 | +from django.core.exceptions import ObjectDoesNotExist |
7 | 8 |
|
8 | 9 | from core import log
|
9 | 10 | log = log.getLogger()
|
@@ -71,22 +72,26 @@ class UserFeedback(models.Model):
|
71 | 72 | load_time = models.IntegerField()
|
72 | 73 |
|
73 | 74 | ######## 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") |
78 | 86 | log.debug('Use %s' % instance.name)
|
79 | 87 | log.debug('vdi.use_%s' % instance.name)
|
80 | 88 | ct = ContentType.objects.get(model='application')
|
81 |
| - log.debug(ct) |
82 | 89 | perm = Permission.objects.create(name='Use %s' % instance.name, content_type = ct, codename='use_%s' % instance.name)
|
83 |
| - log.debug(perm) |
84 | 90 |
|
85 | 91 | def delete_application_permission(sender, instance, **kwargs):
|
86 | 92 | perm = Permission.objects.get(codename='use_%s' % instance.name)
|
87 | 93 | perm.delete()
|
88 | 94 |
|
89 | 95 | ######## Signal Declarations ############
|
90 |
| -signals.post_save.connect(create_application_permission, sender=Application) |
| 96 | +signals.pre_save.connect(create_application_permission, sender=Application) |
91 | 97 | signals.post_delete.connect(delete_application_permission, sender=Application)
|
92 |
| - |
|
0 commit comments