From 60195bc99f6178b9888e9d7e4f0049d22e743738 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniele=20Vigan=C3=B2?= Date: Fri, 2 May 2025 13:39:42 +0200 Subject: [PATCH] Simplify the logic about scales in the consist and remove async updates --- ram/consist/admin.py | 1 - .../migrations/0018_alter_consist_scale.py | 25 +++++++++++++++++++ ram/consist/models.py | 23 ++--------------- ram/ram/__init__.py | 2 +- 4 files changed, 28 insertions(+), 23 deletions(-) create mode 100644 ram/consist/migrations/0018_alter_consist_scale.py diff --git a/ram/consist/admin.py b/ram/consist/admin.py index 2ec67ef..e480318 100644 --- a/ram/consist/admin.py +++ b/ram/consist/admin.py @@ -25,7 +25,6 @@ class ConsistItemInline(SortableInlineAdminMixin, admin.TabularInline): class ConsistAdmin(SortableAdminBase, admin.ModelAdmin): inlines = (ConsistItemInline,) readonly_fields = ( - "scale", "creation_time", "updated_time", ) diff --git a/ram/consist/migrations/0018_alter_consist_scale.py b/ram/consist/migrations/0018_alter_consist_scale.py new file mode 100644 index 0000000..48810d9 --- /dev/null +++ b/ram/consist/migrations/0018_alter_consist_scale.py @@ -0,0 +1,25 @@ +# Generated by Django 5.1.4 on 2025-05-02 11:33 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("consist", "0017_consist_scale"), + ( + "metadata", + "0024_remove_genericdocument_tags_delete_decoderdocument_and_more", + ), + ] + + operations = [ + migrations.AlterField( + model_name="consist", + name="scale", + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, to="metadata.scale" + ), + ), + ] diff --git a/ram/consist/models.py b/ram/consist/models.py index 9a7f61f..01e842e 100644 --- a/ram/consist/models.py +++ b/ram/consist/models.py @@ -26,7 +26,7 @@ class Consist(BaseModel): blank=True, help_text="Era or epoch of the consist", ) - scale = models.ForeignKey(Scale, null=True, on_delete=models.CASCADE) + scale = models.ForeignKey(Scale, on_delete=models.CASCADE) image = models.ImageField( upload_to=os.path.join("images", "consists"), storage=DeduplicatedStorage, @@ -82,18 +82,6 @@ class ConsistItem(models.Model): def __str__(self): return "{0}".format(self.rolling_stock) - def save(self, *args, **kwargs): - super().save(*args, **kwargs) - if self.consist.scale != self.rolling_stock.scale: - self.consist.scale = self.rolling_stock.scale - self.consist.save() - - def delete(self, *args, **kwargs): - super().delete(*args, **kwargs) - if not self.consist.consist_item.exists(): - self.consist.scale = None - self.consist.save() - def clean(self): rolling_stock = getattr(self, "rolling_stock", False) if not rolling_stock: @@ -103,14 +91,7 @@ class ConsistItem(models.Model): # because the consist is not saved yet and it must be moved # to the admin form validation via InlineFormSet.clean() consist = self.consist - items = consist.consist_item - if ( - consist.pk # if we are not creating a new consist - and items.exists() # if there's at least one item - and self != items.first() # if we are not changing the first item - # if scale is different from the first item - and rolling_stock.scale != items.first().rolling_stock.scale - ): + if rolling_stock.scale != consist.scale: raise ValidationError( "The rolling stock and consist must be of the same scale." ) diff --git a/ram/ram/__init__.py b/ram/ram/__init__.py index 30051e6..d918b03 100644 --- a/ram/ram/__init__.py +++ b/ram/ram/__init__.py @@ -1,4 +1,4 @@ from ram.utils import git_suffix -__version__ = "0.17.7" +__version__ = "0.17.8" __version__ += git_suffix(__file__)