Skip to content

Commit 2ac6106

Browse files
authored
feat: show available sdo groups to liaison coordinators and managers (#9856)
* feat: show available sdo groups to liaison coordinators and mamagers * fix: better typing delcaration * fix: avoid unneeded whitespace in class declarations
1 parent d796aa0 commit 2ac6106

File tree

5 files changed

+122
-47
lines changed

5 files changed

+122
-47
lines changed

ietf/liaisons/tests.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,17 @@ def test_help_pages(self):
110110
self.assertEqual(self.client.get('/liaison/help/from_ietf/').status_code, 200)
111111
self.assertEqual(self.client.get('/liaison/help/to_ietf/').status_code, 200)
112112

113+
def test_list_other_sdo(self):
114+
GroupFactory(type_id="sdo", state_id="conclude", acronym="third")
115+
GroupFactory(type_id="sdo", state_id="active", acronym="second")
116+
GroupFactory(type_id="sdo", state_id="active", acronym="first")
117+
url = urlreverse("ietf.liaisons.views.list_other_sdo")
118+
login_testing_unauthorized(self, "secretary", url)
119+
r = self.client.get(url)
120+
q = PyQuery(r.content)
121+
self.assertEqual(len(q("h1")), 2)
122+
first_td_elements_text = [e.text for e in q("tr").find("td:first-child")]
123+
self.assertEqual(first_td_elements_text, ["first", "second", "third"])
113124

114125
class UnitTests(TestCase):
115126
def test_get_contacts_for_liaison_messages_for_group_primary(self):

ietf/liaisons/urls.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,5 @@
3737
url(r'^add/$', views.redirect_add),
3838
url(r'^for_approval/$', views.redirect_for_approval),
3939
url(r'^for_approval/(?P<object_id>\d+)/$', views.redirect_for_approval),
40+
url(r"^list_other_sdo/$", views.list_other_sdo),
4041
]

ietf/liaisons/views.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -509,3 +509,17 @@ def liaison_resend(request, object_id):
509509
messages.success(request,'Liaison Statement resent')
510510
return redirect('ietf.liaisons.views.liaison_list')
511511

512+
513+
@role_required("Secretariat", "IAB", "Liaison Coordinator", "Liaison Manager")
514+
def list_other_sdo(request):
515+
def _sdo_order_key(obj:Group)-> tuple[str,str]:
516+
state_order = {
517+
"active" : "a",
518+
"conclude": "b",
519+
}
520+
return (state_order.get(obj.state.slug,f"c{obj.state.slug}"), obj.acronym)
521+
522+
sdos = sorted(list(Group.objects.filter(type="sdo")),key = _sdo_order_key)
523+
for sdo in sdos:
524+
sdo.liaison_managers =[r.person for r in sdo.role_set.filter(name="liaiman")]
525+
return render(request,"liaisons/list_other_sdo.html",dict(sdos=sdos))

0 commit comments

Comments
 (0)