Add has_role(role_name, user) utility to group, used like
group.has_role("chair", request.user). Remove the NomCom specific group utilities, apparently they're not actually used. - Legacy-Id: 6217
This commit is contained in:
parent
e1bd47b509
commit
0eed4ad9e5
ietf
|
@ -54,26 +54,13 @@ class Group(GroupInfo):
|
|||
e = model.objects.filter(group=self).filter(**filter_args).order_by('-time', '-id')[:1]
|
||||
return e[0] if e else None
|
||||
|
||||
def is_chair(self, user):
|
||||
chair = self.get_chair()
|
||||
if chair:
|
||||
return self.get_chair().person.user == user
|
||||
else:
|
||||
return False
|
||||
|
||||
def is_member(self, user):
|
||||
members = self.get_members()
|
||||
users = [member.person.user for member in members]
|
||||
return user in users
|
||||
def has_role(self, role_name, user):
|
||||
return user.is_authenticated() and self.role_set.filter(name=role_name, person__user=user).exists()
|
||||
|
||||
def get_chair(self):
|
||||
chair = self.role_set.filter(name__slug='chair')[:1]
|
||||
return chair and chair[0] or None
|
||||
|
||||
def get_members(self):
|
||||
members = self.role_set.filter(name__slug__in=["chair", "member", "advisor", "liaison"])
|
||||
return members
|
||||
|
||||
class GroupHistory(GroupInfo):
|
||||
group = models.ForeignKey(Group, related_name='history_set')
|
||||
acronym = models.CharField(max_length=40)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
import os
|
||||
|
||||
from django.db import models
|
||||
|
|
|
@ -24,7 +24,7 @@ def is_chair(user, year):
|
|||
nomcom = get_nomcom_by_year(year=year)
|
||||
if has_role(user, "Secretariat"):
|
||||
return True
|
||||
return nomcom.group.is_chair(user)
|
||||
return nomcom.group.has_role("chair", user)
|
||||
|
||||
|
||||
@register.filter
|
||||
|
|
|
@ -64,18 +64,6 @@ def get_user_email(user):
|
|||
return mail
|
||||
|
||||
|
||||
def is_nomcom_member(user, nomcom):
|
||||
is_group_member = nomcom.group.is_member(user)
|
||||
if not is_group_member:
|
||||
raise PermissionDenied("Must be nomcom member")
|
||||
|
||||
|
||||
def is_nomcom_chair(user, nomcom):
|
||||
is_group_chair = nomcom.group.is_chair(user)
|
||||
if not is_group_chair:
|
||||
raise PermissionDenied("Must be nomcom chair")
|
||||
|
||||
|
||||
def get_hash_nominee_position(date, nominee_position_id):
|
||||
return hashlib.md5('%s%s%s' % (settings.SECRET_KEY, date, nominee_position_id)).hexdigest()
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import datetime
|
||||
|
||||
|
@ -81,7 +81,7 @@ def private_key(request, year):
|
|||
def private_index(request, year):
|
||||
nomcom = get_nomcom_by_year(year)
|
||||
all_nominee_positions = NomineePosition.objects.get_by_nomcom(nomcom).not_duplicated()
|
||||
is_chair = nomcom.group.is_chair(request.user)
|
||||
is_chair = nomcom.group.has_role("chair", request.user)
|
||||
message = None
|
||||
if is_chair and request.method == 'POST':
|
||||
action = request.POST.get('action')
|
||||
|
|
Loading…
Reference in a new issue