Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ main:
- `create_drivers`
- `create_places`
- `create_users`
- `create_bus_shifts`
- `create_bus_stops`

Par exemple:

Expand Down
Binary file added final_attempt.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added first_attempt.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 8 additions & 0 deletions padam_django/apps/fleet/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,11 @@ class BusAdmin(admin.ModelAdmin):
@admin.register(models.Driver)
class DriverAdmin(admin.ModelAdmin):
pass

@admin.register(models.BusShift)
class BusShiftAdmin(admin.ModelAdmin):
list_display = ('name', 'bus', 'driver')

@admin.register(models.BusStop)
class BusStopAdmin(admin.ModelAdmin):
list_display = ('name', 'time', 'place', 'bus_shift')
22 changes: 21 additions & 1 deletion padam_django/apps/fleet/factories.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
from faker import Faker

from . import models

from datetime import datetime, timezone

fake = Faker(['fr'])

Expand All @@ -19,3 +19,23 @@ class BusFactory(factory.django.DjangoModelFactory):

class Meta:
model = models.Bus

class BusShiftFactory(factory.django.DjangoModelFactory):
name = factory.LazyFunction(fake.name)
bus = factory.SubFactory(BusFactory)
driver = factory.SubFactory(DriverFactory)

class Meta:
model = models.BusShift

class BusStopFactory(factory.django.DjangoModelFactory):
name = factory.LazyFunction(fake.name)
time = fake.date_time_between_dates(
datetime(2024, 1, 1, 0, 0, 0, tzinfo=timezone.utc),
datetime(2024, 1, 1, 23, 59, 59, tzinfo=timezone.utc)
)
place = factory.SubFactory('padam_django.apps.geography.factories.PlaceFactory')
bus_shift = factory.SubFactory(BusShiftFactory)

class Meta:
model = models.BusStop
13 changes: 13 additions & 0 deletions padam_django/apps/fleet/management/commands/create_bus_shifts.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from padam_django.apps.common.management.base import CreateDataBaseCommand

from padam_django.apps.fleet.factories import BusShiftFactory


class Command(CreateDataBaseCommand):

help = 'Create few bus shifts'

def handle(self, *args, **options):
super().handle(*args, **options)
self.stdout.write(f'Creating {self.number} bus shifts ...')
BusShiftFactory.create_batch(size=self.number)
13 changes: 13 additions & 0 deletions padam_django/apps/fleet/management/commands/create_bus_stops.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from padam_django.apps.common.management.base import CreateDataBaseCommand

from padam_django.apps.fleet.factories import BusStopFactory


class Command(CreateDataBaseCommand):

help = 'Create few bus stops'

def handle(self, *args, **options):
super().handle(*args, **options)
self.stdout.write(f'Creating {self.number} bus stops ...')
BusStopFactory.create_batch(size=self.number)
34 changes: 34 additions & 0 deletions padam_django/apps/fleet/migrations/0003_busshift_busstop.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Generated by Django 3.2.5 on 2024-06-08 15:32

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

dependencies = [
('geography', '0001_initial'),
('fleet', '0002_auto_20211109_1456'),
]

operations = [
migrations.CreateModel(
name='BusShift',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=100, verbose_name='Name of the bus shift')),
('bus', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='fleet.bus')),
('driver', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='fleet.driver')),
],
),
migrations.CreateModel(
name='BusStop',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=100, verbose_name='Name of the bus stop')),
('time', models.DateTimeField()),
('bus_shift', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='fleet.busshift')),
('place', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='geography.place')),
],
),
]
23 changes: 23 additions & 0 deletions padam_django/apps/fleet/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,26 @@ class Meta:

def __str__(self):
return f"Bus: {self.licence_plate} (id: {self.pk})"


class BusShift(models.Model):
name = models.CharField('Name of the bus shift', max_length=100)
bus = models.OneToOneField(Bus, on_delete=models.CASCADE)
driver = models.OneToOneField(Driver, on_delete=models.CASCADE)

def __str__(self):
return f"BusShift: {self.name} (id: {self.pk})"

def clean(self):
print(self)


class BusStop(models.Model):
name = models.CharField('Name of the bus stop', max_length=100)
time = models.DateTimeField()
place = models.OneToOneField('geography.Place', on_delete=models.CASCADE)
bus_shift = models.ForeignKey(BusShift, on_delete=models.CASCADE)

def __str__(self):
return f"BusStop: {self.name} (id: {self.pk})"