Added support for IRTF liaisons.
- Legacy-Id: 4625
This commit is contained in:
parent
554d3a9d28
commit
76594a4c4d
|
@ -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:
|
||||
|
|
|
@ -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'),
|
||||
|
|
|
@ -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):
|
||||
|
|
Loading…
Reference in a new issue