Refactor with new funcions: group.is_chair(user) and group.get_chair()
See #904 - Legacy-Id: 5070
This commit is contained in:
parent
65afd10d4a
commit
8984e888f6
|
@ -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)
|
||||
|
|
|
@ -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']
|
||||
|
|
Loading…
Reference in a new issue