From 66784c457a166721207b59ab01e68f9605f4d655 Mon Sep 17 00:00:00 2001
From: Tanner Collin
Date: Fri, 12 Nov 2021 03:30:08 +0000
Subject: [PATCH] Add more sorting options
---
apiserver/apiserver/api/views.py | 12 ++++++++++++
webclient/src/Members.js | 22 +++++++++++++++-------
2 files changed, 27 insertions(+), 7 deletions(-)
diff --git a/apiserver/apiserver/api/views.py b/apiserver/apiserver/api/views.py
index f49ba72..a7024fc 100644
--- a/apiserver/apiserver/api/views.py
+++ b/apiserver/apiserver/api/views.py
@@ -107,6 +107,18 @@ class SearchViewSet(Base, Retrieve):
elif self.action == 'create' and sort == 'recently_inactive':
queryset = queryset.filter(paused_date__isnull=False)
queryset = queryset.order_by('-paused_date')
+ elif self.action == 'create' and sort == 'is_director':
+ queryset = queryset.filter(is_director=True)
+ queryset = queryset.order_by('application_date')
+ elif self.action == 'create' and sort == 'is_instructor':
+ queryset = queryset.filter(is_instructor=True)
+ queryset = queryset.order_by('application_date')
+ elif self.action == 'create' and sort == 'due':
+ queryset = queryset.filter(status='Due')
+ queryset = queryset.order_by('expire_date')
+ elif self.action == 'create' and sort == 'overdue':
+ queryset = queryset.filter(status='Overdue')
+ queryset = queryset.order_by('expire_date')
elif self.action == 'create' and sort == 'best_looking':
queryset = []
diff --git a/webclient/src/Members.js b/webclient/src/Members.js
index 47a21c5..356233e 100644
--- a/webclient/src/Members.js
+++ b/webclient/src/Members.js
@@ -11,12 +11,15 @@ import AbortController from 'abort-controller';
const memberSorts = {
recently_vetted: 'Recently Vetted',
- newest_active: 'Newest Active',
- newest_overall: 'Newest Overall',
- best_looking: 'Best Looking',
- oldest_active: 'Oldest Active',
- oldest_overall: 'Oldest Overall',
- recently_inactive: 'Recently Inactive',
+ newest_active: 'Newest',
+ //newest_overall: 'Newest Overall',
+ oldest_active: 'Oldest',
+ //oldest_overall: 'Oldest Overall',
+ recently_inactive: 'Inactive',
+ is_director: 'Directors',
+ is_instructor: 'Instructors',
+ due: 'Due',
+ overdue: 'Overdue',
};
export function MembersDropdown(props) {
@@ -81,6 +84,7 @@ export function Members(props) {
const qs = queryString.stringify({ 'q': q });
history.replace('/members?' + qs);
} else {
+ setResponse(false);
history.replace('/members');
}
};
@@ -108,6 +112,10 @@ export function Members(props) {
});
}, [search, sort]);
+ useEffect(() => {
+ setResponse(false);
+ }, [sort]);
+
return (
@@ -142,7 +150,7 @@ export function Members(props) {
- {search.length ? 'Search Results' : memberSorts[sort] + ' Members'}
+ {search.length ? 'Search Results' : memberSorts[sort]}
{sort === 'best_looking' ?