From 9fb74ecc9ef7e3b88de1d716fc8fd0583e0dc131 Mon Sep 17 00:00:00 2001 From: Harry Bridge Date: Tue, 6 Mar 2018 14:01:22 +0000 Subject: [PATCH] Updated models and added post-save hook --- migrations/0002_auto_20180301_1654.py | 18 ++++++++++++ migrations/0003_auto_20180301_1700.py | 18 ++++++++++++ migrations/0004_auto_20180301_1711.py | 19 +++++++++++++ migrations/0005_auto_20180301_1725.py | 18 ++++++++++++ models.py | 40 +++++++++++++++++++++++++-- 5 files changed, 110 insertions(+), 3 deletions(-) create mode 100644 migrations/0002_auto_20180301_1654.py create mode 100644 migrations/0003_auto_20180301_1700.py create mode 100644 migrations/0004_auto_20180301_1711.py create mode 100644 migrations/0005_auto_20180301_1725.py diff --git a/migrations/0002_auto_20180301_1654.py b/migrations/0002_auto_20180301_1654.py new file mode 100644 index 00000000..915a7151 --- /dev/null +++ b/migrations/0002_auto_20180301_1654.py @@ -0,0 +1,18 @@ +# Generated by Django 2.0.2 on 2018-03-01 16:54 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('assets', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='asset', + name='asset_id', + field=models.IntegerField(blank=True), + ), + ] diff --git a/migrations/0003_auto_20180301_1700.py b/migrations/0003_auto_20180301_1700.py new file mode 100644 index 00000000..feef9a6c --- /dev/null +++ b/migrations/0003_auto_20180301_1700.py @@ -0,0 +1,18 @@ +# Generated by Django 2.0.2 on 2018-03-01 17:00 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('assets', '0002_auto_20180301_1654'), + ] + + operations = [ + migrations.AlterField( + model_name='asset', + name='purchase_price', + field=models.IntegerField(blank=True, null=True), + ), + ] diff --git a/migrations/0004_auto_20180301_1711.py b/migrations/0004_auto_20180301_1711.py new file mode 100644 index 00000000..4c884e93 --- /dev/null +++ b/migrations/0004_auto_20180301_1711.py @@ -0,0 +1,19 @@ +# Generated by Django 2.0.2 on 2018-03-01 17:11 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('assets', '0003_auto_20180301_1700'), + ] + + operations = [ + migrations.AlterField( + model_name='asset', + name='collection', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='assets.Collection'), + ), + ] diff --git a/migrations/0005_auto_20180301_1725.py b/migrations/0005_auto_20180301_1725.py new file mode 100644 index 00000000..49fae9c6 --- /dev/null +++ b/migrations/0005_auto_20180301_1725.py @@ -0,0 +1,18 @@ +# Generated by Django 2.0.2 on 2018-03-01 17:25 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('assets', '0004_auto_20180301_1711'), + ] + + operations = [ + migrations.AlterField( + model_name='asset', + name='asset_id', + field=models.IntegerField(blank=True, null=True), + ), + ] diff --git a/models.py b/models.py index ff5ff9bf..1a771819 100644 --- a/models.py +++ b/models.py @@ -1,4 +1,8 @@ from django.db import models +from django.db.models.signals import post_save +from django.dispatch import receiver +from django.urls import reverse + class AssetCategory(models.Model): class Meta: @@ -6,6 +10,9 @@ class AssetCategory(models.Model): verbose_name_plural = 'Asset Categories' name = models.CharField(max_length=80) + def __str__(self): + return self.name + class AssetStatus(models.Model): class Meta: @@ -13,17 +20,26 @@ class AssetStatus(models.Model): verbose_name_plural = 'Asset Statuses' name = models.CharField(max_length=80) + def __str__(self): + return self.name + class Supplier(models.Model): name = models.CharField(max_length=80) + def __str__(self): + return self.name + class Collection(models.Model): name = models.CharField(max_length=80) + def __str__(self): + return self.name + class Asset(models.Model): - asset_id = models.IntegerField() + asset_id = models.IntegerField(blank=True, null=True) description = models.CharField(max_length=120) category = models.ForeignKey(to=AssetCategory, on_delete=models.CASCADE) status = models.ForeignKey(to=AssetStatus, on_delete=models.CASCADE) @@ -31,9 +47,27 @@ class Asset(models.Model): purchased_from = models.ForeignKey(to=Supplier, on_delete=models.CASCADE, blank=True, null=True) date_acquired = models.DateField() date_sold = models.DateField(blank=True, null=True) - purchase_price = models.IntegerField() + purchase_price = models.IntegerField(blank=True, null=True) salvage_value = models.IntegerField(blank=True, null=True) comments = models.TextField(blank=True, null=True) next_sched_maint = models.DateField(blank=True, null=True) - collection = models.ForeignKey(to=Collection, on_delete=models.CASCADE) + collection = models.ForeignKey(to=Collection, on_delete=models.CASCADE, blank=True, null=True) + + def get_absolute_url(self): + return reverse('asset_detail', kwargs={'pk': self.pk}) + + def __str__(self): + return str(self.asset_id) + ' - ' + self.description + + +# Automatically updates Asset.asset_id to Asset.pk if none is given by the user +@receiver(post_save, sender=Asset) +def update_asset_id(sender, instance, **kwargs): + post_save.disconnect(update_asset_id, sender=sender) + + if not instance.asset_id: + instance.asset_id = instance.pk + instance.save() + + post_save.connect(update_asset_id, sender=sender)