from django.db import models from django.utils import timezone import logging logger = logging.getLogger('django') class CustomModel(models.Model): """ Custom model class with default fields to use. """ created_date = models.DateTimeField(default=timezone.now) class Meta: abstract = True class EquipmentType(CustomModel): name = models.CharField(max_length=100) def __str__(self): return self.name class State(CustomModel): name = models.CharField(max_length=100) EquipmentType = models.ForeignKey( EquipmentType, on_delete=models.PROTECT, null=True, blank=True) def __str__(self): return self.name class KegType(CustomModel): name = models.CharField(max_length=100) manufacturer = models.CharField(max_length=100, blank=True) size_gal = models.DecimalField(max_digits=6, decimal_places=2) def __str__(self): return self.name class Equipment(CustomModel): name = models.CharField(max_length=100) equipment_type = models.ForeignKey(EquipmentType, on_delete=models.PROTECT) keg_type = models.ForeignKey(KegType, on_delete=models.PROTECT) state = models.ForeignKey(State, on_delete=models.PROTECT) def __str__(self): return '{} {}'.format(self.name, self.id) class TransactionType(CustomModel): name = models.CharField(max_length=100) def __str__(self): return self.name class MaintenanceType(CustomModel): name = models.CharField(max_length=100) def __str__(self): return self.name class EquipmentMaintenance(CustomModel): equipment = models.ForeignKey(Equipment, on_delete=models.CASCADE) notes = models.TextField(max_length=500, blank=True, null=True) class EquipmentMaintenanceLine(CustomModel): maintenance = models.ForeignKey( EquipmentMaintenance, on_delete=models.CASCADE) maintenance_type = models.ForeignKey( MaintenanceType, on_delete=models.PROTECT) notes = models.TextField(max_length=500, blank=True, null=True) class EquipmentTransactions(CustomModel): equipment = models.ForeignKey(Equipment, on_delete=models.CASCADE) transaction_type = models.ForeignKey( TransactionType, on_delete=models.PROTECT) beer_batch = models.ForeignKey( 'beer.Batch', on_delete=models.PROTECT, blank=True, null=True)