Add Radeln ohne Alter ride-coordination demo (Django + HTMX + Leaflet)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
commit
5d967c68b5
40 changed files with 2040 additions and 0 deletions
57
rides/forms.py
Normal file
57
rides/forms.py
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
from django import forms
|
||||
|
||||
from .models import Availability, Ride
|
||||
|
||||
_DT = "%Y-%m-%dT%H:%M"
|
||||
|
||||
|
||||
class RideForm(forms.ModelForm):
|
||||
"""Fahrt anlegen. Koordinaten kommen aus den (per Karte gesetzten) Hidden-Feldern."""
|
||||
|
||||
class Meta:
|
||||
model = Ride
|
||||
fields = [
|
||||
"fahrgast",
|
||||
"scheduled_at",
|
||||
"pickup_label",
|
||||
"pickup_lat",
|
||||
"pickup_lng",
|
||||
"dest_label",
|
||||
"dest_lat",
|
||||
"dest_lng",
|
||||
"note",
|
||||
]
|
||||
widgets = {
|
||||
"scheduled_at": forms.DateTimeInput(attrs={"type": "datetime-local"}, format=_DT),
|
||||
"note": forms.Textarea(attrs={"rows": 2}),
|
||||
"pickup_lat": forms.HiddenInput(),
|
||||
"pickup_lng": forms.HiddenInput(),
|
||||
"dest_lat": forms.HiddenInput(),
|
||||
"dest_lng": forms.HiddenInput(),
|
||||
}
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
self.fields["scheduled_at"].input_formats = [_DT]
|
||||
|
||||
|
||||
class AvailabilityForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = Availability
|
||||
fields = ["start", "end"]
|
||||
widgets = {
|
||||
"start": forms.DateTimeInput(attrs={"type": "datetime-local"}, format=_DT),
|
||||
"end": forms.DateTimeInput(attrs={"type": "datetime-local"}, format=_DT),
|
||||
}
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
for name in ("start", "end"):
|
||||
self.fields[name].input_formats = [_DT]
|
||||
|
||||
def clean(self):
|
||||
cleaned = super().clean()
|
||||
start, end = cleaned.get("start"), cleaned.get("end")
|
||||
if start and end and end <= start:
|
||||
raise forms.ValidationError("Das Ende muss nach dem Beginn liegen.")
|
||||
return cleaned
|
||||
Loading…
Add table
Add a link
Reference in a new issue