From 6dec37d3b972118519aa09b572e58517cce7c70d Mon Sep 17 00:00:00 2001 From: Sean Morley Date: Sun, 22 Sep 2024 10:29:23 -0400 Subject: [PATCH 01/15] Add new adventure types to the model --- backend/server/adventures/models.py | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/backend/server/adventures/models.py b/backend/server/adventures/models.py index 228b301..b9ecb72 100644 --- a/backend/server/adventures/models.py +++ b/backend/server/adventures/models.py @@ -7,10 +7,28 @@ from django.forms import ValidationError from django_resized import ResizedImageField ADVENTURE_TYPES = [ - ('visited', 'Visited'), - ('planned', 'Planned'), - ('lodging', 'Lodging'), - ('dining', 'Dining') + ('general', 'General šŸŒ'), + ('Outdoor', 'Outdoor šŸžļø'), + ('lodging', 'Lodging šŸ›Œ'), + ('dining', 'Dining šŸ½ļø'), + ('activity', 'Activity šŸ„'), + ('attraction', 'Attraction šŸŽ¢'), + ('shopping', 'Shopping šŸ›ļø'), + ('nightlife', 'Nightlife 🌃'), + ('event', 'Event šŸŽ‰'), + ('transportation', 'Transportation šŸš—'), + ('culture', 'Culture šŸŽ­'), + ('water_sports', 'Water Sports 🚤'), + ('hiking', 'Hiking 🄾'), + ('wildlife', 'Wildlife šŸ¦’'), + ('historical_sites', 'Historical Sites šŸ›ļø'), + ('music_concerts', 'Music & Concerts šŸŽ¶'), + ('fitness', 'Fitness šŸ‹ļø'), + ('art_museums', 'Art & Museums šŸŽØ'), + ('festivals', 'Festivals šŸŽŖ'), + ('spiritual_journeys', 'Spiritual Journeys šŸ§˜ā€ā™€ļø'), + ('volunteer_work', 'Volunteer Work šŸ¤'), + ('other', 'Other') ] TRANSPORTATION_TYPES = [ @@ -24,7 +42,6 @@ TRANSPORTATION_TYPES = [ ('other', 'Other') ] - # Assuming you have a default user ID you want to use default_user_id = 1 # Replace with an actual user ID From 0911826501c4fba52087a9db4c8edd6ec6434fb8 Mon Sep 17 00:00:00 2001 From: Sean Morley Date: Sun, 22 Sep 2024 14:12:41 -0400 Subject: [PATCH 02/15] Migrate to visits --- backend/server/adventures/admin.py | 12 +--- .../migrations/0001_adventure_image.py | 19 ------ .../adventures/migrations/0001_initial.py | 62 ++++++++++++------- .../migrations/0002_adventureimage.py | 27 -------- .../0002_alter_adventureimage_adventure.py | 19 ------ ...ure_end_date_and_more.py => 0002_visit.py} | 16 ++--- .../migrations/0003_adventure_end_date.py | 18 ------ ...date_remove_adventure_end_date_and_more.py | 26 ++++++++ .../0004_transportation_end_date.py | 18 ------ .../migrations/0005_collection_shared_with.py | 20 ------ .../migrations/0006_alter_adventure_link.py | 18 ------ .../adventures/migrations/migrate_images.py | 5 -- .../migrate_visits_and_categories.py | 31 ++++++++++ backend/server/adventures/models.py | 13 ++-- 14 files changed, 110 insertions(+), 194 deletions(-) delete mode 100644 backend/server/adventures/migrations/0001_adventure_image.py delete mode 100644 backend/server/adventures/migrations/0002_adventureimage.py delete mode 100644 backend/server/adventures/migrations/0002_alter_adventureimage_adventure.py rename backend/server/adventures/migrations/{0007_remove_adventure_date_remove_adventure_end_date_and_more.py => 0002_visit.py} (64%) delete mode 100644 backend/server/adventures/migrations/0003_adventure_end_date.py create mode 100644 backend/server/adventures/migrations/0003_remove_adventure_date_remove_adventure_end_date_and_more.py delete mode 100644 backend/server/adventures/migrations/0004_transportation_end_date.py delete mode 100644 backend/server/adventures/migrations/0005_collection_shared_with.py delete mode 100644 backend/server/adventures/migrations/0006_alter_adventure_link.py create mode 100644 backend/server/adventures/migrations/migrate_visits_and_categories.py diff --git a/backend/server/adventures/admin.py b/backend/server/adventures/admin.py index de7227d..b0dd607 100644 --- a/backend/server/adventures/admin.py +++ b/backend/server/adventures/admin.py @@ -6,19 +6,9 @@ from worldtravel.models import Country, Region, VisitedRegion class AdventureAdmin(admin.ModelAdmin): - list_display = ('name', 'type', 'user_id', 'is_public', 'image_display') + list_display = ('name', 'type', 'user_id', 'is_public') list_filter = ('type', 'user_id', 'is_public') - def image_display(self, obj): - if obj.image: - public_url = os.environ.get('PUBLIC_URL', 'http://127.0.0.1:8000').rstrip('/') - public_url = public_url.replace("'", "") - return mark_safe(f' Date: Mon, 23 Sep 2024 14:12:19 -0400 Subject: [PATCH 03/15] Fix migrations --- backend/server/adventures/admin.py | 22 ++++++- .../migrations/0001_adventure_image.py | 19 ++++++ .../adventures/migrations/0001_initial.py | 62 +++++++------------ .../migrations/0002_adventureimage.py | 27 ++++++++ .../0002_alter_adventureimage_adventure.py | 19 ++++++ .../adventures/migrations/0002_visit.py | 27 -------- .../migrations/0003_adventure_end_date.py | 18 ++++++ .../0004_transportation_end_date.py | 18 ++++++ .../migrations/0005_collection_shared_with.py | 20 ++++++ .../migrations/0006_alter_adventure_link.py | 18 ++++++ .../adventures/migrations/0007_visit_model.py | 32 ++++++++++ ..._and_more.py => 0008_remove_date_field.py} | 9 +-- .../adventures/migrations/migrate_images.py | 5 ++ ...gories.py => migrate_visits_categories.py} | 2 +- 14 files changed, 226 insertions(+), 72 deletions(-) create mode 100644 backend/server/adventures/migrations/0001_adventure_image.py create mode 100644 backend/server/adventures/migrations/0002_adventureimage.py create mode 100644 backend/server/adventures/migrations/0002_alter_adventureimage_adventure.py delete mode 100644 backend/server/adventures/migrations/0002_visit.py create mode 100644 backend/server/adventures/migrations/0003_adventure_end_date.py create mode 100644 backend/server/adventures/migrations/0004_transportation_end_date.py create mode 100644 backend/server/adventures/migrations/0005_collection_shared_with.py create mode 100644 backend/server/adventures/migrations/0006_alter_adventure_link.py create mode 100644 backend/server/adventures/migrations/0007_visit_model.py rename backend/server/adventures/migrations/{0003_remove_adventure_date_remove_adventure_end_date_and_more.py => 0008_remove_date_field.py} (68%) rename backend/server/adventures/migrations/{migrate_visits_and_categories.py => migrate_visits_categories.py} (95%) diff --git a/backend/server/adventures/admin.py b/backend/server/adventures/admin.py index b0dd607..117339d 100644 --- a/backend/server/adventures/admin.py +++ b/backend/server/adventures/admin.py @@ -1,18 +1,20 @@ import os from django.contrib import admin from django.utils.html import mark_safe -from .models import Adventure, Checklist, ChecklistItem, Collection, Transportation, Note, AdventureImage +from .models import Adventure, Checklist, ChecklistItem, Collection, Transportation, Note, AdventureImage, Visit from worldtravel.models import Country, Region, VisitedRegion class AdventureAdmin(admin.ModelAdmin): list_display = ('name', 'type', 'user_id', 'is_public') list_filter = ('type', 'user_id', 'is_public') + search_fields = ('name',) class CountryAdmin(admin.ModelAdmin): list_display = ('name', 'country_code', 'number_of_regions') list_filter = ('subregion',) + search_fields = ('name', 'country_code') def number_of_regions(self, obj): return Region.objects.filter(country=obj).count() @@ -23,6 +25,7 @@ class CountryAdmin(admin.ModelAdmin): class RegionAdmin(admin.ModelAdmin): list_display = ('name', 'country', 'number_of_visits') list_filter = ('country',) + search_fields = ('name', 'country__name') # list_filter = ('country', 'number_of_visits') def number_of_visits(self, obj): @@ -38,6 +41,7 @@ class CustomUserAdmin(UserAdmin): model = CustomUser list_display = ['username', 'email', 'is_staff', 'is_active', 'image_display'] readonly_fields = ('uuid',) + search_fields = ('username', 'email') fieldsets = UserAdmin.fieldsets + ( (None, {'fields': ('profile_pic', 'uuid', 'public_profile')}), ) @@ -52,6 +56,21 @@ class CustomUserAdmin(UserAdmin): class AdventureImageAdmin(admin.ModelAdmin): list_display = ('user_id', 'image_display') + def image_display(self, obj): + if obj.image: + public_url = os.environ.get('PUBLIC_URL', 'http://127.0.0.1:8000').rstrip('/') + public_url = public_url.replace("'", "") + return mark_safe(f' Date: Mon, 23 Sep 2024 18:19:25 -0400 Subject: [PATCH 04/15] Valid types fixing --- .../server/adventures/migrations/0008_remove_date_field.py | 1 + backend/server/adventures/views.py | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/backend/server/adventures/migrations/0008_remove_date_field.py b/backend/server/adventures/migrations/0008_remove_date_field.py index 72902c8..0260097 100644 --- a/backend/server/adventures/migrations/0008_remove_date_field.py +++ b/backend/server/adventures/migrations/0008_remove_date_field.py @@ -9,6 +9,7 @@ class Migration(migrations.Migration): dependencies = [ ('adventures', 'migrate_visits_categories'), + ('adventures', 'migrate_images'), ] operations = [ diff --git a/backend/server/adventures/views.py b/backend/server/adventures/views.py index 7d2a136..0960b1c 100644 --- a/backend/server/adventures/views.py +++ b/backend/server/adventures/views.py @@ -5,7 +5,7 @@ from rest_framework.decorators import action from rest_framework import viewsets from django.db.models.functions import Lower from rest_framework.response import Response -from .models import Adventure, Checklist, Collection, Transportation, Note, AdventureImage +from .models import Adventure, Checklist, Collection, Transportation, Note, AdventureImage, ADVENTURE_TYPES from django.core.exceptions import PermissionDenied from worldtravel.models import VisitedRegion, Region, Country from .serializers import AdventureImageSerializer, AdventureSerializer, CollectionSerializer, NoteSerializer, TransportationSerializer, ChecklistSerializer @@ -105,7 +105,7 @@ class AdventureViewSet(viewsets.ModelViewSet): @action(detail=False, methods=['get']) def filtered(self, request): types = request.query_params.get('types', '').split(',') - valid_types = ['visited', 'planned'] + valid_types = [t[0] for t in ADVENTURE_TYPES] types = [t for t in types if t in valid_types] if not types: @@ -114,7 +114,7 @@ class AdventureViewSet(viewsets.ModelViewSet): queryset = Adventure.objects.none() for adventure_type in types: - if adventure_type in ['visited', 'planned']: + if adventure_type in valid_types: queryset |= Adventure.objects.filter( type=adventure_type, user_id=request.user.id) From 86cefc8b2fbc9d96999c8d69e6996b0157d1ffa5 Mon Sep 17 00:00:00 2001 From: Sean Morley Date: Mon, 23 Sep 2024 18:46:04 -0400 Subject: [PATCH 05/15] Category frontend fixes --- .../src/lib/components/AdventureCard.svelte | 28 ++--- .../src/lib/components/AdventureModal.svelte | 108 +++--------------- frontend/src/lib/index.ts | 34 ++++++ frontend/src/lib/types.ts | 7 +- .../src/routes/adventures/+page.server.ts | 2 +- 5 files changed, 62 insertions(+), 117 deletions(-) diff --git a/frontend/src/lib/components/AdventureCard.svelte b/frontend/src/lib/components/AdventureCard.svelte index d72fdfa..293984c 100644 --- a/frontend/src/lib/components/AdventureCard.svelte +++ b/frontend/src/lib/components/AdventureCard.svelte @@ -19,6 +19,7 @@ import DotsHorizontal from '~icons/mdi/dots-horizontal'; import DeleteWarning from './DeleteWarning.svelte'; import ImageDisplayModal from './ImageDisplayModal.svelte'; + import { typeToString } from '$lib'; export let type: string; export let user: User | null; @@ -209,16 +210,8 @@
- {#if adventure.type == 'visited'} -
Visited
- {:else if adventure.type == 'planned'} -
Planned
- {:else if adventure.type == 'lodging'} -
Lodging
- {:else if adventure.type == 'dining'} -
Dining
- {/if} - +
{typeToString(adventure.type)}
+
{adventure.visits.length > 0 ? 'Visited' : 'Planned'}
{adventure.is_public ? 'Public' : 'Private'}
{#if adventure.location && adventure.location !== ''} @@ -227,16 +220,13 @@

{adventure.location}

{/if} - {#if adventure.date && adventure.date !== ''} -
+ {#if adventure.visits.length > 0} + +
-

- {new Date(adventure.date).toLocaleDateString(undefined, { - timeZone: 'UTC' - })}{adventure.end_date && adventure.end_date !== '' - ? ' - ' + - new Date(adventure.end_date).toLocaleDateString(undefined, { timeZone: 'UTC' }) - : ''} +

+ {adventure.visits.length} + {adventure.visits.length > 1 ? 'visits' : 'visit'}

{/if} diff --git a/frontend/src/lib/components/AdventureModal.svelte b/frontend/src/lib/components/AdventureModal.svelte index 304f55c..c91137a 100644 --- a/frontend/src/lib/components/AdventureModal.svelte +++ b/frontend/src/lib/components/AdventureModal.svelte @@ -22,6 +22,7 @@ import Earth from '~icons/mdi/earth'; import ActivityComplete from './ActivityComplete.svelte'; import { appVersion } from '$lib/config'; + import { ADVENTURE_TYPES } from '$lib'; export let startDate: string | null = null; export let endDate: string | null = null; @@ -37,8 +38,7 @@ id: '', name: '', type: 'visited', - date: null, - end_date: null, + visits: [], link: null, description: null, activity_types: [], @@ -57,9 +57,7 @@ adventure = { id: adventureToEdit?.id || '', name: adventureToEdit?.name || '', - type: adventureToEdit?.type || 'visited', - date: adventureToEdit?.date || null, - end_date: adventureToEdit?.end_date || null, + type: adventureToEdit?.type || 'general', link: adventureToEdit?.link || null, description: adventureToEdit?.description || null, activity_types: adventureToEdit?.activity_types || [], @@ -70,7 +68,9 @@ location: adventureToEdit?.location || null, images: adventureToEdit?.images || [], user_id: adventureToEdit?.user_id || null, - collection: adventureToEdit?.collection || collection_id || null + collection: adventureToEdit?.collection || collection_id || null, + // visits: adventureToEdit?.visits || [] + visits: [] }; let markers: Point[] = []; @@ -369,18 +369,6 @@ } } - if (adventure.date && adventure.end_date) { - if (new Date(adventure.date) > new Date(adventure.end_date)) { - addToast('error', 'Start date must be before end date'); - return; - } - } - - if (adventure.end_date && !adventure.date) { - adventure.end_date = null; - adventure.date = null; - } - console.log(adventure); if (adventure.id === '') { let res = await fetch('/api/adventures', { @@ -449,84 +437,14 @@
-
- -
-
- -
- {#if is_collection} -
- -
-
- -
- {/if} +
+
- -
-
- -
- {#if adventure.date} -
-
- -
- {/if}
diff --git a/frontend/src/lib/index.ts b/frontend/src/lib/index.ts index 233dd3f..b7c563f 100644 --- a/frontend/src/lib/index.ts +++ b/frontend/src/lib/index.ts @@ -216,3 +216,37 @@ export function continentCodeToString(code: string) { return 'Unknown'; } } + +export let ADVENTURE_TYPES = [ + { type: 'general', label: 'General šŸŒ' }, + { type: 'Outdoor', label: 'Outdoor šŸžļø' }, + { type: 'lodging', label: 'Lodging šŸ›Œ' }, + { type: 'dining', label: 'Dining šŸ½ļø' }, + { type: 'activity', label: 'Activity šŸ„' }, + { type: 'attraction', label: 'Attraction šŸŽ¢' }, + { type: 'shopping', label: 'Shopping šŸ›ļø' }, + { type: 'nightlife', label: 'Nightlife 🌃' }, + { type: 'event', label: 'Event šŸŽ‰' }, + { type: 'transportation', label: 'Transportation šŸš—' }, + { type: 'culture', label: 'Culture šŸŽ­' }, + { type: 'water_sports', label: 'Water Sports 🚤' }, + { type: 'hiking', label: 'Hiking 🄾' }, + { type: 'wildlife', label: 'Wildlife šŸ¦’' }, + { type: 'historical_sites', label: 'Historical Sites šŸ›ļø' }, + { type: 'music_concerts', label: 'Music & Concerts šŸŽ¶' }, + { type: 'fitness', label: 'Fitness šŸ‹ļø' }, + { type: 'art_museums', label: 'Art & Museums šŸŽØ' }, + { type: 'festivals', label: 'Festivals šŸŽŖ' }, + { type: 'spiritual_journeys', label: 'Spiritual Journeys šŸ§˜ā€ā™€ļø' }, + { type: 'volunteer_work', label: 'Volunteer Work šŸ¤' }, + { type: 'other', label: 'Other' } +]; + +export function typeToString(type: string) { + const typeObj = ADVENTURE_TYPES.find((t) => t.type === type); + if (typeObj) { + return typeObj.label; + } else { + return 'Unknown'; + } +} diff --git a/frontend/src/lib/types.ts b/frontend/src/lib/types.ts index 4b5bb15..03f96a2 100644 --- a/frontend/src/lib/types.ts +++ b/frontend/src/lib/types.ts @@ -25,8 +25,11 @@ export type Adventure = { id: string; image: string; }[]; - date?: string | null; // Assuming date is a string in 'YYYY-MM-DD' format - end_date?: string | null; // Assuming date is a string in 'YYYY-MM-DD' format + visits: { + start_date: string; + end_date: string; + notes: string; + }[]; collection?: string | null; latitude: number | null; longitude: number | null; diff --git a/frontend/src/routes/adventures/+page.server.ts b/frontend/src/routes/adventures/+page.server.ts index cf80bce..07cfa0d 100644 --- a/frontend/src/routes/adventures/+page.server.ts +++ b/frontend/src/routes/adventures/+page.server.ts @@ -30,7 +30,7 @@ export const load = (async (event) => { } typeString += 'planned'; } else if (!visited && !planned) { - typeString = 'visited,planned'; + typeString = 'general'; } const include_collections = event.url.searchParams.get('include_collections') || 'false'; From ad195911ff029cb82c6cf21db1b7514c1b9d94fd Mon Sep 17 00:00:00 2001 From: Sean Morley Date: Tue, 24 Sep 2024 17:05:16 -0400 Subject: [PATCH 06/15] Fix admin page for adventure image --- backend/server/adventures/admin.py | 2 +- backend/server/adventures/models.py | 2 +- frontend/src/lib/index.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/server/adventures/admin.py b/backend/server/adventures/admin.py index 117339d..b7df19d 100644 --- a/backend/server/adventures/admin.py +++ b/backend/server/adventures/admin.py @@ -60,7 +60,7 @@ class AdventureImageAdmin(admin.ModelAdmin): if obj.image: public_url = os.environ.get('PUBLIC_URL', 'http://127.0.0.1:8000').rstrip('/') public_url = public_url.replace("'", "") - return mark_safe(f' Date: Sun, 29 Sep 2024 20:42:52 -0400 Subject: [PATCH 07/15] Refactor adventure type field in migrations --- .../migrations/0009_alter_adventure_type.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 backend/server/adventures/migrations/0009_alter_adventure_type.py diff --git a/backend/server/adventures/migrations/0009_alter_adventure_type.py b/backend/server/adventures/migrations/0009_alter_adventure_type.py new file mode 100644 index 0000000..72178f9 --- /dev/null +++ b/backend/server/adventures/migrations/0009_alter_adventure_type.py @@ -0,0 +1,18 @@ +# Generated by Django 5.0.8 on 2024-09-30 00:33 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('adventures', '0008_remove_date_field'), + ] + + operations = [ + migrations.AlterField( + model_name='adventure', + name='type', + field=models.CharField(choices=[('general', 'General šŸŒ'), ('outdoor', 'Outdoor šŸžļø'), ('lodging', 'Lodging šŸ›Œ'), ('dining', 'Dining šŸ½ļø'), ('activity', 'Activity šŸ„'), ('attraction', 'Attraction šŸŽ¢'), ('shopping', 'Shopping šŸ›ļø'), ('nightlife', 'Nightlife 🌃'), ('event', 'Event šŸŽ‰'), ('transportation', 'Transportation šŸš—'), ('culture', 'Culture šŸŽ­'), ('water_sports', 'Water Sports 🚤'), ('hiking', 'Hiking 🄾'), ('wildlife', 'Wildlife šŸ¦’'), ('historical_sites', 'Historical Sites šŸ›ļø'), ('music_concerts', 'Music & Concerts šŸŽ¶'), ('fitness', 'Fitness šŸ‹ļø'), ('art_museums', 'Art & Museums šŸŽØ'), ('festivals', 'Festivals šŸŽŖ'), ('spiritual_journeys', 'Spiritual Journeys 🧘\u200dā™€ļø'), ('volunteer_work', 'Volunteer Work šŸ¤'), ('other', 'Other')], default='general', max_length=100), + ), + ] From 6cb31aa1259b1d220b9539277f0dc961c9569744 Mon Sep 17 00:00:00 2001 From: Sean Morley Date: Mon, 30 Sep 2024 18:03:10 -0400 Subject: [PATCH 08/15] New AdventureModal Accordian --- backend/server/adventures/serializers.py | 26 +- backend/server/adventures/views.py | 3 + .../src/lib/components/AdventureCard.svelte | 22 +- .../src/lib/components/AdventureModal.svelte | 459 ++++++++++-------- frontend/src/lib/types.ts | 1 + .../src/routes/adventures/+page.server.ts | 19 +- frontend/src/routes/adventures/+page.svelte | 6 +- 7 files changed, 291 insertions(+), 245 deletions(-) diff --git a/backend/server/adventures/serializers.py b/backend/server/adventures/serializers.py index 99cc6c7..4bf7e8c 100644 --- a/backend/server/adventures/serializers.py +++ b/backend/server/adventures/serializers.py @@ -45,18 +45,34 @@ class AdventureSerializer(serializers.ModelSerializer): def update(self, instance, validated_data): visits_data = validated_data.pop('visits', []) - instance = super().update(instance, validated_data) + + # Update Adventure fields + for attr, value in validated_data.items(): + setattr(instance, attr, value) + instance.save() + + # Get current visits + current_visits = instance.visits.all() + current_visit_ids = set(current_visits.values_list('id', flat=True)) # Update or create visits + updated_visit_ids = set() for visit_data in visits_data: - visit_id = visit_data.get('id', None) - if visit_id: - visit = Visit.objects.get(id=visit_id, adventure=instance) + visit_id = visit_data.get('id') + if visit_id and visit_id in current_visit_ids: + visit = current_visits.get(id=visit_id) for attr, value in visit_data.items(): setattr(visit, attr, value) visit.save() + updated_visit_ids.add(visit_id) else: - Visit.objects.create(adventure=instance, **visit_data) + # If no ID is provided or ID doesn't exist, create new visit + new_visit = Visit.objects.create(adventure=instance, **visit_data) + updated_visit_ids.add(new_visit.id) + + # Delete visits that are not in the updated data + visits_to_delete = current_visit_ids - updated_visit_ids + instance.visits.filter(id__in=visits_to_delete).delete() return instance diff --git a/backend/server/adventures/views.py b/backend/server/adventures/views.py index 0960b1c..7280c68 100644 --- a/backend/server/adventures/views.py +++ b/backend/server/adventures/views.py @@ -105,6 +105,9 @@ class AdventureViewSet(viewsets.ModelViewSet): @action(detail=False, methods=['get']) def filtered(self, request): types = request.query_params.get('types', '').split(',') + # handle case where types is all + if 'all' in types: + types = [t[0] for t in ADVENTURE_TYPES] valid_types = [t[0] for t in ADVENTURE_TYPES] types = [t for t in types if t in valid_types] diff --git a/frontend/src/lib/components/AdventureCard.svelte b/frontend/src/lib/components/AdventureCard.svelte index 293984c..2494ae3 100644 --- a/frontend/src/lib/components/AdventureCard.svelte +++ b/frontend/src/lib/components/AdventureCard.svelte @@ -32,16 +32,6 @@ let image_url: string | null = null; export let adventure: Adventure; - if (adventure.type == 'visited') { - keyword = 'Adventure'; - } else if (adventure.type == 'planned') { - keyword = 'Adventure'; - } else if (adventure.type == 'lodging') { - keyword = 'Lodging'; - } else if (adventure.type == 'dining') { - keyword = 'Dining'; - } - let activityTypes: string[] = []; // makes it reactivty to changes so it updates automatically $: { @@ -258,7 +248,7 @@ >Open Details {#if adventure.type == 'visited' && user?.pk == adventure.user_id} {/if} - - {#if adventure.collection && (adventure.type == 'visited' || adventure.type == 'planned') && user?.pk == adventure.user_id} + + {#if adventure.collection && user?.pk == adventure.user_id} {/if} - - {#if (adventure.collection && adventure.type == 'lodging') || adventure.type == 'dining'} - - {/if} {#if !adventure.collection} -