More templating

This commit is contained in:
2021-02-14 13:18:31 +00:00
parent 56a8b7afaa
commit c55577e04e
12 changed files with 120 additions and 1 deletions

0
maintenance/__init__.py Normal file
View File

3
maintenance/admin.py Normal file
View File

@@ -0,0 +1,3 @@
from django.contrib import admin
# Register your models here.

5
maintenance/apps.py Normal file
View File

@@ -0,0 +1,5 @@
from django.apps import AppConfig
class MaintenanceConfig(AppConfig):
name = 'maintenance'

View File

3
maintenance/models.py Normal file
View File

@@ -0,0 +1,3 @@
from django.db import models
# Create your models here.

3
maintenance/tests.py Normal file
View File

@@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

3
maintenance/views.py Normal file
View File

@@ -0,0 +1,3 @@
from django.shortcuts import render
# Create your views here.

View File

@@ -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,
),
]

View File

@@ -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)

View File

@@ -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'),
),
]

View File

@@ -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)

View File

@@ -1,5 +1,20 @@
{% extends 'base.html' %}
{% block content %}
<h1 class="text-2xl">Vehicle {{ object }}</h1>
<h1 class="text-2xl">Vehicle: <span class="font-bold">{{ object }}</span></h1>
<div class="bg-yellow-400 text-black font-black rounded text-xl p-2 w-1/12 m-2 center">{{ object.reg_number|slice:"4:" }} {{ object.reg_number|slice:":3" }}</div>
<div class="flex flex-nowrap">
<div class="border w-1/3 bg-green-800">
<h4 class="font-bold">Tax:</h4>
Valid until {{ object.tax_expires }}
</div>
<div class="border w-1/3 bg-green-800">
<h4 class="font-bold">MOT:</h4>
Valid until {{ object.mot_expires }}
</div>
<div class="border w-1/3 bg-green-800">
<h4 class="font-bold">Insurance:</h4>
Valid until {{ object.insurance.expires }}
</div>
</div>
{% endblock %}