From 367c4bebb67c24ffcc2ade19abfeac6089a1e702 Mon Sep 17 00:00:00 2001 From: Jon Date: Sat, 13 Jul 2024 17:28:10 +0930 Subject: [PATCH] refactor: adjust views missing add/change form to now use forms !35 #15 #46 #74 #120 #121 fixes #118 --- app/access/forms/team.py | 12 +++++++ app/access/views/team.py | 9 +++--- app/config_management/forms/group/group.py | 2 ++ app/config_management/views/groups/groups.py | 6 +--- app/core/forms/manufacturer.py | 20 ++++++++++++ app/itam/forms/device_model.py | 23 +++++++++++++ app/itam/forms/device_type.py | 22 +++++++++++++ app/itam/forms/operating_system/update.py | 11 +++++-- app/itam/forms/operating_system_version.py | 17 ++++++++++ app/itam/forms/software/update.py | 8 ++++- app/itam/forms/software_category.py | 22 +++++++++++++ .../device_type/test_device_type_views.py | 3 +- .../test_operating_system_version_views.py | 7 ++-- .../test_software_category_views.py | 2 +- app/itam/views/device_model.py | 30 ++++++++--------- app/itam/views/device_type.py | 27 +++++++--------- app/itam/views/operating_system.py | 24 +++++++------- app/itam/views/operating_system_version.py | 21 ++++++------ app/itam/views/software.py | 26 +++++++-------- app/itam/views/software_category.py | 32 ++++++++----------- app/settings/forms/app_settings.py | 19 +++++++++++ app/settings/views/app_settings.py | 5 +-- app/settings/views/manufacturer.py | 18 +++-------- 23 files changed, 251 insertions(+), 115 deletions(-) create mode 100644 app/core/forms/manufacturer.py create mode 100644 app/itam/forms/device_model.py create mode 100644 app/itam/forms/device_type.py create mode 100644 app/itam/forms/operating_system_version.py create mode 100644 app/itam/forms/software_category.py create mode 100644 app/settings/forms/app_settings.py diff --git a/app/access/forms/team.py b/app/access/forms/team.py index 0d88bb94..180a4c37 100644 --- a/app/access/forms/team.py +++ b/app/access/forms/team.py @@ -21,6 +21,18 @@ TeamUserFormSet = inlineformset_factory( ] ) + + +class TeamFormAdd(CommonModelForm): + + class Meta: + model = Team + fields = [ + 'name', + ] + + + class TeamForm(CommonModelForm): class Meta: diff --git a/app/access/views/team.py b/app/access/views/team.py index 49a2a6e1..52391eca 100644 --- a/app/access/views/team.py +++ b/app/access/views/team.py @@ -3,7 +3,7 @@ from django.contrib.auth.models import Permission from django.utils.decorators import method_decorator from django.urls import reverse -from access.forms.team import TeamForm +from access.forms.team import TeamForm, TeamFormAdd from access.models import Team, TeamUsers, Organization from access.mixin import * @@ -79,6 +79,9 @@ class View(ChangeView): class Add(AddView): + + form_class = TeamFormAdd + model = Team parent_model = Organization @@ -86,10 +89,8 @@ class Add(AddView): permission_required = [ 'access.add_team', ] + template_name = 'form.html.j2' - fields = [ - 'team_name', - ] def form_valid(self, form): form.instance.organization = Organization.objects.get(pk=self.kwargs['pk']) diff --git a/app/config_management/forms/group/group.py b/app/config_management/forms/group/group.py index e8f76bb8..114fe4e1 100644 --- a/app/config_management/forms/group/group.py +++ b/app/config_management/forms/group/group.py @@ -15,5 +15,7 @@ class ConfigGroupForm(CommonModelForm): 'name', 'parent', 'is_global', + 'organization', + 'model_notes', 'config', ] diff --git a/app/config_management/views/groups/groups.py b/app/config_management/views/groups/groups.py index 938c8e1b..e3c40935 100644 --- a/app/config_management/views/groups/groups.py +++ b/app/config_management/views/groups/groups.py @@ -61,11 +61,7 @@ class GroupAdd(AddView): organization_field = 'organization' - fields = [ - 'name', - 'parent', - 'organization', - ] + form_class = ConfigGroupForm model = ConfigGroups diff --git a/app/core/forms/manufacturer.py b/app/core/forms/manufacturer.py new file mode 100644 index 00000000..164222de --- /dev/null +++ b/app/core/forms/manufacturer.py @@ -0,0 +1,20 @@ +from django import forms + +from core.models.manufacturer import Manufacturer + + + +class ManufacturerForm(forms.ModelForm): + + class Meta: + + fields = [ + 'name', + 'slug', + 'id', + 'organization', + 'is_global', + 'model_notes', + ] + + model = Manufacturer diff --git a/app/itam/forms/device_model.py b/app/itam/forms/device_model.py new file mode 100644 index 00000000..1dc01bb9 --- /dev/null +++ b/app/itam/forms/device_model.py @@ -0,0 +1,23 @@ +from django.db.models import Q + +from core.forms.common import CommonModelForm + +from itam.models.device_models import DeviceModel + + + +class DeviceModelForm(CommonModelForm): + + class Meta: + + fields = [ + 'name', + 'slug', + 'manufacturer', + 'id', + 'organization', + 'is_global', + 'model_notes', + ] + + model = DeviceModel diff --git a/app/itam/forms/device_type.py b/app/itam/forms/device_type.py new file mode 100644 index 00000000..7ce3cbc1 --- /dev/null +++ b/app/itam/forms/device_type.py @@ -0,0 +1,22 @@ +from django.db.models import Q + +from core.forms.common import CommonModelForm + +from itam.models.device import DeviceType + + + +class DeviceTypeForm(CommonModelForm): + + class Meta: + + fields = [ + 'name', + 'slug', + 'id', + 'organization', + 'is_global', + 'model_notes', + ] + + model = DeviceType diff --git a/app/itam/forms/operating_system/update.py b/app/itam/forms/operating_system/update.py index 86badd3b..a050abe8 100644 --- a/app/itam/forms/operating_system/update.py +++ b/app/itam/forms/operating_system/update.py @@ -8,10 +8,11 @@ from core.forms.common import CommonModelForm from itam.models.operating_system import OperatingSystem -class Update(CommonModelForm): + +class OperatingSystemFormCommon(CommonModelForm): class Meta: - model = OperatingSystem + fields = [ "name", 'publisher', @@ -22,6 +23,12 @@ class Update(CommonModelForm): 'model_notes', ] + model = OperatingSystem + + + +class Update(OperatingSystemFormCommon): + def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) diff --git a/app/itam/forms/operating_system_version.py b/app/itam/forms/operating_system_version.py new file mode 100644 index 00000000..94ba5616 --- /dev/null +++ b/app/itam/forms/operating_system_version.py @@ -0,0 +1,17 @@ +from django.db.models import Q + +from core.forms.common import CommonModelForm + +from itam.models.operating_system import OperatingSystemVersion + + + +class OperatingSystemVersionForm(CommonModelForm): + + class Meta: + + fields = [ + 'name', + ] + + model = OperatingSystemVersion diff --git a/app/itam/forms/software/update.py b/app/itam/forms/software/update.py index 05359f98..f02e1ecd 100644 --- a/app/itam/forms/software/update.py +++ b/app/itam/forms/software/update.py @@ -5,7 +5,8 @@ from core.forms.common import CommonModelForm from itam.models.software import Software -class Update(CommonModelForm): + +class SoftwareForm(CommonModelForm): class Meta: model = Software @@ -20,6 +21,11 @@ class Update(CommonModelForm): 'model_notes', ] + + +class SoftwareFormUpdate(SoftwareForm): + + def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) diff --git a/app/itam/forms/software_category.py b/app/itam/forms/software_category.py new file mode 100644 index 00000000..23a5daff --- /dev/null +++ b/app/itam/forms/software_category.py @@ -0,0 +1,22 @@ +from django.db.models import Q + +from core.forms.common import CommonModelForm + +from itam.models.software import SoftwareCategory + + + +class SoftwareCategoryForm(CommonModelForm): + + class Meta: + + fields = [ + 'name', + 'slug', + 'id', + 'organization', + 'is_global', + 'model_notes', + ] + + model = SoftwareCategory diff --git a/app/itam/tests/unit/device_type/test_device_type_views.py b/app/itam/tests/unit/device_type/test_device_type_views.py index ed404300..7b6db09a 100644 --- a/app/itam/tests/unit/device_type/test_device_type_views.py +++ b/app/itam/tests/unit/device_type/test_device_type_views.py @@ -4,13 +4,14 @@ import requests from django.test import TestCase -from app.tests.abstract.models import ModelAdd, ModelDelete, ModelDisplay +from app.tests.abstract.models import ModelAdd, ModelChange, ModelDelete, ModelDisplay class DeviceTypeViews( TestCase, ModelAdd, + ModelChange, ModelDelete, ModelDisplay ): diff --git a/app/itam/tests/unit/operating_system_version/test_operating_system_version_views.py b/app/itam/tests/unit/operating_system_version/test_operating_system_version_views.py index a5da61b9..e92c0d49 100644 --- a/app/itam/tests/unit/operating_system_version/test_operating_system_version_views.py +++ b/app/itam/tests/unit/operating_system_version/test_operating_system_version_views.py @@ -4,13 +4,14 @@ import requests from django.test import TestCase -from app.tests.abstract.models import ModelAdd, ModelDelete, ModelDisplay +from app.tests.abstract.models import ModelAdd, ModelChange, ModelDelete, ModelDisplay class OperatingSystemVersionViews( TestCase, ModelAdd, + ModelChange, ModelDelete, ModelDisplay ): @@ -18,8 +19,8 @@ class OperatingSystemVersionViews( add_module = 'itam.views.operating_system_version' add_view = 'Add' - # change_module = add_module - # change_view = 'View' + change_module = add_module + change_view = 'View' delete_module = add_module delete_view = 'Delete' diff --git a/app/itam/tests/unit/software_category/test_software_category_views.py b/app/itam/tests/unit/software_category/test_software_category_views.py index f12ad0df..e493acb5 100644 --- a/app/itam/tests/unit/software_category/test_software_category_views.py +++ b/app/itam/tests/unit/software_category/test_software_category_views.py @@ -8,7 +8,7 @@ from app.tests.abstract.models import PrimaryModel -class SoftwareViews( +class SoftwareCategoryViews( TestCase, PrimaryModel ): diff --git a/app/itam/views/device_model.py b/app/itam/views/device_model.py index 4316f15d..d45d0a87 100644 --- a/app/itam/views/device_model.py +++ b/app/itam/views/device_model.py @@ -2,6 +2,7 @@ from django.contrib.auth import decorators as auth_decorator from django.urls import reverse from django.utils.decorators import method_decorator +from itam.forms.device_model import DeviceModelForm from itam.models.device_models import DeviceModel from core.views.common import AddView, ChangeView, DeleteView @@ -11,24 +12,20 @@ from settings.models.user_settings import UserSettings class View(ChangeView): + + form_class = DeviceModelForm + + context_object_name = "device_model" + model = DeviceModel + permission_required = [ 'itam.view_devicemodel', 'itam.change_devicemodel', ] + template_name = 'form.html.j2' - fields = [ - "name", - 'slug', - 'manufacturer', - 'id', - 'organization', - 'is_global', - 'model_notes', - ] - - context_object_name = "device_model" def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) @@ -55,17 +52,16 @@ class View(ChangeView): class Add(AddView): + + form_class = DeviceModelForm + model = DeviceModel + permission_required = [ 'itam.add_devicemodel', ] + template_name = 'form.html.j2' - fields = [ - 'name', - 'manufacturer', - 'organization', - 'is_global' - ] def get_initial(self): diff --git a/app/itam/views/device_type.py b/app/itam/views/device_type.py index 716ba8c5..84b93229 100644 --- a/app/itam/views/device_type.py +++ b/app/itam/views/device_type.py @@ -4,28 +4,25 @@ from django.utils.decorators import method_decorator from core.views.common import AddView, ChangeView, DeleteView, IndexView -from ..models.device import DeviceType +from itam.models.device import DeviceType +from itam.forms.device_type import DeviceTypeForm from settings.models.user_settings import UserSettings class View(ChangeView): + + form_class = DeviceTypeForm + model = DeviceType + permission_required = [ 'itam.view_devicetype', 'itam.change_devicetype' ] - template_name = 'form.html.j2' - fields = [ - "name", - 'slug', - 'id', - 'organization', - 'is_global', - 'model_notes', - ] + template_name = 'form.html.j2' context_object_name = "device_category" @@ -52,16 +49,16 @@ class View(ChangeView): class Add(AddView): + + form_class = DeviceTypeForm + model = DeviceType + permission_required = [ 'itam.add_devicetype', ] + template_name = 'form.html.j2' - fields = [ - 'name', - 'organization', - 'is_global' - ] def get_initial(self): diff --git a/app/itam/views/operating_system.py b/app/itam/views/operating_system.py index d8e47050..4859c07c 100644 --- a/app/itam/views/operating_system.py +++ b/app/itam/views/operating_system.py @@ -9,7 +9,7 @@ from core.views.common import AddView, ChangeView, DeleteView, IndexView from itam.models.device import DeviceOperatingSystem from itam.models.operating_system import OperatingSystem, OperatingSystemVersion -from itam.forms.operating_system.update import Update +from itam.forms.operating_system.update import OperatingSystemFormCommon, Update from settings.models.user_settings import UserSettings @@ -45,17 +45,20 @@ class IndexView(IndexView): class View(ChangeView): + + context_object_name = "operating_system" + + form_class = Update + model = OperatingSystem + permission_required = [ 'itam.view_operatingsystem', 'itam.change_operatingsystem', ] + template_name = 'itam/operating_system.html.j2' - form_class = Update - - context_object_name = "operating_system" - def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) @@ -104,17 +107,16 @@ class View(ChangeView): class Add(AddView): + + form_class = OperatingSystemFormCommon + model = OperatingSystem + permission_required = [ 'itam.add_operatingsystem', ] + template_name = 'form.html.j2' - fields = [ - 'name', - 'publisher', - 'organization', - 'is_global' - ] def get_initial(self): diff --git a/app/itam/views/operating_system_version.py b/app/itam/views/operating_system_version.py index e933ab1a..36146c0f 100644 --- a/app/itam/views/operating_system_version.py +++ b/app/itam/views/operating_system_version.py @@ -2,22 +2,23 @@ from django.urls import reverse from core.views.common import AddView, ChangeView, DeleteView -from ..models.operating_system import OperatingSystem, OperatingSystemVersion +from itam.forms.operating_system_version import OperatingSystemVersionForm +from itam.models.operating_system import OperatingSystem, OperatingSystemVersion class View(ChangeView): + + form_class = OperatingSystemVersionForm + model = OperatingSystemVersion + permission_required = [ 'itam.view_operating_systemversion' ] + template_name = 'form.html.j2' - fields = [ - "name", - ] - - def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) @@ -33,14 +34,16 @@ class View(ChangeView): class Add(AddView): + + form_class = OperatingSystemVersionForm + model = OperatingSystemVersion + permission_required = [ 'access.add_operating_systemversion', ] + template_name = 'form.html.j2' - fields = [ - 'name' - ] def form_valid(self, form): operating_system = OperatingSystem.objects.get(pk=self.kwargs['pk']) diff --git a/app/itam/views/software.py b/app/itam/views/software.py index 6e8da020..4ed997bf 100644 --- a/app/itam/views/software.py +++ b/app/itam/views/software.py @@ -9,7 +9,7 @@ from core.views.common import AddView, ChangeView, DeleteView, IndexView from itam.models.device import DeviceSoftware from itam.models.software import Software, SoftwareVersion -from itam.forms.software.update import Update as SoftwareUpdate_Form +from itam.forms.software.update import SoftwareForm, SoftwareFormUpdate from settings.models.user_settings import UserSettings @@ -51,19 +51,21 @@ class IndexView(IndexView): - class View(ChangeView): + + context_object_name = "software" + + form_class = SoftwareFormUpdate + model = Software + permission_required = [ 'itam.view_software', 'itam.change_software' ] + template_name = 'itam/software.html.j2' - form_class = SoftwareUpdate_Form - - context_object_name = "software" - def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) @@ -134,18 +136,16 @@ class View(ChangeView): class Add(AddView): + + form_class = SoftwareForm + model = Software + permission_required = [ 'itam.add_software', ] + template_name = 'form.html.j2' - fields = [ - 'name', - 'publisher', - 'category', - 'organization', - 'is_global' - ] def get_initial(self): diff --git a/app/itam/views/software_category.py b/app/itam/views/software_category.py index 7ab73d13..d0811ef9 100644 --- a/app/itam/views/software_category.py +++ b/app/itam/views/software_category.py @@ -4,30 +4,27 @@ from django.utils.decorators import method_decorator from core.views.common import AddView, ChangeView, DeleteView -from ..models.software import Software, SoftwareCategory +from itam.forms.software_category import SoftwareCategoryForm +from itam.models.software import Software, SoftwareCategory from settings.models.user_settings import UserSettings class View(ChangeView): + + context_object_name = "software" + + form_class = SoftwareCategoryForm + model = SoftwareCategory + permission_required = [ 'itam.view_softwarecategory', 'itam.change_softwarecategory', ] + template_name = 'form.html.j2' - fields = [ - "name", - 'slug', - 'id', - 'organization', - 'is_global', - 'model_notes', - ] - - context_object_name = "software" - def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) @@ -52,17 +49,16 @@ class View(ChangeView): class Add(AddView): + + form_class = SoftwareCategoryForm + model = SoftwareCategory + permission_required = [ 'itam.add_softwarecategory', ] - template_name = 'form.html.j2' - fields = [ - 'name', - 'organization', - 'is_global' - ] + template_name = 'form.html.j2' def get_initial(self): diff --git a/app/settings/forms/app_settings.py b/app/settings/forms/app_settings.py new file mode 100644 index 00000000..a4abee09 --- /dev/null +++ b/app/settings/forms/app_settings.py @@ -0,0 +1,19 @@ +from django import forms +from django.db.models import Q + +from django.contrib.auth.models import User + +from access.models import Organization, TeamUsers + +from core.forms.common import CommonModelForm + +from settings.models.app_settings import AppSettings + + +class AppSettingsForm(CommonModelForm): + + class Meta: + + fields = AppSettings.__all__ + + model = AppSettings diff --git a/app/settings/views/app_settings.py b/app/settings/views/app_settings.py index b030a851..b849ee95 100644 --- a/app/settings/views/app_settings.py +++ b/app/settings/views/app_settings.py @@ -7,6 +7,7 @@ from access.mixin import OrganizationPermission from core.views.common import ChangeView +from settings.forms.app_settings import AppSettingsForm from settings.models.app_settings import AppSettings @@ -15,9 +16,9 @@ class View(generic.UpdateView): context_object_name = "settings" - model = AppSettings + form_class = AppSettingsForm - fields = model.__all__ + model = AppSettings permission_required = [ 'settings.change_appsettings' diff --git a/app/settings/views/manufacturer.py b/app/settings/views/manufacturer.py index 44c86411..bc2d9f5b 100644 --- a/app/settings/views/manufacturer.py +++ b/app/settings/views/manufacturer.py @@ -6,6 +6,8 @@ from django.views import generic from access.mixin import OrganizationPermission + +from core.forms.manufacturer import ManufacturerForm from core.models.manufacturer import Manufacturer from core.views.common import AddView, ChangeView, DeleteView, IndexView @@ -51,14 +53,7 @@ class View(OrganizationPermission, generic.UpdateView): context_object_name = "manufacturer" - fields = [ - "name", - 'slug', - 'id', - 'organization', - 'is_global', - 'model_notes', - ] + form_class = ManufacturerForm model = Manufacturer @@ -96,11 +91,8 @@ class View(OrganizationPermission, generic.UpdateView): class Add(OrganizationPermission, generic.CreateView): - fields = [ - 'name', - 'organization', - 'is_global' - ] + + form_class = ManufacturerForm model = Manufacturer