diff options
Diffstat (limited to 'chimere/main/forms.py')
-rw-r--r-- | chimere/main/forms.py | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/chimere/main/forms.py b/chimere/main/forms.py index 74577d1..4618321 100644 --- a/chimere/main/forms.py +++ b/chimere/main/forms.py @@ -23,7 +23,7 @@ Forms from django import forms from django.contrib.gis.db import models from django.utils.translation import ugettext as _ -from django.contrib.auth.models import User +from django.contrib.auth.models import User, Permission, ContentType from django.core.mail import EmailMessage, BadHeaderError from chimere import settings @@ -250,4 +250,19 @@ class AreaAdminForm(forms.ModelForm): new_area.upper_left_corner = 'POINT(%s %s)' % (area[0][0], area[0][1]) new_area.lower_right_corner = 'POINT(%s %s)' % (area[1][0], area[1][1]) + content_type = ContentType.objects.get(app_label="main", + model="area") + if new_area.urn: + mnemo = 'change_area_' + new_area.urn + perm = Permission.objects.filter(codename=mnemo) + if not perm: + perm = Permission(name='Can change ' + new_area.name, + content_type_id=content_type.id, codename=mnemo) + perm.save() + else: + if 'urn' in self.initial: + mnemo = 'change_area_' + self.initial['urn'] + perm = Permission.objects.filter(codename=mnemo) + if perm: + perm[0].delete() return new_area |