From eed1b8f4126d5cca6d7aa5a03e8d2e2882fce7c3 Mon Sep 17 00:00:00 2001 From: kkthxbye-code Date: Tue, 7 Feb 2023 09:40:25 +0100 Subject: [PATCH] Create CachedValueField to contain search specific lookups --- netbox/extras/fields.py | 7 +++++++ netbox/extras/lookups.py | 4 ++-- .../0085_change_cachedvalue_value_type.py | 19 +++++++++++++++++++ netbox/extras/models/search.py | 3 ++- 4 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 netbox/extras/fields.py create mode 100644 netbox/extras/migrations/0085_change_cachedvalue_value_type.py diff --git a/netbox/extras/fields.py b/netbox/extras/fields.py new file mode 100644 index 000000000..ffd66801d --- /dev/null +++ b/netbox/extras/fields.py @@ -0,0 +1,7 @@ +from django.db.models import TextField + +class CachedValueField(TextField): + """ + Currently a dummy field to prevent custom lookups being applied globally to TextField. + """ + pass \ No newline at end of file diff --git a/netbox/extras/lookups.py b/netbox/extras/lookups.py index 4cdda52b4..a52ef2e8d 100644 --- a/netbox/extras/lookups.py +++ b/netbox/extras/lookups.py @@ -1,5 +1,5 @@ from django.db.models import CharField, TextField, Lookup - +from .fields import CachedValueField class Empty(Lookup): """ @@ -27,4 +27,4 @@ class NetContainsOrEquals(Lookup): return 'CAST(%s as inet) >>= %s' % (lhs, rhs), params CharField.register_lookup(Empty) -TextField.register_lookup(NetContainsOrEquals) +CachedValueField.register_lookup(NetContainsOrEquals) diff --git a/netbox/extras/migrations/0085_change_cachedvalue_value_type.py b/netbox/extras/migrations/0085_change_cachedvalue_value_type.py new file mode 100644 index 000000000..e6512753e --- /dev/null +++ b/netbox/extras/migrations/0085_change_cachedvalue_value_type.py @@ -0,0 +1,19 @@ +# Generated by Django 4.1.6 on 2023-02-07 08:21 + +from django.db import migrations +import extras.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('extras', '0084_staging'), + ] + + operations = [ + migrations.AlterField( + model_name='cachedvalue', + name='value', + field=extras.fields.CachedValueField(), + ), + ] diff --git a/netbox/extras/models/search.py b/netbox/extras/models/search.py index 7c5860e00..6d088abb0 100644 --- a/netbox/extras/models/search.py +++ b/netbox/extras/models/search.py @@ -4,6 +4,7 @@ from django.contrib.contenttypes.models import ContentType from django.db import models from utilities.fields import RestrictedGenericForeignKey +from ..fields import CachedValueField __all__ = ( 'CachedValue', @@ -36,7 +37,7 @@ class CachedValue(models.Model): type = models.CharField( max_length=30 ) - value = models.TextField() + value = CachedValueField() weight = models.PositiveSmallIntegerField( default=1000 )