|
@@ -8,6 +8,8 @@ import django.db.models.functions.comparison
|
|
|
import django.db.models.functions.math
|
|
import django.db.models.functions.math
|
|
|
from django.db import migrations, models
|
|
from django.db import migrations, models
|
|
|
|
|
|
|
|
|
|
+import utilities.conversion
|
|
|
|
|
+
|
|
|
|
|
|
|
|
# PostgreSQL cannot convert an existing column to a generated column in place, so each normalized
|
|
# 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.
|
|
# column is dropped and re-added. The database computes the values for all existing rows.
|
|
@@ -25,7 +27,7 @@ class Migration(migrations.Migration):
|
|
|
migrations.AddField(
|
|
migrations.AddField(
|
|
|
model_name="cable",
|
|
model_name="cable",
|
|
|
name="_abs_length",
|
|
name="_abs_length",
|
|
|
- field=models.GeneratedField(
|
|
|
|
|
|
|
+ field=utilities.conversion.NonNegativeGeneratedField(
|
|
|
db_persist=True,
|
|
db_persist=True,
|
|
|
expression=models.Case(
|
|
expression=models.Case(
|
|
|
models.When(
|
|
models.When(
|
|
@@ -102,7 +104,7 @@ class Migration(migrations.Migration):
|
|
|
migrations.AddField(
|
|
migrations.AddField(
|
|
|
model_name="coolingfeed",
|
|
model_name="coolingfeed",
|
|
|
name="_abs_max_flow",
|
|
name="_abs_max_flow",
|
|
|
- field=models.GeneratedField(
|
|
|
|
|
|
|
+ field=utilities.conversion.NonNegativeGeneratedField(
|
|
|
db_persist=True,
|
|
db_persist=True,
|
|
|
expression=models.Case(
|
|
expression=models.Case(
|
|
|
models.When(
|
|
models.When(
|
|
@@ -149,7 +151,7 @@ class Migration(migrations.Migration):
|
|
|
migrations.AddField(
|
|
migrations.AddField(
|
|
|
model_name="coolingintake",
|
|
model_name="coolingintake",
|
|
|
name="_abs_diameter",
|
|
name="_abs_diameter",
|
|
|
- field=models.GeneratedField(
|
|
|
|
|
|
|
+ field=utilities.conversion.NonNegativeGeneratedField(
|
|
|
db_persist=True,
|
|
db_persist=True,
|
|
|
expression=models.Case(
|
|
expression=models.Case(
|
|
|
models.When(
|
|
models.When(
|
|
@@ -196,7 +198,7 @@ class Migration(migrations.Migration):
|
|
|
migrations.AddField(
|
|
migrations.AddField(
|
|
|
model_name="coolingintake",
|
|
model_name="coolingintake",
|
|
|
name="_abs_max_flow",
|
|
name="_abs_max_flow",
|
|
|
- field=models.GeneratedField(
|
|
|
|
|
|
|
+ field=utilities.conversion.NonNegativeGeneratedField(
|
|
|
db_persist=True,
|
|
db_persist=True,
|
|
|
expression=models.Case(
|
|
expression=models.Case(
|
|
|
models.When(
|
|
models.When(
|
|
@@ -243,7 +245,7 @@ class Migration(migrations.Migration):
|
|
|
migrations.AddField(
|
|
migrations.AddField(
|
|
|
model_name="coolingintaketemplate",
|
|
model_name="coolingintaketemplate",
|
|
|
name="_abs_diameter",
|
|
name="_abs_diameter",
|
|
|
- field=models.GeneratedField(
|
|
|
|
|
|
|
+ field=utilities.conversion.NonNegativeGeneratedField(
|
|
|
db_persist=True,
|
|
db_persist=True,
|
|
|
expression=models.Case(
|
|
expression=models.Case(
|
|
|
models.When(
|
|
models.When(
|
|
@@ -290,7 +292,7 @@ class Migration(migrations.Migration):
|
|
|
migrations.AddField(
|
|
migrations.AddField(
|
|
|
model_name="coolingintaketemplate",
|
|
model_name="coolingintaketemplate",
|
|
|
name="_abs_max_flow",
|
|
name="_abs_max_flow",
|
|
|
- field=models.GeneratedField(
|
|
|
|
|
|
|
+ field=utilities.conversion.NonNegativeGeneratedField(
|
|
|
db_persist=True,
|
|
db_persist=True,
|
|
|
expression=models.Case(
|
|
expression=models.Case(
|
|
|
models.When(
|
|
models.When(
|
|
@@ -337,7 +339,7 @@ class Migration(migrations.Migration):
|
|
|
migrations.AddField(
|
|
migrations.AddField(
|
|
|
model_name="coolingoutflow",
|
|
model_name="coolingoutflow",
|
|
|
name="_abs_diameter",
|
|
name="_abs_diameter",
|
|
|
- field=models.GeneratedField(
|
|
|
|
|
|
|
+ field=utilities.conversion.NonNegativeGeneratedField(
|
|
|
db_persist=True,
|
|
db_persist=True,
|
|
|
expression=models.Case(
|
|
expression=models.Case(
|
|
|
models.When(
|
|
models.When(
|
|
@@ -384,7 +386,7 @@ class Migration(migrations.Migration):
|
|
|
migrations.AddField(
|
|
migrations.AddField(
|
|
|
model_name="coolingoutflowtemplate",
|
|
model_name="coolingoutflowtemplate",
|
|
|
name="_abs_diameter",
|
|
name="_abs_diameter",
|
|
|
- field=models.GeneratedField(
|
|
|
|
|
|
|
+ field=utilities.conversion.NonNegativeGeneratedField(
|
|
|
db_persist=True,
|
|
db_persist=True,
|
|
|
expression=models.Case(
|
|
expression=models.Case(
|
|
|
models.When(
|
|
models.When(
|
|
@@ -431,7 +433,7 @@ class Migration(migrations.Migration):
|
|
|
migrations.AddField(
|
|
migrations.AddField(
|
|
|
model_name="devicetype",
|
|
model_name="devicetype",
|
|
|
name="_abs_weight",
|
|
name="_abs_weight",
|
|
|
- field=models.GeneratedField(
|
|
|
|
|
|
|
+ field=utilities.conversion.NonNegativeGeneratedField(
|
|
|
db_persist=True,
|
|
db_persist=True,
|
|
|
expression=django.db.models.functions.comparison.Cast(
|
|
expression=django.db.models.functions.comparison.Cast(
|
|
|
django.db.models.functions.math.Floor(
|
|
django.db.models.functions.math.Floor(
|
|
@@ -495,7 +497,7 @@ class Migration(migrations.Migration):
|
|
|
migrations.AddField(
|
|
migrations.AddField(
|
|
|
model_name="moduletype",
|
|
model_name="moduletype",
|
|
|
name="_abs_weight",
|
|
name="_abs_weight",
|
|
|
- field=models.GeneratedField(
|
|
|
|
|
|
|
+ field=utilities.conversion.NonNegativeGeneratedField(
|
|
|
db_persist=True,
|
|
db_persist=True,
|
|
|
expression=django.db.models.functions.comparison.Cast(
|
|
expression=django.db.models.functions.comparison.Cast(
|
|
|
django.db.models.functions.math.Floor(
|
|
django.db.models.functions.math.Floor(
|
|
@@ -559,7 +561,7 @@ class Migration(migrations.Migration):
|
|
|
migrations.AddField(
|
|
migrations.AddField(
|
|
|
model_name="rack",
|
|
model_name="rack",
|
|
|
name="_abs_max_weight",
|
|
name="_abs_max_weight",
|
|
|
- field=models.GeneratedField(
|
|
|
|
|
|
|
+ field=utilities.conversion.NonNegativeGeneratedField(
|
|
|
db_persist=True,
|
|
db_persist=True,
|
|
|
expression=django.db.models.functions.comparison.Cast(
|
|
expression=django.db.models.functions.comparison.Cast(
|
|
|
django.db.models.functions.math.Floor(
|
|
django.db.models.functions.math.Floor(
|
|
@@ -623,7 +625,7 @@ class Migration(migrations.Migration):
|
|
|
migrations.AddField(
|
|
migrations.AddField(
|
|
|
model_name="rack",
|
|
model_name="rack",
|
|
|
name="_abs_weight",
|
|
name="_abs_weight",
|
|
|
- field=models.GeneratedField(
|
|
|
|
|
|
|
+ field=utilities.conversion.NonNegativeGeneratedField(
|
|
|
db_persist=True,
|
|
db_persist=True,
|
|
|
expression=django.db.models.functions.comparison.Cast(
|
|
expression=django.db.models.functions.comparison.Cast(
|
|
|
django.db.models.functions.math.Floor(
|
|
django.db.models.functions.math.Floor(
|
|
@@ -687,7 +689,7 @@ class Migration(migrations.Migration):
|
|
|
migrations.AddField(
|
|
migrations.AddField(
|
|
|
model_name="racktype",
|
|
model_name="racktype",
|
|
|
name="_abs_max_weight",
|
|
name="_abs_max_weight",
|
|
|
- field=models.GeneratedField(
|
|
|
|
|
|
|
+ field=utilities.conversion.NonNegativeGeneratedField(
|
|
|
db_persist=True,
|
|
db_persist=True,
|
|
|
expression=django.db.models.functions.comparison.Cast(
|
|
expression=django.db.models.functions.comparison.Cast(
|
|
|
django.db.models.functions.math.Floor(
|
|
django.db.models.functions.math.Floor(
|
|
@@ -751,7 +753,7 @@ class Migration(migrations.Migration):
|
|
|
migrations.AddField(
|
|
migrations.AddField(
|
|
|
model_name="racktype",
|
|
model_name="racktype",
|
|
|
name="_abs_weight",
|
|
name="_abs_weight",
|
|
|
- field=models.GeneratedField(
|
|
|
|
|
|
|
+ field=utilities.conversion.NonNegativeGeneratedField(
|
|
|
db_persist=True,
|
|
db_persist=True,
|
|
|
expression=django.db.models.functions.comparison.Cast(
|
|
expression=django.db.models.functions.comparison.Cast(
|
|
|
django.db.models.functions.math.Floor(
|
|
django.db.models.functions.math.Floor(
|
|
@@ -863,102 +865,4 @@ class Migration(migrations.Migration):
|
|
|
validators=[django.core.validators.MinValueValidator(0)],
|
|
validators=[django.core.validators.MinValueValidator(0)],
|
|
|
),
|
|
),
|
|
|
),
|
|
),
|
|
|
- migrations.AddConstraint(
|
|
|
|
|
- model_name="cable",
|
|
|
|
|
- constraint=models.CheckConstraint(
|
|
|
|
|
- condition=models.Q(("_abs_length__gte", 0)),
|
|
|
|
|
- name="dcim_cable_abs_length_non_negative",
|
|
|
|
|
- ),
|
|
|
|
|
- ),
|
|
|
|
|
- migrations.AddConstraint(
|
|
|
|
|
- model_name="coolingfeed",
|
|
|
|
|
- constraint=models.CheckConstraint(
|
|
|
|
|
- condition=models.Q(("_abs_max_flow__gte", 0)),
|
|
|
|
|
- name="dcim_coolingfeed_abs_max_flow_non_negative",
|
|
|
|
|
- ),
|
|
|
|
|
- ),
|
|
|
|
|
- migrations.AddConstraint(
|
|
|
|
|
- model_name="coolingintake",
|
|
|
|
|
- constraint=models.CheckConstraint(
|
|
|
|
|
- condition=models.Q(("_abs_diameter__gte", 0)),
|
|
|
|
|
- name="dcim_coolingintake_abs_diameter_non_negative",
|
|
|
|
|
- ),
|
|
|
|
|
- ),
|
|
|
|
|
- migrations.AddConstraint(
|
|
|
|
|
- model_name="coolingintake",
|
|
|
|
|
- constraint=models.CheckConstraint(
|
|
|
|
|
- condition=models.Q(("_abs_max_flow__gte", 0)),
|
|
|
|
|
- name="dcim_coolingintake_abs_max_flow_non_negative",
|
|
|
|
|
- ),
|
|
|
|
|
- ),
|
|
|
|
|
- migrations.AddConstraint(
|
|
|
|
|
- model_name="coolingintaketemplate",
|
|
|
|
|
- constraint=models.CheckConstraint(
|
|
|
|
|
- condition=models.Q(("_abs_diameter__gte", 0)),
|
|
|
|
|
- name="dcim_coolingintaketemplate_abs_diameter_non_negative",
|
|
|
|
|
- ),
|
|
|
|
|
- ),
|
|
|
|
|
- migrations.AddConstraint(
|
|
|
|
|
- model_name="coolingintaketemplate",
|
|
|
|
|
- constraint=models.CheckConstraint(
|
|
|
|
|
- condition=models.Q(("_abs_max_flow__gte", 0)),
|
|
|
|
|
- name="dcim_coolingintaketemplate_abs_max_flow_non_negative",
|
|
|
|
|
- ),
|
|
|
|
|
- ),
|
|
|
|
|
- migrations.AddConstraint(
|
|
|
|
|
- model_name="coolingoutflow",
|
|
|
|
|
- constraint=models.CheckConstraint(
|
|
|
|
|
- condition=models.Q(("_abs_diameter__gte", 0)),
|
|
|
|
|
- name="dcim_coolingoutflow_abs_diameter_non_negative",
|
|
|
|
|
- ),
|
|
|
|
|
- ),
|
|
|
|
|
- migrations.AddConstraint(
|
|
|
|
|
- model_name="coolingoutflowtemplate",
|
|
|
|
|
- constraint=models.CheckConstraint(
|
|
|
|
|
- condition=models.Q(("_abs_diameter__gte", 0)),
|
|
|
|
|
- name="dcim_coolingoutflowtemplate_abs_diameter_non_negative",
|
|
|
|
|
- ),
|
|
|
|
|
- ),
|
|
|
|
|
- migrations.AddConstraint(
|
|
|
|
|
- model_name="devicetype",
|
|
|
|
|
- constraint=models.CheckConstraint(
|
|
|
|
|
- condition=models.Q(("_abs_weight__gte", 0)),
|
|
|
|
|
- name="dcim_devicetype_abs_weight_non_negative",
|
|
|
|
|
- ),
|
|
|
|
|
- ),
|
|
|
|
|
- migrations.AddConstraint(
|
|
|
|
|
- model_name="moduletype",
|
|
|
|
|
- constraint=models.CheckConstraint(
|
|
|
|
|
- condition=models.Q(("_abs_weight__gte", 0)),
|
|
|
|
|
- name="dcim_moduletype_abs_weight_non_negative",
|
|
|
|
|
- ),
|
|
|
|
|
- ),
|
|
|
|
|
- migrations.AddConstraint(
|
|
|
|
|
- model_name="rack",
|
|
|
|
|
- constraint=models.CheckConstraint(
|
|
|
|
|
- condition=models.Q(("_abs_weight__gte", 0)),
|
|
|
|
|
- name="dcim_rack_abs_weight_non_negative",
|
|
|
|
|
- ),
|
|
|
|
|
- ),
|
|
|
|
|
- migrations.AddConstraint(
|
|
|
|
|
- model_name="rack",
|
|
|
|
|
- constraint=models.CheckConstraint(
|
|
|
|
|
- condition=models.Q(("_abs_max_weight__gte", 0)),
|
|
|
|
|
- name="dcim_rack_abs_max_weight_non_negative",
|
|
|
|
|
- ),
|
|
|
|
|
- ),
|
|
|
|
|
- migrations.AddConstraint(
|
|
|
|
|
- model_name="racktype",
|
|
|
|
|
- constraint=models.CheckConstraint(
|
|
|
|
|
- condition=models.Q(("_abs_weight__gte", 0)),
|
|
|
|
|
- name="dcim_racktype_abs_weight_non_negative",
|
|
|
|
|
- ),
|
|
|
|
|
- ),
|
|
|
|
|
- migrations.AddConstraint(
|
|
|
|
|
- model_name="racktype",
|
|
|
|
|
- constraint=models.CheckConstraint(
|
|
|
|
|
- condition=models.Q(("_abs_max_weight__gte", 0)),
|
|
|
|
|
- name="dcim_racktype_abs_max_weight_non_negative",
|
|
|
|
|
- ),
|
|
|
|
|
- ),
|
|
|
|
|
]
|
|
]
|