mark group to be teated as user
This commit is contained in:
parent
4ffb701397
commit
93020f9ead
@ -180,7 +180,9 @@ def edit(request, application_id=None):
|
|||||||
return redirect(reverse('application_overview'))
|
return redirect(reverse('application_overview'))
|
||||||
if application_id is not None:
|
if application_id is not None:
|
||||||
application = Application.objects.get(id=application_id)
|
application = Application.objects.get(id=application_id)
|
||||||
if not request.user == application.submitter.user and not is_manager:
|
if (not hasattr(application.submitter, 'user') or
|
||||||
|
not request.user == application.submitter.user) \
|
||||||
|
and not is_manager:
|
||||||
messages.error(request, _("You can not edit this application. You are not the submitter."))
|
messages.error(request, _("You can not edit this application. You are not the submitter."))
|
||||||
return redirect(reverse('application_view', args=[application.id]))
|
return redirect(reverse('application_view', args=[application.id]))
|
||||||
actions = application.get_allowed_actions(user=request.user)
|
actions = application.get_allowed_actions(user=request.user)
|
||||||
|
@ -14,6 +14,7 @@ from django import forms
|
|||||||
from django.utils.translation import ugettext_lazy as _, ugettext_noop
|
from django.utils.translation import ugettext_lazy as _, ugettext_noop
|
||||||
|
|
||||||
from openslides.utils.forms import CssClassMixin
|
from openslides.utils.forms import CssClassMixin
|
||||||
|
from openslides.utils.user import UserFormField
|
||||||
|
|
||||||
from openslides.participant.models import Profile
|
from openslides.participant.models import Profile
|
||||||
from openslides.assignment.models import Assignment
|
from openslides.assignment.models import Assignment
|
||||||
@ -29,9 +30,8 @@ class AssignmentForm(forms.ModelForm, CssClassMixin):
|
|||||||
|
|
||||||
|
|
||||||
class AssignmentRunForm(forms.Form, CssClassMixin):
|
class AssignmentRunForm(forms.Form, CssClassMixin):
|
||||||
candidate = forms.ModelChoiceField(
|
candidate = UserFormField(
|
||||||
widget=forms.Select(attrs={'class': 'medium-input'}),
|
widget=forms.Select(attrs={'class': 'medium-input'}),
|
||||||
queryset=Profile.objects.all().order_by('user__first_name'),
|
|
||||||
label=_("Nominate a participant"),
|
label=_("Nominate a participant"),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -68,6 +68,9 @@ class ProfileForm(forms.ModelForm, CssClassMixin):
|
|||||||
|
|
||||||
|
|
||||||
class GroupForm(forms.ModelForm, CssClassMixin):
|
class GroupForm(forms.ModelForm, CssClassMixin):
|
||||||
|
as_user = forms.BooleanField(initial=False, required=False,
|
||||||
|
label=_("Treat Group as User"),
|
||||||
|
help_text=_("The Group will appear on any place, other user does."))
|
||||||
permissions = LocalizedModelMultipleChoiceField(
|
permissions = LocalizedModelMultipleChoiceField(
|
||||||
queryset=Permission.objects.all(), label=_("Persmissions"))
|
queryset=Permission.objects.all(), label=_("Persmissions"))
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ from openslides.utils.views import FormView, PDFView
|
|||||||
|
|
||||||
from openslides.config.models import config
|
from openslides.config.models import config
|
||||||
|
|
||||||
from openslides.participant.models import Profile
|
from openslides.participant.models import Profile, DjangoGroup
|
||||||
from openslides.participant.api import gen_username, gen_password
|
from openslides.participant.api import gen_username, gen_password
|
||||||
from openslides.participant.forms import (UserNewForm, UserEditForm,
|
from openslides.participant.forms import (UserNewForm, UserEditForm,
|
||||||
ProfileForm, UsersettingsForm, UserImportForm, GroupForm,
|
ProfileForm, UsersettingsForm, UserImportForm, GroupForm,
|
||||||
@ -269,6 +269,7 @@ def group_edit(request, group_id=None):
|
|||||||
try:
|
try:
|
||||||
group = Group.objects.get(id=group_id)
|
group = Group.objects.get(id=group_id)
|
||||||
except Group.DoesNotExist:
|
except Group.DoesNotExist:
|
||||||
|
# TODO: return a 404 Object
|
||||||
raise NameError("There is no group %d" % group_id)
|
raise NameError("There is no group %d" % group_id)
|
||||||
else:
|
else:
|
||||||
group = None
|
group = None
|
||||||
@ -277,14 +278,18 @@ def group_edit(request, group_id=None):
|
|||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
form = GroupForm(request.POST, instance=group)
|
form = GroupForm(request.POST, instance=group)
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
|
# TODO: This can be done inside the form
|
||||||
group_name = form.cleaned_data['name'].lower()
|
group_name = form.cleaned_data['name'].lower()
|
||||||
|
|
||||||
|
# TODO: Why is this code called on any request and not only, if the
|
||||||
|
# anonymous_group is edited?
|
||||||
try:
|
try:
|
||||||
anonymous_group = Group.objects.get(name='Anonymous')
|
anonymous_group = Group.objects.get(name='Anonymous')
|
||||||
except Group.DoesNotExist:
|
except Group.DoesNotExist:
|
||||||
anonymous_group = None
|
anonymous_group = None
|
||||||
|
|
||||||
# special handling for anonymous auth
|
# special handling for anonymous auth
|
||||||
|
# TODO: This code should be a form validator.
|
||||||
if group is None and group_name.strip().lower() == 'anonymous':
|
if group is None and group_name.strip().lower() == 'anonymous':
|
||||||
# don't allow to create this group
|
# don't allow to create this group
|
||||||
messages.error(request,
|
messages.error(request,
|
||||||
@ -296,6 +301,16 @@ def group_edit(request, group_id=None):
|
|||||||
}
|
}
|
||||||
|
|
||||||
group = form.save()
|
group = form.save()
|
||||||
|
try:
|
||||||
|
django_group = DjangoGroup.objects.get(group=group)
|
||||||
|
except DjangoGroup.DoesNotExist:
|
||||||
|
django_group = None
|
||||||
|
if form.cleaned_data['as_user'] and django_group is None:
|
||||||
|
DjangoGroup(group=group).save()
|
||||||
|
elif not form.cleaned_data['as_user'] and django_group:
|
||||||
|
django_group.delete()
|
||||||
|
|
||||||
|
|
||||||
if anonymous_group is not None and \
|
if anonymous_group is not None and \
|
||||||
anonymous_group.id == group.id:
|
anonymous_group.id == group.id:
|
||||||
# prevent name changes -
|
# prevent name changes -
|
||||||
@ -315,7 +330,12 @@ def group_edit(request, group_id=None):
|
|||||||
else:
|
else:
|
||||||
messages.error(request, _('Please check the form for errors.'))
|
messages.error(request, _('Please check the form for errors.'))
|
||||||
else:
|
else:
|
||||||
form = GroupForm(instance=group)
|
if group and DjangoGroup.objects.filter(group=group).exists():
|
||||||
|
initial = {'as_user': True}
|
||||||
|
else:
|
||||||
|
initial = {'as_user': False}
|
||||||
|
|
||||||
|
form = GroupForm(instance=group, initial=initial)
|
||||||
return {
|
return {
|
||||||
'form': form,
|
'form': form,
|
||||||
'group': group,
|
'group': group,
|
||||||
|
@ -16,7 +16,7 @@ from django import forms
|
|||||||
from openslides.utils.user.signals import receiv_users
|
from openslides.utils.user.signals import receiv_users
|
||||||
|
|
||||||
|
|
||||||
class UserChoices():
|
class UserChoices(object):
|
||||||
def __init__(self, field):
|
def __init__(self, field):
|
||||||
self.field = field
|
self.field = field
|
||||||
|
|
||||||
@ -29,7 +29,6 @@ class UserChoices():
|
|||||||
|
|
||||||
class UserFormField(forms.fields.ChoiceField):
|
class UserFormField(forms.fields.ChoiceField):
|
||||||
def __init__(self, required=True, initial=None, empty_label=u"---------", *args, **kwargs):
|
def __init__(self, required=True, initial=None, empty_label=u"---------", *args, **kwargs):
|
||||||
|
|
||||||
if required and (initial is not None):
|
if required and (initial is not None):
|
||||||
self.empty_label = None
|
self.empty_label = None
|
||||||
else:
|
else:
|
||||||
@ -38,7 +37,6 @@ class UserFormField(forms.fields.ChoiceField):
|
|||||||
super(UserFormField, self).__init__(choices=UserChoices(field=self), required=required, initial=initial, *args, **kwargs)
|
super(UserFormField, self).__init__(choices=UserChoices(field=self), required=required, initial=initial, *args, **kwargs)
|
||||||
|
|
||||||
def to_python(self, value):
|
def to_python(self, value):
|
||||||
print value
|
|
||||||
return get_user(value)
|
return get_user(value)
|
||||||
|
|
||||||
def valid_value(self, value):
|
def valid_value(self, value):
|
||||||
@ -109,9 +107,7 @@ class Users(object):
|
|||||||
for receiver, users_list in receiv_users.send(sender='users'):
|
for receiver, users_list in receiv_users.send(sender='users'):
|
||||||
for users in users_list:
|
for users in users_list:
|
||||||
# Does iter(users) work?
|
# Does iter(users) work?
|
||||||
print users
|
|
||||||
for user in users:
|
for user in users:
|
||||||
print user
|
|
||||||
yield user
|
yield user
|
||||||
|
|
||||||
|
|
||||||
@ -122,7 +118,6 @@ def generate_uid(prefix, id):
|
|||||||
return "%s:%d" % (prefix, id)
|
return "%s:%d" % (prefix, id)
|
||||||
|
|
||||||
|
|
||||||
# TODO: I dont need this object any more
|
|
||||||
class UserMixin(object):
|
class UserMixin(object):
|
||||||
@property
|
@property
|
||||||
def uid(self):
|
def uid(self):
|
||||||
|
Loading…
Reference in New Issue
Block a user