mirror of
https://github.com/seanmorley15/AdventureLog.git
synced 2025-07-21 05:49:37 +02:00
collections v2
This commit is contained in:
parent
533453b764
commit
e533dda328
11 changed files with 332 additions and 102 deletions
|
@ -30,6 +30,7 @@ class AdventureViewSet(viewsets.ModelViewSet):
|
|||
def apply_sorting(self, queryset):
|
||||
order_by = self.request.query_params.get('order_by', 'name')
|
||||
order_direction = self.request.query_params.get('order_direction', 'asc')
|
||||
include_collections = self.request.query_params.get('include_collections', 'false')
|
||||
|
||||
valid_order_by = ['name', 'type', 'date', 'rating']
|
||||
if order_by not in valid_order_by:
|
||||
|
@ -50,6 +51,9 @@ class AdventureViewSet(viewsets.ModelViewSet):
|
|||
|
||||
print(f"Ordering by: {ordering}") # For debugging
|
||||
|
||||
if include_collections == 'false':
|
||||
queryset = queryset.filter(collection = None)
|
||||
|
||||
return queryset.order_by(ordering)
|
||||
|
||||
def get_queryset(self):
|
||||
|
@ -76,7 +80,7 @@ class AdventureViewSet(viewsets.ModelViewSet):
|
|||
for adventure_type in types:
|
||||
if adventure_type in ['visited', 'planned']:
|
||||
queryset |= Adventure.objects.filter(
|
||||
type=adventure_type, user_id=request.user.id, collection=None)
|
||||
type=adventure_type, user_id=request.user.id)
|
||||
|
||||
queryset = self.apply_sorting(queryset)
|
||||
adventures = self.paginate_and_respond(queryset, request)
|
||||
|
@ -86,8 +90,25 @@ class AdventureViewSet(viewsets.ModelViewSet):
|
|||
def all(self, request):
|
||||
if not request.user.is_authenticated:
|
||||
return Response({"error": "User is not authenticated"}, status=400)
|
||||
queryset = Adventure.objects.filter(user_id=request.user.id)
|
||||
# include_collections = request.query_params.get('include_collections', 'false')
|
||||
# if include_collections not in ['true', 'false']:
|
||||
# include_collections = 'false'
|
||||
|
||||
# if include_collections == 'true':
|
||||
# queryset = Adventure.objects.filter(
|
||||
# Q(is_public=True) | Q(user_id=request.user.id)
|
||||
# )
|
||||
# else:
|
||||
# queryset = Adventure.objects.filter(
|
||||
# Q(is_public=True) | Q(user_id=request.user.id), collection=None
|
||||
# )
|
||||
queryset = Adventure.objects.filter(
|
||||
Q(is_public=True) | Q(user_id=request.user.id)
|
||||
)
|
||||
|
||||
queryset = self.apply_sorting(queryset)
|
||||
serializer = self.get_serializer(queryset, many=True)
|
||||
|
||||
return Response(serializer.data)
|
||||
|
||||
def paginate_and_respond(self, queryset, request):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue