feat: add configurable people maps

Add independent map profiles, offline city lookup, bundled world artwork
and collision-free portrait placement with optional person details.

Deploy with updated requirements, migrations 0029-0031 and collectstatic.
This commit is contained in:
mohamad
2026-11-03 04:41:30 +08:00
parent 6fd236f518
commit d4ec85add4
22 changed files with 725 additions and 4 deletions
+14 -1
View File
@@ -2,7 +2,7 @@ from django import forms
from django.core.exceptions import ValidationError
from .contact_uploads import validate_contact_attachments
from .models import ContactSubmission
from .models import ContactSubmission, MapMembership
class ContactForm(forms.ModelForm):
@@ -39,3 +39,16 @@ class ContactForm(forms.ModelForm):
self.add_error("attachments", exc)
cleaned_data["attachments"] = []
return cleaned_data
class MapMembershipAdminForm(forms.ModelForm):
class Meta:
model = MapMembership
fields = "__all__"
help_texts = {
"location_method": "City mode calculates coordinates on save. Choose Coordinates to set latitude and longitude yourself.",
"country": "For city lookup, enter an English country name or ISO code, e.g. Canada / CA. Optional location label in Coordinates mode.",
"city": "Required in city mode. Unknown, small or ambiguous towns can be placed using Coordinates mode instead.",
"latitude": "Coordinates mode: -90 to 90. In city mode this value is calculated from the country and city on save.",
"longitude": "Coordinates mode: -180 to 180. In city mode this value is calculated from the country and city on save.",
}