mirror of
https://github.com/ae-utbm/sith.git
synced 2024-11-22 14:13:21 +00:00
AutoCompleteSelectField on clubs
This commit is contained in:
parent
f152791d90
commit
17b483bd21
@ -9,6 +9,7 @@ from django.core.urlresolvers import reverse
|
|||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import ugettext as _
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
from ajax_select.fields import AutoCompleteSelectField
|
||||||
|
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
|
|
||||||
@ -98,20 +99,7 @@ class ClubMemberForm(forms.ModelForm):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = Membership
|
model = Membership
|
||||||
fields = ['user', 'role', 'description']
|
fields = ['user', 'role', 'description']
|
||||||
|
user = AutoCompleteSelectField('users', required=True, label=_("Select user"), help_text=None)
|
||||||
def clean(self):
|
|
||||||
"""
|
|
||||||
Validates the permissions
|
|
||||||
e.g.: the president can add anyone anywhere, but a member can not make someone become president
|
|
||||||
"""
|
|
||||||
ret = super(ClubMemberForm, self).clean()
|
|
||||||
ms = self.instance.club.get_membership_for(self._user)
|
|
||||||
if (self.cleaned_data['role'] <= SITH_MAXIMUM_FREE_ROLE or
|
|
||||||
(ms is not None and ms.role >= self.cleaned_data['role']) or
|
|
||||||
self._user.is_in_group(SITH_MAIN_BOARD_GROUP) or
|
|
||||||
self._user.is_superuser):
|
|
||||||
return ret
|
|
||||||
raise ValidationError("You do not have the permission to do that")
|
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
"""
|
"""
|
||||||
@ -140,10 +128,28 @@ class ClubMembersView(ClubTabsMixin, CanViewMixin, UpdateView):
|
|||||||
form.instance = Membership.objects.filter(club=self.object).filter(user=form.data.get('user')).filter(end_date=None).first()
|
form.instance = Membership.objects.filter(club=self.object).filter(user=form.data.get('user')).filter(end_date=None).first()
|
||||||
if form.instance is None: # Instanciate a new membership
|
if form.instance is None: # Instanciate a new membership
|
||||||
form.instance = Membership(club=self.object, user=self.request.user)
|
form.instance = Membership(club=self.object, user=self.request.user)
|
||||||
form.initial = {'user': self.request.user}
|
# form.initial = {'user': self.request.user}
|
||||||
form._user = self.request.user
|
# form._user = self.request.user
|
||||||
return form
|
return form
|
||||||
|
|
||||||
|
def post(self, request, *args, **kwargs):
|
||||||
|
"""
|
||||||
|
Check user rights
|
||||||
|
"""
|
||||||
|
self.object = self.get_object()
|
||||||
|
form = self.get_form()
|
||||||
|
if form.is_valid():
|
||||||
|
ms = self.object.get_membership_for(request.user)
|
||||||
|
if (form.cleaned_data['role'] <= SITH_MAXIMUM_FREE_ROLE or
|
||||||
|
(ms is not None and ms.role >= form.cleaned_data['role']) or
|
||||||
|
request.user.is_in_group(SITH_MAIN_BOARD_GROUP) or
|
||||||
|
request.user.is_root or request.user.is_board_member):
|
||||||
|
return self.form_valid(form)
|
||||||
|
else:
|
||||||
|
return self.form_invalid(form)
|
||||||
|
else:
|
||||||
|
return self.form_invalid(form)
|
||||||
|
|
||||||
class ClubOldMembersView(ClubTabsMixin, CanViewMixin, DetailView):
|
class ClubOldMembersView(ClubTabsMixin, CanViewMixin, DetailView):
|
||||||
"""
|
"""
|
||||||
Old members of a club
|
Old members of a club
|
||||||
|
Loading…
Reference in New Issue
Block a user