diff --git a/backend/server/worldtravel/serializers.py b/backend/server/worldtravel/serializers.py index b6be995..e3f7010 100644 --- a/backend/server/worldtravel/serializers.py +++ b/backend/server/worldtravel/serializers.py @@ -7,15 +7,25 @@ class CountrySerializer(serializers.ModelSerializer): return os.environ.get('PUBLIC_URL', 'http://127.0.0.1:8000').rstrip('/').replace("'", "") flag_url = serializers.SerializerMethodField() + num_regions = serializers.SerializerMethodField() + num_visits = serializers.SerializerMethodField() def get_flag_url(self, obj): public_url = self.get_public_url(obj) return public_url + '/media/' + 'flags/' + obj.country_code.lower() + '.png' + + def get_num_regions(self, obj): + # get the number of regions in the country + return Region.objects.filter(country=obj).count() + + def get_num_visits(self, obj): + return VisitedRegion.objects.filter(region__country=obj).count() class Meta: model = Country fields = '__all__' - read_only_fields = ['id', 'name', 'country_code', 'subregion', 'flag_url'] + read_only_fields = ['id', 'name', 'country_code', 'subregion', 'flag_url', 'num_regions', 'num_visits'] + class RegionSerializer(serializers.ModelSerializer): class Meta: diff --git a/frontend/src/lib/components/CountryCard.svelte b/frontend/src/lib/components/CountryCard.svelte index d75e3ed..78304ec 100644 --- a/frontend/src/lib/components/CountryCard.svelte +++ b/frontend/src/lib/components/CountryCard.svelte @@ -23,12 +23,26 @@

{country.name}

- {#if country.subregion} -
{country.subregion}
- {/if} - {#if country.capital} -
{country.capital}
- {/if} +
+ {#if country.subregion} +
{country.subregion}
+ {/if} + {#if country.capital} +
+ {country.capital} +
+ {/if} + {#if country.num_visits > 0 && country.num_visits != country.num_regions} +
+ Visited {country.num_visits} time{country.num_visits > 1 ? 's' : ''} +
+ {:else if country.num_visits > 0 && country.num_visits === country.num_regions} +
Completed
+ {:else} +
Not Visited
+ {/if} +
+
diff --git a/frontend/src/lib/types.ts b/frontend/src/lib/types.ts index f02822e..f70cd41 100644 --- a/frontend/src/lib/types.ts +++ b/frontend/src/lib/types.ts @@ -46,6 +46,8 @@ export type Country = { subregion: string; flag_url: string; capital: string; + num_regions: number; + num_visits: number; }; export type Region = {