Skip to content

Commit 4250a95

Browse files
committed
Remove proxy layer from liaisons tool, do some minor cleanups of
duplicated code, make sure the custom form widgets escape their input. There's still a bit of custom proxying going on in the IETFHM class hierarchy. - Legacy-Id: 6794
1 parent 97bf521 commit 4250a95

36 files changed

Lines changed: 931 additions & 2799 deletions

ietf/liaisons/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# coding: latin-1
33

44
from types import ModuleType
5-
import urls, models, views, forms, accounts, admin, utils, widgets, decorators, sitemaps, feeds
5+
import urls, models, views, forms, admin, utils, widgets, sitemaps, feeds
66

77
# These people will be sent a stack trace if there's an uncaught exception in
88
# code any of the modules imported above:

ietf/liaisons/accounts.py

Lines changed: 48 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,63 +1,78 @@
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

98
def 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

1415
def get_iesg_chair():
1516
return get_ietf_chair()
1617

1718

1819
def 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

2333
def 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

2840
def 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-
3550
def 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

3954
def 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

4358
def 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

5162
def 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

5566
def 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

5970
def 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

6378
def can_add_outgoing_liaison(user):
@@ -74,15 +89,17 @@ def can_add_outgoing_liaison(user):
7489

7590

7691
def 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

8095
def 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

8499
def 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

88105
def can_add_incoming_liaison(user):
@@ -102,36 +119,14 @@ def can_add_liaison(user):
102119

103120

104121
def 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

121127
def 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 *

ietf/liaisons/accountsREDESIGN.py

Lines changed: 0 additions & 140 deletions
This file was deleted.

ietf/liaisons/admin.py

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,3 @@ class LiaisonStatementAdmin(admin.ModelAdmin):
88
ordering = ('title', )
99
raw_id_fields = ('from_contact', 'related_to', 'from_group', 'to_group', 'attachments')
1010
admin.site.register(LiaisonStatement, LiaisonStatementAdmin)
11-
12-
class LiaisonDetailAdmin(admin.ModelAdmin):
13-
list_display = ['pk', 'title', 'from_id', 'to_body', 'submitted_date', 'purpose', 'related_to' ]
14-
list_display_links = ['pk', 'title']
15-
ordering = ('title', )
16-
admin.site.register(LiaisonDetail, LiaisonDetailAdmin)
17-

ietf/liaisons/decorators.py

Lines changed: 0 additions & 5 deletions
This file was deleted.

0 commit comments

Comments
 (0)