|
|
@@ -0,0 +1,868 @@
|
|
|
+# Generated by Django 6.1.2 on 2026-10-14 00:11
|
|
|
+
|
|
|
+from decimal import Decimal
|
|
|
+
|
|
|
+import django.core.validators
|
|
|
+import django.db.models.expressions
|
|
|
+import django.db.models.functions.comparison
|
|
|
+import django.db.models.functions.math
|
|
|
+from django.db import migrations, models
|
|
|
+
|
|
|
+import utilities.fields
|
|
|
+
|
|
|
+
|
|
|
+# PostgreSQL cannot convert an existing column to a generated column in place, so each normalized
|
|
|
+# column is dropped and re-added. The database computes the values for all existing rows.
|
|
|
+class Migration(migrations.Migration):
|
|
|
+
|
|
|
+ dependencies = [
|
|
|
+ ("dcim", "0251_fix_ltree_cascade_triggers"),
|
|
|
+ ]
|
|
|
+
|
|
|
+ operations = [
|
|
|
+ migrations.RemoveField(
|
|
|
+ model_name="cable",
|
|
|
+ name="_abs_length",
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="cable",
|
|
|
+ name="_abs_length",
|
|
|
+ field=utilities.fields.NonNegativeGeneratedField(
|
|
|
+ db_persist=True,
|
|
|
+ expression=models.Case(
|
|
|
+ models.When(
|
|
|
+ length_unit="km",
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("length"), output_field=models.DecimalField()
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("1000")),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ models.When(
|
|
|
+ length_unit="m",
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("length"), output_field=models.DecimalField()
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("1")),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ models.When(
|
|
|
+ length_unit="cm",
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("length"), output_field=models.DecimalField()
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("0.01")),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ models.When(
|
|
|
+ length_unit="mi",
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("length"), output_field=models.DecimalField()
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("1609.344")),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ models.When(
|
|
|
+ length_unit="ft",
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("length"), output_field=models.DecimalField()
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("0.3048")),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ models.When(
|
|
|
+ length_unit="in",
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("length"), output_field=models.DecimalField()
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("0.0254")),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ null=True,
|
|
|
+ output_field=models.DecimalField(
|
|
|
+ blank=True, decimal_places=4, max_digits=14, null=True
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.RemoveField(
|
|
|
+ model_name="coolingfeed",
|
|
|
+ name="_abs_max_flow",
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="coolingfeed",
|
|
|
+ name="_abs_max_flow",
|
|
|
+ field=utilities.fields.NonNegativeGeneratedField(
|
|
|
+ db_persist=True,
|
|
|
+ expression=models.Case(
|
|
|
+ models.When(
|
|
|
+ max_flow_unit="lpm",
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("max_flow"), output_field=models.DecimalField()
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("1")),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ models.When(
|
|
|
+ max_flow_unit="m3ph",
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("max_flow"), output_field=models.DecimalField()
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("16.66666666666666666666666667")),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ models.When(
|
|
|
+ max_flow_unit="gpm",
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("max_flow"), output_field=models.DecimalField()
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("3.785411784")),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ null=True,
|
|
|
+ output_field=models.DecimalField(
|
|
|
+ blank=True, decimal_places=4, max_digits=13, null=True
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.RemoveField(
|
|
|
+ model_name="coolingintake",
|
|
|
+ name="_abs_diameter",
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="coolingintake",
|
|
|
+ name="_abs_diameter",
|
|
|
+ field=utilities.fields.NonNegativeGeneratedField(
|
|
|
+ db_persist=True,
|
|
|
+ expression=models.Case(
|
|
|
+ models.When(
|
|
|
+ diameter_unit="mm",
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("diameter"), output_field=models.DecimalField()
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("1")),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ models.When(
|
|
|
+ diameter_unit="cm",
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("diameter"), output_field=models.DecimalField()
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("10")),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ models.When(
|
|
|
+ diameter_unit="in",
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("diameter"), output_field=models.DecimalField()
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("25.4")),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ null=True,
|
|
|
+ output_field=models.DecimalField(
|
|
|
+ blank=True, decimal_places=4, max_digits=13, null=True
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.RemoveField(
|
|
|
+ model_name="coolingintake",
|
|
|
+ name="_abs_max_flow",
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="coolingintake",
|
|
|
+ name="_abs_max_flow",
|
|
|
+ field=utilities.fields.NonNegativeGeneratedField(
|
|
|
+ db_persist=True,
|
|
|
+ expression=models.Case(
|
|
|
+ models.When(
|
|
|
+ max_flow_unit="lpm",
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("max_flow"), output_field=models.DecimalField()
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("1")),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ models.When(
|
|
|
+ max_flow_unit="m3ph",
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("max_flow"), output_field=models.DecimalField()
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("16.66666666666666666666666667")),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ models.When(
|
|
|
+ max_flow_unit="gpm",
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("max_flow"), output_field=models.DecimalField()
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("3.785411784")),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ null=True,
|
|
|
+ output_field=models.DecimalField(
|
|
|
+ blank=True, decimal_places=4, max_digits=13, null=True
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.RemoveField(
|
|
|
+ model_name="coolingintaketemplate",
|
|
|
+ name="_abs_diameter",
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="coolingintaketemplate",
|
|
|
+ name="_abs_diameter",
|
|
|
+ field=utilities.fields.NonNegativeGeneratedField(
|
|
|
+ db_persist=True,
|
|
|
+ expression=models.Case(
|
|
|
+ models.When(
|
|
|
+ diameter_unit="mm",
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("diameter"), output_field=models.DecimalField()
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("1")),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ models.When(
|
|
|
+ diameter_unit="cm",
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("diameter"), output_field=models.DecimalField()
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("10")),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ models.When(
|
|
|
+ diameter_unit="in",
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("diameter"), output_field=models.DecimalField()
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("25.4")),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ null=True,
|
|
|
+ output_field=models.DecimalField(
|
|
|
+ blank=True, decimal_places=4, max_digits=13, null=True
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.RemoveField(
|
|
|
+ model_name="coolingintaketemplate",
|
|
|
+ name="_abs_max_flow",
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="coolingintaketemplate",
|
|
|
+ name="_abs_max_flow",
|
|
|
+ field=utilities.fields.NonNegativeGeneratedField(
|
|
|
+ db_persist=True,
|
|
|
+ expression=models.Case(
|
|
|
+ models.When(
|
|
|
+ max_flow_unit="lpm",
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("max_flow"), output_field=models.DecimalField()
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("1")),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ models.When(
|
|
|
+ max_flow_unit="m3ph",
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("max_flow"), output_field=models.DecimalField()
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("16.66666666666666666666666667")),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ models.When(
|
|
|
+ max_flow_unit="gpm",
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("max_flow"), output_field=models.DecimalField()
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("3.785411784")),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ null=True,
|
|
|
+ output_field=models.DecimalField(
|
|
|
+ blank=True, decimal_places=4, max_digits=13, null=True
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.RemoveField(
|
|
|
+ model_name="coolingoutflow",
|
|
|
+ name="_abs_diameter",
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="coolingoutflow",
|
|
|
+ name="_abs_diameter",
|
|
|
+ field=utilities.fields.NonNegativeGeneratedField(
|
|
|
+ db_persist=True,
|
|
|
+ expression=models.Case(
|
|
|
+ models.When(
|
|
|
+ diameter_unit="mm",
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("diameter"), output_field=models.DecimalField()
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("1")),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ models.When(
|
|
|
+ diameter_unit="cm",
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("diameter"), output_field=models.DecimalField()
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("10")),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ models.When(
|
|
|
+ diameter_unit="in",
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("diameter"), output_field=models.DecimalField()
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("25.4")),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ null=True,
|
|
|
+ output_field=models.DecimalField(
|
|
|
+ blank=True, decimal_places=4, max_digits=13, null=True
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.RemoveField(
|
|
|
+ model_name="coolingoutflowtemplate",
|
|
|
+ name="_abs_diameter",
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="coolingoutflowtemplate",
|
|
|
+ name="_abs_diameter",
|
|
|
+ field=utilities.fields.NonNegativeGeneratedField(
|
|
|
+ db_persist=True,
|
|
|
+ expression=models.Case(
|
|
|
+ models.When(
|
|
|
+ diameter_unit="mm",
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("diameter"), output_field=models.DecimalField()
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("1")),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ models.When(
|
|
|
+ diameter_unit="cm",
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("diameter"), output_field=models.DecimalField()
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("10")),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ models.When(
|
|
|
+ diameter_unit="in",
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("diameter"), output_field=models.DecimalField()
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("25.4")),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ null=True,
|
|
|
+ output_field=models.DecimalField(
|
|
|
+ blank=True, decimal_places=4, max_digits=13, null=True
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.RemoveField(
|
|
|
+ model_name="devicetype",
|
|
|
+ name="_abs_weight",
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="devicetype",
|
|
|
+ name="_abs_weight",
|
|
|
+ field=utilities.fields.NonNegativeGeneratedField(
|
|
|
+ db_persist=True,
|
|
|
+ expression=django.db.models.functions.comparison.Cast(
|
|
|
+ django.db.models.functions.math.Floor(
|
|
|
+ models.Case(
|
|
|
+ models.When(
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("weight"),
|
|
|
+ output_field=models.DecimalField(),
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("1000")),
|
|
|
+ ),
|
|
|
+ weight_unit="kg",
|
|
|
+ ),
|
|
|
+ models.When(
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("weight"),
|
|
|
+ output_field=models.DecimalField(),
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("1")),
|
|
|
+ ),
|
|
|
+ weight_unit="g",
|
|
|
+ ),
|
|
|
+ models.When(
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("weight"),
|
|
|
+ output_field=models.DecimalField(),
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("453.592")),
|
|
|
+ ),
|
|
|
+ weight_unit="lb",
|
|
|
+ ),
|
|
|
+ models.When(
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("weight"),
|
|
|
+ output_field=models.DecimalField(),
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("28.3495")),
|
|
|
+ ),
|
|
|
+ weight_unit="oz",
|
|
|
+ ),
|
|
|
+ )
|
|
|
+ ),
|
|
|
+ output_field=models.BigIntegerField(),
|
|
|
+ ),
|
|
|
+ null=True,
|
|
|
+ output_field=models.BigIntegerField(blank=True, null=True),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.RemoveField(
|
|
|
+ model_name="moduletype",
|
|
|
+ name="_abs_weight",
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="moduletype",
|
|
|
+ name="_abs_weight",
|
|
|
+ field=utilities.fields.NonNegativeGeneratedField(
|
|
|
+ db_persist=True,
|
|
|
+ expression=django.db.models.functions.comparison.Cast(
|
|
|
+ django.db.models.functions.math.Floor(
|
|
|
+ models.Case(
|
|
|
+ models.When(
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("weight"),
|
|
|
+ output_field=models.DecimalField(),
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("1000")),
|
|
|
+ ),
|
|
|
+ weight_unit="kg",
|
|
|
+ ),
|
|
|
+ models.When(
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("weight"),
|
|
|
+ output_field=models.DecimalField(),
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("1")),
|
|
|
+ ),
|
|
|
+ weight_unit="g",
|
|
|
+ ),
|
|
|
+ models.When(
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("weight"),
|
|
|
+ output_field=models.DecimalField(),
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("453.592")),
|
|
|
+ ),
|
|
|
+ weight_unit="lb",
|
|
|
+ ),
|
|
|
+ models.When(
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("weight"),
|
|
|
+ output_field=models.DecimalField(),
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("28.3495")),
|
|
|
+ ),
|
|
|
+ weight_unit="oz",
|
|
|
+ ),
|
|
|
+ )
|
|
|
+ ),
|
|
|
+ output_field=models.BigIntegerField(),
|
|
|
+ ),
|
|
|
+ null=True,
|
|
|
+ output_field=models.BigIntegerField(blank=True, null=True),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.RemoveField(
|
|
|
+ model_name="rack",
|
|
|
+ name="_abs_max_weight",
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="rack",
|
|
|
+ name="_abs_max_weight",
|
|
|
+ field=utilities.fields.NonNegativeGeneratedField(
|
|
|
+ db_persist=True,
|
|
|
+ expression=django.db.models.functions.comparison.Cast(
|
|
|
+ django.db.models.functions.math.Floor(
|
|
|
+ models.Case(
|
|
|
+ models.When(
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("max_weight"),
|
|
|
+ output_field=models.DecimalField(),
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("1000")),
|
|
|
+ ),
|
|
|
+ weight_unit="kg",
|
|
|
+ ),
|
|
|
+ models.When(
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("max_weight"),
|
|
|
+ output_field=models.DecimalField(),
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("1")),
|
|
|
+ ),
|
|
|
+ weight_unit="g",
|
|
|
+ ),
|
|
|
+ models.When(
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("max_weight"),
|
|
|
+ output_field=models.DecimalField(),
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("453.592")),
|
|
|
+ ),
|
|
|
+ weight_unit="lb",
|
|
|
+ ),
|
|
|
+ models.When(
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("max_weight"),
|
|
|
+ output_field=models.DecimalField(),
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("28.3495")),
|
|
|
+ ),
|
|
|
+ weight_unit="oz",
|
|
|
+ ),
|
|
|
+ )
|
|
|
+ ),
|
|
|
+ output_field=models.BigIntegerField(),
|
|
|
+ ),
|
|
|
+ null=True,
|
|
|
+ output_field=models.BigIntegerField(blank=True, null=True),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.RemoveField(
|
|
|
+ model_name="rack",
|
|
|
+ name="_abs_weight",
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="rack",
|
|
|
+ name="_abs_weight",
|
|
|
+ field=utilities.fields.NonNegativeGeneratedField(
|
|
|
+ db_persist=True,
|
|
|
+ expression=django.db.models.functions.comparison.Cast(
|
|
|
+ django.db.models.functions.math.Floor(
|
|
|
+ models.Case(
|
|
|
+ models.When(
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("weight"),
|
|
|
+ output_field=models.DecimalField(),
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("1000")),
|
|
|
+ ),
|
|
|
+ weight_unit="kg",
|
|
|
+ ),
|
|
|
+ models.When(
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("weight"),
|
|
|
+ output_field=models.DecimalField(),
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("1")),
|
|
|
+ ),
|
|
|
+ weight_unit="g",
|
|
|
+ ),
|
|
|
+ models.When(
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("weight"),
|
|
|
+ output_field=models.DecimalField(),
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("453.592")),
|
|
|
+ ),
|
|
|
+ weight_unit="lb",
|
|
|
+ ),
|
|
|
+ models.When(
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("weight"),
|
|
|
+ output_field=models.DecimalField(),
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("28.3495")),
|
|
|
+ ),
|
|
|
+ weight_unit="oz",
|
|
|
+ ),
|
|
|
+ )
|
|
|
+ ),
|
|
|
+ output_field=models.BigIntegerField(),
|
|
|
+ ),
|
|
|
+ null=True,
|
|
|
+ output_field=models.BigIntegerField(blank=True, null=True),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.RemoveField(
|
|
|
+ model_name="racktype",
|
|
|
+ name="_abs_max_weight",
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="racktype",
|
|
|
+ name="_abs_max_weight",
|
|
|
+ field=utilities.fields.NonNegativeGeneratedField(
|
|
|
+ db_persist=True,
|
|
|
+ expression=django.db.models.functions.comparison.Cast(
|
|
|
+ django.db.models.functions.math.Floor(
|
|
|
+ models.Case(
|
|
|
+ models.When(
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("max_weight"),
|
|
|
+ output_field=models.DecimalField(),
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("1000")),
|
|
|
+ ),
|
|
|
+ weight_unit="kg",
|
|
|
+ ),
|
|
|
+ models.When(
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("max_weight"),
|
|
|
+ output_field=models.DecimalField(),
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("1")),
|
|
|
+ ),
|
|
|
+ weight_unit="g",
|
|
|
+ ),
|
|
|
+ models.When(
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("max_weight"),
|
|
|
+ output_field=models.DecimalField(),
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("453.592")),
|
|
|
+ ),
|
|
|
+ weight_unit="lb",
|
|
|
+ ),
|
|
|
+ models.When(
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("max_weight"),
|
|
|
+ output_field=models.DecimalField(),
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("28.3495")),
|
|
|
+ ),
|
|
|
+ weight_unit="oz",
|
|
|
+ ),
|
|
|
+ )
|
|
|
+ ),
|
|
|
+ output_field=models.BigIntegerField(),
|
|
|
+ ),
|
|
|
+ null=True,
|
|
|
+ output_field=models.BigIntegerField(blank=True, null=True),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.RemoveField(
|
|
|
+ model_name="racktype",
|
|
|
+ name="_abs_weight",
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="racktype",
|
|
|
+ name="_abs_weight",
|
|
|
+ field=utilities.fields.NonNegativeGeneratedField(
|
|
|
+ db_persist=True,
|
|
|
+ expression=django.db.models.functions.comparison.Cast(
|
|
|
+ django.db.models.functions.math.Floor(
|
|
|
+ models.Case(
|
|
|
+ models.When(
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("weight"),
|
|
|
+ output_field=models.DecimalField(),
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("1000")),
|
|
|
+ ),
|
|
|
+ weight_unit="kg",
|
|
|
+ ),
|
|
|
+ models.When(
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("weight"),
|
|
|
+ output_field=models.DecimalField(),
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("1")),
|
|
|
+ ),
|
|
|
+ weight_unit="g",
|
|
|
+ ),
|
|
|
+ models.When(
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("weight"),
|
|
|
+ output_field=models.DecimalField(),
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("453.592")),
|
|
|
+ ),
|
|
|
+ weight_unit="lb",
|
|
|
+ ),
|
|
|
+ models.When(
|
|
|
+ then=django.db.models.expressions.CombinedExpression(
|
|
|
+ django.db.models.functions.comparison.Cast(
|
|
|
+ models.F("weight"),
|
|
|
+ output_field=models.DecimalField(),
|
|
|
+ ),
|
|
|
+ "*",
|
|
|
+ models.Value(Decimal("28.3495")),
|
|
|
+ ),
|
|
|
+ weight_unit="oz",
|
|
|
+ ),
|
|
|
+ )
|
|
|
+ ),
|
|
|
+ output_field=models.BigIntegerField(),
|
|
|
+ ),
|
|
|
+ null=True,
|
|
|
+ output_field=models.BigIntegerField(blank=True, null=True),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="cable",
|
|
|
+ name="length",
|
|
|
+ field=models.DecimalField(
|
|
|
+ blank=True,
|
|
|
+ decimal_places=2,
|
|
|
+ max_digits=8,
|
|
|
+ null=True,
|
|
|
+ validators=[django.core.validators.MinValueValidator(0)],
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="devicetype",
|
|
|
+ name="weight",
|
|
|
+ field=models.DecimalField(
|
|
|
+ blank=True,
|
|
|
+ decimal_places=2,
|
|
|
+ max_digits=8,
|
|
|
+ null=True,
|
|
|
+ validators=[django.core.validators.MinValueValidator(0)],
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="moduletype",
|
|
|
+ name="weight",
|
|
|
+ field=models.DecimalField(
|
|
|
+ blank=True,
|
|
|
+ decimal_places=2,
|
|
|
+ max_digits=8,
|
|
|
+ null=True,
|
|
|
+ validators=[django.core.validators.MinValueValidator(0)],
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="rack",
|
|
|
+ name="weight",
|
|
|
+ field=models.DecimalField(
|
|
|
+ blank=True,
|
|
|
+ decimal_places=2,
|
|
|
+ max_digits=8,
|
|
|
+ null=True,
|
|
|
+ validators=[django.core.validators.MinValueValidator(0)],
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="racktype",
|
|
|
+ name="weight",
|
|
|
+ field=models.DecimalField(
|
|
|
+ blank=True,
|
|
|
+ decimal_places=2,
|
|
|
+ max_digits=8,
|
|
|
+ null=True,
|
|
|
+ validators=[django.core.validators.MinValueValidator(0)],
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ]
|