diff --git a/ram/metadata/admin.py b/ram/metadata/admin.py index 8e5602e..7ac1786 100644 --- a/ram/metadata/admin.py +++ b/ram/metadata/admin.py @@ -20,8 +20,8 @@ class PropertyAdmin(admin.ModelAdmin): @admin.register(Decoder) class DecoderAdmin(admin.ModelAdmin): readonly_fields = ("image_thumbnail",) - list_display = ("__str__", "interface") - list_filter = ("manufacturer", "interface") + list_display = ("__str__", "sound") + list_filter = ("manufacturer", "sound") search_fields = ("name", "manufacturer__name") diff --git a/ram/metadata/migrations/0008_remove_decoder_interface.py b/ram/metadata/migrations/0008_remove_decoder_interface.py new file mode 100644 index 0000000..c1372cd --- /dev/null +++ b/ram/metadata/migrations/0008_remove_decoder_interface.py @@ -0,0 +1,18 @@ +# Generated by Django 4.1.2 on 2022-10-31 23:01 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("metadata", "0007_rename_track_scale_tracks"), + ("roster", "0013_rollingstock_decoder_interface"), + ] + + operations = [ + migrations.RemoveField( + model_name="decoder", + name="interface", + ), + ] diff --git a/ram/metadata/models.py b/ram/metadata/models.py index 6c89bfd..039ea01 100644 --- a/ram/metadata/models.py +++ b/ram/metadata/models.py @@ -66,9 +66,6 @@ class Decoder(models.Model): limit_choices_to={"category": "model"}, ) version = models.CharField(max_length=64, blank=True) - interface = models.PositiveSmallIntegerField( - choices=settings.DECODER_INTERFACES, null=True, blank=True - ) sound = models.BooleanField(default=False) image = models.ImageField(upload_to="images/", null=True, blank=True) diff --git a/ram/portal/templates/page.html b/ram/portal/templates/page.html index 807d41b..02b8307 100644 --- a/ram/portal/templates/page.html +++ b/ram/portal/templates/page.html @@ -102,7 +102,7 @@ - {% if rolling_stock.decoder %} + {% if rolling_stock.decoder or rolling_stock.decoder_interface %} @@ -111,13 +111,19 @@ - + + + + {% if rolling_stock.decoder %} + + + {% endif %}
DecoderInterface{{ rolling_stock.get_decoder_interface_display }}
Decoder {{ rolling_stock.decoder }}
Address {{ rolling_stock.address }}
{% endif %} @@ -230,6 +236,10 @@ + + Interface + {{ rolling_stock.get_decoder_interface_display }} + Address {{ rolling_stock.address }} @@ -246,10 +256,6 @@ Version {{ rolling_stock.decoder.version }} - - Interface - {{ rolling_stock.decoder.get_interface_display }} - Sound {{ rolling_stock.decoder.sound | yesno:"Yes,No" }} diff --git a/ram/ram/__init__.py b/ram/ram/__init__.py index 9a58813..9b3fc78 100644 --- a/ram/ram/__init__.py +++ b/ram/ram/__init__.py @@ -1,4 +1,4 @@ from ram.utils import git_suffix -__version__ = "0.0.19" +__version__ = "0.0.20" __version__ += git_suffix(__file__) diff --git a/ram/roster/admin.py b/ram/roster/admin.py index a12ce43..ba7a916 100644 --- a/ram/roster/admin.py +++ b/ram/roster/admin.py @@ -148,6 +148,7 @@ class RollingStockAdmin(admin.ModelAdmin): "DCC", { "fields": ( + "decoder_interface", "decoder", "address", ) diff --git a/ram/roster/migrations/0013_rollingstock_decoder_interface.py b/ram/roster/migrations/0013_rollingstock_decoder_interface.py new file mode 100644 index 0000000..d499fcb --- /dev/null +++ b/ram/roster/migrations/0013_rollingstock_decoder_interface.py @@ -0,0 +1,42 @@ +# Generated by Django 4.1 on 2022-10-31 22:27 + +from django.db import migrations, models + + +def meta_to_roster(apps, schema_editor): + model = apps.get_model("roster", "RollingStock") + + for row in model.objects.all(): + if row.decoder: + decoder_interface = row.decoder.interface + row.__dict__["decoder_interface"] = decoder_interface + row.save(update_fields=["decoder_interface"]) + + +class Migration(migrations.Migration): + + dependencies = [ + ("roster", "0012_rollingstockjournal"), + ] + + operations = [ + migrations.AddField( + model_name="rollingstock", + name="decoder_interface", + field=models.PositiveSmallIntegerField( + blank=True, + choices=[ + (1, "NEM651"), + (2, "NEM652"), + (3, "PluX"), + (4, "21MTC"), + (5, "Next18/Next18S"), + ], + null=True, + ), + ), + migrations.RunPython( + meta_to_roster, + reverse_code=migrations.RunPython.noop + ), + ] diff --git a/ram/roster/models.py b/ram/roster/models.py index dae9663..c42234c 100644 --- a/ram/roster/models.py +++ b/ram/roster/models.py @@ -3,6 +3,7 @@ import re from uuid import uuid4 from django.db import models from django.urls import reverse +from django.conf import settings from django.dispatch import receiver from django.utils.safestring import mark_safe @@ -87,6 +88,9 @@ class RollingStock(models.Model): ) scale = models.ForeignKey(Scale, on_delete=models.CASCADE) sku = models.CharField(max_length=32, blank=True) + decoder_interface = models.PositiveSmallIntegerField( + choices=settings.DECODER_INTERFACES, null=True, blank=True + ) decoder = models.ForeignKey( Decoder, on_delete=models.CASCADE, null=True, blank=True )