Selaa lähdekoodia

Fixes #19896: cf minmax mustbe int (#20207)

Jonathan Ramstedt 5 kuukautta sitten
vanhempi
commit
309e434064

+ 2 - 2
netbox/extras/forms/bulk_edit.py

@@ -76,11 +76,11 @@ class CustomFieldBulkEditForm(ChangelogMessageMixin, BulkEditForm):
         required=False,
         required=False,
         widget=BulkEditNullBooleanSelect()
         widget=BulkEditNullBooleanSelect()
     )
     )
-    validation_minimum = forms.IntegerField(
+    validation_minimum = forms.DecimalField(
         label=_('Minimum value'),
         label=_('Minimum value'),
         required=False,
         required=False,
     )
     )
-    validation_maximum = forms.IntegerField(
+    validation_maximum = forms.DecimalField(
         label=_('Maximum value'),
         label=_('Maximum value'),
         required=False,
         required=False,
     )
     )

+ 2 - 2
netbox/extras/forms/filtersets.py

@@ -103,11 +103,11 @@ class CustomFieldFilterForm(SavedFiltersMixin, FilterForm):
             choices=BOOLEAN_WITH_BLANK_CHOICES
             choices=BOOLEAN_WITH_BLANK_CHOICES
         )
         )
     )
     )
-    validation_minimum = forms.IntegerField(
+    validation_minimum = forms.DecimalField(
         label=_('Minimum value'),
         label=_('Minimum value'),
         required=False
         required=False
     )
     )
-    validation_maximum = forms.IntegerField(
+    validation_maximum = forms.DecimalField(
         label=_('Maximum value'),
         label=_('Maximum value'),
         required=False
         required=False
     )
     )

+ 3 - 3
netbox/extras/graphql/filters.py

@@ -17,7 +17,7 @@ if TYPE_CHECKING:
     )
     )
     from tenancy.graphql.filters import TenantFilter, TenantGroupFilter
     from tenancy.graphql.filters import TenantFilter, TenantGroupFilter
     from netbox.graphql.enums import ColorEnum
     from netbox.graphql.enums import ColorEnum
-    from netbox.graphql.filter_lookups import IntegerLookup, JSONFilter, StringArrayLookup, TreeNodeFilter
+    from netbox.graphql.filter_lookups import FloatLookup, IntegerLookup, JSONFilter, StringArrayLookup, TreeNodeFilter
     from users.graphql.filters import GroupFilter, UserFilter
     from users.graphql.filters import GroupFilter, UserFilter
     from virtualization.graphql.filters import ClusterFilter, ClusterGroupFilter, ClusterTypeFilter
     from virtualization.graphql.filters import ClusterFilter, ClusterGroupFilter, ClusterTypeFilter
     from .enums import *
     from .enums import *
@@ -151,10 +151,10 @@ class CustomFieldFilter(BaseObjectTypeFilterMixin, ChangeLogFilterMixin):
     weight: Annotated['IntegerLookup', strawberry.lazy('netbox.graphql.filter_lookups')] | None = (
     weight: Annotated['IntegerLookup', strawberry.lazy('netbox.graphql.filter_lookups')] | None = (
         strawberry_django.filter_field()
         strawberry_django.filter_field()
     )
     )
-    validation_minimum: Annotated['IntegerLookup', strawberry.lazy('netbox.graphql.filter_lookups')] | None = (
+    validation_minimum: Annotated['FloatLookup', strawberry.lazy('netbox.graphql.filter_lookups')] | None = (
         strawberry_django.filter_field()
         strawberry_django.filter_field()
     )
     )
-    validation_maximum: Annotated['IntegerLookup', strawberry.lazy('netbox.graphql.filter_lookups')] | None = (
+    validation_maximum: Annotated['FloatLookup', strawberry.lazy('netbox.graphql.filter_lookups')] | None = (
         strawberry_django.filter_field()
         strawberry_django.filter_field()
     )
     )
     validation_regex: FilterLookup[str] | None = strawberry_django.filter_field()
     validation_regex: FilterLookup[str] | None = strawberry_django.filter_field()

+ 21 - 0
netbox/extras/migrations/0133_make_cf_minmax_decimal.py

@@ -0,0 +1,21 @@
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('extras', '0132_configcontextprofile'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='customfield',
+            name='validation_maximum',
+            field=models.DecimalField(blank=True, decimal_places=4, max_digits=16, null=True),
+        ),
+        migrations.AlterField(
+            model_name='customfield',
+            name='validation_minimum',
+            field=models.DecimalField(blank=True, decimal_places=4, max_digits=16, null=True),
+        ),
+    ]

+ 7 - 3
netbox/extras/models/customfields.py

@@ -174,13 +174,17 @@ class CustomField(CloningMixin, ExportTemplatesMixin, ChangeLoggedModel):
         verbose_name=_('display weight'),
         verbose_name=_('display weight'),
         help_text=_('Fields with higher weights appear lower in a form.')
         help_text=_('Fields with higher weights appear lower in a form.')
     )
     )
-    validation_minimum = models.BigIntegerField(
+    validation_minimum = models.DecimalField(
+        max_digits=16,
+        decimal_places=4,
         blank=True,
         blank=True,
         null=True,
         null=True,
         verbose_name=_('minimum value'),
         verbose_name=_('minimum value'),
         help_text=_('Minimum allowed value (for numeric fields)')
         help_text=_('Minimum allowed value (for numeric fields)')
     )
     )
-    validation_maximum = models.BigIntegerField(
+    validation_maximum = models.DecimalField(
+        max_digits=16,
+        decimal_places=4,
         blank=True,
         blank=True,
         null=True,
         null=True,
         verbose_name=_('maximum value'),
         verbose_name=_('maximum value'),
@@ -471,7 +475,7 @@ class CustomField(CloningMixin, ExportTemplatesMixin, ChangeLoggedModel):
             field = forms.DecimalField(
             field = forms.DecimalField(
                 required=required,
                 required=required,
                 initial=initial,
                 initial=initial,
-                max_digits=12,
+                max_digits=16,
                 decimal_places=4,
                 decimal_places=4,
                 min_value=self.validation_minimum,
                 min_value=self.validation_minimum,
                 max_value=self.validation_maximum
                 max_value=self.validation_maximum