From 91e6dd0cacb87398a5396438901c1e8e10458ad7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniele=20Vigan=C3=B2?= Date: Tue, 29 Mar 2022 21:15:53 +0200 Subject: [PATCH 1/3] Extend functionalities --- dcc/dcc/utils.py | 9 +++++++ dcc/driver/views.py | 6 ++--- dcc/metadata/admin.py | 7 ++++- dcc/metadata/migrations/0004_equipment.py | 20 ++++++++++++++ .../migrations/0005_tag_delete_equipment.py | 27 +++++++++++++++++++ .../migrations/0006_alter_tag_options.py | 17 ++++++++++++ dcc/metadata/models.py | 16 ++++++++++- dcc/roster/admin.py | 7 ++--- .../0017_rename_cab_rollingstock.py | 18 +++++++++++++ .../0018_alter_rollingstock_options.py | 17 ++++++++++++ .../migrations/0019_rollingstock_tags.py | 19 +++++++++++++ ...ngstock_address_alter_rollingstock_tags.py | 24 +++++++++++++++++ .../0021_alter_rollingstock_tags.py | 19 +++++++++++++ .../0022_alter_rollingstock_address.py | 18 +++++++++++++ dcc/roster/models.py | 11 +++++--- dcc/roster/serializers.py | 6 ++--- dcc/roster/views.py | 20 +++++++------- 17 files changed, 237 insertions(+), 24 deletions(-) create mode 100644 dcc/metadata/migrations/0004_equipment.py create mode 100644 dcc/metadata/migrations/0005_tag_delete_equipment.py create mode 100644 dcc/metadata/migrations/0006_alter_tag_options.py create mode 100644 dcc/roster/migrations/0017_rename_cab_rollingstock.py create mode 100644 dcc/roster/migrations/0018_alter_rollingstock_options.py create mode 100644 dcc/roster/migrations/0019_rollingstock_tags.py create mode 100644 dcc/roster/migrations/0020_alter_rollingstock_address_alter_rollingstock_tags.py create mode 100644 dcc/roster/migrations/0021_alter_rollingstock_tags.py create mode 100644 dcc/roster/migrations/0022_alter_rollingstock_address.py diff --git a/dcc/dcc/utils.py b/dcc/dcc/utils.py index 1c3efea..a2b6f59 100644 --- a/dcc/dcc/utils.py +++ b/dcc/dcc/utils.py @@ -1,7 +1,16 @@ from django.utils.html import format_html +from django.utils.text import slugify as django_slugify def get_image_preview(url): return format_html( '' % url) + + +def slugify(string, custom_separator=None): + # Make slug 'flat', both '-' and '_' are replaced with '-' + string = django_slugify(string).replace('_', '-') + if custom_separator is not None: + string = string.replace('-', custom_separator) + return string diff --git a/dcc/driver/views.py b/dcc/driver/views.py index fa86425..d3477cc 100644 --- a/dcc/driver/views.py +++ b/dcc/driver/views.py @@ -8,7 +8,7 @@ from dcc.parsers import PlainTextParser from driver.connector import Connector from driver.serializers import ( FunctionSerializer, CabSerializer, InfraSerializer) -from roster.models import Cab as CabModel +from roster.models import RollingStock def addresschecker(f): @@ -17,8 +17,8 @@ def addresschecker(f): """ def addresslookup(request, address, *args): try: - CabModel.objects.get(address=address) - except CabModel.DoesNotExist: + RollingStock.objects.get(address=address) + except RollingStock.DoesNotExist: raise Http404 return f(request, address, *args) return addresslookup diff --git a/dcc/metadata/admin.py b/dcc/metadata/admin.py index 19430b7..8400565 100644 --- a/dcc/metadata/admin.py +++ b/dcc/metadata/admin.py @@ -1,5 +1,5 @@ from django.contrib import admin -from metadata.models import Decoder, Manufacturer, Company +from metadata.models import Decoder, Manufacturer, Company, Tag @admin.register(Decoder) @@ -15,3 +15,8 @@ class CompanyAdmin(admin.ModelAdmin): @admin.register(Manufacturer) class ManufacturerAdmin(admin.ModelAdmin): readonly_fields = ('logo_thumbnail',) + + +@admin.register(Tag) +class TagAdmin(admin.ModelAdmin): + readonly_fields = ('slug',) diff --git a/dcc/metadata/migrations/0004_equipment.py b/dcc/metadata/migrations/0004_equipment.py new file mode 100644 index 0000000..2556ced --- /dev/null +++ b/dcc/metadata/migrations/0004_equipment.py @@ -0,0 +1,20 @@ +# Generated by Django 4.0.2 on 2022-03-06 19:50 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('metadata', '0003_metadata_extend'), + ] + + operations = [ + migrations.CreateModel( + name='Equipment', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('equipment_type', models.CharField(max_length=128, unique=True)), + ], + ), + ] diff --git a/dcc/metadata/migrations/0005_tag_delete_equipment.py b/dcc/metadata/migrations/0005_tag_delete_equipment.py new file mode 100644 index 0000000..17e0a95 --- /dev/null +++ b/dcc/metadata/migrations/0005_tag_delete_equipment.py @@ -0,0 +1,27 @@ +# Generated by Django 4.0.2 on 2022-03-06 20:02 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('metadata', '0004_equipment'), + ] + + operations = [ + migrations.CreateModel( + name='Tag', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=128, unique=True)), + ('slug', models.CharField(max_length=128, unique=True)), + ], + options={ + 'verbose_name_plural': 'Equipment', + }, + ), + migrations.DeleteModel( + name='Equipment', + ), + ] diff --git a/dcc/metadata/migrations/0006_alter_tag_options.py b/dcc/metadata/migrations/0006_alter_tag_options.py new file mode 100644 index 0000000..dd833f5 --- /dev/null +++ b/dcc/metadata/migrations/0006_alter_tag_options.py @@ -0,0 +1,17 @@ +# Generated by Django 4.0.2 on 2022-03-06 20:15 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('metadata', '0005_tag_delete_equipment'), + ] + + operations = [ + migrations.AlterModelOptions( + name='tag', + options={}, + ), + ] diff --git a/dcc/metadata/models.py b/dcc/metadata/models.py index ca02885..38d51d2 100644 --- a/dcc/metadata/models.py +++ b/dcc/metadata/models.py @@ -1,7 +1,8 @@ from django.db import models +from django.dispatch.dispatcher import receiver from django_countries.fields import CountryField -from dcc.utils import get_image_preview +from dcc.utils import get_image_preview, slugify class Manufacturer(models.Model): @@ -67,3 +68,16 @@ class Decoder(models.Model): def image_thumbnail(self): return get_image_preview(self.image.url) image_thumbnail.short_description = "Preview" + + +class Tag(models.Model): + name = models.CharField(max_length=128, unique=True) + slug = models.CharField(max_length=128, unique=True) + + def __str__(self): + return self.name + + +@receiver(models.signals.pre_save, sender=Tag) +def tag_pre_save(sender, instance, **kwargs): + instance.slug = slugify(instance.name) diff --git a/dcc/roster/admin.py b/dcc/roster/admin.py index 5889b18..2b2ec13 100644 --- a/dcc/roster/admin.py +++ b/dcc/roster/admin.py @@ -1,9 +1,9 @@ from django.contrib import admin -from roster.models import Cab +from roster.models import RollingStock -@admin.register(Cab) -class CabAdmin(admin.ModelAdmin): +@admin.register(RollingStock) +class RollingStockAdmin(admin.ModelAdmin): readonly_fields = ('image_thumbnail', 'creation_time', 'updated_time',) list_display = ('identifier', 'address', 'manufacturer', 'company') list_filter = list_display @@ -12,6 +12,7 @@ class CabAdmin(admin.ModelAdmin): fieldsets = ( (None, { 'fields': ('identifier', + 'tags', 'address', 'manufacturer', 'decoder', diff --git a/dcc/roster/migrations/0017_rename_cab_rollingstock.py b/dcc/roster/migrations/0017_rename_cab_rollingstock.py new file mode 100644 index 0000000..be822e7 --- /dev/null +++ b/dcc/roster/migrations/0017_rename_cab_rollingstock.py @@ -0,0 +1,18 @@ +# Generated by Django 4.0.2 on 2022-03-06 19:42 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('metadata', '0003_metadata_extend'), + ('roster', '0016_alter_cab_image'), + ] + + operations = [ + migrations.RenameModel( + old_name='Cab', + new_name='RollingStock', + ), + ] diff --git a/dcc/roster/migrations/0018_alter_rollingstock_options.py b/dcc/roster/migrations/0018_alter_rollingstock_options.py new file mode 100644 index 0000000..67d34fc --- /dev/null +++ b/dcc/roster/migrations/0018_alter_rollingstock_options.py @@ -0,0 +1,17 @@ +# Generated by Django 4.0.2 on 2022-03-06 19:50 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('roster', '0017_rename_cab_rollingstock'), + ] + + operations = [ + migrations.AlterModelOptions( + name='rollingstock', + options={'ordering': ['address', 'identifier'], 'verbose_name_plural': 'Rolling stock'}, + ), + ] diff --git a/dcc/roster/migrations/0019_rollingstock_tags.py b/dcc/roster/migrations/0019_rollingstock_tags.py new file mode 100644 index 0000000..47d55e5 --- /dev/null +++ b/dcc/roster/migrations/0019_rollingstock_tags.py @@ -0,0 +1,19 @@ +# Generated by Django 4.0.2 on 2022-03-06 20:15 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('metadata', '0006_alter_tag_options'), + ('roster', '0018_alter_rollingstock_options'), + ] + + operations = [ + migrations.AddField( + model_name='rollingstock', + name='tags', + field=models.ManyToManyField(related_name='rolling_stock', to='metadata.Tag'), + ), + ] diff --git a/dcc/roster/migrations/0020_alter_rollingstock_address_alter_rollingstock_tags.py b/dcc/roster/migrations/0020_alter_rollingstock_address_alter_rollingstock_tags.py new file mode 100644 index 0000000..791e23b --- /dev/null +++ b/dcc/roster/migrations/0020_alter_rollingstock_address_alter_rollingstock_tags.py @@ -0,0 +1,24 @@ +# Generated by Django 4.0.2 on 2022-03-06 20:16 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('metadata', '0006_alter_tag_options'), + ('roster', '0019_rollingstock_tags'), + ] + + operations = [ + migrations.AlterField( + model_name='rollingstock', + name='address', + field=models.SmallIntegerField(default=3, null=True), + ), + migrations.AlterField( + model_name='rollingstock', + name='tags', + field=models.ManyToManyField(null=True, related_name='rolling_stock', to='metadata.Tag'), + ), + ] diff --git a/dcc/roster/migrations/0021_alter_rollingstock_tags.py b/dcc/roster/migrations/0021_alter_rollingstock_tags.py new file mode 100644 index 0000000..be09e3f --- /dev/null +++ b/dcc/roster/migrations/0021_alter_rollingstock_tags.py @@ -0,0 +1,19 @@ +# Generated by Django 4.0.2 on 2022-03-06 20:17 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('metadata', '0006_alter_tag_options'), + ('roster', '0020_alter_rollingstock_address_alter_rollingstock_tags'), + ] + + operations = [ + migrations.AlterField( + model_name='rollingstock', + name='tags', + field=models.ManyToManyField(blank=True, related_name='rolling_stock', to='metadata.Tag'), + ), + ] diff --git a/dcc/roster/migrations/0022_alter_rollingstock_address.py b/dcc/roster/migrations/0022_alter_rollingstock_address.py new file mode 100644 index 0000000..61eb8fa --- /dev/null +++ b/dcc/roster/migrations/0022_alter_rollingstock_address.py @@ -0,0 +1,18 @@ +# Generated by Django 4.0.2 on 2022-03-06 20:18 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('roster', '0021_alter_rollingstock_tags'), + ] + + operations = [ + migrations.AlterField( + model_name='rollingstock', + name='address', + field=models.SmallIntegerField(blank=True, default=3, null=True), + ), + ] diff --git a/dcc/roster/models.py b/dcc/roster/models.py index ca82fc2..9374cbb 100644 --- a/dcc/roster/models.py +++ b/dcc/roster/models.py @@ -4,7 +4,7 @@ from django.db import models # from django.dispatch import receiver from dcc.utils import get_image_preview -from metadata.models import Manufacturer, Decoder, Company +from metadata.models import Manufacturer, Decoder, Company, Tag # class OverwriteMixin(FileSystemStorage): # def get_available_name(self, name, max_length): @@ -12,12 +12,16 @@ from metadata.models import Manufacturer, Decoder, Company # return name -class Cab(models.Model): +class RollingStock(models.Model): uuid = models.UUIDField( primary_key=True, default=uuid4, editable=False) identifier = models.CharField(max_length=128, unique=False) - address = models.SmallIntegerField(default=3) + tags = models.ManyToManyField( + Tag, + related_name='rolling_stock', + blank=True) + address = models.SmallIntegerField(default=3, null=True, blank=True) manufacturer = models.ForeignKey( Manufacturer, on_delete=models.CASCADE, null=True, blank=True) @@ -42,6 +46,7 @@ class Cab(models.Model): class Meta: ordering = ['address', 'identifier'] + verbose_name_plural = "Rolling stock" def __str__(self): return "{0} {1}".format(self.manufacturer, self.identifier) diff --git a/dcc/roster/serializers.py b/dcc/roster/serializers.py index 628972b..1d345ee 100644 --- a/dcc/roster/serializers.py +++ b/dcc/roster/serializers.py @@ -1,15 +1,15 @@ from rest_framework import serializers -from roster.models import Cab +from roster.models import RollingStock from metadata.serializers import ( ManufacturerSerializer, CompanySerializer, DecoderSerializer) -class CabSerializer(serializers.ModelSerializer): +class RollingStockSerializer(serializers.ModelSerializer): manufacturer = ManufacturerSerializer() decoder = DecoderSerializer() company = CompanySerializer() class Meta: - model = Cab + model = RollingStock fields = "__all__" read_only_fields = ("creation_time", "updated_time") diff --git a/dcc/roster/views.py b/dcc/roster/views.py index 4d9286e..8916c0a 100644 --- a/dcc/roster/views.py +++ b/dcc/roster/views.py @@ -1,27 +1,27 @@ from rest_framework.generics import ListAPIView, RetrieveAPIView -from roster.models import Cab -from roster.serializers import CabSerializer +from roster.models import RollingStock +from roster.serializers import RollingStockSerializer class RosterList(ListAPIView): - queryset = Cab.objects.all() - serializer_class = CabSerializer + queryset = RollingStock.objects.all() + serializer_class = RollingStockSerializer class RosterGet(RetrieveAPIView): - queryset = Cab.objects.all() - serializer_class = CabSerializer + queryset = RollingStock.objects.all() + serializer_class = RollingStockSerializer lookup_field = 'uuid' class RosterAddress(RetrieveAPIView): - queryset = Cab.objects.all() - serializer_class = CabSerializer + queryset = RollingStock.objects.all() + serializer_class = RollingStockSerializer lookup_field = 'address' class RosterIdentifier(RetrieveAPIView): - queryset = Cab.objects.all() - serializer_class = CabSerializer + queryset = RollingStock.objects.all() + serializer_class = RollingStockSerializer lookup_field = 'identifier' From fd76b2df28db3f75fcdf05dfbd7e041286abd18c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniele=20Vigan=C3=B2?= Date: Wed, 30 Mar 2022 23:15:24 +0200 Subject: [PATCH 2/3] Refactor rolling stock --- dcc/dcc/settings.py | 5 ++ dcc/driver/views.py | 4 +- dcc/metadata/admin.py | 9 ++- .../migrations/0007_rollingstocktype.py | 20 ++++++ ..._rollingstocktype_type_cartype_and_more.py | 44 ++++++++++++ ...category_rollingstocktype_type_and_more.py | 51 ++++++++++++++ .../0010_alter_typecategory_category.py | 18 +++++ ...gstocktype_category_delete_typecategory.py | 21 ++++++ .../0012_alter_rollingstocktype_category.py | 18 +++++ dcc/metadata/models.py | 13 ++++ dcc/roster/admin.py | 49 +++++++++++-- ...ve_rollingstock_image_rollingstockimage.py | 38 +++++++++++ .../0024_alter_rollingstockimage_image.py | 18 +++++ ...lter_rollingstockimage_options_and_more.py | 21 ++++++ .../0026_rollingstockdocument_delete_image.py | 28 ++++++++ .../0027_alter_rollingstockdocument_file.py | 18 +++++ .../0028_rollingstockdocument_description.py | 18 +++++ .../migrations/0029_rollingstock_sku.py | 18 +++++ dcc/roster/migrations/0030_engine.py | 25 +++++++ .../migrations/0031_rollingstock_type.py | 20 ++++++ .../migrations/0032_alter_engine_options.py | 17 +++++ .../migrations/0033_car_equipment_other.py | 35 ++++++++++ ...tock_type_car_type_engine_type_and_more.py | 39 +++++++++++ dcc/roster/models.py | 68 +++++++++++++++++-- dcc/roster/views.py | 2 +- 25 files changed, 600 insertions(+), 17 deletions(-) create mode 100644 dcc/metadata/migrations/0007_rollingstocktype.py create mode 100644 dcc/metadata/migrations/0008_enginetype_remove_rollingstocktype_type_cartype_and_more.py create mode 100644 dcc/metadata/migrations/0009_typecategory_rollingstocktype_type_and_more.py create mode 100644 dcc/metadata/migrations/0010_alter_typecategory_category.py create mode 100644 dcc/metadata/migrations/0011_alter_rollingstocktype_category_delete_typecategory.py create mode 100644 dcc/metadata/migrations/0012_alter_rollingstocktype_category.py create mode 100644 dcc/roster/migrations/0023_image_remove_rollingstock_image_rollingstockimage.py create mode 100644 dcc/roster/migrations/0024_alter_rollingstockimage_image.py create mode 100644 dcc/roster/migrations/0025_alter_rollingstockimage_options_and_more.py create mode 100644 dcc/roster/migrations/0026_rollingstockdocument_delete_image.py create mode 100644 dcc/roster/migrations/0027_alter_rollingstockdocument_file.py create mode 100644 dcc/roster/migrations/0028_rollingstockdocument_description.py create mode 100644 dcc/roster/migrations/0029_rollingstock_sku.py create mode 100644 dcc/roster/migrations/0030_engine.py create mode 100644 dcc/roster/migrations/0031_rollingstock_type.py create mode 100644 dcc/roster/migrations/0032_alter_engine_options.py create mode 100644 dcc/roster/migrations/0033_car_equipment_other.py create mode 100644 dcc/roster/migrations/0034_remove_rollingstock_type_car_type_engine_type_and_more.py diff --git a/dcc/dcc/settings.py b/dcc/dcc/settings.py index 4daef69..6eaa721 100644 --- a/dcc/dcc/settings.py +++ b/dcc/dcc/settings.py @@ -134,3 +134,8 @@ DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' MEDIA_URL = 'media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media') + +ROLLING_STOCK_TYPES = [ + ("engine", "Engine"), ("car", "Car"), + ("equipment", "Equipment"), ("other", "Other") +] diff --git a/dcc/driver/views.py b/dcc/driver/views.py index d3477cc..1b9236b 100644 --- a/dcc/driver/views.py +++ b/dcc/driver/views.py @@ -16,9 +16,7 @@ def addresschecker(f): Check if DCC address does exist in the database """ def addresslookup(request, address, *args): - try: - RollingStock.objects.get(address=address) - except RollingStock.DoesNotExist: + if not RollingStock.objects.filter(address=address): raise Http404 return f(request, address, *args) return addresslookup diff --git a/dcc/metadata/admin.py b/dcc/metadata/admin.py index 8400565..98bd15f 100644 --- a/dcc/metadata/admin.py +++ b/dcc/metadata/admin.py @@ -1,5 +1,6 @@ from django.contrib import admin -from metadata.models import Decoder, Manufacturer, Company, Tag +from metadata.models import ( + Decoder, Manufacturer, Company, Tag, RollingStockType) @admin.register(Decoder) @@ -20,3 +21,9 @@ class ManufacturerAdmin(admin.ModelAdmin): @admin.register(Tag) class TagAdmin(admin.ModelAdmin): readonly_fields = ('slug',) + + +@admin.register(RollingStockType) +class RollingStockTypeAdmin(admin.ModelAdmin): + list_display = ('type', 'category') + list_filter = list_display diff --git a/dcc/metadata/migrations/0007_rollingstocktype.py b/dcc/metadata/migrations/0007_rollingstocktype.py new file mode 100644 index 0000000..157a422 --- /dev/null +++ b/dcc/metadata/migrations/0007_rollingstocktype.py @@ -0,0 +1,20 @@ +# Generated by Django 4.0.2 on 2022-03-30 19:44 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('metadata', '0006_alter_tag_options'), + ] + + operations = [ + migrations.CreateModel( + name='RollingStockType', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('type', models.CharField(max_length=64, unique=True)), + ], + ), + ] diff --git a/dcc/metadata/migrations/0008_enginetype_remove_rollingstocktype_type_cartype_and_more.py b/dcc/metadata/migrations/0008_enginetype_remove_rollingstocktype_type_cartype_and_more.py new file mode 100644 index 0000000..324761a --- /dev/null +++ b/dcc/metadata/migrations/0008_enginetype_remove_rollingstocktype_type_cartype_and_more.py @@ -0,0 +1,44 @@ +# Generated by Django 4.0.2 on 2022-03-30 19:55 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('metadata', '0007_rollingstocktype'), + ] + + operations = [ + migrations.CreateModel( + name='EngineType', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('type', models.CharField(max_length=64, unique=True)), + ], + ), + migrations.RemoveField( + model_name='rollingstocktype', + name='type', + ), + migrations.CreateModel( + name='CarType', + fields=[ + ('enginetype_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='metadata.enginetype')), + ], + bases=('metadata.enginetype',), + ), + migrations.AddField( + model_name='rollingstocktype', + name='engine_type', + field=models.ForeignKey(default='0', on_delete=django.db.models.deletion.CASCADE, related_name='engine_type', to='metadata.enginetype'), + preserve_default=False, + ), + migrations.AddField( + model_name='rollingstocktype', + name='car_type', + field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, related_name='car_type', to='metadata.cartype'), + preserve_default=False, + ), + ] diff --git a/dcc/metadata/migrations/0009_typecategory_rollingstocktype_type_and_more.py b/dcc/metadata/migrations/0009_typecategory_rollingstocktype_type_and_more.py new file mode 100644 index 0000000..952a56d --- /dev/null +++ b/dcc/metadata/migrations/0009_typecategory_rollingstocktype_type_and_more.py @@ -0,0 +1,51 @@ +# Generated by Django 4.0.2 on 2022-03-30 20:01 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('metadata', '0008_enginetype_remove_rollingstocktype_type_cartype_and_more'), + ] + + operations = [ + migrations.CreateModel( + name='TypeCategory', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('category', models.CharField(max_length=64, unique=True)), + ], + ), + migrations.AddField( + model_name='rollingstocktype', + name='type', + field=models.CharField(default='0', max_length=64), + preserve_default=False, + ), + migrations.AddField( + model_name='rollingstocktype', + name='category', + field=models.ForeignKey(default=0, on_delete=django.db.models.deletion.CASCADE, to='metadata.typecategory'), + preserve_default=False, + ), + migrations.AlterUniqueTogether( + name='rollingstocktype', + unique_together={('category', 'type')}, + ), + migrations.RemoveField( + model_name='rollingstocktype', + name='car_type', + ), + migrations.RemoveField( + model_name='rollingstocktype', + name='engine_type', + ), + migrations.DeleteModel( + name='CarType', + ), + migrations.DeleteModel( + name='EngineType', + ), + ] diff --git a/dcc/metadata/migrations/0010_alter_typecategory_category.py b/dcc/metadata/migrations/0010_alter_typecategory_category.py new file mode 100644 index 0000000..0797b59 --- /dev/null +++ b/dcc/metadata/migrations/0010_alter_typecategory_category.py @@ -0,0 +1,18 @@ +# Generated by Django 4.0.2 on 2022-03-30 20:04 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('metadata', '0009_typecategory_rollingstocktype_type_and_more'), + ] + + operations = [ + migrations.AlterField( + model_name='typecategory', + name='category', + field=models.CharField(choices=[('engine', 'Engine'), ('car', 'Car')], max_length=64, unique=True), + ), + ] diff --git a/dcc/metadata/migrations/0011_alter_rollingstocktype_category_delete_typecategory.py b/dcc/metadata/migrations/0011_alter_rollingstocktype_category_delete_typecategory.py new file mode 100644 index 0000000..6fb1ccd --- /dev/null +++ b/dcc/metadata/migrations/0011_alter_rollingstocktype_category_delete_typecategory.py @@ -0,0 +1,21 @@ +# Generated by Django 4.0.2 on 2022-03-30 20:04 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('metadata', '0010_alter_typecategory_category'), + ] + + operations = [ + migrations.AlterField( + model_name='rollingstocktype', + name='category', + field=models.CharField(choices=[('engine', 'Engine'), ('car', 'Car')], max_length=64, unique=True), + ), + migrations.DeleteModel( + name='TypeCategory', + ), + ] diff --git a/dcc/metadata/migrations/0012_alter_rollingstocktype_category.py b/dcc/metadata/migrations/0012_alter_rollingstocktype_category.py new file mode 100644 index 0000000..e553e06 --- /dev/null +++ b/dcc/metadata/migrations/0012_alter_rollingstocktype_category.py @@ -0,0 +1,18 @@ +# Generated by Django 4.0.2 on 2022-03-30 20:22 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('metadata', '0011_alter_rollingstocktype_category_delete_typecategory'), + ] + + operations = [ + migrations.AlterField( + model_name='rollingstocktype', + name='category', + field=models.CharField(choices=[('engine', 'Engine'), ('car', 'Car'), ('equipment', 'Equipment'), ('other', 'Other')], max_length=64), + ), + ] diff --git a/dcc/metadata/models.py b/dcc/metadata/models.py index 38d51d2..5243bf4 100644 --- a/dcc/metadata/models.py +++ b/dcc/metadata/models.py @@ -1,4 +1,5 @@ from django.db import models +from django.conf import settings from django.dispatch.dispatcher import receiver from django_countries.fields import CountryField @@ -81,3 +82,15 @@ class Tag(models.Model): @receiver(models.signals.pre_save, sender=Tag) def tag_pre_save(sender, instance, **kwargs): instance.slug = slugify(instance.name) + + +class RollingStockType(models.Model): + type = models.CharField(max_length=64) + category = models.CharField( + max_length=64, choices=settings.ROLLING_STOCK_TYPES) + + class Meta(object): + unique_together = ('category', 'type') + + def __str__(self): + return "{0}".format(self.type) diff --git a/dcc/roster/admin.py b/dcc/roster/admin.py index 2b2ec13..40766c4 100644 --- a/dcc/roster/admin.py +++ b/dcc/roster/admin.py @@ -1,27 +1,42 @@ from django.contrib import admin -from roster.models import RollingStock +from roster.models import ( + RollingStock, RollingStockImage, RollingStockDocument, Engine, Car, + Equipment, Other) + + +class RollingStockDocInline(admin.TabularInline): + model = RollingStockDocument + min_num = 0 + extra = 0 + + +class RollingStockImageInline(admin.TabularInline): + model = RollingStockImage + min_num = 0 + extra = 0 + readonly_fields = ('image_thumbnail',) -@admin.register(RollingStock) class RollingStockAdmin(admin.ModelAdmin): - readonly_fields = ('image_thumbnail', 'creation_time', 'updated_time',) - list_display = ('identifier', 'address', 'manufacturer', 'company') + inlines = (RollingStockImageInline, RollingStockDocInline) + readonly_fields = ('creation_time', 'updated_time',) + list_display = ('identifier', 'manufacturer', 'sku', 'company') list_filter = list_display search_fields = list_display fieldsets = ( (None, { 'fields': ('identifier', + 'type', 'tags', - 'address', 'manufacturer', + 'sku', 'decoder', + 'address', 'company', 'epoch', 'production_year', 'purchase_date', - 'image', - 'image_thumbnail', 'notes') }), ('Audit', { @@ -29,3 +44,23 @@ class RollingStockAdmin(admin.ModelAdmin): 'fields': ('creation_time', 'updated_time',) }), ) + + +@admin.register(Engine) +class Engine(RollingStockAdmin): + list_display = ('identifier', 'address', 'manufacturer', 'sku', 'company') + + +@admin.register(Car) +class Car(RollingStockAdmin): + pass + + +@admin.register(Equipment) +class Equipment(RollingStockAdmin): + pass + + +@admin.register(Other) +class Other(RollingStockAdmin): + pass diff --git a/dcc/roster/migrations/0023_image_remove_rollingstock_image_rollingstockimage.py b/dcc/roster/migrations/0023_image_remove_rollingstock_image_rollingstockimage.py new file mode 100644 index 0000000..73d8139 --- /dev/null +++ b/dcc/roster/migrations/0023_image_remove_rollingstock_image_rollingstockimage.py @@ -0,0 +1,38 @@ +# Generated by Django 4.0.2 on 2022-03-29 19:38 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('roster', '0022_alter_rollingstock_address'), + ] + + operations = [ + migrations.CreateModel( + name='Image', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('image', models.ImageField(blank=True, null=True, upload_to='images/')), + ], + ), + migrations.RemoveField( + model_name='rollingstock', + name='image', + ), + migrations.CreateModel( + name='RollingStockImage', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('order', models.PositiveIntegerField()), + ('image', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='roster.image')), + ('rolling_stock', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='roster.rollingstock')), + ], + options={ + 'ordering': ['order'], + 'unique_together': {('rolling_stock', 'image')}, + }, + ), + ] diff --git a/dcc/roster/migrations/0024_alter_rollingstockimage_image.py b/dcc/roster/migrations/0024_alter_rollingstockimage_image.py new file mode 100644 index 0000000..2f95735 --- /dev/null +++ b/dcc/roster/migrations/0024_alter_rollingstockimage_image.py @@ -0,0 +1,18 @@ +# Generated by Django 4.0.2 on 2022-03-29 20:00 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('roster', '0023_image_remove_rollingstock_image_rollingstockimage'), + ] + + operations = [ + migrations.AlterField( + model_name='rollingstockimage', + name='image', + field=models.ImageField(blank=True, null=True, upload_to='images/'), + ), + ] diff --git a/dcc/roster/migrations/0025_alter_rollingstockimage_options_and_more.py b/dcc/roster/migrations/0025_alter_rollingstockimage_options_and_more.py new file mode 100644 index 0000000..5575f1b --- /dev/null +++ b/dcc/roster/migrations/0025_alter_rollingstockimage_options_and_more.py @@ -0,0 +1,21 @@ +# Generated by Django 4.0.2 on 2022-03-29 20:02 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('roster', '0024_alter_rollingstockimage_image'), + ] + + operations = [ + migrations.AlterModelOptions( + name='rollingstockimage', + options={}, + ), + migrations.RemoveField( + model_name='rollingstockimage', + name='order', + ), + ] diff --git a/dcc/roster/migrations/0026_rollingstockdocument_delete_image.py b/dcc/roster/migrations/0026_rollingstockdocument_delete_image.py new file mode 100644 index 0000000..fc1dc30 --- /dev/null +++ b/dcc/roster/migrations/0026_rollingstockdocument_delete_image.py @@ -0,0 +1,28 @@ +# Generated by Django 4.0.2 on 2022-03-29 20:21 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('roster', '0025_alter_rollingstockimage_options_and_more'), + ] + + operations = [ + migrations.CreateModel( + name='RollingStockDocument', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('file', models.ImageField(blank=True, null=True, upload_to='files/')), + ('rolling_stock', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='roster.rollingstock')), + ], + options={ + 'unique_together': {('rolling_stock', 'file')}, + }, + ), + migrations.DeleteModel( + name='Image', + ), + ] diff --git a/dcc/roster/migrations/0027_alter_rollingstockdocument_file.py b/dcc/roster/migrations/0027_alter_rollingstockdocument_file.py new file mode 100644 index 0000000..7758f28 --- /dev/null +++ b/dcc/roster/migrations/0027_alter_rollingstockdocument_file.py @@ -0,0 +1,18 @@ +# Generated by Django 4.0.2 on 2022-03-29 20:23 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('roster', '0026_rollingstockdocument_delete_image'), + ] + + operations = [ + migrations.AlterField( + model_name='rollingstockdocument', + name='file', + field=models.FileField(blank=True, null=True, upload_to='files/'), + ), + ] diff --git a/dcc/roster/migrations/0028_rollingstockdocument_description.py b/dcc/roster/migrations/0028_rollingstockdocument_description.py new file mode 100644 index 0000000..01a657b --- /dev/null +++ b/dcc/roster/migrations/0028_rollingstockdocument_description.py @@ -0,0 +1,18 @@ +# Generated by Django 4.0.2 on 2022-03-29 20:24 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('roster', '0027_alter_rollingstockdocument_file'), + ] + + operations = [ + migrations.AddField( + model_name='rollingstockdocument', + name='description', + field=models.CharField(blank=True, max_length=128), + ), + ] diff --git a/dcc/roster/migrations/0029_rollingstock_sku.py b/dcc/roster/migrations/0029_rollingstock_sku.py new file mode 100644 index 0000000..96b769f --- /dev/null +++ b/dcc/roster/migrations/0029_rollingstock_sku.py @@ -0,0 +1,18 @@ +# Generated by Django 4.0.2 on 2022-03-30 19:37 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('roster', '0028_rollingstockdocument_description'), + ] + + operations = [ + migrations.AddField( + model_name='rollingstock', + name='sku', + field=models.CharField(blank=True, max_length=32), + ), + ] diff --git a/dcc/roster/migrations/0030_engine.py b/dcc/roster/migrations/0030_engine.py new file mode 100644 index 0000000..b78a13e --- /dev/null +++ b/dcc/roster/migrations/0030_engine.py @@ -0,0 +1,25 @@ +# Generated by Django 4.0.2 on 2022-03-30 19:40 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('roster', '0029_rollingstock_sku'), + ] + + operations = [ + migrations.CreateModel( + name='Engine', + fields=[ + ('rollingstock_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='roster.rollingstock')), + ], + options={ + 'verbose_name_plural': 'Engines', + 'ordering': ['address', 'identifier'], + }, + bases=('roster.rollingstock',), + ), + ] diff --git a/dcc/roster/migrations/0031_rollingstock_type.py b/dcc/roster/migrations/0031_rollingstock_type.py new file mode 100644 index 0000000..cb7b3c7 --- /dev/null +++ b/dcc/roster/migrations/0031_rollingstock_type.py @@ -0,0 +1,20 @@ +# Generated by Django 4.0.2 on 2022-03-30 20:26 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('metadata', '0012_alter_rollingstocktype_category'), + ('roster', '0030_engine'), + ] + + operations = [ + migrations.AddField( + model_name='rollingstock', + name='type', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='metadata.rollingstocktype'), + ), + ] diff --git a/dcc/roster/migrations/0032_alter_engine_options.py b/dcc/roster/migrations/0032_alter_engine_options.py new file mode 100644 index 0000000..c91b297 --- /dev/null +++ b/dcc/roster/migrations/0032_alter_engine_options.py @@ -0,0 +1,17 @@ +# Generated by Django 4.0.2 on 2022-03-30 20:49 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('roster', '0031_rollingstock_type'), + ] + + operations = [ + migrations.AlterModelOptions( + name='engine', + options={}, + ), + ] diff --git a/dcc/roster/migrations/0033_car_equipment_other.py b/dcc/roster/migrations/0033_car_equipment_other.py new file mode 100644 index 0000000..a516acb --- /dev/null +++ b/dcc/roster/migrations/0033_car_equipment_other.py @@ -0,0 +1,35 @@ +# Generated by Django 4.0.2 on 2022-03-30 20:57 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('roster', '0032_alter_engine_options'), + ] + + operations = [ + migrations.CreateModel( + name='Car', + fields=[ + ('rollingstock_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='roster.rollingstock')), + ], + bases=('roster.rollingstock',), + ), + migrations.CreateModel( + name='Equipment', + fields=[ + ('rollingstock_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='roster.rollingstock')), + ], + bases=('roster.rollingstock',), + ), + migrations.CreateModel( + name='Other', + fields=[ + ('rollingstock_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='roster.rollingstock')), + ], + bases=('roster.rollingstock',), + ), + ] diff --git a/dcc/roster/migrations/0034_remove_rollingstock_type_car_type_engine_type_and_more.py b/dcc/roster/migrations/0034_remove_rollingstock_type_car_type_engine_type_and_more.py new file mode 100644 index 0000000..2a799f2 --- /dev/null +++ b/dcc/roster/migrations/0034_remove_rollingstock_type_car_type_engine_type_and_more.py @@ -0,0 +1,39 @@ +# Generated by Django 4.0.2 on 2022-03-30 20:59 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('metadata', '0012_alter_rollingstocktype_category'), + ('roster', '0033_car_equipment_other'), + ] + + operations = [ + migrations.RemoveField( + model_name='rollingstock', + name='type', + ), + migrations.AddField( + model_name='car', + name='type', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='metadata.rollingstocktype'), + ), + migrations.AddField( + model_name='engine', + name='type', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='metadata.rollingstocktype'), + ), + migrations.AddField( + model_name='equipment', + name='type', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='metadata.rollingstocktype'), + ), + migrations.AddField( + model_name='other', + name='type', + field=models.ForeignKey(blank=True, limit_choices_to={'category': 'roster.models'}, null=True, on_delete=django.db.models.deletion.CASCADE, to='metadata.rollingstocktype'), + ), + ] diff --git a/dcc/roster/models.py b/dcc/roster/models.py index 9374cbb..e641df8 100644 --- a/dcc/roster/models.py +++ b/dcc/roster/models.py @@ -1,10 +1,12 @@ +import os from uuid import uuid4 from django.db import models # from django.core.files.storage import FileSystemStorage # from django.dispatch import receiver from dcc.utils import get_image_preview -from metadata.models import Manufacturer, Decoder, Company, Tag +from metadata.models import ( + Manufacturer, Decoder, Company, Tag, RollingStockType) # class OverwriteMixin(FileSystemStorage): # def get_available_name(self, name, max_length): @@ -25,6 +27,7 @@ class RollingStock(models.Model): manufacturer = models.ForeignKey( Manufacturer, on_delete=models.CASCADE, null=True, blank=True) + sku = models.CharField(max_length=32, blank=True) decoder = models.ForeignKey( Decoder, on_delete=models.CASCADE, null=True, blank=True) @@ -35,10 +38,6 @@ class RollingStock(models.Model): production_year = models.SmallIntegerField(null=True, blank=True) purchase_date = models.DateField(null=True, blank=True) - image = models.ImageField( - upload_to='images/', - null=True, - blank=True) notes = models.TextField(blank=True) creation_time = models.DateTimeField(auto_now_add=True) @@ -51,10 +50,69 @@ class RollingStock(models.Model): def __str__(self): return "{0} {1}".format(self.manufacturer, self.identifier) + +class Engine(RollingStock): + type = models.ForeignKey( + RollingStockType, on_delete=models.CASCADE, + limit_choices_to={'category': 'engine'}, + null=True, blank=True) + + +class Car(RollingStock): + type = models.ForeignKey( + RollingStockType, on_delete=models.CASCADE, + limit_choices_to={'category': 'car'}, + null=True, blank=True) + + +class Equipment(RollingStock): + type = models.ForeignKey( + RollingStockType, on_delete=models.CASCADE, + limit_choices_to={'category': 'equipment'}, + null=True, blank=True) + + +class Other(RollingStock): + type = models.ForeignKey( + RollingStockType, on_delete=models.CASCADE, + limit_choices_to={'category': 'other'}, + null=True, blank=True) + + +class RollingStockDocument(models.Model): + rolling_stock = models.ForeignKey( + RollingStock, on_delete=models.CASCADE) + description = models.CharField(max_length=128, blank=True) + file = models.FileField( + upload_to='files/', + null=True, + blank=True) + + class Meta(object): + unique_together = ('rolling_stock', 'file') + + def __str__(self): + return "{0}".format(os.path.basename(self.file.name)) + # return "{0}".format(self.description) + + +class RollingStockImage(models.Model): + rolling_stock = models.ForeignKey( + RollingStock, on_delete=models.CASCADE) + image = models.ImageField( + upload_to='images/', + null=True, + blank=True) + def image_thumbnail(self): return get_image_preview(self.image.url) image_thumbnail.short_description = "Preview" + class Meta(object): + unique_together = ('rolling_stock', 'image') + + def __str__(self): + return "{0}".format(os.path.basename(self.image.name)) # @receiver(models.signals.post_delete, sender=Cab) # def post_save_image(sender, instance, *args, **kwargs): diff --git a/dcc/roster/views.py b/dcc/roster/views.py index 8916c0a..6a29409 100644 --- a/dcc/roster/views.py +++ b/dcc/roster/views.py @@ -15,7 +15,7 @@ class RosterGet(RetrieveAPIView): lookup_field = 'uuid' -class RosterAddress(RetrieveAPIView): +class RosterAddress(ListAPIView): queryset = RollingStock.objects.all() serializer_class = RollingStockSerializer lookup_field = 'address' From 89aa6ea2b96c3315c5e1c36be7048361e834d8b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniele=20Vigan=C3=B2?= Date: Fri, 1 Apr 2022 22:25:24 +0200 Subject: [PATCH 3/3] Squash migrations --- dcc/driver/migrations/0001_initial.py | 5 +- ...er_driverconfiguration_options_and_more.py | 22 ----- dcc/metadata/migrations/0001_initial.py | 26 +++++- .../migrations/0002_decoder_version.py | 18 ----- .../migrations/0003_metadata_extend.py | 35 -------- dcc/metadata/migrations/0004_equipment.py | 20 ----- .../migrations/0005_tag_delete_equipment.py | 27 ------- .../migrations/0006_alter_tag_options.py | 17 ---- .../migrations/0007_rollingstocktype.py | 20 ----- ..._rollingstocktype_type_cartype_and_more.py | 44 ---------- ...category_rollingstocktype_type_and_more.py | 51 ------------ .../0010_alter_typecategory_category.py | 18 ----- ...gstocktype_category_delete_typecategory.py | 21 ----- .../0012_alter_rollingstocktype_category.py | 18 ----- dcc/roster/migrations/0001_initial.py | 80 ++++++++++++++++--- ...cab_production_date_cab_production_year.py | 28 ------- ...e_cab_production_date_cab_purchase_date.py | 22 ----- ...urer_alter_cab_production_year_and_more.py | 29 ------- .../migrations/0005_alter_cab_manufacturer.py | 19 ----- dcc/roster/migrations/0006_cab_image.py | 18 ----- dcc/roster/migrations/0007_alter_cab_image.py | 18 ----- dcc/roster/migrations/0008_cab_epoch.py | 18 ----- ...manufacturer_cab_decoder_model_and_more.py | 29 ------- ...emove_cab_decoder_manufacturer_and_more.py | 31 ------- ...11_remove_cab_decoder_model_cab_decoder.py | 23 ------ dcc/roster/migrations/0012_company.py | 22 ----- dcc/roster/migrations/0013_cab_company.py | 19 ----- ...4_alter_company_options_alter_cab_image.py | 22 ----- ...manufacturer_alter_cab_company_and_more.py | 43 ---------- dcc/roster/migrations/0016_alter_cab_image.py | 18 ----- .../0017_rename_cab_rollingstock.py | 18 ----- .../0018_alter_rollingstock_options.py | 17 ---- .../migrations/0019_rollingstock_tags.py | 19 ----- ...ngstock_address_alter_rollingstock_tags.py | 24 ------ .../0021_alter_rollingstock_tags.py | 19 ----- .../0022_alter_rollingstock_address.py | 18 ----- ...ve_rollingstock_image_rollingstockimage.py | 38 --------- .../0024_alter_rollingstockimage_image.py | 18 ----- ...lter_rollingstockimage_options_and_more.py | 21 ----- .../0026_rollingstockdocument_delete_image.py | 28 ------- .../0027_alter_rollingstockdocument_file.py | 18 ----- .../0028_rollingstockdocument_description.py | 18 ----- .../migrations/0029_rollingstock_sku.py | 18 ----- dcc/roster/migrations/0030_engine.py | 25 ------ .../migrations/0031_rollingstock_type.py | 20 ----- .../migrations/0032_alter_engine_options.py | 17 ---- .../migrations/0033_car_equipment_other.py | 35 -------- ...tock_type_car_type_engine_type_and_more.py | 39 --------- 48 files changed, 97 insertions(+), 1094 deletions(-) delete mode 100644 dcc/driver/migrations/0002_alter_driverconfiguration_options_and_more.py delete mode 100644 dcc/metadata/migrations/0002_decoder_version.py delete mode 100644 dcc/metadata/migrations/0003_metadata_extend.py delete mode 100644 dcc/metadata/migrations/0004_equipment.py delete mode 100644 dcc/metadata/migrations/0005_tag_delete_equipment.py delete mode 100644 dcc/metadata/migrations/0006_alter_tag_options.py delete mode 100644 dcc/metadata/migrations/0007_rollingstocktype.py delete mode 100644 dcc/metadata/migrations/0008_enginetype_remove_rollingstocktype_type_cartype_and_more.py delete mode 100644 dcc/metadata/migrations/0009_typecategory_rollingstocktype_type_and_more.py delete mode 100644 dcc/metadata/migrations/0010_alter_typecategory_category.py delete mode 100644 dcc/metadata/migrations/0011_alter_rollingstocktype_category_delete_typecategory.py delete mode 100644 dcc/metadata/migrations/0012_alter_rollingstocktype_category.py delete mode 100644 dcc/roster/migrations/0002_cab_notes_cab_production_date_cab_production_year.py delete mode 100644 dcc/roster/migrations/0003_remove_cab_production_date_cab_purchase_date.py delete mode 100644 dcc/roster/migrations/0004_alter_cab_manufacturer_alter_cab_production_year_and_more.py delete mode 100644 dcc/roster/migrations/0005_alter_cab_manufacturer.py delete mode 100644 dcc/roster/migrations/0006_cab_image.py delete mode 100644 dcc/roster/migrations/0007_alter_cab_image.py delete mode 100644 dcc/roster/migrations/0008_cab_epoch.py delete mode 100644 dcc/roster/migrations/0009_cab_decoder_manufacturer_cab_decoder_model_and_more.py delete mode 100644 dcc/roster/migrations/0010_remove_cab_decoder_manufacturer_and_more.py delete mode 100644 dcc/roster/migrations/0011_remove_cab_decoder_model_cab_decoder.py delete mode 100644 dcc/roster/migrations/0012_company.py delete mode 100644 dcc/roster/migrations/0013_cab_company.py delete mode 100644 dcc/roster/migrations/0014_alter_company_options_alter_cab_image.py delete mode 100644 dcc/roster/migrations/0015_remove_decoder_manufacturer_alter_cab_company_and_more.py delete mode 100644 dcc/roster/migrations/0016_alter_cab_image.py delete mode 100644 dcc/roster/migrations/0017_rename_cab_rollingstock.py delete mode 100644 dcc/roster/migrations/0018_alter_rollingstock_options.py delete mode 100644 dcc/roster/migrations/0019_rollingstock_tags.py delete mode 100644 dcc/roster/migrations/0020_alter_rollingstock_address_alter_rollingstock_tags.py delete mode 100644 dcc/roster/migrations/0021_alter_rollingstock_tags.py delete mode 100644 dcc/roster/migrations/0022_alter_rollingstock_address.py delete mode 100644 dcc/roster/migrations/0023_image_remove_rollingstock_image_rollingstockimage.py delete mode 100644 dcc/roster/migrations/0024_alter_rollingstockimage_image.py delete mode 100644 dcc/roster/migrations/0025_alter_rollingstockimage_options_and_more.py delete mode 100644 dcc/roster/migrations/0026_rollingstockdocument_delete_image.py delete mode 100644 dcc/roster/migrations/0027_alter_rollingstockdocument_file.py delete mode 100644 dcc/roster/migrations/0028_rollingstockdocument_description.py delete mode 100644 dcc/roster/migrations/0029_rollingstock_sku.py delete mode 100644 dcc/roster/migrations/0030_engine.py delete mode 100644 dcc/roster/migrations/0031_rollingstock_type.py delete mode 100644 dcc/roster/migrations/0032_alter_engine_options.py delete mode 100644 dcc/roster/migrations/0033_car_equipment_other.py delete mode 100644 dcc/roster/migrations/0034_remove_rollingstock_type_car_type_engine_type_and_more.py diff --git a/dcc/driver/migrations/0001_initial.py b/dcc/driver/migrations/0001_initial.py index 361b620..ca9c7bf 100644 --- a/dcc/driver/migrations/0001_initial.py +++ b/dcc/driver/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 4.0 on 2021-12-31 10:41 +# Generated by Django 4.0.2 on 2022-04-01 20:25 from django.db import migrations, models @@ -17,9 +17,10 @@ class Migration(migrations.Migration): ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('remote_host', models.GenericIPAddressField(default='192.168.4.1', protocol='IPv4')), ('remote_port', models.SmallIntegerField(default=2560)), + ('timeout', models.SmallIntegerField(default=250)), ], options={ - 'verbose_name': 'Driver Configuration', + 'verbose_name': 'Configuration', }, ), ] diff --git a/dcc/driver/migrations/0002_alter_driverconfiguration_options_and_more.py b/dcc/driver/migrations/0002_alter_driverconfiguration_options_and_more.py deleted file mode 100644 index f6d0609..0000000 --- a/dcc/driver/migrations/0002_alter_driverconfiguration_options_and_more.py +++ /dev/null @@ -1,22 +0,0 @@ -# Generated by Django 4.0 on 2022-01-03 19:53 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('driver', '0001_initial'), - ] - - operations = [ - migrations.AlterModelOptions( - name='driverconfiguration', - options={'verbose_name': 'Configuration'}, - ), - migrations.AddField( - model_name='driverconfiguration', - name='timeout', - field=models.SmallIntegerField(default=250), - ), - ] diff --git a/dcc/metadata/migrations/0001_initial.py b/dcc/metadata/migrations/0001_initial.py index 5d00089..c3e1d3c 100644 --- a/dcc/metadata/migrations/0001_initial.py +++ b/dcc/metadata/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 4.0 on 2021-12-20 21:37 +# Generated by Django 4.0.2 on 2022-04-01 20:25 from django.db import migrations, models import django.db.models.deletion @@ -19,6 +19,7 @@ class Migration(migrations.Migration): ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=128, unique=True)), ('country', django_countries.fields.CountryField(max_length=2)), + ('logo', models.ImageField(blank=True, null=True, upload_to='images/')), ], options={ 'verbose_name_plural': 'Companies', @@ -29,13 +30,36 @@ class Migration(migrations.Migration): fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=128, unique=True)), + ('logo', models.ImageField(blank=True, null=True, upload_to='images/')), ], ), + migrations.CreateModel( + name='Tag', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=128, unique=True)), + ('slug', models.CharField(max_length=128, unique=True)), + ], + ), + migrations.CreateModel( + name='RollingStockType', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('type', models.CharField(max_length=64)), + ('category', models.CharField(choices=[('engine', 'Engine'), ('car', 'Car'), ('equipment', 'Equipment'), ('other', 'Other')], max_length=64)), + ], + options={ + 'unique_together': {('category', 'type')}, + }, + ), migrations.CreateModel( name='Decoder', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=128, unique=True)), + ('version', models.CharField(blank=True, max_length=64)), + ('interface', models.PositiveSmallIntegerField(blank=True, choices=[(1, 'NEM651'), (2, 'NEM652'), (3, 'PluX'), (4, '21MTC'), (5, 'Next18/Next18S')], null=True)), + ('image', models.ImageField(blank=True, null=True, upload_to='images/')), ('manufacturer', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='metadata.manufacturer')), ], ), diff --git a/dcc/metadata/migrations/0002_decoder_version.py b/dcc/metadata/migrations/0002_decoder_version.py deleted file mode 100644 index d5c2e1d..0000000 --- a/dcc/metadata/migrations/0002_decoder_version.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 4.0 on 2021-12-20 21:42 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('metadata', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='decoder', - name='version', - field=models.CharField(blank=True, max_length=64), - ), - ] diff --git a/dcc/metadata/migrations/0003_metadata_extend.py b/dcc/metadata/migrations/0003_metadata_extend.py deleted file mode 100644 index 84bfead..0000000 --- a/dcc/metadata/migrations/0003_metadata_extend.py +++ /dev/null @@ -1,35 +0,0 @@ -# Generated by Django 4.0.1 on 2022-01-29 18:41 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - replaces = [('metadata', '0003_company_logo_decoder_image_manufacturer_logo'), ('metadata', '0004_decoder_interface'), ('metadata', '0005_alter_decoder_interface'), ('metadata', '0006_alter_decoder_interface')] - - dependencies = [ - ('metadata', '0002_decoder_version'), - ] - - operations = [ - migrations.AddField( - model_name='company', - name='logo', - field=models.ImageField(blank=True, null=True, upload_to='images/'), - ), - migrations.AddField( - model_name='decoder', - name='image', - field=models.ImageField(blank=True, null=True, upload_to='images/'), - ), - migrations.AddField( - model_name='manufacturer', - name='logo', - field=models.ImageField(blank=True, null=True, upload_to='images/'), - ), - migrations.AddField( - model_name='decoder', - name='interface', - field=models.PositiveSmallIntegerField(blank=True, choices=[(1, 'NEM651'), (2, 'NEM652'), (3, 'PluX'), (4, '21MTC'), (5, 'Next18/Next18S')], null=True), - ), - ] diff --git a/dcc/metadata/migrations/0004_equipment.py b/dcc/metadata/migrations/0004_equipment.py deleted file mode 100644 index 2556ced..0000000 --- a/dcc/metadata/migrations/0004_equipment.py +++ /dev/null @@ -1,20 +0,0 @@ -# Generated by Django 4.0.2 on 2022-03-06 19:50 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('metadata', '0003_metadata_extend'), - ] - - operations = [ - migrations.CreateModel( - name='Equipment', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('equipment_type', models.CharField(max_length=128, unique=True)), - ], - ), - ] diff --git a/dcc/metadata/migrations/0005_tag_delete_equipment.py b/dcc/metadata/migrations/0005_tag_delete_equipment.py deleted file mode 100644 index 17e0a95..0000000 --- a/dcc/metadata/migrations/0005_tag_delete_equipment.py +++ /dev/null @@ -1,27 +0,0 @@ -# Generated by Django 4.0.2 on 2022-03-06 20:02 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('metadata', '0004_equipment'), - ] - - operations = [ - migrations.CreateModel( - name='Tag', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=128, unique=True)), - ('slug', models.CharField(max_length=128, unique=True)), - ], - options={ - 'verbose_name_plural': 'Equipment', - }, - ), - migrations.DeleteModel( - name='Equipment', - ), - ] diff --git a/dcc/metadata/migrations/0006_alter_tag_options.py b/dcc/metadata/migrations/0006_alter_tag_options.py deleted file mode 100644 index dd833f5..0000000 --- a/dcc/metadata/migrations/0006_alter_tag_options.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 4.0.2 on 2022-03-06 20:15 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('metadata', '0005_tag_delete_equipment'), - ] - - operations = [ - migrations.AlterModelOptions( - name='tag', - options={}, - ), - ] diff --git a/dcc/metadata/migrations/0007_rollingstocktype.py b/dcc/metadata/migrations/0007_rollingstocktype.py deleted file mode 100644 index 157a422..0000000 --- a/dcc/metadata/migrations/0007_rollingstocktype.py +++ /dev/null @@ -1,20 +0,0 @@ -# Generated by Django 4.0.2 on 2022-03-30 19:44 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('metadata', '0006_alter_tag_options'), - ] - - operations = [ - migrations.CreateModel( - name='RollingStockType', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('type', models.CharField(max_length=64, unique=True)), - ], - ), - ] diff --git a/dcc/metadata/migrations/0008_enginetype_remove_rollingstocktype_type_cartype_and_more.py b/dcc/metadata/migrations/0008_enginetype_remove_rollingstocktype_type_cartype_and_more.py deleted file mode 100644 index 324761a..0000000 --- a/dcc/metadata/migrations/0008_enginetype_remove_rollingstocktype_type_cartype_and_more.py +++ /dev/null @@ -1,44 +0,0 @@ -# Generated by Django 4.0.2 on 2022-03-30 19:55 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('metadata', '0007_rollingstocktype'), - ] - - operations = [ - migrations.CreateModel( - name='EngineType', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('type', models.CharField(max_length=64, unique=True)), - ], - ), - migrations.RemoveField( - model_name='rollingstocktype', - name='type', - ), - migrations.CreateModel( - name='CarType', - fields=[ - ('enginetype_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='metadata.enginetype')), - ], - bases=('metadata.enginetype',), - ), - migrations.AddField( - model_name='rollingstocktype', - name='engine_type', - field=models.ForeignKey(default='0', on_delete=django.db.models.deletion.CASCADE, related_name='engine_type', to='metadata.enginetype'), - preserve_default=False, - ), - migrations.AddField( - model_name='rollingstocktype', - name='car_type', - field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, related_name='car_type', to='metadata.cartype'), - preserve_default=False, - ), - ] diff --git a/dcc/metadata/migrations/0009_typecategory_rollingstocktype_type_and_more.py b/dcc/metadata/migrations/0009_typecategory_rollingstocktype_type_and_more.py deleted file mode 100644 index 952a56d..0000000 --- a/dcc/metadata/migrations/0009_typecategory_rollingstocktype_type_and_more.py +++ /dev/null @@ -1,51 +0,0 @@ -# Generated by Django 4.0.2 on 2022-03-30 20:01 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('metadata', '0008_enginetype_remove_rollingstocktype_type_cartype_and_more'), - ] - - operations = [ - migrations.CreateModel( - name='TypeCategory', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('category', models.CharField(max_length=64, unique=True)), - ], - ), - migrations.AddField( - model_name='rollingstocktype', - name='type', - field=models.CharField(default='0', max_length=64), - preserve_default=False, - ), - migrations.AddField( - model_name='rollingstocktype', - name='category', - field=models.ForeignKey(default=0, on_delete=django.db.models.deletion.CASCADE, to='metadata.typecategory'), - preserve_default=False, - ), - migrations.AlterUniqueTogether( - name='rollingstocktype', - unique_together={('category', 'type')}, - ), - migrations.RemoveField( - model_name='rollingstocktype', - name='car_type', - ), - migrations.RemoveField( - model_name='rollingstocktype', - name='engine_type', - ), - migrations.DeleteModel( - name='CarType', - ), - migrations.DeleteModel( - name='EngineType', - ), - ] diff --git a/dcc/metadata/migrations/0010_alter_typecategory_category.py b/dcc/metadata/migrations/0010_alter_typecategory_category.py deleted file mode 100644 index 0797b59..0000000 --- a/dcc/metadata/migrations/0010_alter_typecategory_category.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 4.0.2 on 2022-03-30 20:04 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('metadata', '0009_typecategory_rollingstocktype_type_and_more'), - ] - - operations = [ - migrations.AlterField( - model_name='typecategory', - name='category', - field=models.CharField(choices=[('engine', 'Engine'), ('car', 'Car')], max_length=64, unique=True), - ), - ] diff --git a/dcc/metadata/migrations/0011_alter_rollingstocktype_category_delete_typecategory.py b/dcc/metadata/migrations/0011_alter_rollingstocktype_category_delete_typecategory.py deleted file mode 100644 index 6fb1ccd..0000000 --- a/dcc/metadata/migrations/0011_alter_rollingstocktype_category_delete_typecategory.py +++ /dev/null @@ -1,21 +0,0 @@ -# Generated by Django 4.0.2 on 2022-03-30 20:04 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('metadata', '0010_alter_typecategory_category'), - ] - - operations = [ - migrations.AlterField( - model_name='rollingstocktype', - name='category', - field=models.CharField(choices=[('engine', 'Engine'), ('car', 'Car')], max_length=64, unique=True), - ), - migrations.DeleteModel( - name='TypeCategory', - ), - ] diff --git a/dcc/metadata/migrations/0012_alter_rollingstocktype_category.py b/dcc/metadata/migrations/0012_alter_rollingstocktype_category.py deleted file mode 100644 index e553e06..0000000 --- a/dcc/metadata/migrations/0012_alter_rollingstocktype_category.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 4.0.2 on 2022-03-30 20:22 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('metadata', '0011_alter_rollingstocktype_category_delete_typecategory'), - ] - - operations = [ - migrations.AlterField( - model_name='rollingstocktype', - name='category', - field=models.CharField(choices=[('engine', 'Engine'), ('car', 'Car'), ('equipment', 'Equipment'), ('other', 'Other')], max_length=64), - ), - ] diff --git a/dcc/roster/migrations/0001_initial.py b/dcc/roster/migrations/0001_initial.py index fba407c..2152455 100644 --- a/dcc/roster/migrations/0001_initial.py +++ b/dcc/roster/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 4.0 on 2021-12-15 22:16 +# Generated by Django 4.0.2 on 2022-04-01 20:25 from django.db import migrations, models import django.db.models.deletion @@ -10,28 +10,86 @@ class Migration(migrations.Migration): initial = True dependencies = [ + ('metadata', '0001_initial'), ] operations = [ migrations.CreateModel( - name='Manufacturer', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=128, unique=True)), - ], - ), - migrations.CreateModel( - name='Cab', + name='RollingStock', fields=[ ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ('identifier', models.CharField(max_length=128)), - ('address', models.SmallIntegerField(default=3)), + ('address', models.SmallIntegerField(blank=True, default=3, null=True)), + ('sku', models.CharField(blank=True, max_length=32)), + ('epoch', models.CharField(blank=True, max_length=32)), + ('production_year', models.SmallIntegerField(blank=True, null=True)), + ('purchase_date', models.DateField(blank=True, null=True)), + ('notes', models.TextField(blank=True)), ('creation_time', models.DateTimeField(auto_now_add=True)), ('updated_time', models.DateTimeField(auto_now=True)), - ('manufacturer', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='roster.manufacturer')), + ('company', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='metadata.company')), + ('decoder', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='metadata.decoder')), + ('manufacturer', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='metadata.manufacturer')), + ('tags', models.ManyToManyField(blank=True, related_name='rolling_stock', to='metadata.Tag')), ], options={ + 'verbose_name_plural': 'Rolling stock', 'ordering': ['address', 'identifier'], }, ), + migrations.CreateModel( + name='RollingStockImage', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('image', models.ImageField(blank=True, null=True, upload_to='images/')), + ('rolling_stock', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='roster.rollingstock')), + ], + options={ + 'unique_together': {('rolling_stock', 'image')}, + }, + ), + migrations.CreateModel( + name='RollingStockDocument', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('description', models.CharField(blank=True, max_length=128)), + ('file', models.FileField(blank=True, null=True, upload_to='files/')), + ('rolling_stock', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='roster.rollingstock')), + ], + options={ + 'unique_together': {('rolling_stock', 'file')}, + }, + ), + migrations.CreateModel( + name='Other', + fields=[ + ('rollingstock_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='roster.rollingstock')), + ('type', models.ForeignKey(blank=True, limit_choices_to={'category': 'other'}, null=True, on_delete=django.db.models.deletion.CASCADE, to='metadata.rollingstocktype')), + ], + bases=('roster.rollingstock',), + ), + migrations.CreateModel( + name='Equipment', + fields=[ + ('rollingstock_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='roster.rollingstock')), + ('type', models.ForeignKey(blank=True, limit_choices_to={'category': 'equipment'}, null=True, on_delete=django.db.models.deletion.CASCADE, to='metadata.rollingstocktype')), + ], + bases=('roster.rollingstock',), + ), + migrations.CreateModel( + name='Engine', + fields=[ + ('rollingstock_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='roster.rollingstock')), + ('type', models.ForeignKey(blank=True, limit_choices_to={'category': 'engine'}, null=True, on_delete=django.db.models.deletion.CASCADE, to='metadata.rollingstocktype')), + ], + bases=('roster.rollingstock',), + ), + migrations.CreateModel( + name='Car', + fields=[ + ('rollingstock_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='roster.rollingstock')), + ('type', models.ForeignKey(blank=True, limit_choices_to={'category': 'car'}, null=True, on_delete=django.db.models.deletion.CASCADE, to='metadata.rollingstocktype')), + ], + bases=('roster.rollingstock',), + ), ] diff --git a/dcc/roster/migrations/0002_cab_notes_cab_production_date_cab_production_year.py b/dcc/roster/migrations/0002_cab_notes_cab_production_date_cab_production_year.py deleted file mode 100644 index 35aa44b..0000000 --- a/dcc/roster/migrations/0002_cab_notes_cab_production_date_cab_production_year.py +++ /dev/null @@ -1,28 +0,0 @@ -# Generated by Django 4.0 on 2021-12-15 22:24 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('roster', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='cab', - name='notes', - field=models.TextField(blank=True), - ), - migrations.AddField( - model_name='cab', - name='production_date', - field=models.SmallIntegerField(null=True), - ), - migrations.AddField( - model_name='cab', - name='production_year', - field=models.SmallIntegerField(null=True), - ), - ] diff --git a/dcc/roster/migrations/0003_remove_cab_production_date_cab_purchase_date.py b/dcc/roster/migrations/0003_remove_cab_production_date_cab_purchase_date.py deleted file mode 100644 index 95b2471..0000000 --- a/dcc/roster/migrations/0003_remove_cab_production_date_cab_purchase_date.py +++ /dev/null @@ -1,22 +0,0 @@ -# Generated by Django 4.0 on 2021-12-15 22:27 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('roster', '0002_cab_notes_cab_production_date_cab_production_year'), - ] - - operations = [ - migrations.RemoveField( - model_name='cab', - name='production_date', - ), - migrations.AddField( - model_name='cab', - name='purchase_date', - field=models.DateField(null=True), - ), - ] diff --git a/dcc/roster/migrations/0004_alter_cab_manufacturer_alter_cab_production_year_and_more.py b/dcc/roster/migrations/0004_alter_cab_manufacturer_alter_cab_production_year_and_more.py deleted file mode 100644 index 100e04c..0000000 --- a/dcc/roster/migrations/0004_alter_cab_manufacturer_alter_cab_production_year_and_more.py +++ /dev/null @@ -1,29 +0,0 @@ -# Generated by Django 4.0 on 2021-12-15 22:28 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('roster', '0003_remove_cab_production_date_cab_purchase_date'), - ] - - operations = [ - migrations.AlterField( - model_name='cab', - name='manufacturer', - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='roster.manufacturer'), - ), - migrations.AlterField( - model_name='cab', - name='production_year', - field=models.SmallIntegerField(blank=True, null=True), - ), - migrations.AlterField( - model_name='cab', - name='purchase_date', - field=models.DateField(blank=True, null=True), - ), - ] diff --git a/dcc/roster/migrations/0005_alter_cab_manufacturer.py b/dcc/roster/migrations/0005_alter_cab_manufacturer.py deleted file mode 100644 index f347d2a..0000000 --- a/dcc/roster/migrations/0005_alter_cab_manufacturer.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 4.0 on 2021-12-15 22:29 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('roster', '0004_alter_cab_manufacturer_alter_cab_production_year_and_more'), - ] - - operations = [ - migrations.AlterField( - model_name='cab', - name='manufacturer', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='roster.manufacturer'), - ), - ] diff --git a/dcc/roster/migrations/0006_cab_image.py b/dcc/roster/migrations/0006_cab_image.py deleted file mode 100644 index a8f744e..0000000 --- a/dcc/roster/migrations/0006_cab_image.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 4.0 on 2021-12-15 22:32 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('roster', '0005_alter_cab_manufacturer'), - ] - - operations = [ - migrations.AddField( - model_name='cab', - name='image', - field=models.ImageField(blank=True, upload_to=''), - ), - ] diff --git a/dcc/roster/migrations/0007_alter_cab_image.py b/dcc/roster/migrations/0007_alter_cab_image.py deleted file mode 100644 index dde5ee7..0000000 --- a/dcc/roster/migrations/0007_alter_cab_image.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 4.0 on 2021-12-15 22:43 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('roster', '0006_cab_image'), - ] - - operations = [ - migrations.AlterField( - model_name='cab', - name='image', - field=models.ImageField(blank=True, null=True, upload_to='images/'), - ), - ] diff --git a/dcc/roster/migrations/0008_cab_epoch.py b/dcc/roster/migrations/0008_cab_epoch.py deleted file mode 100644 index d9a05d7..0000000 --- a/dcc/roster/migrations/0008_cab_epoch.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 4.0 on 2021-12-15 23:05 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('roster', '0007_alter_cab_image'), - ] - - operations = [ - migrations.AddField( - model_name='cab', - name='epoch', - field=models.CharField(blank=True, max_length=32), - ), - ] diff --git a/dcc/roster/migrations/0009_cab_decoder_manufacturer_cab_decoder_model_and_more.py b/dcc/roster/migrations/0009_cab_decoder_manufacturer_cab_decoder_model_and_more.py deleted file mode 100644 index a9ee418..0000000 --- a/dcc/roster/migrations/0009_cab_decoder_manufacturer_cab_decoder_model_and_more.py +++ /dev/null @@ -1,29 +0,0 @@ -# Generated by Django 4.0 on 2021-12-16 09:11 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('roster', '0008_cab_epoch'), - ] - - operations = [ - migrations.AddField( - model_name='cab', - name='decoder_manufacturer', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_decoder', to='roster.manufacturer'), - ), - migrations.AddField( - model_name='cab', - name='decoder_model', - field=models.CharField(blank=True, max_length=128), - ), - migrations.AlterField( - model_name='cab', - name='manufacturer', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_manufacturer', to='roster.manufacturer'), - ), - ] diff --git a/dcc/roster/migrations/0010_remove_cab_decoder_manufacturer_and_more.py b/dcc/roster/migrations/0010_remove_cab_decoder_manufacturer_and_more.py deleted file mode 100644 index 3dab61a..0000000 --- a/dcc/roster/migrations/0010_remove_cab_decoder_manufacturer_and_more.py +++ /dev/null @@ -1,31 +0,0 @@ -# Generated by Django 4.0 on 2021-12-16 09:15 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('roster', '0009_cab_decoder_manufacturer_cab_decoder_model_and_more'), - ] - - operations = [ - migrations.RemoveField( - model_name='cab', - name='decoder_manufacturer', - ), - migrations.AlterField( - model_name='cab', - name='manufacturer', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='roster.manufacturer'), - ), - migrations.CreateModel( - name='Decoder', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=128, unique=True)), - ('manufacturer', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='roster.manufacturer')), - ], - ), - ] diff --git a/dcc/roster/migrations/0011_remove_cab_decoder_model_cab_decoder.py b/dcc/roster/migrations/0011_remove_cab_decoder_model_cab_decoder.py deleted file mode 100644 index 44d0fa5..0000000 --- a/dcc/roster/migrations/0011_remove_cab_decoder_model_cab_decoder.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 4.0 on 2021-12-16 09:18 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('roster', '0010_remove_cab_decoder_manufacturer_and_more'), - ] - - operations = [ - migrations.RemoveField( - model_name='cab', - name='decoder_model', - ), - migrations.AddField( - model_name='cab', - name='decoder', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='roster.decoder'), - ), - ] diff --git a/dcc/roster/migrations/0012_company.py b/dcc/roster/migrations/0012_company.py deleted file mode 100644 index aeb4fd5..0000000 --- a/dcc/roster/migrations/0012_company.py +++ /dev/null @@ -1,22 +0,0 @@ -# Generated by Django 4.0 on 2021-12-16 21:26 - -from django.db import migrations, models -import django_countries.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('roster', '0011_remove_cab_decoder_model_cab_decoder'), - ] - - operations = [ - migrations.CreateModel( - name='Company', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=128, unique=True)), - ('country', django_countries.fields.CountryField(max_length=2)), - ], - ), - ] diff --git a/dcc/roster/migrations/0013_cab_company.py b/dcc/roster/migrations/0013_cab_company.py deleted file mode 100644 index 1b9a7ee..0000000 --- a/dcc/roster/migrations/0013_cab_company.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 4.0 on 2021-12-16 21:27 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('roster', '0012_company'), - ] - - operations = [ - migrations.AddField( - model_name='cab', - name='company', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='roster.company'), - ), - ] diff --git a/dcc/roster/migrations/0014_alter_company_options_alter_cab_image.py b/dcc/roster/migrations/0014_alter_company_options_alter_cab_image.py deleted file mode 100644 index 9a35e0b..0000000 --- a/dcc/roster/migrations/0014_alter_company_options_alter_cab_image.py +++ /dev/null @@ -1,22 +0,0 @@ -# Generated by Django 4.0 on 2021-12-17 23:21 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('roster', '0013_cab_company'), - ] - - operations = [ - migrations.AlterModelOptions( - name='company', - options={'verbose_name_plural': 'Companies'}, - ), - migrations.AlterField( - model_name='cab', - name='image', - field=models.ImageField(blank=True, null=True, upload_to='media/images/'), - ), - ] diff --git a/dcc/roster/migrations/0015_remove_decoder_manufacturer_alter_cab_company_and_more.py b/dcc/roster/migrations/0015_remove_decoder_manufacturer_alter_cab_company_and_more.py deleted file mode 100644 index a5cae8e..0000000 --- a/dcc/roster/migrations/0015_remove_decoder_manufacturer_alter_cab_company_and_more.py +++ /dev/null @@ -1,43 +0,0 @@ -# Generated by Django 4.0 on 2021-12-20 21:37 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('metadata', '0001_initial'), - ('roster', '0014_alter_company_options_alter_cab_image'), - ] - - operations = [ - migrations.RemoveField( - model_name='decoder', - name='manufacturer', - ), - migrations.AlterField( - model_name='cab', - name='company', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='metadata.company'), - ), - migrations.AlterField( - model_name='cab', - name='decoder', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='metadata.decoder'), - ), - migrations.AlterField( - model_name='cab', - name='manufacturer', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='metadata.manufacturer'), - ), - migrations.DeleteModel( - name='Company', - ), - migrations.DeleteModel( - name='Decoder', - ), - migrations.DeleteModel( - name='Manufacturer', - ), - ] diff --git a/dcc/roster/migrations/0016_alter_cab_image.py b/dcc/roster/migrations/0016_alter_cab_image.py deleted file mode 100644 index e93689d..0000000 --- a/dcc/roster/migrations/0016_alter_cab_image.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 4.0.1 on 2022-01-29 18:05 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('roster', '0015_remove_decoder_manufacturer_alter_cab_company_and_more'), - ] - - operations = [ - migrations.AlterField( - model_name='cab', - name='image', - field=models.ImageField(blank=True, null=True, upload_to='images/'), - ), - ] diff --git a/dcc/roster/migrations/0017_rename_cab_rollingstock.py b/dcc/roster/migrations/0017_rename_cab_rollingstock.py deleted file mode 100644 index be822e7..0000000 --- a/dcc/roster/migrations/0017_rename_cab_rollingstock.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 4.0.2 on 2022-03-06 19:42 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('metadata', '0003_metadata_extend'), - ('roster', '0016_alter_cab_image'), - ] - - operations = [ - migrations.RenameModel( - old_name='Cab', - new_name='RollingStock', - ), - ] diff --git a/dcc/roster/migrations/0018_alter_rollingstock_options.py b/dcc/roster/migrations/0018_alter_rollingstock_options.py deleted file mode 100644 index 67d34fc..0000000 --- a/dcc/roster/migrations/0018_alter_rollingstock_options.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 4.0.2 on 2022-03-06 19:50 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('roster', '0017_rename_cab_rollingstock'), - ] - - operations = [ - migrations.AlterModelOptions( - name='rollingstock', - options={'ordering': ['address', 'identifier'], 'verbose_name_plural': 'Rolling stock'}, - ), - ] diff --git a/dcc/roster/migrations/0019_rollingstock_tags.py b/dcc/roster/migrations/0019_rollingstock_tags.py deleted file mode 100644 index 47d55e5..0000000 --- a/dcc/roster/migrations/0019_rollingstock_tags.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 4.0.2 on 2022-03-06 20:15 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('metadata', '0006_alter_tag_options'), - ('roster', '0018_alter_rollingstock_options'), - ] - - operations = [ - migrations.AddField( - model_name='rollingstock', - name='tags', - field=models.ManyToManyField(related_name='rolling_stock', to='metadata.Tag'), - ), - ] diff --git a/dcc/roster/migrations/0020_alter_rollingstock_address_alter_rollingstock_tags.py b/dcc/roster/migrations/0020_alter_rollingstock_address_alter_rollingstock_tags.py deleted file mode 100644 index 791e23b..0000000 --- a/dcc/roster/migrations/0020_alter_rollingstock_address_alter_rollingstock_tags.py +++ /dev/null @@ -1,24 +0,0 @@ -# Generated by Django 4.0.2 on 2022-03-06 20:16 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('metadata', '0006_alter_tag_options'), - ('roster', '0019_rollingstock_tags'), - ] - - operations = [ - migrations.AlterField( - model_name='rollingstock', - name='address', - field=models.SmallIntegerField(default=3, null=True), - ), - migrations.AlterField( - model_name='rollingstock', - name='tags', - field=models.ManyToManyField(null=True, related_name='rolling_stock', to='metadata.Tag'), - ), - ] diff --git a/dcc/roster/migrations/0021_alter_rollingstock_tags.py b/dcc/roster/migrations/0021_alter_rollingstock_tags.py deleted file mode 100644 index be09e3f..0000000 --- a/dcc/roster/migrations/0021_alter_rollingstock_tags.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 4.0.2 on 2022-03-06 20:17 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('metadata', '0006_alter_tag_options'), - ('roster', '0020_alter_rollingstock_address_alter_rollingstock_tags'), - ] - - operations = [ - migrations.AlterField( - model_name='rollingstock', - name='tags', - field=models.ManyToManyField(blank=True, related_name='rolling_stock', to='metadata.Tag'), - ), - ] diff --git a/dcc/roster/migrations/0022_alter_rollingstock_address.py b/dcc/roster/migrations/0022_alter_rollingstock_address.py deleted file mode 100644 index 61eb8fa..0000000 --- a/dcc/roster/migrations/0022_alter_rollingstock_address.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 4.0.2 on 2022-03-06 20:18 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('roster', '0021_alter_rollingstock_tags'), - ] - - operations = [ - migrations.AlterField( - model_name='rollingstock', - name='address', - field=models.SmallIntegerField(blank=True, default=3, null=True), - ), - ] diff --git a/dcc/roster/migrations/0023_image_remove_rollingstock_image_rollingstockimage.py b/dcc/roster/migrations/0023_image_remove_rollingstock_image_rollingstockimage.py deleted file mode 100644 index 73d8139..0000000 --- a/dcc/roster/migrations/0023_image_remove_rollingstock_image_rollingstockimage.py +++ /dev/null @@ -1,38 +0,0 @@ -# Generated by Django 4.0.2 on 2022-03-29 19:38 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('roster', '0022_alter_rollingstock_address'), - ] - - operations = [ - migrations.CreateModel( - name='Image', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('image', models.ImageField(blank=True, null=True, upload_to='images/')), - ], - ), - migrations.RemoveField( - model_name='rollingstock', - name='image', - ), - migrations.CreateModel( - name='RollingStockImage', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('order', models.PositiveIntegerField()), - ('image', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='roster.image')), - ('rolling_stock', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='roster.rollingstock')), - ], - options={ - 'ordering': ['order'], - 'unique_together': {('rolling_stock', 'image')}, - }, - ), - ] diff --git a/dcc/roster/migrations/0024_alter_rollingstockimage_image.py b/dcc/roster/migrations/0024_alter_rollingstockimage_image.py deleted file mode 100644 index 2f95735..0000000 --- a/dcc/roster/migrations/0024_alter_rollingstockimage_image.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 4.0.2 on 2022-03-29 20:00 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('roster', '0023_image_remove_rollingstock_image_rollingstockimage'), - ] - - operations = [ - migrations.AlterField( - model_name='rollingstockimage', - name='image', - field=models.ImageField(blank=True, null=True, upload_to='images/'), - ), - ] diff --git a/dcc/roster/migrations/0025_alter_rollingstockimage_options_and_more.py b/dcc/roster/migrations/0025_alter_rollingstockimage_options_and_more.py deleted file mode 100644 index 5575f1b..0000000 --- a/dcc/roster/migrations/0025_alter_rollingstockimage_options_and_more.py +++ /dev/null @@ -1,21 +0,0 @@ -# Generated by Django 4.0.2 on 2022-03-29 20:02 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('roster', '0024_alter_rollingstockimage_image'), - ] - - operations = [ - migrations.AlterModelOptions( - name='rollingstockimage', - options={}, - ), - migrations.RemoveField( - model_name='rollingstockimage', - name='order', - ), - ] diff --git a/dcc/roster/migrations/0026_rollingstockdocument_delete_image.py b/dcc/roster/migrations/0026_rollingstockdocument_delete_image.py deleted file mode 100644 index fc1dc30..0000000 --- a/dcc/roster/migrations/0026_rollingstockdocument_delete_image.py +++ /dev/null @@ -1,28 +0,0 @@ -# Generated by Django 4.0.2 on 2022-03-29 20:21 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('roster', '0025_alter_rollingstockimage_options_and_more'), - ] - - operations = [ - migrations.CreateModel( - name='RollingStockDocument', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('file', models.ImageField(blank=True, null=True, upload_to='files/')), - ('rolling_stock', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='roster.rollingstock')), - ], - options={ - 'unique_together': {('rolling_stock', 'file')}, - }, - ), - migrations.DeleteModel( - name='Image', - ), - ] diff --git a/dcc/roster/migrations/0027_alter_rollingstockdocument_file.py b/dcc/roster/migrations/0027_alter_rollingstockdocument_file.py deleted file mode 100644 index 7758f28..0000000 --- a/dcc/roster/migrations/0027_alter_rollingstockdocument_file.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 4.0.2 on 2022-03-29 20:23 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('roster', '0026_rollingstockdocument_delete_image'), - ] - - operations = [ - migrations.AlterField( - model_name='rollingstockdocument', - name='file', - field=models.FileField(blank=True, null=True, upload_to='files/'), - ), - ] diff --git a/dcc/roster/migrations/0028_rollingstockdocument_description.py b/dcc/roster/migrations/0028_rollingstockdocument_description.py deleted file mode 100644 index 01a657b..0000000 --- a/dcc/roster/migrations/0028_rollingstockdocument_description.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 4.0.2 on 2022-03-29 20:24 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('roster', '0027_alter_rollingstockdocument_file'), - ] - - operations = [ - migrations.AddField( - model_name='rollingstockdocument', - name='description', - field=models.CharField(blank=True, max_length=128), - ), - ] diff --git a/dcc/roster/migrations/0029_rollingstock_sku.py b/dcc/roster/migrations/0029_rollingstock_sku.py deleted file mode 100644 index 96b769f..0000000 --- a/dcc/roster/migrations/0029_rollingstock_sku.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 4.0.2 on 2022-03-30 19:37 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('roster', '0028_rollingstockdocument_description'), - ] - - operations = [ - migrations.AddField( - model_name='rollingstock', - name='sku', - field=models.CharField(blank=True, max_length=32), - ), - ] diff --git a/dcc/roster/migrations/0030_engine.py b/dcc/roster/migrations/0030_engine.py deleted file mode 100644 index b78a13e..0000000 --- a/dcc/roster/migrations/0030_engine.py +++ /dev/null @@ -1,25 +0,0 @@ -# Generated by Django 4.0.2 on 2022-03-30 19:40 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('roster', '0029_rollingstock_sku'), - ] - - operations = [ - migrations.CreateModel( - name='Engine', - fields=[ - ('rollingstock_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='roster.rollingstock')), - ], - options={ - 'verbose_name_plural': 'Engines', - 'ordering': ['address', 'identifier'], - }, - bases=('roster.rollingstock',), - ), - ] diff --git a/dcc/roster/migrations/0031_rollingstock_type.py b/dcc/roster/migrations/0031_rollingstock_type.py deleted file mode 100644 index cb7b3c7..0000000 --- a/dcc/roster/migrations/0031_rollingstock_type.py +++ /dev/null @@ -1,20 +0,0 @@ -# Generated by Django 4.0.2 on 2022-03-30 20:26 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('metadata', '0012_alter_rollingstocktype_category'), - ('roster', '0030_engine'), - ] - - operations = [ - migrations.AddField( - model_name='rollingstock', - name='type', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='metadata.rollingstocktype'), - ), - ] diff --git a/dcc/roster/migrations/0032_alter_engine_options.py b/dcc/roster/migrations/0032_alter_engine_options.py deleted file mode 100644 index c91b297..0000000 --- a/dcc/roster/migrations/0032_alter_engine_options.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 4.0.2 on 2022-03-30 20:49 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('roster', '0031_rollingstock_type'), - ] - - operations = [ - migrations.AlterModelOptions( - name='engine', - options={}, - ), - ] diff --git a/dcc/roster/migrations/0033_car_equipment_other.py b/dcc/roster/migrations/0033_car_equipment_other.py deleted file mode 100644 index a516acb..0000000 --- a/dcc/roster/migrations/0033_car_equipment_other.py +++ /dev/null @@ -1,35 +0,0 @@ -# Generated by Django 4.0.2 on 2022-03-30 20:57 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('roster', '0032_alter_engine_options'), - ] - - operations = [ - migrations.CreateModel( - name='Car', - fields=[ - ('rollingstock_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='roster.rollingstock')), - ], - bases=('roster.rollingstock',), - ), - migrations.CreateModel( - name='Equipment', - fields=[ - ('rollingstock_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='roster.rollingstock')), - ], - bases=('roster.rollingstock',), - ), - migrations.CreateModel( - name='Other', - fields=[ - ('rollingstock_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='roster.rollingstock')), - ], - bases=('roster.rollingstock',), - ), - ] diff --git a/dcc/roster/migrations/0034_remove_rollingstock_type_car_type_engine_type_and_more.py b/dcc/roster/migrations/0034_remove_rollingstock_type_car_type_engine_type_and_more.py deleted file mode 100644 index 2a799f2..0000000 --- a/dcc/roster/migrations/0034_remove_rollingstock_type_car_type_engine_type_and_more.py +++ /dev/null @@ -1,39 +0,0 @@ -# Generated by Django 4.0.2 on 2022-03-30 20:59 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('metadata', '0012_alter_rollingstocktype_category'), - ('roster', '0033_car_equipment_other'), - ] - - operations = [ - migrations.RemoveField( - model_name='rollingstock', - name='type', - ), - migrations.AddField( - model_name='car', - name='type', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='metadata.rollingstocktype'), - ), - migrations.AddField( - model_name='engine', - name='type', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='metadata.rollingstocktype'), - ), - migrations.AddField( - model_name='equipment', - name='type', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='metadata.rollingstocktype'), - ), - migrations.AddField( - model_name='other', - name='type', - field=models.ForeignKey(blank=True, limit_choices_to={'category': 'roster.models'}, null=True, on_delete=django.db.models.deletion.CASCADE, to='metadata.rollingstocktype'), - ), - ]