Files
FleetManager/vehicles/models.py
2021-02-14 13:18:31 +00:00

66 lines
1.8 KiB
Python

from django.db import models
from reversion import revisions as reversion
class Status(models.Model):
name = models.CharField(max_length=80)
def __str__(self):
return self.name
class Make(models.Model):
name = models.CharField(max_length=80)
def __str__(self):
return self.name
class Model(models.Model): # Cause that won't be a confusing name at all
name = models.CharField(max_length=80)
make = models.ForeignKey('Make', on_delete=models.CASCADE)
def __str__(self):
return "{} {}".format(self.make.name, self.name)
@reversion.register
class Vehicle(models.Model):
name = models.CharField(max_length=50)
# color
yom = models.DateField()
first_registered = models.DateField()
date_purchased = models.DateField()
reg_number = models.CharField(max_length=7)
vin_number = models.CharField(max_length=50)
chassis_number = models.CharField(max_length=50)
status = models.ForeignKey('Status', on_delete=models.CASCADE)
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
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)