1
0
Fork 0
mirror of https://github.com/seanmorley15/AdventureLog.git synced 2025-07-23 06:49:37 +02:00

Implement user-specific category filtering in AdventureViewSet and update AdventureCard to display category details

This commit is contained in:
Sean Morley 2024-11-16 22:31:39 -05:00
parent ae92fc2027
commit 42f07dc2fb
4 changed files with 21 additions and 6 deletions

View file

@ -109,15 +109,18 @@ class AdventureViewSet(viewsets.ModelViewSet):
# Handle case where types is all # Handle case where types is all
if 'all' in types: if 'all' in types:
types = [t[0] for t in ADVENTURE_TYPES] types = Category.objects.filter(user_id=request.user).values_list('name', flat=True)
valid_types = [t[0] for t in ADVENTURE_TYPES]
types = [t for t in types if t in valid_types] else:
for type in types:
if not Category.objects.filter(user_id=request.user, name=type).exists():
return Response({"error": f"Category {type} does not exist"}, status=400)
if not types: if not types:
return Response({"error": "No valid types provided"}, status=400) return Response({"error": "No valid types provided"}, status=400)
queryset = Adventure.objects.filter( queryset = Adventure.objects.filter(
type__in=types, category__in=Category.objects.filter(name__in=types, user_id=request.user),
user_id=request.user.id user_id=request.user.id
) )

View file

@ -129,7 +129,9 @@
</button> </button>
</div> </div>
<div> <div>
<div class="badge badge-primary">{$t(`adventures.activities.${adventure.type}`)}</div> <div class="badge badge-primary">
{`${adventure.category.display_name} ${adventure.category.icon}`}
</div>
<div class="badge badge-success"> <div class="badge badge-success">
{adventure.is_visited ? $t('adventures.visited') : $t('adventures.planned')} {adventure.is_visited ? $t('adventures.visited') : $t('adventures.planned')}
</div> </div>

View file

@ -28,7 +28,10 @@
let newVisit: VisitedRegion = { let newVisit: VisitedRegion = {
id: visit_id, id: visit_id,
region: region_id, region: region_id,
user_id: user_id user_id: user_id,
longitude: 0,
latitude: 0,
name: ''
}; };
addToast('success', `Visit to ${region.name} marked`); addToast('success', `Visit to ${region.name} marked`);
dispatch('visit', newVisit); dispatch('visit', newVisit);

View file

@ -38,6 +38,13 @@ export type Adventure = {
created_at?: string | null; created_at?: string | null;
updated_at?: string | null; updated_at?: string | null;
is_visited?: boolean; is_visited?: boolean;
category: {
id: string;
name: string;
display_name: string;
icon: string;
user_id: number;
};
}; };
export type Country = { export type Country = {