11from ietf .idtracker .models import Area , IETFWG
2+ from ietf .liaisons .models import SDOs
23
34IETFCHAIR = {'name' : u'The IETF Chair' , 'address' : u'chair@ietf.org' }
45IESG = {'name' : u'The IESG' , 'address' : u'iesg@ietf.org' }
@@ -30,7 +31,7 @@ def get_poc(self):
3031 return [self .poc ]
3132 return self .poc
3233
33- def get_cc (self ):
34+ def get_cc (self , person = None ):
3435 if not isinstance (self .cc , list ):
3536 return [self .cc ]
3637 return self .cc
@@ -41,7 +42,7 @@ class AreaEntity(IETFEntity):
4142 def get_poc (self ):
4243 return [i .person for i in self .obj .areadirector_set .all ()]
4344
44- def get_cc (self ):
45+ def get_cc (self , person = None ):
4546 return [FakePerson (** IETFCHAIR )]
4647
4748
@@ -50,14 +51,29 @@ class WGEntity(IETFEntity):
5051 def get_poc (self ):
5152 return [i .person for i in self .obj .wgchair_set .all ()]
5253
53- def get_cc (self ):
54+ def get_cc (self , person = None ):
5455 result = [i .person for i in self .obj .area_directors ()]
5556 if self .obj .email_address :
5657 result .append (FakePerson (name = '%s Discussion List' % self .obj .group_acronym .name ,
5758 address = self .obj .email_address ))
5859 return result
5960
6061
62+ class SDOEntity (IETFEntity ):
63+
64+ def get_poc (self ):
65+ return []
66+
67+ def get_cc (self , person = None ):
68+ return []
69+
70+ def get_from_cc (self , person = None ):
71+ manager = self .obj .liaisonmanager ()
72+ if manager and manager .person != person :
73+ return [manager .person ]
74+ return []
75+
76+
6177class IETFEntityManager (object ):
6278
6379 def __init__ (self , pk = None , name = None , queryset = None , poc = None , cc = None ):
@@ -114,6 +130,26 @@ def get_entity(self, pk=None):
114130 return WGEntity (name = obj .group_acronym .name , obj = obj )
115131
116132
133+ class SDOEntityManager (IETFEntityManager ):
134+
135+ def __init__ (self , pk = None , name = None , queryset = None , poc = None ):
136+ super (SDOEntityManager , self ).__init__ (pk , name , queryset , poc )
137+ if self .queryset == None :
138+ self .queryset = SDOs .objects .all ()
139+
140+ def get_managed_list (self ):
141+ return [(u'%s_%s' % (self .pk , i .pk ), i .sdo_name ) for i in self .queryset .order_by ('sdo_name' )]
142+
143+ def get_entity (self , pk = None ):
144+ if not pk :
145+ return None
146+ try :
147+ obj = self .queryset .get (pk = pk )
148+ except self .queryset .model .DoesNotExist :
149+ return None
150+ return SDOEntity (name = obj .sdo_name , obj = obj )
151+
152+
117153class IETFHierarchyManager (object ):
118154
119155 def __init__ (self ):
@@ -129,6 +165,7 @@ def __init__(self):
129165 cc = FakePerson (** IAB )),
130166 'area' : AreaEntityManager (pk = 'area' , name = u'IETF Areas' ),
131167 'wg' : WGEntityManager (pk = 'wg' , name = u'IETF Working Groups' ),
168+ 'sdo' : SDOEntityManager (pk = 'sdo' , name = u'Standards Development Organizations' ),
132169 }
133170
134171 def get_entity_by_key (self , entity_id ):
@@ -147,7 +184,7 @@ def get_all_entities(self):
147184 entities += manager .get_managed_list ()
148185 return entities
149186
150- def get_all_decorated_entities (self ):
187+ def get_all_incoming_entities (self ):
151188 entities = []
152189 results = []
153190 for key in ['ietf' , 'iesg' , 'iab' ]:
@@ -156,3 +193,9 @@ def get_all_decorated_entities(self):
156193 entities .append (('IETF Areas' , self .managers ['area' ].get_managed_list ()))
157194 entities .append (('IETF Working Groups' , self .managers ['wg' ].get_managed_list ()))
158195 return entities
196+
197+ def get_all_outgoing_entities (self ):
198+ entities = [(self .manager ['sdo' ].name , self .managers ['sdo' ].get_managed_list ())]
199+ return entities
200+
201+ IETFHM = IETFHierarchyManager ()
0 commit comments