Files
thrillwiki_django_no_react/location/forms.py
2024-11-03 17:47:26 +00:00

80 lines
2.4 KiB
Python

from django import forms
from .models import Location
class LocationForm(forms.ModelForm):
"""Form for creating and updating Location objects"""
class Meta:
model = Location
fields = [
'name',
'location_type',
'latitude',
'longitude',
'street_address',
'city',
'state',
'country',
'postal_code',
]
widgets = {
'latitude': forms.NumberInput(attrs={
'step': 'any',
'class': 'location-lat',
'data-map-target': 'lat'
}),
'longitude': forms.NumberInput(attrs={
'step': 'any',
'class': 'location-lng',
'data-map-target': 'lng'
})
}
class LocationSearchForm(forms.Form):
"""Form for searching locations using OpenStreetMap Nominatim"""
query = forms.CharField(
max_length=255,
required=True,
widget=forms.TextInput(attrs={
'placeholder': 'Search for a location...',
'class': 'location-search',
'data-action': 'search#query',
'autocomplete': 'off'
})
)
# Hidden fields for storing selected location data
selected_lat = forms.DecimalField(
required=False,
widget=forms.HiddenInput(attrs={'data-search-target': 'selectedLat'})
)
selected_lng = forms.DecimalField(
required=False,
widget=forms.HiddenInput(attrs={'data-search-target': 'selectedLng'})
)
selected_name = forms.CharField(
required=False,
widget=forms.HiddenInput(attrs={'data-search-target': 'selectedName'})
)
selected_address = forms.CharField(
required=False,
widget=forms.HiddenInput(attrs={'data-search-target': 'selectedAddress'})
)
selected_city = forms.CharField(
required=False,
widget=forms.HiddenInput(attrs={'data-search-target': 'selectedCity'})
)
selected_state = forms.CharField(
required=False,
widget=forms.HiddenInput(attrs={'data-search-target': 'selectedState'})
)
selected_country = forms.CharField(
required=False,
widget=forms.HiddenInput(attrs={'data-search-target': 'selectedCountry'})
)
selected_postal_code = forms.CharField(
required=False,
widget=forms.HiddenInput(attrs={'data-search-target': 'selectedPostalCode'})
)