From 8984e888f68b9efb9c88ec226cdbd36f6d5d87cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Jim=C3=A9nez?= Date: Thu, 22 Nov 2012 11:26:48 +0000 Subject: [PATCH] Refactor with new funcions: group.is_chair(user) and group.get_chair() See #904 - Legacy-Id: 5070 --- ietf/group/models.py | 13 ++++++++++++- ietf/nomcom/forms.py | 8 ++++---- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/ietf/group/models.py b/ietf/group/models.py index b44fa98a1..84ef3c479 100644 --- a/ietf/group/models.py +++ b/ietf/group/models.py @@ -36,7 +36,7 @@ class Group(GroupInfo): acronym = models.SlugField(max_length=40, unique=True, db_index=True) charter = models.OneToOneField('doc.Document', related_name='chartered_group', blank=True, null=True) - + def latest_event(self, *args, **filter_args): """Get latest event of optional Python type and with filter arguments, e.g. g.latest_event(type="xyz") returns a GroupEvent @@ -46,6 +46,17 @@ 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 get_chair(self): + chair = self.role_set.filter(name__slug='chair')[:1] + return chair and chair[0] or None + class GroupHistory(GroupInfo): group = models.ForeignKey(Group, related_name='history_set') acronym = models.CharField(max_length=40) diff --git a/ietf/nomcom/forms.py b/ietf/nomcom/forms.py index eabd121be..dbc803127 100644 --- a/ietf/nomcom/forms.py +++ b/ietf/nomcom/forms.py @@ -30,7 +30,7 @@ class EditMembersFormPreview(FormPreview): group = get_object_or_404(NomComGroup, acronym__icontains=year, state__slug='active') - is_group_chair = bool(group.role_set.filter(person__user=request.user, name__slug='chair')[:1]) + is_group_chair = group.is_chair(request.user) is_secretariat = has_role(request.user, "Secretariat") if not is_secretariat and not is_group_chair: return HttpResponseForbidden("Must be a secretariat or group chair") @@ -110,9 +110,9 @@ class EditChairFormPreview(FormPreview): return super(EditChairFormPreview, self).__call__(request, *args, **kwargs) def parse_params(self, *args, **kwargs): - chairs = self.group.role_set.filter(name__slug='chair') - if chairs: - self.form.base_fields['chair'].initial = chairs[0].email.address + chair = self.group.get_chair() + if chair: + self.form.base_fields['chair'].initial = chair.email.address def process_preview(self, request, form, context): chair_email = form.cleaned_data['chair']