Refactor with new funcions: group.is_chair(user) and group.get_chair()

See #904
 - Legacy-Id: 5070
This commit is contained in:
Emilio Jiménez 2012-11-22 11:26:48 +00:00
parent 65afd10d4a
commit 8984e888f6
2 changed files with 16 additions and 5 deletions

View file

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

View file

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