datatracker/ietf/wgchairs/accounts.py
Emilio A. Sánchez López 242796253e Form to edit or upload a protocol write-up. See #561
- Legacy-Id: 2745
2011-01-17 18:20:06 +00:00

85 lines
2.3 KiB
Python

def is_area_director_for_group(person, group):
return bool(group.area.area.areadirector_set.filter(person=person).count())
def is_group_chair(person, group):
if group.chairs().filter(person=person):
return True
return False
def is_group_delegate(person, group):
return bool(group.wgdelegate_set.filter(person=person).count())
def is_document_shepherd(person, document):
return person == document.shepherd
def get_person_for_user(user):
try:
return user.get_profile().person()
except:
return None
def can_do_wg_workflow_in_group(user, group):
person = get_person_for_user(user)
if not person:
return False
return is_group_chair(person, group)
def can_do_wg_workflow_in_document(user, document):
person = get_person_for_user(user)
if not person or not document.group:
return False
return can_do_wg_workflow_in_group(document.group.ietfwg)
def can_manage_workflow_in_group(user, group):
person = get_person_for_user(user)
if not person:
return False
return is_group_chair(person, group)
def can_manage_delegates_in_group(user, group):
person = get_person_for_user(user)
if not person:
return False
return is_group_chair(person, group)
def can_manage_shepherds_in_group(user, group):
person = get_person_for_user(user)
if not person:
return False
return is_group_chair(person, group)
def can_manage_shepherd_of_a_document(user, document):
person = get_person_for_user(user)
if not person or not document.group:
return False
return can_manage_shepherds_in_group(user, document.group.ietfwg)
def can_manage_writeup_of_a_document_no_state(user, document):
person = get_person_for_user(user)
if not person or not document.group:
return False
group = document.group.ietfwg
return (is_group_chair(person, group) or
is_areadirector_for_group(person, group) or
is_group_delegate(person, group))
def can_manage_writeup_of_a_document(user, document):
person = get_person_for_user(user)
if not person or not document.group:
return False
group = document.group.ietfwg
return (can_manage_writeup_of_a_document_no_state(user, document) or
is_document_shepherd(person, doc))