Added support for IRTF liaisons.

- Legacy-Id: 4625
This commit is contained in:
Henrik Levkowetz 2012-07-20 11:36:01 +00:00
parent 554d3a9d28
commit 76594a4c4d
3 changed files with 104 additions and 6 deletions

View file

@ -23,6 +23,13 @@ def get_iab_chair():
return None
def get_irtf_chair():
try:
return proxy_personify_role(Role.objects.get(name="chair", group__acronym="irtf"))
except Role.DoesNotExist:
return None
def get_iab_executive_director():
try:
return proxy_personify_role(Role.objects.get(name="execdir", group__acronym="iab"))
@ -64,6 +71,10 @@ def is_iab_executive_director(person):
return bool(Role.objects.filter(person=person, name="execdir", group__acronym="iab"))
def is_irtfchair(person):
return bool(Role.objects.filter(person=person, name="chair", group__acronym="irtf"))
def can_add_outgoing_liaison(user):
person = get_person_for_user(user)
if not person:

View file

@ -2,7 +2,7 @@ from django.conf import settings
from ietf.idtracker.models import Area, IETFWG
from ietf.liaisons.models import SDOs, LiaisonManagers
from ietf.liaisons.accounts import (is_ietfchair, is_iabchair, is_iab_executive_director,
from ietf.liaisons.accounts import (is_ietfchair, is_iabchair, is_iab_executive_director, is_irtfchair,
get_ietf_chair, get_iab_chair, get_iab_executive_director,
is_secretariat)
@ -11,6 +11,7 @@ IESG = {'name': u'The IESG', 'address': u'iesg@ietf.org'}
IAB = {'name': u'The IAB', 'address': u'iab@iab.org'}
IABCHAIR = {'name': u'The IAB Chair', 'address': u'iab-chair@iab.org'}
IABEXECUTIVEDIRECTOR = {'name': u'The IAB Executive Director', 'address': u'execd@iab.org'}
IRTFCHAIR = {'name': u'The IRTF Chair', 'address': u'irtf-chair@irtf.org'}
def get_all_sdo_managers():
@ -88,6 +89,29 @@ class IETFEntity(Entity):
return result
class IRTFEntity(Entity):
poc = FakePerson(**IRTFCHAIR)
def get_from_cc(self, person):
result = []
if not is_irtfchair(person):
result.append(self.poc)
return result
def needs_approval(self, person=None):
if is_irtfchair(person):
return False
return True
def can_approve(self):
return [self.poc]
def full_user_list(self):
result.append(get_irtf_chair())
return result
class IABEntity(Entity):
chair = FakePerson(**IABCHAIR)
director = FakePerson(**IABEXECUTIVEDIRECTOR)
@ -270,6 +294,26 @@ class IABEntityManager(EntityManager):
return []
class IRTFEntityManager(EntityManager):
def __init__(self, *args, **kwargs):
super(IRTFEntityManager, self).__init__(*args, **kwargs)
self.entity = IRTFEntity(name=self.name)
def get_entity(self, pk=None):
return self.entity
def can_send_on_behalf(self, person):
if is_irtfchair(person):
return self.get_managed_list()
return []
def can_approve_list(self, person):
if is_irtfchair(person):
return self.get_managed_list()
return []
class AreaEntityManager(EntityManager):
def __init__(self, pk=None, name=None, queryset=None):
@ -358,6 +402,7 @@ class IETFHierarchyManager(object):
self.managers = {'ietf': IETFEntityManager(pk='ietf', name=u'The IETF'),
'iesg': IETFEntityManager(pk='iesg', name=u'The IESG'),
'iab': IABEntityManager(pk='iab', name=u'The IAB'),
'irtf': IRTFEntityManager(pk='irtf', name=u'The IAB'),
'area': AreaEntityManager(pk='area', name=u'IETF Areas'),
'wg': WGEntityManager(pk='wg', name=u'IETF Working Groups'),
'sdo': SDOEntityManager(pk='sdo', name=u'Standards Development Organizations'),

View file

@ -11,6 +11,8 @@ IESG = {'name': u'The IESG', 'address': u'iesg@ietf.org'}
IAB = {'name': u'The IAB', 'address': u'iab@iab.org'}
IABCHAIR = {'name': u'The IAB Chair', 'address': u'iab-chair@iab.org'}
IABEXECUTIVEDIRECTOR = {'name': u'The IAB Executive Director', 'address': u'execd@iab.org'}
IRTFCHAIR = {'name': u'The IRTF Chair', 'address': u'irtf-chair@irtf.org'}
IESGANDIAB = {'name': u'The IESG and IAB', 'address': u'iesg-iab@ietf.org'}
class FakePerson(object):
@ -124,10 +126,31 @@ class IABEntity(Entity):
return result
class IRTFEntity(Entity):
chair = FakePerson(**IRTFCHAIR)
poc = [chair,]
def get_from_cc(self, person):
result = []
return result
def needs_approval(self, person=None):
if is_irtfchair(person):
return False
return True
def can_approve(self):
return [self.chair]
def full_user_list(self):
result = [get_irtf_chair()]
return result
class IAB_IESG_Entity(Entity):
poc = [IABEntity.chair, IABEntity.director, FakePerson(**IETFCHAIR)]
cc = [FakePerson(**IAB), FakePerson(**IESG)]
poc = [IABEntity.chair, IABEntity.director, FakePerson(**IETFCHAIR), FakePerson(**IESGANDIAB), ]
cc = [FakePerson(**IAB), FakePerson(**IESG), FakePerson(**IESGANDIAB)]
def __init__(self, name, obj=None):
self.name = name
@ -149,9 +172,8 @@ class IAB_IESG_Entity(Entity):
return list(set(self.iab.can_approve() + self.iesg.can_approve()))
def full_user_list(self):
return list(set(self.iab.full_user_list() + self.iesg.full_user_list()))
return [get_ietf_chair(), get_iab_chair(), get_iab_executive_director()]
class AreaEntity(Entity):
def get_poc(self):
@ -302,6 +324,26 @@ class IABEntityManager(EntityManager):
return []
class IRTFEntityManager(EntityManager):
def __init__(self, *args, **kwargs):
super(IRTFEntityManager, self).__init__(*args, **kwargs)
self.entity = IRTFEntity(name=self.name)
def get_entity(self, pk=None):
return self.entity
def can_send_on_behalf(self, person):
if is_irtfchair(person):
return self.get_managed_list()
return []
def can_approve_list(self, person):
if is_irtfchair(person):
return self.get_managed_list()
return []
class IAB_IESG_EntityManager(EntityManager):
def __init__(self, *args, **kwargs):