fixed the damn discord button

This commit is contained in:
pacnpal
2024-10-31 16:13:05 +00:00
parent 40c491ba2c
commit b675d59c16
31 changed files with 1184 additions and 500 deletions

View File

@@ -2,7 +2,7 @@ from django.db import models
from django.contrib.contenttypes.fields import GenericRelation
from django.utils.text import slugify
from simple_history.models import HistoricalRecords
import pycountry
from cities_light.models import Country, Region, City
class Park(models.Model):
STATUS_CHOICES = [
@@ -17,7 +17,9 @@ class Park(models.Model):
name = models.CharField(max_length=255)
slug = models.SlugField(max_length=255, unique=True)
location = models.CharField(max_length=255)
country = models.CharField(max_length=2, help_text='Two-letter country code (ISO 3166-1 alpha-2)')
country = models.ForeignKey(Country, on_delete=models.PROTECT)
region = models.ForeignKey(Region, on_delete=models.PROTECT, null=True, blank=True)
city = models.ForeignKey(City, on_delete=models.PROTECT, null=True, blank=True)
description = models.TextField(blank=True)
owner = models.ForeignKey(
'companies.Company',
@@ -62,6 +64,20 @@ class Park(models.Model):
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slugify(self.name)
# Update the location field to combine country, region, and city
location_parts = []
if self.city:
location_parts.append(self.city.name)
if self.region:
location_parts.append(self.region.name)
if self.country:
location_parts.append(self.country.name)
# Only update location if we have parts to combine
if location_parts:
self.location = ', '.join(location_parts)
super().save(*args, **kwargs)
@classmethod
@@ -76,13 +92,16 @@ class Park(models.Model):
return cls.objects.get(id=history.id), True
raise cls.DoesNotExist("No park found with this slug")
def get_country_name(self):
"""Get the full country name from the country code"""
try:
country = pycountry.countries.get(alpha_2=self.country)
return country.name if country else self.country
except:
return self.country
def get_formatted_location(self):
"""Get a formatted location string combining city, region, and country"""
location_parts = []
if self.city:
location_parts.append(self.city.name)
if self.region:
location_parts.append(self.region.name)
if self.country:
location_parts.append(self.country.name)
return ', '.join(location_parts)
class ParkArea(models.Model):
name = models.CharField(max_length=255)