Skip to content

Commit 8984e88

Browse files
committed
Refactor with new funcions: group.is_chair(user) and group.get_chair()
See ietf-tools#904 - Legacy-Id: 5070
1 parent 65afd10 commit 8984e88

2 files changed

Lines changed: 16 additions & 5 deletions

File tree

ietf/group/models.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ class Group(GroupInfo):
3636

3737
acronym = models.SlugField(max_length=40, unique=True, db_index=True)
3838
charter = models.OneToOneField('doc.Document', related_name='chartered_group', blank=True, null=True)
39-
39+
4040
def latest_event(self, *args, **filter_args):
4141
"""Get latest event of optional Python type and with filter
4242
arguments, e.g. g.latest_event(type="xyz") returns a GroupEvent
@@ -46,6 +46,17 @@ def latest_event(self, *args, **filter_args):
4646
e = model.objects.filter(group=self).filter(**filter_args).order_by('-time', '-id')[:1]
4747
return e[0] if e else None
4848

49+
def is_chair(self, user):
50+
chair = self.get_chair()
51+
if chair:
52+
return self.get_chair().person.user == user
53+
else:
54+
return False
55+
56+
def get_chair(self):
57+
chair = self.role_set.filter(name__slug='chair')[:1]
58+
return chair and chair[0] or None
59+
4960
class GroupHistory(GroupInfo):
5061
group = models.ForeignKey(Group, related_name='history_set')
5162
acronym = models.CharField(max_length=40)

ietf/nomcom/forms.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ def __call__(self, request, *args, **kwargs):
3030
group = get_object_or_404(NomComGroup,
3131
acronym__icontains=year,
3232
state__slug='active')
33-
is_group_chair = bool(group.role_set.filter(person__user=request.user, name__slug='chair')[:1])
33+
is_group_chair = group.is_chair(request.user)
3434
is_secretariat = has_role(request.user, "Secretariat")
3535
if not is_secretariat and not is_group_chair:
3636
return HttpResponseForbidden("Must be a secretariat or group chair")
@@ -110,9 +110,9 @@ def __call__(self, request, *args, **kwargs):
110110
return super(EditChairFormPreview, self).__call__(request, *args, **kwargs)
111111

112112
def parse_params(self, *args, **kwargs):
113-
chairs = self.group.role_set.filter(name__slug='chair')
114-
if chairs:
115-
self.form.base_fields['chair'].initial = chairs[0].email.address
113+
chair = self.group.get_chair()
114+
if chair:
115+
self.form.base_fields['chair'].initial = chair.email.address
116116

117117
def process_preview(self, request, form, context):
118118
chair_email = form.cleaned_data['chair']

0 commit comments

Comments
 (0)