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:
Ole Laursen 2013-09-20 11:23:17 +00:00
parent e1bd47b509
commit 0eed4ad9e5
5 changed files with 6 additions and 31 deletions

View file

@ -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)

View file

@ -1,4 +1,4 @@
# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
import os
from django.db import models

View file

@ -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

View file

@ -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()

View file

@ -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')