From 10491414836456970dc736f7a88d17d5ecdabe95 Mon Sep 17 00:00:00 2001 From: Oskar Hahn Date: Thu, 22 Nov 2012 18:39:54 +0100 Subject: [PATCH] Created a default group for registered users --- openslides/participant/forms.py | 16 +++++++++++++--- openslides/participant/models.py | 16 ++++++++++++++-- .../templates/participant/group_overview.html | 2 +- 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/openslides/participant/forms.py b/openslides/participant/forms.py index da395680e..721cf2739 100644 --- a/openslides/participant/forms.py +++ b/openslides/participant/forms.py @@ -25,6 +25,16 @@ class UserCreateForm(forms.ModelForm, CssClassMixin): queryset=Group.objects.exclude(name__iexact='anonymous'), label=_("Groups"), required=False) + def __init__(self, *args, **kwargs): + if kwargs.get('instance', None) is None: + initial = kwargs.setdefault('initial', {}) + registered, created = Group.objects.get_or_create(name__iexact='Registered') + if created: + registered.name = 'Registered' + registered.save() + initial['groups'] = [registered.pk] + super(UserCreateForm, self).__init__(*args, **kwargs) + class Meta: model = User fields = ('first_name', 'last_name', 'is_active', 'groups', 'structure_level', @@ -76,13 +86,13 @@ class GroupForm(forms.ModelForm, CssClassMixin): # Do not allow to change the name "anonymous" or give another group # this name data = self.cleaned_data['name'] - if self.instance.name.lower() == 'anonymous': + if self.instance.name.lower() in ['anonymous', 'registered']: # Editing the anonymous-user if self.instance.name.lower() != data.lower(): raise forms.ValidationError( - _('You can not edit the name for the anonymous user')) + _('You can not edit the name for this group.')) else: - if data.lower() == 'anonymous': + if data.lower() in ['anonymous', 'registered']: raise forms.ValidationError( _('Group name "%s" is reserved for internal use.') % data) return data diff --git a/openslides/participant/models.py b/openslides/participant/models.py index 14758a16d..94db74084 100644 --- a/openslides/participant/models.py +++ b/openslides/participant/models.py @@ -234,7 +234,7 @@ def default_config(sender, key, **kwargs): @receiver(signals.post_save, sender=DjangoUser) -def user_post_save(sender, instance, signal, *args, **kwargs): +def djangouser_post_save(sender, instance, signal, *args, **kwargs): try: instance.user except User.DoesNotExist: @@ -242,8 +242,20 @@ def user_post_save(sender, instance, signal, *args, **kwargs): @receiver(signals.post_save, sender=DjangoGroup) -def group_post_save(sender, instance, signal, *args, **kwargs): +def djangogroup_post_save(sender, instance, signal, *args, **kwargs): try: instance.group except Group.DoesNotExist: Group(django_group=instance).save_base(raw=True) + + +@receiver(signals.post_save, sender=User) +def user_post_save(sender, instance, *args, **kwargs): + if not kwargs['created']: + return + registered, created = Group.objects.get_or_create(name__iexact='Registered') + if created: + registered.name = 'Registered' + registered.save() + instance.groups.add(registered) + instance.save() diff --git a/openslides/participant/templates/participant/group_overview.html b/openslides/participant/templates/participant/group_overview.html index 8bcbf46c1..550fe2f56 100644 --- a/openslides/participant/templates/participant/group_overview.html +++ b/openslides/participant/templates/participant/group_overview.html @@ -17,7 +17,7 @@ {{ group.name }} - {% if group.name|lower != 'anonymous' %} + {% if group.name|lower != 'anonymous' and group.name|lower != 'registered' %} {% endif %}