From afa019271efd9f2cd1406b29d6c129a5baa91b10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniele=20Vigan=C3=B2?= Date: Thu, 7 Apr 2022 11:23:24 +0200 Subject: [PATCH] Extend properties --- dcc/roster/admin.py | 13 +++++++++- .../migrations/0010_rollingstockproperty.py | 24 +++++++++++++++++++ dcc/roster/models.py | 20 ++++++++++++++++ 3 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 dcc/roster/migrations/0010_rollingstockproperty.py diff --git a/dcc/roster/admin.py b/dcc/roster/admin.py index 665b457..db58c87 100644 --- a/dcc/roster/admin.py +++ b/dcc/roster/admin.py @@ -5,6 +5,7 @@ from roster.models import ( RollingStock, RollingStockImage, RollingStockDocument, + RollingStockProperty, ) @@ -35,9 +36,19 @@ class RollingStockImageInline(admin.TabularInline): readonly_fields = ("image_thumbnail",) +class RollingStockPropertyInline(admin.TabularInline): + model = RollingStockProperty + min_num = 0 + extra = 0 + + @admin.register(RollingStock) class RollingStockAdmin(admin.ModelAdmin): - inlines = (RollingStockImageInline, RollingStockDocInline) + inlines = ( + RollingStockImageInline, + RollingStockDocInline, + RollingStockPropertyInline + ) readonly_fields = ("creation_time", "updated_time") list_display = ( "__str__", diff --git a/dcc/roster/migrations/0010_rollingstockproperty.py b/dcc/roster/migrations/0010_rollingstockproperty.py new file mode 100644 index 0000000..eb99607 --- /dev/null +++ b/dcc/roster/migrations/0010_rollingstockproperty.py @@ -0,0 +1,24 @@ +# Generated by Django 4.0.3 on 2022-04-07 09:19 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('metadata', '0008_property_alter_manufacturer_options_and_more'), + ('roster', '0009_remove_rollingclass_wheel_arrangement'), + ] + + operations = [ + migrations.CreateModel( + name='RollingStockProperty', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('value', models.CharField(max_length=256)), + ('property', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='metadata.property')), + ('rolling_stock', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='roster.rollingstock')), + ], + ), + ] diff --git a/dcc/roster/models.py b/dcc/roster/models.py index 4afe498..9a24fc0 100644 --- a/dcc/roster/models.py +++ b/dcc/roster/models.py @@ -59,6 +59,9 @@ class RollingClassProperty(models.Model): def __str__(self): return self.property.name + class Meta: + verbose_name_plural = "Properties" + class RollingStock(models.Model): uuid = models.UUIDField(primary_key=True, default=uuid4, editable=False) @@ -133,6 +136,23 @@ class RollingStockImage(models.Model): return "{0}".format(os.path.basename(self.image.name)) +class RollingStockProperty(models.Model): + rolling_stock = models.ForeignKey( + RollingStock, + on_delete=models.CASCADE, + null=False, + blank=False + ) + property = models.ForeignKey(Property, on_delete=models.CASCADE) + value = models.CharField(max_length=256) + + def __str__(self): + return self.property.name + + class Meta: + verbose_name_plural = "Properties" + + # @receiver(models.signals.post_delete, sender=Cab) # def post_save_image(sender, instance, *args, **kwargs): # try: