From 95afaeb5e46c5d71d72683c7b5dfd989425782f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20A=2E=20S=C3=A1nchez=20L=C3=B3pez?= Date: Thu, 8 Jul 2010 09:23:43 +0000 Subject: [PATCH] Accounts authorized to sumbit liaison statements. See #343 - Legacy-Id: 2331 --- ietf/liaisons/accounts.py | 45 +++++++++++++++++++++++++++++++++++++ ietf/liaisons/decorators.py | 14 ++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 ietf/liaisons/accounts.py create mode 100644 ietf/liaisons/decorators.py diff --git a/ietf/liaisons/accounts.py b/ietf/liaisons/accounts.py new file mode 100644 index 000000000..3442decf6 --- /dev/null +++ b/ietf/liaisons/accounts.py @@ -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 diff --git a/ietf/liaisons/decorators.py b/ietf/liaisons/decorators.py new file mode 100644 index 000000000..4b48ad90b --- /dev/null +++ b/ietf/liaisons/decorators.py @@ -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