1
0
Fork 0
mirror of https://github.com/seanmorley15/AdventureLog.git synced 2025-07-24 15:29:36 +02:00

Merge pull request #229 from seanmorley15/development

Duplicate visited regions
This commit is contained in:
Sean Morley 2024-08-17 08:11:31 -04:00 committed by GitHub
commit ff27ff31c5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 14 additions and 0 deletions

View file

@ -1,5 +1,6 @@
from django.db import models
from django.contrib.auth import get_user_model
from django.core.exceptions import ValidationError
User = get_user_model()
@ -57,3 +58,8 @@ class VisitedRegion(models.Model):
def __str__(self):
return f'{self.region.name} ({self.region.country.country_code}) visited by: {self.user_id.username}'
def save(self, *args, **kwargs):
if VisitedRegion.objects.filter(user_id=self.user_id, region=self.region).exists():
raise ValidationError("Region already visited by user.")
super().save(*args, **kwargs)

View file

@ -51,6 +51,8 @@ class VisitedRegionViewSet(viewsets.ModelViewSet):
def create(self, request, *args, **kwargs):
request.data['user_id'] = request.user
if VisitedRegion.objects.filter(user_id=request.user.id, region=request.data['region']).exists():
return Response({"error": "Region already visited by user."}, status=400)
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
self.perform_create(serializer)

View file

@ -35,6 +35,7 @@
}
} else {
console.error('Failed to mark region as visited');
addToast('error', `Failed to mark visit to ${region.name}`);
}
}
async function removeVisit() {

View file

@ -9,6 +9,11 @@
console.log(data);
let numRegions: number = regions.length;
visitedRegions = visitedRegions.filter(
(visitedRegion, index, self) =>
index === self.findIndex((t) => t.region === visitedRegion.region)
);
let numVisitedRegions: number = visitedRegions.length;
</script>