diff --git a/maintenance/__init__.py b/maintenance/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/maintenance/admin.py b/maintenance/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/maintenance/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/maintenance/apps.py b/maintenance/apps.py new file mode 100644 index 0000000..36cf680 --- /dev/null +++ b/maintenance/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class MaintenanceConfig(AppConfig): + name = 'maintenance' diff --git a/maintenance/migrations/__init__.py b/maintenance/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/maintenance/models.py b/maintenance/models.py new file mode 100644 index 0000000..71a8362 --- /dev/null +++ b/maintenance/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/maintenance/tests.py b/maintenance/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/maintenance/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/maintenance/views.py b/maintenance/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/maintenance/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/users/migrations/0003_driver_insurance.py b/users/migrations/0003_driver_insurance.py new file mode 100644 index 0000000..784ae22 --- /dev/null +++ b/users/migrations/0003_driver_insurance.py @@ -0,0 +1,21 @@ +# Generated by Django 3.1.6 on 2021-02-14 13:15 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('vehicles', '0003_auto_20210214_1315'), + ('users', '0002_driver_licence'), + ] + + operations = [ + migrations.AddField( + model_name='driver', + name='insurance', + field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, related_name='insurance', to='vehicles.insurancepolicy'), + preserve_default=False, + ), + ] diff --git a/users/models.py b/users/models.py index f72e83e..584b5b2 100644 --- a/users/models.py +++ b/users/models.py @@ -14,3 +14,5 @@ class Licence(models.Model): class Driver(CustomUser): licence = models.ForeignKey('Licence', on_delete=models.CASCADE) + + insurance = models.ForeignKey('vehicles.InsurancePolicy', related_name='insurance', on_delete=models.CASCADE) diff --git a/vehicles/migrations/0003_auto_20210214_1315.py b/vehicles/migrations/0003_auto_20210214_1315.py new file mode 100644 index 0000000..19cdbdd --- /dev/null +++ b/vehicles/migrations/0003_auto_20210214_1315.py @@ -0,0 +1,50 @@ +# Generated by Django 3.1.6 on 2021-02-14 13:15 + +import datetime +from django.db import migrations, models +import django.db.models.deletion +from django.utils.timezone import utc + + +class Migration(migrations.Migration): + + dependencies = [ + ('vehicles', '0002_auto_20210214_1244'), + ] + + operations = [ + migrations.CreateModel( + name='InsurancePolicy', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('expires', models.DateField()), + ('company', models.CharField(max_length=20)), + ], + ), + migrations.AddField( + model_name='vehicle', + name='mot_expires', + field=models.DateField(default=datetime.datetime(2021, 2, 14, 13, 15, 32, 868514, tzinfo=utc)), + preserve_default=False, + ), + migrations.AddField( + model_name='vehicle', + name='tax_expires', + field=models.DateField(default=datetime.datetime(2021, 2, 14, 13, 15, 37, 180671, tzinfo=utc)), + preserve_default=False, + ), + migrations.CreateModel( + name='MotorcycleInsurancePolicy', + fields=[ + ('insurancepolicy_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='vehicles.insurancepolicy')), + ('ride_other_bikes', models.BooleanField(default=False)), + ('pillion', models.BooleanField(default=False)), + ], + bases=('vehicles.insurancepolicy',), + ), + migrations.AddField( + model_name='insurancepolicy', + name='vehicle', + field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='vehicles.vehicle'), + ), + ] diff --git a/vehicles/models.py b/vehicles/models.py index 198f93b..f7d19a0 100644 --- a/vehicles/models.py +++ b/vehicles/models.py @@ -42,6 +42,9 @@ class Vehicle(models.Model): owner = models.ForeignKey('users.CustomUser', blank=True, null=True, on_delete=models.CASCADE) model = models.ForeignKey('Model', on_delete=models.CASCADE) + tax_expires = models.DateField() + mot_expires = models.DateField() + def __str__(self): return self.name @@ -49,3 +52,14 @@ class Vehicle(models.Model): class ICEVehicle(Vehicle): engine_number = models.CharField(max_length=50) capacity = models.IntegerField() + + +class InsurancePolicy(models.Model): + vehicle = models.OneToOneField('Vehicle', on_delete=models.CASCADE) # Not always one to one in practice + expires = models.DateField() + company = models.CharField(max_length=20) + + +class MotorcycleInsurancePolicy(InsurancePolicy): + ride_other_bikes = models.BooleanField(default=False) + pillion = models.BooleanField(default=False) diff --git a/vehicles/templates/vehicle_detail.html b/vehicles/templates/vehicle_detail.html index a88ed54..03414c1 100644 --- a/vehicles/templates/vehicle_detail.html +++ b/vehicles/templates/vehicle_detail.html @@ -1,5 +1,20 @@ {% extends 'base.html' %} {% block content %} -