mirror of
https://github.com/netbox-community/netbox.git
synced 2025-12-16 05:19:36 -06:00
Add constraints to enforce v1/v2-dependent fields
This commit is contained in:
parent
11099b01bb
commit
43fc7fb58a
@ -72,4 +72,29 @@ class Migration(migrations.Migration):
|
|||||||
name='hmac_digest',
|
name='hmac_digest',
|
||||||
field=models.CharField(blank=True, max_length=64, null=True),
|
field=models.CharField(blank=True, max_length=64, null=True),
|
||||||
),
|
),
|
||||||
|
|
||||||
|
# Add constraints to enforce v1/v2-dependent fields
|
||||||
|
migrations.AddConstraint(
|
||||||
|
model_name='token',
|
||||||
|
constraint=models.CheckConstraint(
|
||||||
|
name='enforce_version_dependent_fields',
|
||||||
|
condition=models.Q(
|
||||||
|
models.Q(
|
||||||
|
('hmac_digest__isnull', True),
|
||||||
|
('key__isnull', True),
|
||||||
|
('pepper_id__isnull', True),
|
||||||
|
('plaintext__isnull', False),
|
||||||
|
('version', 1)
|
||||||
|
),
|
||||||
|
models.Q(
|
||||||
|
('hmac_digest__isnull', False),
|
||||||
|
('key__isnull', False),
|
||||||
|
('pepper_id__isnull', False),
|
||||||
|
('plaintext__isnull', True),
|
||||||
|
('version', 2)
|
||||||
|
),
|
||||||
|
_connector='OR'
|
||||||
|
)
|
||||||
|
)
|
||||||
|
),
|
||||||
]
|
]
|
||||||
|
|||||||
@ -7,6 +7,7 @@ from django.contrib.postgres.fields import ArrayField
|
|||||||
from django.core.exceptions import ValidationError
|
from django.core.exceptions import ValidationError
|
||||||
from django.core.validators import MinLengthValidator
|
from django.core.validators import MinLengthValidator
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
from django.db.models import Q
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
@ -110,6 +111,27 @@ class Token(models.Model):
|
|||||||
ordering = ('-created',)
|
ordering = ('-created',)
|
||||||
verbose_name = _('token')
|
verbose_name = _('token')
|
||||||
verbose_name_plural = _('tokens')
|
verbose_name_plural = _('tokens')
|
||||||
|
constraints = [
|
||||||
|
models.CheckConstraint(
|
||||||
|
name='enforce_version_dependent_fields',
|
||||||
|
condition=(
|
||||||
|
Q(
|
||||||
|
version=1,
|
||||||
|
key__isnull=True,
|
||||||
|
pepper_id__isnull=True,
|
||||||
|
hmac_digest__isnull=True,
|
||||||
|
plaintext__isnull=False
|
||||||
|
) |
|
||||||
|
Q(
|
||||||
|
version=2,
|
||||||
|
key__isnull=False,
|
||||||
|
pepper_id__isnull=False,
|
||||||
|
hmac_digest__isnull=False,
|
||||||
|
plaintext__isnull=True
|
||||||
|
)
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
||||||
def __init__(self, *args, token=None, **kwargs):
|
def __init__(self, *args, token=None, **kwargs):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user