Skip to content

Commit 63c5ff9

Browse files
committed
feat: allow searching club announcements
1 parent 8d4abda commit 63c5ff9

File tree

3 files changed

+38
-3
lines changed

3 files changed

+38
-3
lines changed

intranet/apps/dashboard/views.py

+24
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,28 @@ class RawPaginationData(TypedDict, Generic[T]):
331331
page_obj: Paginator[T]
332332

333333

334+
def filter_announcements_by_search(request, items):
335+
print(items)
336+
if "search" not in request.GET:
337+
return items
338+
searchParam = request.GET["search"]
339+
if len(searchParam.strip()) == 0:
340+
return items
341+
searchParam = searchParam.lower()
342+
343+
def filterMethod(item):
344+
return searchParam in item.title.lower() or searchParam in item.content.lower()
345+
346+
filteredItems = list(filter(filterMethod, items))
347+
348+
sorted_announcements = sorted(
349+
filteredItems,
350+
key=lambda announcement: (searchParam.lower() not in announcement.title.lower(), searchParam.lower() not in announcement.content.lower()),
351+
)
352+
353+
return sorted_announcements
354+
355+
334356
def paginate_announcements_list_raw(
335357
request: HttpRequest,
336358
items: Sequence[T],
@@ -358,6 +380,8 @@ def paginate_announcements_list_raw(
358380
else:
359381
page_num = DEFAULT_PAGE_NUM
360382

383+
items = filter_announcements_by_search(request, items)
384+
361385
paginator = Paginator(items, 15)
362386
if page_num not in paginator.page_range:
363387
page_num = DEFAULT_PAGE_NUM

intranet/static/js/dashboard/announcements.js

+7-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* global $ */
2-
$(document).ready(function() {
2+
$(document).ready(function () {
33
updatePartiallyHidden();
44

55
filterClubAnnouncements();
@@ -62,6 +62,12 @@ $(document).ready(function() {
6262
filterClubAnnouncements();
6363
});
6464

65+
$("#subscribed-announcement-search").submit((e) => {
66+
e.preventDefault();
67+
const value = $("#subscribed-announcement-search-input").val();
68+
window.location.replace("/announcements/club?search=" + value);
69+
})
70+
6571
});
6672

6773
function updatePartiallyHidden() {

intranet/templates/dashboard/dashboard.html

+7-2
Original file line numberDiff line numberDiff line change
@@ -102,11 +102,16 @@
102102
<div class="warning-announcement">{{ dash_warning|safe|linebreaks }}</div>
103103
{% endif %}
104104

105-
<div class="announcements-header">
105+
<div class="announcements-header" style="">
106106

107107
<h2>{{ dashboard_header }}</h2>
108+
<span class="announcements-icon-wrapper" style="display: flex; flex-direction: row;">
109+
{% if view_announcements_url == "club_announcements" %}
110+
<form id="subscribed-announcement-search" style="display: flex; margin-right:1px">
111+
<input id="subscribed-announcement-search-input" type="text" placeholder="Search Club Announcements" style="width: 15rem;" class="dashboard-textinput" onsubmit="" >
112+
</form>
113+
{% endif %}
108114

109-
<span class="announcements-icon-wrapper">
110115
{% if show_expired or not show_widgets %}
111116
<a href="{% url 'index' %}" class="button" style="float:left"><i class="fas fa-arrow-left" style="width: 11px"></i> Dashboard</a>
112117
&nbsp;

0 commit comments

Comments
 (0)