mirror of
https://github.com/etnguyen03/tjdests.git
synced 2025-04-28 12:49:49 -04:00
feat(destinations): add superuser all view
This commit is contained in:
parent
e818d8fbc4
commit
aa8c7f95b2
|
@ -72,6 +72,32 @@ class DestinationsTest(TJDestsTestCase):
|
||||||
user2, response.context["object_list"]
|
user2, response.context["object_list"]
|
||||||
) # haven't published data
|
) # haven't published data
|
||||||
|
|
||||||
|
# Check superuser "all" get parameter
|
||||||
|
# We are not a superuser, so this should 403.
|
||||||
|
response = self.client.get(reverse("destinations:students"), data={"all": True})
|
||||||
|
self.assertEqual(403, response.status_code)
|
||||||
|
|
||||||
|
# Make us a superuser.
|
||||||
|
user2.is_superuser = True
|
||||||
|
user2.is_staff = True
|
||||||
|
user2.save()
|
||||||
|
|
||||||
|
response = self.client.get(reverse("destinations:students"))
|
||||||
|
self.assertEqual(200, response.status_code)
|
||||||
|
self.assertIn(user, response.context["object_list"])
|
||||||
|
self.assertNotIn(user2, response.context["object_list"])
|
||||||
|
|
||||||
|
# with the "all" parameter, this should return with user2 and user
|
||||||
|
response = self.client.get(reverse("destinations:students"), data={"all": True})
|
||||||
|
self.assertEqual(200, response.status_code)
|
||||||
|
self.assertIn(user, response.context["object_list"])
|
||||||
|
self.assertIn(user2, response.context["object_list"])
|
||||||
|
self.assertIn(user, response.context["object_list"])
|
||||||
|
|
||||||
|
user2.is_superuser = False
|
||||||
|
user2.is_staff = False
|
||||||
|
user2.save()
|
||||||
|
|
||||||
user2.publish_data = True
|
user2.publish_data = True
|
||||||
user2.save()
|
user2.save()
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
|
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
|
||||||
|
from django.core.exceptions import PermissionDenied
|
||||||
from django.db.models import Count, Q, QuerySet
|
from django.db.models import Count, Q, QuerySet
|
||||||
from django.shortcuts import get_object_or_404
|
from django.shortcuts import get_object_or_404
|
||||||
from django.views.generic import ListView
|
from django.views.generic import ListView
|
||||||
|
@ -14,9 +15,16 @@ class StudentDestinationListView(
|
||||||
paginate_by = 20
|
paginate_by = 20
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
queryset = User.objects.filter(publish_data=True, is_senior=True).order_by(
|
# Superusers can use the "all" GET parameter to see all data
|
||||||
"last_name", "first_name"
|
if self.request.GET.get("all", None) is not None:
|
||||||
)
|
if self.request.user.is_superuser and self.request.user.is_staff:
|
||||||
|
queryset = User.objects.all()
|
||||||
|
else:
|
||||||
|
raise PermissionDenied()
|
||||||
|
else:
|
||||||
|
queryset = User.objects.filter(publish_data=True)
|
||||||
|
|
||||||
|
queryset = queryset.filter(is_senior=True).order_by("last_name", "first_name")
|
||||||
|
|
||||||
college_id = self.request.GET.get("college", None)
|
college_id = self.request.GET.get("college", None)
|
||||||
if college_id is not None:
|
if college_id is not None:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user