1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Changed Secret parent from a GenericForeignKey to ForeignKey(Device)

This commit is contained in:
Jeremy Stretch
2016-03-21 11:42:42 -04:00
parent 3f279dc58b
commit a6108f2fa8
16 changed files with 94 additions and 75 deletions

View File

@@ -5,13 +5,13 @@ from Crypto.PublicKey import RSA
from django.conf import settings
from django.contrib.auth.hashers import make_password, check_password
from django.contrib.auth.models import User
from django.contrib.contenttypes.fields import GenericForeignKey
from django.contrib.contenttypes.models import ContentType
from django.core.exceptions import ValidationError
from django.core.urlresolvers import reverse
from django.db import models
from django.utils.encoding import force_bytes
from dcim.models import Device
def generate_master_key():
"""
@@ -176,9 +176,7 @@ class Secret(models.Model):
A secret string of up to 255 bytes in length, stored as both an AES256-encrypted ciphertext and an irreversible
salted SHA256 hash (for plaintext validation).
"""
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_id = models.PositiveIntegerField()
parent = GenericForeignKey('content_type', 'object_id')
device = models.ForeignKey(Device, related_name='secrets')
role = models.ForeignKey('SecretRole', related_name='secrets', on_delete=models.PROTECT)
name = models.CharField(max_length=100, blank=True)
ciphertext = models.BinaryField(editable=False, max_length=65568) # 16B IV + 2B pad length + {62-65550}B padded
@@ -189,7 +187,7 @@ class Secret(models.Model):
plaintext = None
class Meta:
ordering = ['role', 'name']
ordering = ['device', 'role', 'name']
permissions = (
('view_secret', "Can view secrets"),
)
@@ -199,8 +197,8 @@ class Secret(models.Model):
super(Secret, self).__init__(*args, **kwargs)
def __unicode__(self):
if self.role and self.parent:
return "{} for {}".format(self.role, self.parent)
if self.role and self.device:
return "{} for {}".format(self.role, self.device)
return "Secret"
def get_absolute_url(self):