@@ -124,6 +124,34 @@ def full_user_list(self):
124124 return result
125125
126126
127+ class IAB_IESG_Entity (Entity ):
128+
129+ poc = [IABEntity .chair , IABEntity .director , FakePerson (** IETFCHAIR )]
130+ cc = [FakePerson (** IAB ), FakePerson (** IESG )]
131+
132+ def __init__ (self , name , obj = None ):
133+ self .name = name
134+ self .obj = obj
135+ self .iab = IABEntity (name , obj )
136+ self .iesg = IETFEntity (name , obj )
137+
138+ def get_from_cc (self , person ):
139+ return list (set (self .iab .get_from_cc (person ) + self .iesg .get_from_cc (person )))
140+
141+ def needs_approval (self , person = None ):
142+ if not self .iab .needs_approval (person ):
143+ return False
144+ if not self .iesg .needs_approval (person ):
145+ return False
146+ return True
147+
148+ def can_approve (self ):
149+ return list (set (self .iab .can_approve () + self .iesg .can_approve ()))
150+
151+ def full_user_list (self ):
152+ return list (set (self .iab .full_user_list () + self .iesg .full_user_list ()))
153+
154+
127155class AreaEntity (Entity ):
128156
129157 def get_poc (self ):
@@ -274,6 +302,30 @@ def can_approve_list(self, person):
274302 return []
275303
276304
305+ class IAB_IESG_EntityManager (EntityManager ):
306+
307+ def __init__ (self , * args , ** kwargs ):
308+ super (IAB_IESG_EntityManager , self ).__init__ (* args , ** kwargs )
309+ self .entity = IAB_IESG_Entity (name = self .name )
310+
311+ def get_entity (self , pk = None ):
312+ return self .entity
313+
314+ def can_send_on_behalf (self , person ):
315+ if (is_iabchair (person ) or
316+ is_iab_executive_director (person ) or
317+ is_ietfchair (person )):
318+ return self .get_managed_list ()
319+ return []
320+
321+ def can_approve_list (self , person ):
322+ if (is_iabchair (person ) or
323+ is_iab_executive_director (person ) or
324+ is_ietfchair (person )):
325+ return self .get_managed_list ()
326+ return []
327+
328+
277329class AreaEntityManager (EntityManager ):
278330
279331 def __init__ (self , pk = None , name = None , queryset = None ):
@@ -363,6 +415,7 @@ def __init__(self):
363415 self .managers = {'ietf' : IETFEntityManager (pk = 'ietf' , name = u'The IETF' ),
364416 'iesg' : IETFEntityManager (pk = 'iesg' , name = u'The IESG' ),
365417 'iab' : IABEntityManager (pk = 'iab' , name = u'The IAB' ),
418+ 'iabiesg' : IAB_IESG_EntityManager (pk = 'iabiesg' , name = u'The IESG and the IAB' ),
366419 'area' : AreaEntityManager (pk = 'area' , name = u'IETF Areas' ),
367420 'wg' : WGEntityManager (pk = 'wg' , name = u'IETF Working Groups' ),
368421 'sdo' : SDOEntityManager (pk = 'sdo' , name = u'Standards Development Organizations' ),
@@ -390,7 +443,7 @@ def get_all_entities(self):
390443 def get_all_incoming_entities (self ):
391444 entities = []
392445 results = []
393- for key in ['ietf' , 'iesg' , 'iab' ]:
446+ for key in ['ietf' , 'iesg' , 'iab' , 'iabiesg' ]:
394447 results += self .managers [key ].get_managed_list ()
395448 entities .append (('Main IETF Entities' , results ))
396449 entities .append (('IETF Areas' , self .managers ['area' ].get_managed_list ()))
@@ -405,7 +458,7 @@ def get_all_outgoing_entities(self):
405458 def get_entities_for_person (self , person ):
406459 entities = []
407460 results = []
408- for key in ['ietf' , 'iesg' , 'iab' ]:
461+ for key in ['ietf' , 'iesg' , 'iab' , 'iabiesg' ]:
409462 results += self .managers [key ].can_send_on_behalf (person )
410463 if results :
411464 entities .append (('Main IETF Entities' , results ))
@@ -419,7 +472,7 @@ def get_entities_for_person(self, person):
419472
420473 def get_all_can_approve_codes (self , person ):
421474 entities = []
422- for key in ['ietf' , 'iesg' , 'iab' ]:
475+ for key in ['ietf' , 'iesg' , 'iab' , 'iabiesg' ]:
423476 entities += self .managers [key ].can_approve_list (person )
424477 entities += self .managers ['area' ].can_approve_list (person )
425478 entities += self .managers ['wg' ].can_approve_list (person )
0 commit comments