mirror of
https://github.com/ae-utbm/sith.git
synced 2025-07-10 03:49:24 +00:00
Make ProductType
an OrderedModel
This commit is contained in:
@ -0,0 +1,62 @@
|
||||
# Generated by Django 4.2.17 on 2024-12-15 17:53
|
||||
|
||||
from django.db import migrations, models
|
||||
from django.db.migrations.state import StateApps
|
||||
|
||||
|
||||
def move_priority_to_order(apps: StateApps, schema_editor):
|
||||
"""Migrate the previous homemade `priority` to `OrderedModel.order`.
|
||||
|
||||
`priority` was a system were click managers set themselves the priority
|
||||
of a ProductType.
|
||||
The higher the priority, the higher it was to be displayed in the eboutic.
|
||||
Multiple product types could share the same priority, in which
|
||||
case they were ordered by alphabetic order.
|
||||
|
||||
The new field is unique per object, and works in the other way :
|
||||
the nearer from 0, the higher it should appear.
|
||||
"""
|
||||
ProductType = apps.get_model("counter", "ProductType")
|
||||
product_types = list(ProductType.objects.order_by("-priority", "name"))
|
||||
for order, product_type in enumerate(product_types):
|
||||
product_type.order = order
|
||||
ProductType.objects.bulk_update(product_types, ["order"])
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [("counter", "0027_alter_refilling_payment_method")]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="producttype",
|
||||
name="comment",
|
||||
field=models.TextField(
|
||||
default="",
|
||||
help_text="A text that will be shown on the eboutic.",
|
||||
verbose_name="comment",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="producttype",
|
||||
name="description",
|
||||
field=models.TextField(default="", verbose_name="description"),
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name="producttype",
|
||||
options={"ordering": ["order"], "verbose_name": "product type"},
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="producttype",
|
||||
name="order",
|
||||
field=models.PositiveIntegerField(
|
||||
db_index=True, default=0, editable=False, verbose_name="order"
|
||||
),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.RunPython(
|
||||
move_priority_to_order,
|
||||
reverse_code=migrations.RunPython.noop,
|
||||
elidable=True,
|
||||
),
|
||||
migrations.RemoveField(model_name="producttype", name="priority"),
|
||||
]
|
Reference in New Issue
Block a user