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
|
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():
|
def get_iab_executive_director():
|
||||||
try:
|
try:
|
||||||
return proxy_personify_role(Role.objects.get(name="execdir", group__acronym="iab"))
|
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"))
|
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):
|
def can_add_outgoing_liaison(user):
|
||||||
person = get_person_for_user(user)
|
person = get_person_for_user(user)
|
||||||
if not person:
|
if not person:
|
||||||
|
|
|
@ -2,7 +2,7 @@ from django.conf import settings
|
||||||
|
|
||||||
from ietf.idtracker.models import Area, IETFWG
|
from ietf.idtracker.models import Area, IETFWG
|
||||||
from ietf.liaisons.models import SDOs, LiaisonManagers
|
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,
|
get_ietf_chair, get_iab_chair, get_iab_executive_director,
|
||||||
is_secretariat)
|
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'}
|
IAB = {'name': u'The IAB', 'address': u'iab@iab.org'}
|
||||||
IABCHAIR = {'name': u'The IAB Chair', 'address': u'iab-chair@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'}
|
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():
|
def get_all_sdo_managers():
|
||||||
|
@ -88,6 +89,29 @@ class IETFEntity(Entity):
|
||||||
return result
|
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):
|
class IABEntity(Entity):
|
||||||
chair = FakePerson(**IABCHAIR)
|
chair = FakePerson(**IABCHAIR)
|
||||||
director = FakePerson(**IABEXECUTIVEDIRECTOR)
|
director = FakePerson(**IABEXECUTIVEDIRECTOR)
|
||||||
|
@ -270,6 +294,26 @@ class IABEntityManager(EntityManager):
|
||||||
return []
|
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):
|
class AreaEntityManager(EntityManager):
|
||||||
|
|
||||||
def __init__(self, pk=None, name=None, queryset=None):
|
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'),
|
self.managers = {'ietf': IETFEntityManager(pk='ietf', name=u'The IETF'),
|
||||||
'iesg': IETFEntityManager(pk='iesg', name=u'The IESG'),
|
'iesg': IETFEntityManager(pk='iesg', name=u'The IESG'),
|
||||||
'iab': IABEntityManager(pk='iab', name=u'The IAB'),
|
'iab': IABEntityManager(pk='iab', name=u'The IAB'),
|
||||||
|
'irtf': IRTFEntityManager(pk='irtf', name=u'The IAB'),
|
||||||
'area': AreaEntityManager(pk='area', name=u'IETF Areas'),
|
'area': AreaEntityManager(pk='area', name=u'IETF Areas'),
|
||||||
'wg': WGEntityManager(pk='wg', name=u'IETF Working Groups'),
|
'wg': WGEntityManager(pk='wg', name=u'IETF Working Groups'),
|
||||||
'sdo': SDOEntityManager(pk='sdo', name=u'Standards Development Organizations'),
|
'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'}
|
IAB = {'name': u'The IAB', 'address': u'iab@iab.org'}
|
||||||
IABCHAIR = {'name': u'The IAB Chair', 'address': u'iab-chair@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'}
|
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):
|
class FakePerson(object):
|
||||||
|
@ -124,10 +126,31 @@ class IABEntity(Entity):
|
||||||
return result
|
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):
|
class IAB_IESG_Entity(Entity):
|
||||||
|
|
||||||
poc = [IABEntity.chair, IABEntity.director, FakePerson(**IETFCHAIR)]
|
poc = [IABEntity.chair, IABEntity.director, FakePerson(**IETFCHAIR), FakePerson(**IESGANDIAB), ]
|
||||||
cc = [FakePerson(**IAB), FakePerson(**IESG)]
|
cc = [FakePerson(**IAB), FakePerson(**IESG), FakePerson(**IESGANDIAB)]
|
||||||
|
|
||||||
def __init__(self, name, obj=None):
|
def __init__(self, name, obj=None):
|
||||||
self.name = name
|
self.name = name
|
||||||
|
@ -149,9 +172,8 @@ class IAB_IESG_Entity(Entity):
|
||||||
return list(set(self.iab.can_approve() + self.iesg.can_approve()))
|
return list(set(self.iab.can_approve() + self.iesg.can_approve()))
|
||||||
|
|
||||||
def full_user_list(self):
|
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):
|
class AreaEntity(Entity):
|
||||||
|
|
||||||
def get_poc(self):
|
def get_poc(self):
|
||||||
|
@ -302,6 +324,26 @@ class IABEntityManager(EntityManager):
|
||||||
return []
|
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):
|
class IAB_IESG_EntityManager(EntityManager):
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
|
|
Loading…
Reference in a new issue