1- from django .conf import settings
1+ from ietf .person .models import Person
2+ from ietf .group .models import Role
3+ from ietf .utils .proxy import proxy_personify_role
24
3- from ietf .idtracker .models import Role , PersonOrOrgInfo
4-
5-
6- LIAISON_EDIT_GROUPS = ['Secretariat' ]
5+ LIAISON_EDIT_GROUPS = ['Secretariat' ] # this is not working anymore, refers to old auth model
76
87
98def get_ietf_chair ():
10- person = PersonOrOrgInfo .objects .filter (role = Role .IETF_CHAIR )
11- return person and person [0 ] or None
9+ try :
10+ return proxy_personify_role (Role .objects .get (name = "chair" , group__acronym = "ietf" ))
11+ except Role .DoesNotExist :
12+ return None
1213
1314
1415def get_iesg_chair ():
1516 return get_ietf_chair ()
1617
1718
1819def get_iab_chair ():
19- person = PersonOrOrgInfo .objects .filter (role = Role .IAB_CHAIR )
20- return person and person [0 ] or None
20+ try :
21+ return proxy_personify_role (Role .objects .get (name = "chair" , group__acronym = "iab" ))
22+ except Role .DoesNotExist :
23+ return None
24+
25+
26+ def get_irtf_chair ():
27+ try :
28+ return proxy_personify_role (Role .objects .get (name = "chair" , group__acronym = "irtf" ))
29+ except Role .DoesNotExist :
30+ return None
2131
2232
2333def get_iab_executive_director ():
24- person = PersonOrOrgInfo .objects .filter (role = Role .IAB_EXCUTIVE_DIRECTOR )
25- return person and person [0 ] or None
34+ try :
35+ return proxy_personify_role (Role .objects .get (name = "execdir" , group__acronym = "iab" ))
36+ except Person .DoesNotExist :
37+ return None
2638
2739
2840def get_person_for_user (user ):
41+ if not user .is_authenticated ():
42+ return None
2943 try :
30- return user .get_profile ().person ()
31- except :
44+ p = user .get_profile ()
45+ p .email = lambda : (p .plain_name (), p .email_address ())
46+ return p
47+ except Person .DoesNotExist :
3248 return None
3349
34-
3550def is_areadirector (person ):
36- return bool (person . areadirector_set . all ( ))
51+ return bool (Role . objects . filter ( person = person , name = "ad" , group__state = "active" , group__type = "area" ))
3752
3853
3954def is_wgchair (person ):
40- return bool (person . wgchair_set . all ( ))
55+ return bool (Role . objects . filter ( person = person , name = "chair" , group__state = "active" , group__type = "wg" ))
4156
4257
4358def is_wgsecretary (person ):
44- return bool (person .wgsecretary_set .all ())
45-
46-
47- def has_role (person , role ):
48- return bool (person .role_set .filter (pk = role ))
59+ return bool (Role .objects .filter (person = person , name = "sec" , group__state = "active" , group__type = "wg" ))
4960
5061
5162def is_ietfchair (person ):
52- return has_role ( person , Role . IETF_CHAIR )
63+ return bool ( Role . objects . filter ( person = person , name = "chair" , group__acronym = "ietf" ) )
5364
5465
5566def is_iabchair (person ):
56- return has_role ( person , Role . IAB_CHAIR )
67+ return bool ( Role . objects . filter ( person = person , name = "chair" , group__acronym = "iab" ) )
5768
5869
5970def is_iab_executive_director (person ):
60- return has_role (person , Role .IAB_EXCUTIVE_DIRECTOR )
71+ return bool (Role .objects .filter (person = person , name = "execdir" , group__acronym = "iab" ))
72+
73+
74+ def is_irtfchair (person ):
75+ return bool (Role .objects .filter (person = person , name = "chair" , group__acronym = "irtf" ))
6176
6277
6378def can_add_outgoing_liaison (user ):
@@ -74,15 +89,17 @@ def can_add_outgoing_liaison(user):
7489
7590
7691def is_sdo_liaison_manager (person ):
77- return bool (person . liaisonmanagers_set . all ( ))
92+ return bool (Role . objects . filter ( person = person , name = "liaiman" , group__type = "sdo" ))
7893
7994
8095def is_sdo_authorized_individual (person ):
81- return bool (person . sdoauthorizedindividual_set . all ( ))
96+ return bool (Role . objects . filter ( person = person , name = "auth" , group__type = "sdo" ))
8297
8398
8499def is_secretariat (user ):
85- return bool (user .groups .filter (name = 'Secretariat' ))
100+ if isinstance (user , basestring ):
101+ return False
102+ return user .is_authenticated () and bool (Role .objects .filter (person__user = user , name = "secr" , group__acronym = "secretariat" ))
86103
87104
88105def can_add_incoming_liaison (user ):
@@ -102,36 +119,14 @@ def can_add_liaison(user):
102119
103120
104121def is_sdo_manager_for_outgoing_liaison (person , liaison ):
105- from ietf .liaisons .utils import IETFHM , SDOEntity
106- from ietf .liaisons .models import SDOs
107- from_entity = IETFHM .get_entity_by_key (liaison .from_raw_code )
108- sdo = None
109- if not from_entity :
110- try :
111- sdo = SDOs .objects .get (sdo_name = liaison .from_body ())
112- except SDOs .DoesNotExist :
113- pass
114- elif isinstance (from_entity , SDOEntity ):
115- sdo = from_entity .obj
116- if sdo :
117- return bool (sdo .liaisonmanagers_set .filter (person = person ))
122+ if liaison .from_group and liaison .from_group .type_id == "sdo" :
123+ return bool (liaison .from_group .role_set .filter (name = "liaiman" , person = person ))
118124 return False
119125
120126
121127def is_sdo_manager_for_incoming_liaison (person , liaison ):
122- from ietf .liaisons .utils import IETFHM , SDOEntity
123- from ietf .liaisons .models import SDOs
124- to_entity = IETFHM .get_entity_by_key (liaison .to_raw_code )
125- sdo = None
126- if not to_entity :
127- try :
128- sdo = SDOs .objects .get (sdo_name = liaison .to_body )
129- except SDOs .DoesNotExist :
130- pass
131- elif isinstance (to_entity , SDOEntity ):
132- sdo = to_entity .obj
133- if sdo :
134- return bool (sdo .liaisonmanagers_set .filter (person = person ))
128+ if liaison .to_group and liaison .to_group .type_id == "sdo" :
129+ return bool (liaison .to_group .role_set .filter (name = "liaiman" , person = person ))
135130 return False
136131
137132
@@ -143,6 +138,3 @@ def can_edit_liaison(user, liaison):
143138 return (is_sdo_manager_for_outgoing_liaison (person , liaison ) or
144139 is_sdo_manager_for_incoming_liaison (person , liaison ))
145140 return False
146-
147- if settings .USE_DB_REDESIGN_PROXY_CLASSES :
148- from accountsREDESIGN import *
0 commit comments