feat(models): add property parent_object to models that have a parent
!22
This commit is contained in:
@ -106,6 +106,13 @@ class Team(Group, TenancyObject, SaveHistory):
|
||||
modified = AutoLastModifiedField()
|
||||
|
||||
|
||||
@property
|
||||
def parent_object(self):
|
||||
""" Fetch the parent object """
|
||||
|
||||
return self.organization
|
||||
|
||||
|
||||
def permission_list(self) -> list:
|
||||
|
||||
permission_list = []
|
||||
@ -190,3 +197,10 @@ class TeamUsers(SaveHistory):
|
||||
|
||||
user.groups.add(group)
|
||||
|
||||
|
||||
@property
|
||||
def parent_object(self):
|
||||
""" Fetch the parent object """
|
||||
|
||||
return self.team
|
||||
|
||||
|
47
app/access/tests/team/test_team.py
Normal file
47
app/access/tests/team/test_team.py
Normal file
@ -0,0 +1,47 @@
|
||||
import pytest
|
||||
import unittest
|
||||
|
||||
from django.test import TestCase, Client
|
||||
|
||||
from access.models import Organization, Team, TeamUsers, Permission
|
||||
|
||||
|
||||
|
||||
class TeamModel(TestCase):
|
||||
|
||||
model = Team
|
||||
|
||||
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(self):
|
||||
""" Setup Test
|
||||
|
||||
"""
|
||||
|
||||
self.parent_item = Organization.objects.create(name='test_org')
|
||||
|
||||
different_organization = Organization.objects.create(name='test_different_organization')
|
||||
|
||||
self.item = self.model.objects.create(
|
||||
organization=self.parent_item,
|
||||
name = 'teamone'
|
||||
)
|
||||
|
||||
|
||||
def test_model_has_property_parent_object(self):
|
||||
""" Check if model contains 'parent_object'
|
||||
|
||||
This is a required property for all models that have a parent
|
||||
"""
|
||||
|
||||
assert hasattr(self.model, 'parent_object')
|
||||
|
||||
|
||||
def test_model_property_parent_object_returns_object(self):
|
||||
""" Check if model contains 'parent_object'
|
||||
|
||||
This is a required property for all models that have a parent
|
||||
"""
|
||||
|
||||
assert self.item.parent_object is self.parent_item
|
56
app/access/tests/team_user/test_team_user.py
Normal file
56
app/access/tests/team_user/test_team_user.py
Normal file
@ -0,0 +1,56 @@
|
||||
import pytest
|
||||
import unittest
|
||||
|
||||
from django.test import TestCase, Client
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
from access.models import Organization, Team, TeamUsers, Permission
|
||||
|
||||
|
||||
|
||||
class TeamUsersModel(TestCase):
|
||||
|
||||
model = TeamUsers
|
||||
|
||||
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(self):
|
||||
""" Setup Test
|
||||
|
||||
"""
|
||||
|
||||
organization = Organization.objects.create(name='test_org')
|
||||
|
||||
different_organization = Organization.objects.create(name='test_different_organization')
|
||||
|
||||
self.parent_item = Team.objects.create(
|
||||
team_name = 'test_team',
|
||||
organization = organization,
|
||||
)
|
||||
|
||||
team_user = User.objects.create_user(username="test_self.team_user", password="password")
|
||||
|
||||
self.item = self.model.objects.create(
|
||||
team = self.parent_item,
|
||||
user = team_user
|
||||
)
|
||||
|
||||
|
||||
|
||||
def test_model_has_property_parent_object(self):
|
||||
""" Check if model contains 'parent_object'
|
||||
|
||||
This is a required property for all models that have a parent
|
||||
"""
|
||||
|
||||
assert hasattr(self.model, 'parent_object')
|
||||
|
||||
|
||||
def test_model_property_parent_object_returns_object(self):
|
||||
""" Check if model contains 'parent_object'
|
||||
|
||||
This is a required property for all models that have a parent
|
||||
"""
|
||||
|
||||
assert self.item.parent_object == self.parent_item
|
@ -219,6 +219,14 @@ class ConfigGroupHosts(GroupsCommonFields, SaveHistory):
|
||||
)
|
||||
|
||||
|
||||
@property
|
||||
def parent_object(self):
|
||||
""" Fetch the parent object """
|
||||
|
||||
return self.group
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
class ConfigGroupSoftware(GroupsCommonFields, SaveHistory):
|
||||
@ -265,3 +273,10 @@ class ConfigGroupSoftware(GroupsCommonFields, SaveHistory):
|
||||
)
|
||||
|
||||
|
||||
@property
|
||||
def parent_object(self):
|
||||
""" Fetch the parent object """
|
||||
|
||||
return self.config_group
|
||||
|
||||
|
||||
|
@ -0,0 +1,63 @@
|
||||
import pytest
|
||||
import unittest
|
||||
|
||||
from django.test import TestCase
|
||||
|
||||
from access.models import Organization
|
||||
|
||||
from config_management.models.groups import ConfigGroups, ConfigGroupSoftware
|
||||
|
||||
from itam.models.device import DeviceSoftware
|
||||
from itam.models.software import Software
|
||||
|
||||
|
||||
|
||||
class ConfigGroupSoftwareModel(TestCase):
|
||||
|
||||
model = ConfigGroupSoftware
|
||||
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(self):
|
||||
""" Setup Test
|
||||
|
||||
"""
|
||||
|
||||
organization = Organization.objects.create(name='test_org')
|
||||
|
||||
|
||||
self.parent_item = ConfigGroups.objects.create(
|
||||
organization=organization,
|
||||
name = 'group_one'
|
||||
)
|
||||
|
||||
self.software_item = Software.objects.create(
|
||||
organization=organization,
|
||||
name = 'softwareone',
|
||||
)
|
||||
|
||||
self.item = self.model.objects.create(
|
||||
organization = organization,
|
||||
software = self.software_item,
|
||||
config_group = self.parent_item,
|
||||
action = DeviceSoftware.Actions.INSTALL
|
||||
)
|
||||
|
||||
|
||||
|
||||
def test_model_has_property_parent_object(self):
|
||||
""" Check if model contains 'parent_object'
|
||||
|
||||
This is a required property for all models that have a parent
|
||||
"""
|
||||
|
||||
assert hasattr(self.model, 'parent_object')
|
||||
|
||||
|
||||
def test_model_property_parent_object_returns_object(self):
|
||||
""" Check if model contains 'parent_object'
|
||||
|
||||
This is a required property for all models that have a parent
|
||||
"""
|
||||
|
||||
assert self.item.parent_object == self.parent_item
|
@ -94,46 +94,11 @@ class SaveHistory(models.Model):
|
||||
item_parent_pk = None
|
||||
item_parent_class = None
|
||||
|
||||
if self._meta.model_name == 'deviceoperatingsystem':
|
||||
|
||||
item_parent_pk = self.device.pk
|
||||
item_parent_class = self.device._meta.model_name
|
||||
if hasattr(self, 'parent_object'):
|
||||
|
||||
if self._meta.model_name == 'devicesoftware':
|
||||
|
||||
item_parent_pk = self.device.pk
|
||||
item_parent_class = self.device._meta.model_name
|
||||
|
||||
if self._meta.model_name == 'operatingsystemversion':
|
||||
|
||||
item_parent_pk = self.operating_system_id
|
||||
item_parent_class = self.operating_system._meta.model_name
|
||||
|
||||
|
||||
if self._meta.model_name == 'softwareversion':
|
||||
|
||||
item_parent_pk = self.software.pk
|
||||
item_parent_class = self.software._meta.model_name
|
||||
|
||||
if self._meta.model_name == 'team':
|
||||
|
||||
item_parent_pk = self.organization.pk
|
||||
item_parent_class = self.organization._meta.model_name
|
||||
|
||||
if self._meta.model_name == 'teamusers':
|
||||
|
||||
item_parent_pk = self.team.pk
|
||||
item_parent_class = self.team._meta.model_name
|
||||
|
||||
if self._meta.model_name == 'configgrouphosts':
|
||||
|
||||
item_parent_pk = self.group.id
|
||||
item_parent_class = self.group._meta.model_name
|
||||
|
||||
if self._meta.model_name == 'configgroupsoftware':
|
||||
|
||||
item_parent_pk = self.config_group.id
|
||||
item_parent_class = self.config_group._meta.model_name
|
||||
item_parent_pk = self.parent_object.pk
|
||||
item_parent_class = self.parent_object._meta.model_name
|
||||
|
||||
|
||||
if not before:
|
||||
|
@ -212,6 +212,13 @@ class DeviceSoftware(DeviceCommonFields, SaveHistory):
|
||||
)
|
||||
|
||||
|
||||
@property
|
||||
def parent_object(self):
|
||||
""" Fetch the parent object """
|
||||
|
||||
return self.device
|
||||
|
||||
|
||||
|
||||
class DeviceOperatingSystem(DeviceCommonFields, SaveHistory):
|
||||
|
||||
@ -247,3 +254,10 @@ class DeviceOperatingSystem(DeviceCommonFields, SaveHistory):
|
||||
blank = True,
|
||||
default = None,
|
||||
)
|
||||
|
||||
|
||||
@property
|
||||
def parent_object(self):
|
||||
""" Fetch the parent object """
|
||||
|
||||
return self.device
|
||||
|
@ -69,6 +69,14 @@ class OperatingSystemVersion(OperatingSystemCommonFields, SaveHistory):
|
||||
unique = False,
|
||||
)
|
||||
|
||||
|
||||
@property
|
||||
def parent_object(self):
|
||||
""" Fetch the parent object """
|
||||
|
||||
return self.operating_system
|
||||
|
||||
|
||||
def __str__(self):
|
||||
|
||||
return self.operating_system.name + ' ' + self.name
|
||||
|
@ -102,6 +102,14 @@ class SoftwareVersion(SoftwareCommonFields, SaveHistory):
|
||||
unique = False,
|
||||
)
|
||||
|
||||
|
||||
@property
|
||||
def parent_object(self):
|
||||
""" Fetch the parent object """
|
||||
|
||||
return self.software
|
||||
|
||||
|
||||
def __str__(self):
|
||||
|
||||
return self.name
|
||||
|
@ -0,0 +1,70 @@
|
||||
import pytest
|
||||
import unittest
|
||||
|
||||
from django.test import TestCase
|
||||
|
||||
from access.models import Organization
|
||||
|
||||
from config_management.models.groups import ConfigGroups, ConfigGroupSoftware
|
||||
|
||||
from itam.models.device import Device, DeviceOperatingSystem
|
||||
from itam.models.operating_system import OperatingSystem, OperatingSystemVersion
|
||||
|
||||
|
||||
|
||||
class DeviceOperatingSystemModel(TestCase):
|
||||
|
||||
model = DeviceOperatingSystem
|
||||
|
||||
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(self):
|
||||
""" Setup Test
|
||||
|
||||
"""
|
||||
|
||||
organization = Organization.objects.create(name='test_org')
|
||||
|
||||
|
||||
self.parent_item = Device.objects.create(
|
||||
organization=organization,
|
||||
name = 'device_name'
|
||||
)
|
||||
|
||||
os = OperatingSystem.objects.create(
|
||||
organization=organization,
|
||||
name = 'os_name'
|
||||
)
|
||||
|
||||
os_version = OperatingSystemVersion.objects.create(
|
||||
name = "12",
|
||||
operating_system = os,
|
||||
)
|
||||
|
||||
|
||||
self.item = self.model.objects.create(
|
||||
organization = organization,
|
||||
operating_system_version = os_version,
|
||||
device = self.parent_item
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
def test_model_has_property_parent_object(self):
|
||||
""" Check if model contains 'parent_object'
|
||||
|
||||
This is a required property for all models that have a parent
|
||||
"""
|
||||
|
||||
assert hasattr(self.model, 'parent_object')
|
||||
|
||||
|
||||
def test_model_property_parent_object_returns_object(self):
|
||||
""" Check if model contains 'parent_object'
|
||||
|
||||
This is a required property for all models that have a parent
|
||||
"""
|
||||
|
||||
assert self.item.parent_object == self.parent_item
|
62
app/itam/tests/device_software/test_device_software.py
Normal file
62
app/itam/tests/device_software/test_device_software.py
Normal file
@ -0,0 +1,62 @@
|
||||
import pytest
|
||||
import unittest
|
||||
|
||||
from django.test import TestCase
|
||||
|
||||
from access.models import Organization
|
||||
|
||||
from config_management.models.groups import ConfigGroups, ConfigGroupSoftware
|
||||
|
||||
from itam.models.device import Device, DeviceSoftware
|
||||
from itam.models.software import Software
|
||||
|
||||
|
||||
|
||||
class DeviceSoftwareModel(TestCase):
|
||||
|
||||
model = DeviceSoftware
|
||||
|
||||
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(self):
|
||||
""" Setup Test
|
||||
|
||||
"""
|
||||
|
||||
organization = Organization.objects.create(name='test_org')
|
||||
|
||||
|
||||
self.parent_item = Device.objects.create(
|
||||
organization=organization,
|
||||
name = 'device_name'
|
||||
)
|
||||
|
||||
self.software_item = Software.objects.create(
|
||||
organization=organization,
|
||||
name = 'software_name',
|
||||
)
|
||||
|
||||
self.item = self.model.objects.create(
|
||||
software = self.software_item,
|
||||
device = self.parent_item
|
||||
)
|
||||
|
||||
|
||||
|
||||
def test_model_has_property_parent_object(self):
|
||||
""" Check if model contains 'parent_object'
|
||||
|
||||
This is a required property for all models that have a parent
|
||||
"""
|
||||
|
||||
assert hasattr(self.model, 'parent_object')
|
||||
|
||||
|
||||
def test_model_property_parent_object_returns_object(self):
|
||||
""" Check if model contains 'parent_object'
|
||||
|
||||
This is a required property for all models that have a parent
|
||||
"""
|
||||
|
||||
assert self.item.parent_object == self.parent_item
|
@ -0,0 +1,57 @@
|
||||
import pytest
|
||||
import unittest
|
||||
|
||||
from django.test import TestCase
|
||||
|
||||
from access.models import Organization
|
||||
|
||||
from config_management.models.groups import ConfigGroups, ConfigGroupSoftware
|
||||
|
||||
from itam.models.operating_system import OperatingSystem, OperatingSystemVersion
|
||||
|
||||
|
||||
|
||||
class OperatingSystemVersionModel(TestCase):
|
||||
|
||||
model = OperatingSystemVersion
|
||||
|
||||
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(self):
|
||||
""" Setup Test
|
||||
|
||||
"""
|
||||
|
||||
organization = Organization.objects.create(name='test_org')
|
||||
|
||||
|
||||
self.parent_item = OperatingSystem.objects.create(
|
||||
organization=organization,
|
||||
name = 'os_name'
|
||||
)
|
||||
|
||||
self.item = self.model.objects.create(
|
||||
name = "12",
|
||||
operating_system = self.parent_item,
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
def test_model_has_property_parent_object(self):
|
||||
""" Check if model contains 'parent_object'
|
||||
|
||||
This is a required property for all models that have a parent
|
||||
"""
|
||||
|
||||
assert hasattr(self.model, 'parent_object')
|
||||
|
||||
|
||||
def test_model_property_parent_object_returns_object(self):
|
||||
""" Check if model contains 'parent_object'
|
||||
|
||||
This is a required property for all models that have a parent
|
||||
"""
|
||||
|
||||
assert self.item.parent_object == self.parent_item
|
Reference in New Issue
Block a user