Add shop field (from properties) (#48)

* Add shop field (from properties)

* Update template
This commit is contained in:
2025-01-27 00:34:44 +01:00
committed by GitHub
parent 1a8f2aace8
commit d16e00d66b
16 changed files with 191 additions and 9 deletions

View File

@@ -151,7 +151,7 @@ class RollingStockAdmin(SortableAdminBase, admin.ModelAdmin):
RollingStockDocInline,
RollingStockJournalInline,
)
autocomplete_fields = ("rolling_class",)
autocomplete_fields = ("rolling_class", "shop")
readonly_fields = ("preview", "creation_time", "updated_time")
list_display = (
"__str__",
@@ -220,6 +220,7 @@ class RollingStockAdmin(SortableAdminBase, admin.ModelAdmin):
"Purchase data",
{
"fields": (
"shop",
"purchase_date",
"price",
)
@@ -266,6 +267,7 @@ class RollingStockAdmin(SortableAdminBase, admin.ModelAdmin):
"Decoder Interface",
"Decoder",
"Address",
"Shop",
"Purchase Date",
"Price ({})".format(get_site_conf().currency),
"Properties",
@@ -297,6 +299,7 @@ class RollingStockAdmin(SortableAdminBase, admin.ModelAdmin):
obj.decoder,
obj.address,
obj.purchase_date,
obj.shop,
obj.price,
properties,
]

View File

@@ -0,0 +1,46 @@
# Generated by Django 5.1.4 on 2025-01-26 14:32
import django.db.models.deletion
from django.db import migrations, models
def shop_from_property(apps, schema_editor):
rolling_stock = apps.get_model("roster", "RollingStock")
shop_model = apps.get_model("metadata", "Shop")
for row in rolling_stock.objects.all():
property = row.property.filter(
property__name__icontains="shop"
).first()
if property:
shop, created = shop_model.objects.get_or_create(
name=property.value,
defaults={"on_line": False}
)
row.shop = shop
row.save()
class Migration(migrations.Migration):
dependencies = [
("metadata", "0023_shop"),
("roster", "0033_rename_manufacturer_rollingclass_manufacturer_old"),
]
operations = [
migrations.AddField(
model_name="rollingstock",
name="shop",
field=models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.CASCADE,
to="metadata.shop",
),
),
migrations.RunPython(
shop_from_property,
reverse_code=migrations.RunPython.noop
),
]

View File

@@ -14,6 +14,7 @@ from ram.managers import PublicManager
from metadata.models import (
Scale,
Manufacturer,
Shop,
Decoder,
Company,
Tag,
@@ -102,6 +103,9 @@ class RollingStock(BaseModel):
help_text="Era or epoch of the model",
)
production_year = models.SmallIntegerField(null=True, blank=True)
shop = models.ForeignKey(
Shop, on_delete=models.CASCADE, null=True, blank=True
)
purchase_date = models.DateField(null=True, blank=True)
price = models.DecimalField(
max_digits=10,

View File

@@ -29,5 +29,5 @@ class RollingStockSerializer(serializers.ModelSerializer):
class Meta:
model = RollingStock
exclude = ("purchase_date", "price",)
exclude = ("shop", "purchase_date", "price",)
read_only_fields = ("creation_time", "updated_time")