Skip to content

Commit 251b161

Browse files
committed
CC SDO manager if not submitter. Order organization list. See ietf-tools#345
- Legacy-Id: 2350
1 parent 0cf3a7f commit 251b161

4 files changed

Lines changed: 35 additions & 10 deletions

File tree

ietf/liaisons/accounts.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@ def get_iab_executive_director():
2121

2222

2323
def get_person_for_user(user):
24-
return user.get_profile().person()
24+
try:
25+
return user.get_profile().person()
26+
except:
27+
return None
2528

2629

2730
def is_areadirector(person):

ietf/liaisons/forms.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ def set_from_field(self):
8181
self.fields['from_field'].widget.submitter = unicode(self.person)
8282

8383
def set_organization_field(self):
84-
self.fields['organization'].choices = self.hm.get_all_entities()
84+
self.fields['organization'].choices = self.hm.get_all_decorated_entities()
8585

8686

8787
class OutgoingLiaisonForm(LiaisonForm):

ietf/liaisons/utils.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ def __init__(self, pk=None, name=None, queryset=None, poc=None):
8282
self.queryset = Area.active_areas()
8383

8484
def get_managed_list(self):
85-
return [(u'%s_%s' % (self.pk, i.pk), i.area_acronym.name) for i in self.queryset]
85+
return [(u'%s_%s' % (self.pk, i.pk), i.area_acronym.name) for i in self.queryset.order_by('area_acronym__name')]
8686

8787
def get_entity(self, pk=None):
8888
if not pk:
@@ -102,7 +102,7 @@ def __init__(self, pk=None, name=None, queryset=None, poc=None):
102102
self.queryset = IETFWG.objects.filter(group_type=1, status=IETFWG.ACTIVE, areagroup__area__status=Area.ACTIVE)
103103

104104
def get_managed_list(self):
105-
return [(u'%s_%s' % (self.pk, i.pk), i.group_acronym.name) for i in self.queryset]
105+
return [(u'%s_%s' % (self.pk, i.pk), i.group_acronym.name) for i in self.queryset.order_by('group_acronym__name')]
106106

107107
def get_entity(self, pk=None):
108108
if not pk:
@@ -127,8 +127,8 @@ def __init__(self):
127127
poc=[FakePerson(**IABCHAIR),
128128
FakePerson(**IABEXECUTIVEDIRECTOR)],
129129
cc=FakePerson(**IAB)),
130-
'area': AreaEntityManager(pk='area'),
131-
'wg': WGEntityManager(pk='wg'),
130+
'area': AreaEntityManager(pk='area', name=u'IETF Areas'),
131+
'wg': WGEntityManager(pk='wg', name=u'IETF Working Groups'),
132132
}
133133

134134
def get_entity_by_key(self, entity_id):
@@ -146,3 +146,13 @@ def get_all_entities(self):
146146
for manager in self.managers.values():
147147
entities += manager.get_managed_list()
148148
return entities
149+
150+
def get_all_decorated_entities(self):
151+
entities = []
152+
results = []
153+
for key in ['ietf', 'iesg', 'iab']:
154+
results += self.managers[key].get_managed_list()
155+
entities.append(('Main IETF Entities', results))
156+
entities.append(('IETF Areas', self.managers['area'].get_managed_list()))
157+
entities.append(('IETF Working Groups', self.managers['wg'].get_managed_list()))
158+
return entities

ietf/liaisons/views.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44
from django.template import RequestContext
55
from django.utils import simplejson
66

7+
from ietf.liaisons.accounts import get_person_for_user
78
from ietf.liaisons.decorators import can_submit_liaison
89
from ietf.liaisons.forms import liaison_form_factory
10+
from ietf.liaisons.models import SDOs
911
from ietf.liaisons.utils import IETFHierarchyManager
1012

1113

@@ -38,13 +40,23 @@ def get_poc_for_incoming(request):
3840
@can_submit_liaison
3941
def get_cc_for_incoming(request):
4042
entity_id = request.GET.get('to_entity_id', None)
41-
if not entity_id:
42-
result = {'cc': None, 'error': 'No entity id'}
43-
else:
43+
sdo_id = request.GET.get('sdo_id', None)
44+
if not entity_id and not sdo_id:
45+
result = {'cc': [], 'error': 'No entity id and no sdo id'}
46+
if entity_id:
4447
entity = IETFHierarchyManager().get_entity_by_key(entity_id)
4548
if not entity:
46-
result = {'cc': None, 'error': 'Invalid entity id'}
49+
result = {'cc': [], 'error': 'Invalid entity id'}
4750
else:
4851
result = {'error': False, 'cc': [i.email() for i in entity.get_cc()]}
52+
if sdo_id:
53+
try:
54+
sdo = SDOs.objects.get(pk=sdo_id)
55+
manager = sdo.liaisonmanager()
56+
person = get_person_for_user(request.user)
57+
if manager and manager.person!=person:
58+
result['cc'].append(manager.person.email())
59+
except SDOs.DoesNotExist:
60+
result['error']='Invalid sdo id'
4961
json_result = simplejson.dumps(result)
5062
return HttpResponse(json_result, mimetype='text/javascript')

0 commit comments

Comments
 (0)