More templating
This commit is contained in:
50
vehicles/migrations/0003_auto_20210214_1315.py
Normal file
50
vehicles/migrations/0003_auto_20210214_1315.py
Normal 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'),
|
||||
),
|
||||
]
|
||||
@@ -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)
|
||||
|
||||
@@ -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 %}
|
||||
|
||||
Reference in New Issue
Block a user