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
199
rides/migrations/0001_initial.py
Normal file
199
rides/migrations/0001_initial.py
Normal file
|
|
@ -0,0 +1,199 @@
|
|||
# Generated by Django 6.0.6 on 2026-06-20 18:57
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name="Einrichtung",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.BigAutoField(
|
||||
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
||||
),
|
||||
),
|
||||
("name", models.CharField(max_length=120)),
|
||||
("address", models.CharField(blank=True, max_length=200)),
|
||||
("contact", models.CharField(blank=True, max_length=120)),
|
||||
],
|
||||
options={
|
||||
"ordering": ["name"],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Availability",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.BigAutoField(
|
||||
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
||||
),
|
||||
),
|
||||
("start", models.DateTimeField(verbose_name="Beginn")),
|
||||
("end", models.DateTimeField(verbose_name="Ende")),
|
||||
(
|
||||
"pilot",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="availabilities",
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"verbose_name": "Verfügbarkeit",
|
||||
"verbose_name_plural": "Verfügbarkeiten",
|
||||
"ordering": ["start"],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Fahrgast",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.BigAutoField(
|
||||
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
||||
),
|
||||
),
|
||||
("name", models.CharField(max_length=120)),
|
||||
("address", models.CharField(blank=True, max_length=200)),
|
||||
(
|
||||
"mobility_notes",
|
||||
models.TextField(
|
||||
blank=True,
|
||||
help_text="Mobilität, Vorlieben, Hinweise für die Fahrt.",
|
||||
verbose_name="Hinweise",
|
||||
),
|
||||
),
|
||||
(
|
||||
"einrichtung",
|
||||
models.ForeignKey(
|
||||
blank=True,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
related_name="fahrgaeste",
|
||||
to="rides.einrichtung",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"verbose_name": "Fahrgast",
|
||||
"verbose_name_plural": "Fahrgäste",
|
||||
"ordering": ["name"],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Profile",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.BigAutoField(
|
||||
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
||||
),
|
||||
),
|
||||
(
|
||||
"role",
|
||||
models.CharField(
|
||||
choices=[
|
||||
("coordinator", "Koordination"),
|
||||
("pilot", "Pilot"),
|
||||
("requester", "Besteller"),
|
||||
],
|
||||
max_length=20,
|
||||
),
|
||||
),
|
||||
("phone", models.CharField(blank=True, max_length=40)),
|
||||
(
|
||||
"user",
|
||||
models.OneToOneField(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="profile",
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Ride",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.BigAutoField(
|
||||
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
|
||||
),
|
||||
),
|
||||
("scheduled_at", models.DateTimeField(verbose_name="Termin")),
|
||||
(
|
||||
"status",
|
||||
models.CharField(
|
||||
choices=[
|
||||
("requested", "Angefragt"),
|
||||
("planned", "Geplant"),
|
||||
("claimed", "Übernommen"),
|
||||
("done", "Erledigt"),
|
||||
("cancelled", "Abgesagt"),
|
||||
],
|
||||
default="requested",
|
||||
max_length=20,
|
||||
),
|
||||
),
|
||||
("pickup_label", models.CharField(max_length=200, verbose_name="Abholort")),
|
||||
("pickup_lat", models.FloatField()),
|
||||
("pickup_lng", models.FloatField()),
|
||||
("dest_label", models.CharField(max_length=200, verbose_name="Ziel")),
|
||||
("dest_lat", models.FloatField()),
|
||||
("dest_lng", models.FloatField()),
|
||||
(
|
||||
"route_geojson",
|
||||
models.JSONField(
|
||||
blank=True,
|
||||
help_text="Gecachte Route (Start→Ziel) vom Routing-Dienst.",
|
||||
null=True,
|
||||
),
|
||||
),
|
||||
("note", models.TextField(blank=True, verbose_name="Notiz zur Fahrt")),
|
||||
(
|
||||
"assigned_pilot",
|
||||
models.ForeignKey(
|
||||
blank=True,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
related_name="rides",
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
),
|
||||
),
|
||||
(
|
||||
"fahrgast",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.PROTECT,
|
||||
related_name="rides",
|
||||
to="rides.fahrgast",
|
||||
),
|
||||
),
|
||||
(
|
||||
"requested_by",
|
||||
models.ForeignKey(
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
related_name="requested_rides",
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"verbose_name": "Fahrt",
|
||||
"verbose_name_plural": "Fahrten",
|
||||
"ordering": ["scheduled_at"],
|
||||
},
|
||||
),
|
||||
]
|
||||
Loading…
Add table
Add a link
Reference in a new issue