From 729cf08ceaefdc334ce41695747e2090ddc30f11 Mon Sep 17 00:00:00 2001 From: Andreas Zweili Date: Mon, 10 Jul 2023 16:47:01 +0200 Subject: [PATCH] Use default line length of black --- .flake8 | 8 --- flake.nix | 2 +- pyproject.toml | 22 ++++++- src/backups/decorators.py | 4 +- src/backups/models/backup.py | 16 ++--- src/backups/tests/test_backup_detail_view.py | 8 +-- .../tests/test_customer_backup_table_view.py | 4 +- src/backups/urls.py | 4 +- src/backups/views.py | 2 +- src/computers/forms.py | 12 +--- src/computers/models/computer.py | 8 +-- src/computers/models/raid.py | 4 +- .../tests/test_computer_detail_view.py | 16 ++--- src/computers/tests/test_computer_form.py | 8 +-- .../tests/test_computer_list_view.py | 4 +- .../test_customer_computer_table_view.py | 4 +- src/computers/views.py | 12 +--- src/conftest.py | 4 +- .../test_get_object_with_view_permission.py | 12 +--- .../tests/test_get_objects_for_customer.py | 12 +--- src/core/utils.py | 4 +- src/customers/decorators.py | 4 +- src/customers/tables.py | 12 +--- .../tests/test_customer_list_view.py | 64 +++++-------------- src/customers/tests/test_location_form.py | 4 +- .../tests/test_location_form_view.py | 8 +-- src/customers/views.py | 16 ++--- src/devices/decorators.py | 4 +- src/devices/forms.py | 8 +-- src/devices/models/device.py | 16 ++--- src/devices/models/warranty.py | 4 +- src/devices/tests/test_device_form.py | 12 +--- src/devices/tests/test_device_form_views.py | 8 +-- src/devices/tests/test_warranty_form.py | 10 +-- src/devices/tests/test_warranty_list.py | 8 +-- src/devices/urls.py | 4 +- src/devices/views.py | 12 +--- src/licenses/models.py | 4 +- .../tests/test_customer_license_table_view.py | 4 +- src/licenses/views.py | 2 +- src/manage.py | 4 +- src/nets/decorators.py | 4 +- .../tests/test_views/test_net_detail_view.py | 8 +-- src/nets/views.py | 4 +- src/users/decorators.py | 4 +- .../tests/test_customer_user_table_view.py | 4 +- src/users/tests/test_group_detail_view.py | 4 +- src/users/tests/test_user_detail_view.py | 16 ++--- src/users/views.py | 12 +--- 49 files changed, 122 insertions(+), 312 deletions(-) delete mode 100644 .flake8 diff --git a/.flake8 b/.flake8 deleted file mode 100644 index ea5280d..0000000 --- a/.flake8 +++ /dev/null @@ -1,8 +0,0 @@ -[flake8] -exclude = - *migrations*, - __init__.py, - *cache*, - venv/, - src/manage.py, - src/network_inventory/settings/* diff --git a/flake.nix b/flake.nix index 2cdee1f..c5c268e 100644 --- a/flake.nix +++ b/flake.nix @@ -68,8 +68,8 @@ checkInputs = [ pkgs.inventoryDevEnv ]; checkPhase = '' mkdir -p $out + pylint --errors-only src/ cd src/ && mypy --config-file=../pyproject.toml . - flake8 . --count --show-source --statistics ''; }; tests = pkgs.stdenv.mkDerivation { diff --git a/pyproject.toml b/pyproject.toml index 5500241..3ce9395 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,5 @@ -[tool.black] -line-length = 79 - [tool.pylint] +max-line-length = 88 load-plugins = [ "pylint_django", ] @@ -21,6 +19,24 @@ exclude = [ "tests/", ] plugins = ["mypy_django_plugin.main"] +mypy_path = "./src" +# Start off with these +warn_unused_configs = true +warn_redundant_casts = true +warn_unused_ignores = true + +# Getting these passing should be easy +strict_equality = true +strict_concatenate = true + +# Strongly recommend enabling this one as soon as you can +#check_untyped_defs = true + +# These shouldn't be too much additional work, but may be tricky to +# get passing if you use a lot of untyped libraries +#disallow_subclassing_any = true +#disallow_untyped_decorators = true +#disallow_any_generics = true [tool.django-stubs] django_settings_module = "network_inventory.settings.local" diff --git a/src/backups/decorators.py b/src/backups/decorators.py index abc0ef9..e0bc61c 100644 --- a/src/backups/decorators.py +++ b/src/backups/decorators.py @@ -11,8 +11,6 @@ def backup_view_permission(old_fuction): if user.has_perm("customers.view_customer", backup.computer.customer): return old_fuction(request, pk) else: - return HttpResponseForbidden( - "You're not allowed to access this device." - ) + return HttpResponseForbidden("You're not allowed to access this device.") return new_function diff --git a/src/backups/models/backup.py b/src/backups/models/backup.py index c233c49..88d8a8d 100644 --- a/src/backups/models/backup.py +++ b/src/backups/models/backup.py @@ -20,18 +20,12 @@ class Backup(models.Model): computer = models.ForeignKey( Computer, related_name="source_computer", on_delete=models.CASCADE ) - method = models.ForeignKey( - BackupMethod, models.SET_NULL, blank=True, null=True - ) - software = models.ForeignKey( - Software, models.SET_NULL, blank=True, null=True - ) + method = models.ForeignKey(BackupMethod, models.SET_NULL, blank=True, null=True) + software = models.ForeignKey(Software, models.SET_NULL, blank=True, null=True) source_path = models.CharField(max_length=200, blank=True) exec_time = models.TimeField(null=True, blank=True) exec_days = models.ManyToManyField(Weekday, blank=True) - target_device = models.ManyToManyField( - Computer, through="TargetDevice", blank=True - ) + target_device = models.ManyToManyField(Computer, through="TargetDevice", blank=True) class Meta: ordering = ["name"] @@ -50,9 +44,7 @@ class Backup(models.Model): class TargetDevice(models.Model): - device = models.ForeignKey( - Computer, models.SET_NULL, blank=True, null=True - ) + device = models.ForeignKey(Computer, models.SET_NULL, blank=True, null=True) backup = models.ForeignKey(Backup, on_delete=models.CASCADE) target_path = models.CharField(max_length=200, blank=True) diff --git a/src/backups/tests/test_backup_detail_view.py b/src/backups/tests/test_backup_detail_view.py index 04bd5de..1a01887 100644 --- a/src/backups/tests/test_backup_detail_view.py +++ b/src/backups/tests/test_backup_detail_view.py @@ -53,9 +53,7 @@ def test_backup_detail_view_with_target_device(create_admin_user): software=mixer.SELECT, method=mixer.SELECT, ) - mixer.blend( - "backups.TargetDevice", device=target_computer, backup=mixer.SELECT - ) + mixer.blend("backups.TargetDevice", device=target_computer, backup=mixer.SELECT) client = Client() client.login(username="pharma-admin", password="password") response = client.get("/backup/" + str(backup.id) + "/") @@ -79,9 +77,7 @@ def test_backup_detail_view_with_notification(create_admin_user): client = Client() client.login(username="pharma-admin", password="password") response = client.get("/backup/" + str(backup.id) + "/") - assert response.status_code == 200 and helper.in_content( - response, notification - ) + assert response.status_code == 200 and helper.in_content(response, notification) def test_backup_detail_view_with_day_relation(create_admin_user): diff --git a/src/backups/tests/test_customer_backup_table_view.py b/src/backups/tests/test_customer_backup_table_view.py index 46aa6fb..dea6307 100644 --- a/src/backups/tests/test_customer_backup_table_view.py +++ b/src/backups/tests/test_customer_backup_table_view.py @@ -23,9 +23,7 @@ def test_customer_backup_table(create_admin_user): computer = mixer.blend("computers.Computer", customer=customer) backup = mixer.blend("backups.Backup", computer=computer) response = client.get("/customer/" + str(customer.id) + "/backups/") - assert response.status_code == 200 and helper.in_content( - response, backup.name - ) + assert response.status_code == 200 and helper.in_content(response, backup.name) def test_customer_backup_table_no_backup(create_admin_user): diff --git a/src/backups/urls.py b/src/backups/urls.py index e69c478..f560596 100644 --- a/src/backups/urls.py +++ b/src/backups/urls.py @@ -3,9 +3,7 @@ from django.urls import path from . import views urlpatterns = [ - path( - "customer//backups/", views.backups_table_view, name="backups" - ), + path("customer//backups/", views.backups_table_view, name="backups"), path("backup//", views.backup_detail_view, name="backup"), path( "create/backup-for-computer//", diff --git a/src/backups/views.py b/src/backups/views.py index 4b878de..ac770df 100644 --- a/src/backups/views.py +++ b/src/backups/views.py @@ -47,7 +47,7 @@ def backup_detail_view(request, pk): class BackupCreateView(LoginRequiredMixin, CreateView): model = Backup template_name = "backups/backup_create.html" - fields = "__all__" + fields = "__all__" # type: ignore def get_success_url(self): return reverse("computer", args=(self.computer.pk,)) diff --git a/src/computers/forms.py b/src/computers/forms.py index 0b279ad..ebe2a09 100644 --- a/src/computers/forms.py +++ b/src/computers/forms.py @@ -41,15 +41,9 @@ class ComputerUpdateForm(forms.ModelForm): def __init__(self, request, *args, **kwargs): super(ComputerUpdateForm, self).__init__(*args, **kwargs) - customers = utils.objects_for_allowed_customers( - Customer, user=request.user - ) - locations = utils.objects_for_allowed_customers( - Location, user=request.user - ) - hosts = utils.objects_for_allowed_customers( - Computer, user=request.user - ) + customers = utils.objects_for_allowed_customers(Customer, user=request.user) + locations = utils.objects_for_allowed_customers(Location, user=request.user) + hosts = utils.objects_for_allowed_customers(Computer, user=request.user) users = utils.objects_for_allowed_customers(User, user=request.user) self.fields["customer"].queryset = customers self.fields["location"].queryset = locations diff --git a/src/computers/models/computer.py b/src/computers/models/computer.py index 0b0ce51..bb4a0d2 100644 --- a/src/computers/models/computer.py +++ b/src/computers/models/computer.py @@ -23,12 +23,8 @@ class Computer(Device): ram = models.ManyToManyField(Ram, through="ComputerRamRelation") gpu = models.ManyToManyField(Gpu, through="ComputerGpuRelation") disks = models.ManyToManyField(Disk, through="ComputerDiskRelation") - software = models.ManyToManyField( - Software, through="ComputerSoftwareRelation" - ) - host = models.ForeignKey( - "self", null=True, blank=True, on_delete=models.CASCADE - ) + software = models.ManyToManyField(Software, through="ComputerSoftwareRelation") + host = models.ForeignKey("self", null=True, blank=True, on_delete=models.CASCADE) allocated_space = models.IntegerField(null=True, blank=True) def __str__(self): diff --git a/src/computers/models/raid.py b/src/computers/models/raid.py index a84e3b8..ea2a837 100644 --- a/src/computers/models/raid.py +++ b/src/computers/models/raid.py @@ -12,9 +12,7 @@ class RaidType(Category): class Raid(models.Model): usable_space = models.IntegerField(blank=True, null=True) - raid_type = models.ForeignKey( - RaidType, models.SET_NULL, blank=True, null=True - ) + raid_type = models.ForeignKey(RaidType, models.SET_NULL, blank=True, null=True) computer = models.ForeignKey(Computer, on_delete=models.CASCADE) def __str__(self): diff --git a/src/computers/tests/test_computer_detail_view.py b/src/computers/tests/test_computer_detail_view.py index f698a6d..a80e95e 100644 --- a/src/computers/tests/test_computer_detail_view.py +++ b/src/computers/tests/test_computer_detail_view.py @@ -15,15 +15,11 @@ def test_computer_detail_view_not_logged_in(): def test_computer_detail_view(create_admin_user): create_admin_user() - computer = mixer.blend( - "computers.Computer", customer=mixer.SELECT, os=mixer.SELECT - ) + computer = mixer.blend("computers.Computer", customer=mixer.SELECT, os=mixer.SELECT) client = Client() client.login(username="pharma-admin", password="password") response = client.get("/computer/" + str(computer.id) + "/") - assert response.status_code == 200 and helper.in_content( - response, computer - ) + assert response.status_code == 200 and helper.in_content(response, computer) def test_computer_detail_view_not_found(create_admin_user): @@ -43,9 +39,7 @@ def test_computer_detail_view_ram_relation(create_admin_user): client = Client() client.login(username="pharma-admin", password="password") response = client.get("/computer/" + str(computer.id) + "/") - assert response.status_code == 200 and helper.in_content( - response, "RAM Modules:" - ) + assert response.status_code == 200 and helper.in_content(response, "RAM Modules:") def test_computer_detail_view_raid_relation(create_admin_user): @@ -53,9 +47,7 @@ def test_computer_detail_view_raid_relation(create_admin_user): computer = mixer.blend("computers.Computer", customer=mixer.SELECT) raid_type = mixer.blend("computers.RaidType") disk = mixer.blend("computers.Disk") - raid = mixer.blend( - "computers.Raid", computer=computer, raid_type=raid_type - ) + raid = mixer.blend("computers.Raid", computer=computer, raid_type=raid_type) mixer.blend("computers.DisksInRaid", raid=raid, disk=disk) client = Client() client.login(username="pharma-admin", password="password") diff --git a/src/computers/tests/test_computer_form.py b/src/computers/tests/test_computer_form.py index 765bf1e..4fb6d68 100644 --- a/src/computers/tests/test_computer_form.py +++ b/src/computers/tests/test_computer_form.py @@ -12,9 +12,7 @@ def test_computer_create_form(create_admin_user): fixture = create_admin_user() user = mixer.blend("core.InventoryUser", customer=fixture["customer"]) form = forms.ComputerCreateForm(user=user, data={}) - assert ( - form.is_valid() is False - ), "Should be false because no data was given" + assert form.is_valid() is False, "Should be false because no data was given" data = {"name": "pharma-pc1", "customer": 3} form = forms.ComputerCreateForm(user=user, data=data) @@ -32,9 +30,7 @@ def test_computer_update_form(create_admin_user): request = HttpRequest() request.user = fixture["admin"] form = forms.ComputerUpdateForm(request, data={}) - assert ( - form.is_valid() is False - ), "Should be false because no data was given" + assert form.is_valid() is False, "Should be false because no data was given" data = {"name": "pharma-pc1", "customer": 20356} form = forms.ComputerUpdateForm(request, data=data) diff --git a/src/computers/tests/test_computer_list_view.py b/src/computers/tests/test_computer_list_view.py index 361a0fa..7060cbb 100644 --- a/src/computers/tests/test_computer_list_view.py +++ b/src/computers/tests/test_computer_list_view.py @@ -27,6 +27,4 @@ def test_computer_list_view(create_admin_user): client = Client() client.login(username="pharma-admin", password="password") response = client.get("/computers/all/") - assert response.status_code == 200 and helper.in_content( - response, computer - ) + assert response.status_code == 200 and helper.in_content(response, computer) diff --git a/src/computers/tests/test_customer_computer_table_view.py b/src/computers/tests/test_customer_computer_table_view.py index bc2c039..2ee2954 100644 --- a/src/computers/tests/test_customer_computer_table_view.py +++ b/src/computers/tests/test_customer_computer_table_view.py @@ -21,9 +21,7 @@ def test_customer_computer_table(create_admin_user): client.login(username="pharma-admin", password="password") computer = mixer.blend("computers.Computer", customer=mixer.SELECT) response = client.get("/customer/" + str(customer.id) + "/computers/") - assert response.status_code == 200 and helper.in_content( - response, computer - ) + assert response.status_code == 200 and helper.in_content(response, computer) def test_customer_computer_table_no_computer(create_admin_user): diff --git a/src/computers/views.py b/src/computers/views.py index fc99026..a3c45b4 100644 --- a/src/computers/views.py +++ b/src/computers/views.py @@ -41,9 +41,7 @@ from .tables import ComputersTable @login_required def computer_detail_view(request, pk): - device = utils.get_object_with_view_permission( - Computer, user=request.user, pk=pk - ) + device = utils.get_object_with_view_permission(Computer, user=request.user, pk=pk) disks_relations = ComputerDiskRelation.objects.filter(computer=pk) warranty_relations = Warranty.objects.filter(device=pk) ram_relations = ComputerRamRelation.objects.filter(computer=pk) @@ -76,9 +74,7 @@ def computer_detail_view(request, pk): @login_required def computers_table_view(request, pk): table = ComputersTable( - utils.get_objects_for_customer( - Computer, user=request.user, customer_pk=pk - ) + utils.get_objects_for_customer(Computer, user=request.user, customer_pk=pk) ) RequestConfig(request).configure(table) return render( @@ -139,9 +135,7 @@ def computer_update_view(request, pk): A view to create a customer. """ template_name = "computers/computer_update.html" - computer = utils.get_object_with_view_permission( - Computer, user=request.user, pk=pk - ) + computer = utils.get_object_with_view_permission(Computer, user=request.user, pk=pk) if request.method == "POST": form = ComputerUpdateForm(request, request.POST, instance=computer) if form.is_valid(): diff --git a/src/conftest.py b/src/conftest.py index e5be42e..d5d1b55 100644 --- a/src/conftest.py +++ b/src/conftest.py @@ -22,9 +22,7 @@ def django_db_setup(django_db_setup, django_db_blocker): def create_admin_user(): def _create_admin_user(): User = get_user_model() - admin = User.objects.create_user( - "pharma-admin", "admin@pharma.com", "password" - ) + admin = User.objects.create_user("pharma-admin", "admin@pharma.com", "password") customer = mixer.blend("customers.Customer") group = Group.objects.create(name="Pharma Corp. Admin") admin.groups.add(group) diff --git a/src/core/tests/test_get_object_with_view_permission.py b/src/core/tests/test_get_object_with_view_permission.py index da90d74..c0d5336 100644 --- a/src/core/tests/test_get_object_with_view_permission.py +++ b/src/core/tests/test_get_object_with_view_permission.py @@ -15,9 +15,7 @@ def test_get_object_with_view_permission(create_admin_user): fixture = create_admin_user() customer = fixture["customer"] admin = fixture["admin"] - object = utils.get_object_with_view_permission( - Customer, user=admin, pk=customer.id - ) + object = utils.get_object_with_view_permission(Customer, user=admin, pk=customer.id) assert object == customer @@ -26,9 +24,7 @@ def test_get_object_with_view_permission_device(create_admin_user): customer = fixture["customer"] admin = fixture["admin"] device = mixer.blend(Device, customer=customer) - object = utils.get_object_with_view_permission( - Device, user=admin, pk=device.id - ) + object = utils.get_object_with_view_permission(Device, user=admin, pk=device.id) assert object == device @@ -37,9 +33,7 @@ def test_get_object_without_view_permission(create_admin_user): customer = mixer.blend(Customer) admin = fixture["admin"] with pytest.raises(Http404): - utils.get_object_with_view_permission( - Customer, user=admin, pk=customer.id - ) + utils.get_object_with_view_permission(Customer, user=admin, pk=customer.id) def test_get_object_without_view_permission_device(create_admin_user): diff --git a/src/core/tests/test_get_objects_for_customer.py b/src/core/tests/test_get_objects_for_customer.py index ae83108..8990609 100644 --- a/src/core/tests/test_get_objects_for_customer.py +++ b/src/core/tests/test_get_objects_for_customer.py @@ -16,9 +16,7 @@ def test_get_objects_for_customer_with_customer(create_admin_user): customer = fixture["customer"] admin = fixture["admin"] with pytest.raises(Exception): - utils.get_objects_for_customer( - Customer, user=admin, customer_pk=customer.id - ) + utils.get_objects_for_customer(Customer, user=admin, customer_pk=customer.id) def test_get_objects_for_customer_device(create_admin_user): @@ -37,9 +35,7 @@ def test_get_all_objects_for_unallowed_customers(create_admin_user): customer = mixer.blend(Customer) admin = fixture["admin"] with pytest.raises(Http404): - utils.get_objects_for_customer( - Customer, user=admin, customer_pk=customer.id - ) + utils.get_objects_for_customer(Customer, user=admin, customer_pk=customer.id) def test_get_all_objects_for_unallowed_customers_device(create_admin_user): @@ -48,6 +44,4 @@ def test_get_all_objects_for_unallowed_customers_device(create_admin_user): admin = fixture["admin"] mixer.blend(Device, customer=customer) with pytest.raises(Http404): - utils.get_objects_for_customer( - Device, user=admin, customer_pk=customer.id - ) + utils.get_objects_for_customer(Device, user=admin, customer_pk=customer.id) diff --git a/src/core/utils.py b/src/core/utils.py index f3575a4..1483aa9 100644 --- a/src/core/utils.py +++ b/src/core/utils.py @@ -34,9 +34,7 @@ def _get_customers(user): user : django.contrib.auth.models.User """ - return get_objects_for_user( - user, "customers.view_customer", klass=Customer - ) + return get_objects_for_user(user, "customers.view_customer", klass=Customer) def get_object_with_view_permission(model, user=None, pk=None): diff --git a/src/customers/decorators.py b/src/customers/decorators.py index e990333..44bd4f4 100644 --- a/src/customers/decorators.py +++ b/src/customers/decorators.py @@ -10,8 +10,6 @@ def customer_view_permission(old_function): if user.has_perm("customers.view_customer", customer): return old_function(request, pk) else: - return HttpResponseForbidden( - "You're not allowed to access this page." - ) + return HttpResponseForbidden("You're not allowed to access this page.") return new_function diff --git a/src/customers/tables.py b/src/customers/tables.py index 3783880..8b66fa4 100644 --- a/src/customers/tables.py +++ b/src/customers/tables.py @@ -6,9 +6,7 @@ from core.tables import CoreTable class CustomersTable(CoreTable): name = tables.LinkColumn("customer", args=[A("pk")]) - nets = tables.LinkColumn( - "nets", text="Nets", args=[A("pk")], orderable=False - ) + nets = tables.LinkColumn("nets", text="Nets", args=[A("pk")], orderable=False) computers = tables.LinkColumn( "computers", text="Computers", args=[A("pk")], orderable=False ) @@ -21,12 +19,8 @@ class CustomersTable(CoreTable): licenses = tables.LinkColumn( "licenses", text="Licenses", args=[A("pk")], orderable=False ) - users = tables.LinkColumn( - "users", text="Users", args=[A("pk")], orderable=False - ) - groups = tables.LinkColumn( - "groups", text="Groups", args=[A("pk")], orderable=False - ) + users = tables.LinkColumn("users", text="Users", args=[A("pk")], orderable=False) + groups = tables.LinkColumn("groups", text="Groups", args=[A("pk")], orderable=False) project_manager = tables.Column(verbose_name="Project Manager") delete = tables.LinkColumn( "customer_delete", diff --git a/src/customers/tests/test_customer_list_view.py b/src/customers/tests/test_customer_list_view.py index 11be604..bb2bc49 100644 --- a/src/customers/tests/test_customer_list_view.py +++ b/src/customers/tests/test_customer_list_view.py @@ -42,24 +42,12 @@ def test_customer_list_view(create_admin_user): assert ( response.status_code == 200 and helper.in_content(response, customer) - and helper.in_content( - response, "/customer/" + str(customer.id) + "/nets/" - ) - and helper.in_content( - response, "/customer/" + str(customer.id) + "/computers/" - ) - and helper.in_content( - response, "/customer/" + str(customer.id) + "/devices/" - ) - and helper.in_content( - response, "/customer/" + str(customer.id) + "/backups/" - ) - and helper.in_content( - response, "/customer/" + str(customer.id) + "/licenses/" - ) - and helper.in_content( - response, "/customer/" + str(customer.id) + "/users/" - ) + and helper.in_content(response, "/customer/" + str(customer.id) + "/nets/") + and helper.in_content(response, "/customer/" + str(customer.id) + "/computers/") + and helper.in_content(response, "/customer/" + str(customer.id) + "/devices/") + and helper.in_content(response, "/customer/" + str(customer.id) + "/backups/") + and helper.in_content(response, "/customer/" + str(customer.id) + "/licenses/") + and helper.in_content(response, "/customer/" + str(customer.id) + "/users/") and helper.in_content(response, project_manager) ) @@ -75,41 +63,21 @@ def test_customer_list_view_multiple_customers(create_admin_user): assert ( response.status_code == 200 and helper.in_content(response, customer1) - and helper.in_content( - response, "/customer/" + str(customer1.id) + "/nets/" - ) + and helper.in_content(response, "/customer/" + str(customer1.id) + "/nets/") and helper.in_content( response, "/customer/" + str(customer1.id) + "/computers/" ) - and helper.in_content( - response, "/customer/" + str(customer1.id) + "/devices/" - ) - and helper.in_content( - response, "/customer/" + str(customer1.id) + "/backups/" - ) - and helper.in_content( - response, "/customer/" + str(customer1.id) + "/licenses/" - ) - and helper.in_content( - response, "/customer/" + str(customer1.id) + "/users/" - ) + and helper.in_content(response, "/customer/" + str(customer1.id) + "/devices/") + and helper.in_content(response, "/customer/" + str(customer1.id) + "/backups/") + and helper.in_content(response, "/customer/" + str(customer1.id) + "/licenses/") + and helper.in_content(response, "/customer/" + str(customer1.id) + "/users/") and helper.in_content(response, customer2) - and helper.in_content( - response, "/customer/" + str(customer2.id) + "/nets/" - ) + and helper.in_content(response, "/customer/" + str(customer2.id) + "/nets/") and helper.in_content( response, "/customer/" + str(customer2.id) + "/computers/" ) - and helper.in_content( - response, "/customer/" + str(customer2.id) + "/devices/" - ) - and helper.in_content( - response, "/customer/" + str(customer2.id) + "/backups/" - ) - and helper.in_content( - response, "/customer/" + str(customer2.id) + "/licenses/" - ) - and helper.in_content( - response, "/customer/" + str(customer1.id) + "/users/" - ) + and helper.in_content(response, "/customer/" + str(customer2.id) + "/devices/") + and helper.in_content(response, "/customer/" + str(customer2.id) + "/backups/") + and helper.in_content(response, "/customer/" + str(customer2.id) + "/licenses/") + and helper.in_content(response, "/customer/" + str(customer1.id) + "/users/") ) diff --git a/src/customers/tests/test_location_form.py b/src/customers/tests/test_location_form.py index a6cce7e..aba37df 100644 --- a/src/customers/tests/test_location_form.py +++ b/src/customers/tests/test_location_form.py @@ -10,9 +10,7 @@ def test_location_form(create_admin_user): fixture = create_admin_user() user = fixture["admin"] form = forms.LocationForm(user=user, data={}) - assert ( - form.is_valid() is False - ), "Should be false because no data was given" + assert form.is_valid() is False, "Should be false because no data was given" data = {"name": "Main Office", "customer": 3} form = forms.LocationForm(user=user, data=data) diff --git a/src/customers/tests/test_location_form_view.py b/src/customers/tests/test_location_form_view.py index 5483d8b..8bb0dcc 100644 --- a/src/customers/tests/test_location_form_view.py +++ b/src/customers/tests/test_location_form_view.py @@ -14,9 +14,7 @@ def test_load_htmx_create_location_view(create_admin_user): client.login(username="pharma-admin", password="password") url = "/create/location/" response = client.get(url) - assert response.status_code == 200 and helper.in_content( - response, "Add Location" - ) + assert response.status_code == 200 and helper.in_content(response, "Add Location") def test_htmx_create_location_view(create_admin_user): @@ -25,9 +23,7 @@ def test_htmx_create_location_view(create_admin_user): client.login(username="pharma-admin", password="password") data = {"name": mixer.faker.name(), "save_location": 1} response = client.post("/create/location/", data) - assert response.status_code == 200 and helper.in_content( - response, data["name"] - ) + assert response.status_code == 200 and helper.in_content(response, data["name"]) def test_htmx_create_location_view_invalid_form(create_admin_user): diff --git a/src/customers/views.py b/src/customers/views.py index 4f7e7c2..e85cd26 100644 --- a/src/customers/views.py +++ b/src/customers/views.py @@ -24,9 +24,7 @@ def customers_table_view(request): customers = utils.objects_for_allowed_customers(Customer, request.user) table = CustomersTable(customers) RequestConfig(request).configure(table) - return render( - request, "customers/customer_list.html", {"customers": table} - ) + return render(request, "customers/customer_list.html", {"customers": table}) @login_required @@ -44,20 +42,14 @@ def create_customer(request): ) form = CustomerForm() context = {"form": form} - return TemplateResponse( - request, "customers/partials/customer_create.html", context - ) + return TemplateResponse(request, "customers/partials/customer_create.html", context) @login_required def customer_detail_view(request, pk): - customer = utils.get_object_with_view_permission( - Customer, user=request.user, pk=pk - ) + customer = utils.get_object_with_view_permission(Customer, user=request.user, pk=pk) context = {"customer": customer} - return TemplateResponse( - request, "customers/customer_details.html", context - ) + return TemplateResponse(request, "customers/customer_details.html", context) class CustomerDeleteView(LoginRequiredMixin, DeleteView): # type: ignore diff --git a/src/devices/decorators.py b/src/devices/decorators.py index 447386e..8751b5b 100644 --- a/src/devices/decorators.py +++ b/src/devices/decorators.py @@ -11,8 +11,6 @@ def device_view_permission(old_function): if user.has_perm("customers.view_customer", device.customer): return old_function(request, pk) else: - return HttpResponseForbidden( - "You're not allowed to access this device." - ) + return HttpResponseForbidden("You're not allowed to access this device.") return new_function diff --git a/src/devices/forms.py b/src/devices/forms.py index fce0993..fba0e78 100644 --- a/src/devices/forms.py +++ b/src/devices/forms.py @@ -69,12 +69,8 @@ class DeviceUpdateForm(forms.ModelForm): def __init__(self, request, *args, **kwargs): super(DeviceUpdateForm, self).__init__(*args, **kwargs) - customers = utils.objects_for_allowed_customers( - Customer, user=request.user - ) - locations = utils.objects_for_allowed_customers( - Location, user=request.user - ) + customers = utils.objects_for_allowed_customers(Customer, user=request.user) + locations = utils.objects_for_allowed_customers(Location, user=request.user) users = utils.objects_for_allowed_customers(User, user=request.user) self.fields["customer"].queryset = customers self.fields["location"].queryset = locations diff --git a/src/devices/models/device.py b/src/devices/models/device.py index 1f4ebdc..30aff78 100644 --- a/src/devices/models/device.py +++ b/src/devices/models/device.py @@ -38,9 +38,7 @@ class DeviceCategory(Category): class HardwareModel(models.Model): name = models.CharField(max_length=50) - manufacturer = models.ForeignKey( - DeviceManufacturer, on_delete=models.CASCADE - ) + manufacturer = models.ForeignKey(DeviceManufacturer, on_delete=models.CASCADE) class Meta: ordering = ["name"] @@ -56,19 +54,13 @@ class Device(models.Model): category = models.ForeignKey( DeviceCategory, on_delete=models.SET_NULL, null=True, blank=True ) - owner = models.ForeignKey( - Owner, on_delete=models.SET_NULL, null=True, blank=True - ) + owner = models.ForeignKey(Owner, on_delete=models.SET_NULL, null=True, blank=True) customer = models.ForeignKey(Customer, on_delete=models.CASCADE) manufacturer = models.ForeignKey( DeviceManufacturer, models.SET_NULL, null=True, blank=True ) - model = models.ForeignKey( - HardwareModel, models.SET_NULL, null=True, blank=True - ) - location = models.ForeignKey( - Location, models.SET_NULL, null=True, blank=True - ) + model = models.ForeignKey(HardwareModel, models.SET_NULL, null=True, blank=True) + location = models.ForeignKey(Location, models.SET_NULL, null=True, blank=True) user = models.ForeignKey(User, models.SET_NULL, null=True, blank=True) installation_date = models.DateField(null=True, blank=True) net = models.ManyToManyField(Net, through="DeviceInNet") diff --git a/src/devices/models/warranty.py b/src/devices/models/warranty.py index 87b53c4..fb617b5 100644 --- a/src/devices/models/warranty.py +++ b/src/devices/models/warranty.py @@ -16,9 +16,7 @@ class WarrantyType(Category): class Warranty(models.Model): - customer = models.ForeignKey( - Customer, on_delete=models.CASCADE, blank=True - ) + customer = models.ForeignKey(Customer, on_delete=models.CASCADE, blank=True) device = models.ForeignKey(Device, on_delete=models.CASCADE) valid_from = models.DateField() valid_until = models.DateField() diff --git a/src/devices/tests/test_device_form.py b/src/devices/tests/test_device_form.py index d9cc7a0..e3e69d2 100644 --- a/src/devices/tests/test_device_form.py +++ b/src/devices/tests/test_device_form.py @@ -12,9 +12,7 @@ def test_device_create_form(create_admin_user): fixture = create_admin_user() user = mixer.blend("core.InventoryUser", customer=fixture["customer"]) form = forms.DeviceCreateForm(user=user, data={}) - assert ( - form.is_valid() is False - ), "Should be false because no data was given" + assert form.is_valid() is False, "Should be false because no data was given" data = {"name": "pharma-device1", "customer": 3} form = forms.DeviceCreateForm(user=user, data=data) @@ -32,9 +30,7 @@ def test_device_update_form(create_admin_user): request = HttpRequest() request.user = fixture["admin"] form = forms.DeviceUpdateForm(request, data={}) - assert ( - form.is_valid() is False - ), "Should be false because no data was given" + assert form.is_valid() is False, "Should be false because no data was given" data = {"name": "pharma-device1", "customer": 3} form = forms.DeviceUpdateForm(request, data=data) @@ -50,9 +46,7 @@ def test_device_update_form(create_admin_user): def test_device_create_form_duplicate_device(create_admin_user): fixture = create_admin_user() user = mixer.blend("core.InventoryUser", customer=fixture["customer"]) - mixer.blend( - "devices.Device", name="pharma-device1", customer=fixture["customer"] - ) + mixer.blend("devices.Device", name="pharma-device1", customer=fixture["customer"]) data = {"name": "pharma-device1", "customer": fixture["customer"].id} form = forms.DeviceCreateForm(user=user, data=data) assert ( diff --git a/src/devices/tests/test_device_form_views.py b/src/devices/tests/test_device_form_views.py index 775e5bb..8fd5198 100644 --- a/src/devices/tests/test_device_form_views.py +++ b/src/devices/tests/test_device_form_views.py @@ -35,9 +35,7 @@ def test_load_device_update_view(create_admin_user): client.login(username="pharma-admin", password="password") device = mixer.blend("devices.Device", customer=mixer.SELECT) response = client.get("/update/device/{}/".format(device.pk)) - assert response.status_code == 200 and helper.in_content( - response, device.name - ) + assert response.status_code == 200 and helper.in_content(response, device.name) def test_device_update_view(create_admin_user): @@ -187,9 +185,7 @@ def test_device_in_net_update_view(create_admin_user): "mac_address": "", "ip_status": "1", } - response = client.post( - "/update/device-in-net/{}/".format(device_in_net.pk), data - ) + response = client.post("/update/device-in-net/{}/".format(device_in_net.pk), data) assert response.status_code == 302 device_in_net.refresh_from_db() assert device_in_net.ip == data["ip"] diff --git a/src/devices/tests/test_warranty_form.py b/src/devices/tests/test_warranty_form.py index 6fdcde8..620bbc7 100644 --- a/src/devices/tests/test_warranty_form.py +++ b/src/devices/tests/test_warranty_form.py @@ -9,9 +9,7 @@ pytestmark = pytest.mark.django_db def test_warranty_create_form(create_admin_user): create_admin_user() form = forms.WarrantyCreateForm(data={}) - assert ( - form.is_valid() is False - ), "Should be false because no data was given" + assert form.is_valid() is False, "Should be false because no data was given" device = mixer.blend("devices.Device") @@ -33,8 +31,7 @@ def test_warranty_create_form(create_admin_user): form.is_valid() is False ), "Should be false because valid from is before valid until" assert ( - "Valid from date must be before valid until date" - == form.errors["__all__"][0] + "Valid from date must be before valid until date" == form.errors["__all__"][0] ) @@ -51,6 +48,5 @@ def test_warranty_update_form(create_admin_user): form = forms.WarrantyUpdateForm(data=data) assert form.is_valid() is False assert ( - "Valid from date must be before valid until date" - == form.errors["__all__"][0] + "Valid from date must be before valid until date" == form.errors["__all__"][0] ) diff --git a/src/devices/tests/test_warranty_list.py b/src/devices/tests/test_warranty_list.py index 26c0870..d47f94b 100644 --- a/src/devices/tests/test_warranty_list.py +++ b/src/devices/tests/test_warranty_list.py @@ -39,9 +39,7 @@ def test_warranties_view_plenty_of_time(create_admin_user): user.save() device = mixer.blend("devices.Device", customer=fixture["customer"]) more_than_one_year = datetime.date(datetime.today() + timedelta(400)) - mixer.blend( - "devices.Warranty", device=device, valid_until=more_than_one_year - ) + mixer.blend("devices.Warranty", device=device, valid_until=more_than_one_year) client = Client() client.login(username="pharma-admin", password="password") response = client.get("/warranties/") @@ -77,9 +75,7 @@ def test_warranties_view_warranty_one_year_till_expiration(create_admin_user): user.save() device = mixer.blend("devices.Device", customer=fixture["customer"]) not_one_year_more = datetime.date(datetime.today() + timedelta(200)) - mixer.blend( - "devices.Warranty", device=device, valid_until=not_one_year_more - ) + mixer.blend("devices.Warranty", device=device, valid_until=not_one_year_more) client = Client() client.login(username="pharma-admin", password="password") response = client.get("/warranties/") diff --git a/src/devices/urls.py b/src/devices/urls.py index 07f418b..e38b19f 100644 --- a/src/devices/urls.py +++ b/src/devices/urls.py @@ -4,9 +4,7 @@ from . import views urlpatterns = [ - path( - "customer//devices/", views.devices_table_view, name="devices" - ), + path("customer//devices/", views.devices_table_view, name="devices"), path("device//", views.device_detail_view, name="device"), path( "manufacturer//", diff --git a/src/devices/views.py b/src/devices/views.py index 3325be3..4fc8cae 100644 --- a/src/devices/views.py +++ b/src/devices/views.py @@ -60,16 +60,12 @@ def device_detail_view(request, pk): def devices_table_view(request, pk): table = DevicesTable(Device.objects.filter(customer=pk)) RequestConfig(request).configure(table) - return render( - request, "devices/device_list.html", {"devices": table, "pk": pk} - ) + return render(request, "devices/device_list.html", {"devices": table, "pk": pk}) @login_required def warranties_view(request): - table = WarrantiesTable( - utils.objects_for_allowed_customers(Warranty, request.user) - ) + table = WarrantiesTable(utils.objects_for_allowed_customers(Warranty, request.user)) RequestConfig(request).configure(table) return render(request, "devices/warranties_list.html", {"devices": table}) @@ -111,9 +107,7 @@ def device_update_view(request, pk): """ template_name = "devices/device_update.html" request.session["device_to_update"] = pk - device = utils.get_object_with_view_permission( - Device, user=request.user, pk=pk - ) + device = utils.get_object_with_view_permission(Device, user=request.user, pk=pk) if request.method == "POST" and "save_device" in request.POST: form = DeviceUpdateForm(request, request.POST, instance=device) if form.is_valid(): diff --git a/src/licenses/models.py b/src/licenses/models.py index 8eabaa4..044f59c 100644 --- a/src/licenses/models.py +++ b/src/licenses/models.py @@ -48,9 +48,7 @@ class LicenseWithUser(models.Model): class Meta: constraints = [ - models.UniqueConstraint( - fields=["user", "license"], name="user per license" - ) + models.UniqueConstraint(fields=["user", "license"], name="user per license") ] diff --git a/src/licenses/tests/test_customer_license_table_view.py b/src/licenses/tests/test_customer_license_table_view.py index 6be6b8a..931e3ba 100644 --- a/src/licenses/tests/test_customer_license_table_view.py +++ b/src/licenses/tests/test_customer_license_table_view.py @@ -61,9 +61,7 @@ def test_customer_license_table_no_license(create_admin_user): client = Client() client.login(username="pharma-admin", password="password") response = client.get("/customer/" + str(customer.id) + "/licenses/") - assert response.status_code == 200 and helper.not_in_content( - response, customer - ) + assert response.status_code == 200 and helper.not_in_content(response, customer) def test_customer_license_table_no_permission(create_admin_user): diff --git a/src/licenses/views.py b/src/licenses/views.py index 5351db6..8d5ea8d 100644 --- a/src/licenses/views.py +++ b/src/licenses/views.py @@ -41,7 +41,7 @@ def licenses_table_view(request, pk): class LicenseWithComputerCreateView(LoginRequiredMixin, CreateView): model = LicenseWithComputer template_name = "licenses/license_with_computer_create.html" - fields = "__all__" + fields = "__all__" # type: ignore def get_success_url(self): return reverse("computer", args=(self.computer.pk,)) diff --git a/src/manage.py b/src/manage.py index 30bff88..78e5d74 100644 --- a/src/manage.py +++ b/src/manage.py @@ -3,9 +3,7 @@ import os import sys if __name__ == "__main__": - os.environ.setdefault( - "DJANGO_SETTINGS_MODULE", "network_inventory.settings" - ) + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "network_inventory.settings") try: from django.core.management import execute_from_command_line except ImportError as exc: diff --git a/src/nets/decorators.py b/src/nets/decorators.py index 87c1763..fda590f 100644 --- a/src/nets/decorators.py +++ b/src/nets/decorators.py @@ -11,8 +11,6 @@ def net_view_permission(old_fuction): if user.has_perm("customers.view_customer", net.customer): return old_fuction(request, pk) else: - return HttpResponseForbidden( - "You're not allowed to access this device." - ) + return HttpResponseForbidden("You're not allowed to access this device.") return new_function diff --git a/src/nets/tests/test_views/test_net_detail_view.py b/src/nets/tests/test_views/test_net_detail_view.py index 616a0cd..8cda32b 100644 --- a/src/nets/tests/test_views/test_net_detail_view.py +++ b/src/nets/tests/test_views/test_net_detail_view.py @@ -15,9 +15,7 @@ def test_net_detail_view_no_permission(create_admin_user): net = mixer.blend("nets.Net") customer = mixer.blend("customers.Customer") device = mixer.blend("computers.Computer", customer=customer) - mixer.blend( - "devices.DeviceInNet", device=device, net=net, ip="10.7.89.101" - ) + mixer.blend("devices.DeviceInNet", device=device, net=net, ip="10.7.89.101") client = Client() client.login(username="pharma-admin", password="password") response = client.get("/net/" + str(net.id) + "/") @@ -28,9 +26,7 @@ def test_net_detail_view(create_admin_user): fixture = create_admin_user() net = mixer.blend("nets.Net", customer=mixer.SELECT) device = mixer.blend("computers.Computer", customer=fixture["customer"]) - device_in_net = DeviceInNet.objects.create( - device=device, net=net, ip="10.7.89.101" - ) + device_in_net = DeviceInNet.objects.create(device=device, net=net, ip="10.7.89.101") client = Client() client.login(username="pharma-admin", password="password") response = client.get("/net/" + str(net.id) + "/") diff --git a/src/nets/views.py b/src/nets/views.py index 7a2cb7b..7078c5c 100644 --- a/src/nets/views.py +++ b/src/nets/views.py @@ -29,9 +29,7 @@ def net_detail_view(request, pk): net = get_object_or_404(Net, pk=pk) table = NetDetailTable(DeviceInNet.objects.filter(net=net)) RequestConfig(request).configure(table) - return render( - request, "nets/net_details.html", {"table": table, "net": net} - ) + return render(request, "nets/net_details.html", {"table": table, "net": net}) class NetDeleteView(LoginRequiredMixin, DeleteView): # type: ignore diff --git a/src/users/decorators.py b/src/users/decorators.py index 1e0bd47..41e3e3d 100644 --- a/src/users/decorators.py +++ b/src/users/decorators.py @@ -11,8 +11,6 @@ def user_view_permission(old_fuction): if user.has_perm("customers.view_customer", inventory_user.customer): return old_fuction(request, pk) else: - return HttpResponseForbidden( - "You're not allowed to access this device." - ) + return HttpResponseForbidden("You're not allowed to access this device.") return new_function diff --git a/src/users/tests/test_customer_user_table_view.py b/src/users/tests/test_customer_user_table_view.py index dfd994d..825564e 100644 --- a/src/users/tests/test_customer_user_table_view.py +++ b/src/users/tests/test_customer_user_table_view.py @@ -37,9 +37,7 @@ def test_customer_user_table_no_user(create_admin_user): client = Client() client.login(username="pharma-admin", password="password") response = client.get("/customer/" + str(customer.id) + "/users/") - assert response.status_code == 200 and helper.not_in_content( - response, customer - ) + assert response.status_code == 200 and helper.not_in_content(response, customer) def test_customer_user_table_no_permission(create_admin_user): diff --git a/src/users/tests/test_group_detail_view.py b/src/users/tests/test_group_detail_view.py index 5c04f80..aeb476c 100644 --- a/src/users/tests/test_group_detail_view.py +++ b/src/users/tests/test_group_detail_view.py @@ -61,6 +61,4 @@ def test_group_detail_view_with_child_group(create_admin_user): client = Client() client.login(username="pharma-admin", password="password") response = client.get("/group/" + str(group.id) + "/") - assert response.status_code == 200 and helper.in_content( - response, child_group - ) + assert response.status_code == 200 and helper.in_content(response, child_group) diff --git a/src/users/tests/test_user_detail_view.py b/src/users/tests/test_user_detail_view.py index 8043fb9..1ec4a00 100644 --- a/src/users/tests/test_user_detail_view.py +++ b/src/users/tests/test_user_detail_view.py @@ -38,9 +38,7 @@ def test_user_detail_view_group(create_admin_user): client = Client() client.login(username="pharma-admin", password="password") response = client.get("/user/" + str(user.id) + "/") - assert response.status_code == 200 and helper.in_content( - response, "Groups" - ) + assert response.status_code == 200 and helper.in_content(response, "Groups") def test_user_detail_view_mail_alias(create_admin_user): @@ -50,9 +48,7 @@ def test_user_detail_view_mail_alias(create_admin_user): client = Client() client.login(username="pharma-admin", password="password") response = client.get("/user/" + str(user.id) + "/") - assert response.status_code == 200 and helper.in_content( - response, "Mail Alias" - ) + assert response.status_code == 200 and helper.in_content(response, "Mail Alias") def test_user_detail_view_license(create_admin_user): @@ -63,9 +59,7 @@ def test_user_detail_view_license(create_admin_user): client = Client() client.login(username="pharma-admin", password="password") response = client.get("/user/" + str(user.id) + "/") - assert response.status_code == 200 and helper.in_content( - response, "License" - ) + assert response.status_code == 200 and helper.in_content(response, "License") def test_user_detail_view_computer(create_admin_user): @@ -75,9 +69,7 @@ def test_user_detail_view_computer(create_admin_user): client = Client() client.login(username="pharma-admin", password="password") response = client.get("/user/" + str(user.id) + "/") - assert response.status_code == 200 and helper.in_content( - response, computer - ) + assert response.status_code == 200 and helper.in_content(response, computer) def test_user_detail_view_no_permission(create_admin_user): diff --git a/src/users/views.py b/src/users/views.py index 3bd3dd3..05d4ba3 100644 --- a/src/users/views.py +++ b/src/users/views.py @@ -64,9 +64,7 @@ class UserDeleteView(LoginRequiredMixin, DeleteView): # type: ignore def groups_table_view(request, pk): customer = get_object_or_404(Customer, pk=pk) groups_table = GroupsTable( - utils.get_objects_for_customer( - Group, user=request.user, customer_pk=pk - ) + utils.get_objects_for_customer(Group, user=request.user, customer_pk=pk) ) RequestConfig(request).configure(groups_table) return TemplateResponse( @@ -81,9 +79,7 @@ def groups_table_view(request, pk): @login_required def group_detail_view(request, pk): - group = utils.get_object_with_view_permission( - Group, user=request.user, pk=pk - ) + group = utils.get_object_with_view_permission(Group, user=request.user, pk=pk) users = group.user_set.all() groups = Group.objects.filter(parent_group=group) print(groups) @@ -96,9 +92,7 @@ def group_detail_view(request, pk): @login_required def delete_group(request, pk): - group = utils.get_object_with_view_permission( - Group, user=request.user, pk=pk - ) + group = utils.get_object_with_view_permission(Group, user=request.user, pk=pk) if request.method == "POST": group.delete() return redirect("groups", pk=group.customer.pk)