Accounts authorized to sumbit liaison statements. See #343
- Legacy-Id: 2331
This commit is contained in:
parent
96cb4acffa
commit
95afaeb5e4
45
ietf/liaisons/accounts.py
Normal file
45
ietf/liaisons/accounts.py
Normal file
|
@ -0,0 +1,45 @@
|
|||
from ietf.idtracker.models import Role
|
||||
|
||||
|
||||
def get_person_for_user(user):
|
||||
return user.get_profile().person()
|
||||
|
||||
|
||||
def is_areadirector(person):
|
||||
return bool(person.areadirector_set.all())
|
||||
|
||||
|
||||
def is_wgchair(person):
|
||||
return bool(person.wgchair_set.all())
|
||||
|
||||
|
||||
def is_wgsecretary(person):
|
||||
return bool(person.wgsecretary_set.all())
|
||||
|
||||
|
||||
def has_role(person, role):
|
||||
return bool(person.role_set.filter(pk=role))
|
||||
|
||||
|
||||
def is_ietfchair(person):
|
||||
return has_role(person, Role.IETF_CHAIR)
|
||||
|
||||
|
||||
def is_iabchair(person):
|
||||
return has_role(person, Role.IAB_CHAIR)
|
||||
|
||||
|
||||
def is_iab_executive_director(person):
|
||||
return has_role(person, Role.IAB_EXCUTIVE_DIRECTOR)
|
||||
|
||||
|
||||
def can_add_liaison(user):
|
||||
person = get_person_for_user(user)
|
||||
if not person:
|
||||
return False
|
||||
|
||||
if (is_areadirector(person) or is_wgchair(person) or
|
||||
is_wgsecretary(person) or is_ietfchair(person) or
|
||||
is_iabchair(person) or is_iab_executive_director(person)):
|
||||
return True
|
||||
return False
|
14
ietf/liaisons/decorators.py
Normal file
14
ietf/liaisons/decorators.py
Normal file
|
@ -0,0 +1,14 @@
|
|||
from ietf.ietfauth.decorators import _CheckLogin403
|
||||
from ietf.liaisons.accounts import can_add_liaison
|
||||
|
||||
|
||||
def can_submit_liaison(view_func=None):
|
||||
|
||||
def decorate(view_func):
|
||||
return _CheckLogin403(
|
||||
view_func,
|
||||
lambda u: can_add_liaison(u),
|
||||
"Restricted to participants who are authorized to submit liaison statements on behalf of the various IETF entities")
|
||||
if view_func:
|
||||
return decorate(view_func)
|
||||
return decorate
|
Loading…
Reference in a new issue