Skip to content

Commit 769c2f1

Browse files
ruff
1 parent b69c2fe commit 769c2f1

13 files changed

Lines changed: 96 additions & 142 deletions

File tree

dojo/apps.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from django.db import models
66
from watson import search as watson
77

8+
from dojo.auditlog import configure_audit_system, register_django_pghistory_models
89
from dojo.checks import check_configuration_deduplication
910

1011
logger = logging.getLogger(__name__)
@@ -91,7 +92,6 @@ def ready(self):
9192
# This must be done in ready() to avoid "Models aren't loaded yet" errors
9293
# Note: pghistory models are registered here (no database access), but trigger
9394
# enabling is handled via management command to avoid database access warnings
94-
from dojo.auditlog import configure_audit_system, register_django_pghistory_models
9595
register_django_pghistory_models()
9696
configure_audit_system()
9797

dojo/auditlog.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import sys
1010

1111
import pghistory
12-
from auditlog.registry import auditlog
1312
from django.conf import settings
1413
from django.core.management import call_command
1514
from django.db import models
@@ -19,7 +18,10 @@
1918

2019
def enable_django_auditlog():
2120
"""Enable django-auditlog by registering models."""
22-
from dojo.models import (
21+
# Import inside function to avoid AppRegistryNotReady errors
22+
from auditlog.registry import auditlog # noqa: PLC0415
23+
24+
from dojo.models import ( # noqa: PLC0415
2325
Cred_User,
2426
Dojo_User,
2527
Endpoint,
@@ -52,7 +54,10 @@ def enable_django_auditlog():
5254

5355
def disable_django_auditlog():
5456
"""Disable django-auditlog by unregistering models."""
55-
from dojo.models import (
57+
# Import inside function to avoid AppRegistryNotReady errors
58+
from auditlog.registry import auditlog # noqa: PLC0415
59+
60+
from dojo.models import ( # noqa: PLC0415
5661
Cred_User,
5762
Dojo_User,
5863
Endpoint,
@@ -99,7 +104,8 @@ def register_django_pghistory_models():
99104
Then we control the enabling/disabling by enabling/disabling the underlying database
100105
triggers.
101106
"""
102-
from dojo.models import (
107+
# Import models inside function to avoid AppRegistryNotReady errors
108+
from dojo.models import ( # noqa: PLC0415
103109
Cred_User,
104110
Dojo_User,
105111
Endpoint,

dojo/endpoint/signals.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from auditlog.models import LogEntry
44
from django.conf import settings
5+
from django.contrib.auth import get_user_model
56
from django.contrib.contenttypes.models import ContentType
67
from django.db.models.signals import post_delete
78
from django.dispatch import receiver
@@ -10,6 +11,7 @@
1011

1112
from dojo.models import Endpoint
1213
from dojo.notifications.helper import create_notification
14+
from dojo.pghistory_models import DojoEvents
1315

1416

1517
@receiver(post_delete, sender=Endpoint)
@@ -22,7 +24,6 @@ def endpoint_post_delete(sender, instance, using, origin, **kwargs):
2224

2325
if settings.ENABLE_AUDITLOG:
2426
# First try to find deletion author in pghistory events
25-
from dojo.pghistory_models import DojoEvents
2627
# Look for delete events for this specific endpoint instance
2728
pghistory_delete_events = DojoEvents.objects.filter(
2829
pgh_obj_model="dojo.Endpoint",
@@ -34,7 +35,6 @@ def endpoint_post_delete(sender, instance, using, origin, **kwargs):
3435
latest_delete = pghistory_delete_events.first()
3536
# Extract user from pghistory context
3637
if latest_delete.user:
37-
from django.contrib.auth import get_user_model
3838
User = get_user_model()
3939
with contextlib.suppress(User.DoesNotExist):
4040
user = User.objects.get(id=latest_delete.user)

dojo/engagement/signals.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from auditlog.models import LogEntry
44
from django.conf import settings
5+
from django.contrib.auth import get_user_model
56
from django.contrib.contenttypes.models import ContentType
67
from django.db.models.signals import post_delete, post_save, pre_delete, pre_save
78
from django.dispatch import receiver
@@ -12,6 +13,7 @@
1213
from dojo.models import Engagement, Product
1314
from dojo.notes.helper import delete_related_notes
1415
from dojo.notifications.helper import create_notification
16+
from dojo.pghistory_models import DojoEvents
1517

1618

1719
@receiver(post_save, sender=Engagement)
@@ -49,7 +51,6 @@ def engagement_post_delete(sender, instance, using, origin, **kwargs):
4951

5052
if settings.ENABLE_AUDITLOG:
5153
# First try to find deletion author in pghistory events
52-
from dojo.pghistory_models import DojoEvents
5354
# Look for delete events for this specific engagement instance
5455
pghistory_delete_events = DojoEvents.objects.filter(
5556
pgh_obj_model="dojo.Engagement",
@@ -61,7 +62,6 @@ def engagement_post_delete(sender, instance, using, origin, **kwargs):
6162
latest_delete = pghistory_delete_events.first()
6263
# Extract user from pghistory context
6364
if latest_delete.user:
64-
from django.contrib.auth import get_user_model
6565
User = get_user_model()
6666
with contextlib.suppress(User.DoesNotExist):
6767
user = User.objects.get(id=latest_delete.user)

dojo/finding_group/signals.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from auditlog.models import LogEntry
44
from django.conf import settings
5+
from django.contrib.auth import get_user_model
56
from django.contrib.contenttypes.models import ContentType
67
from django.db.models.signals import post_delete
78
from django.dispatch import receiver
@@ -10,6 +11,7 @@
1011

1112
from dojo.models import Finding_Group
1213
from dojo.notifications.helper import create_notification
14+
from dojo.pghistory_models import DojoEvents
1315

1416

1517
@receiver(post_delete, sender=Finding_Group)
@@ -20,7 +22,6 @@ def finding_group_post_delete(sender, instance, using, origin, **kwargs):
2022

2123
if settings.ENABLE_AUDITLOG:
2224
# First try to find deletion author in pghistory events
23-
from dojo.pghistory_models import DojoEvents
2425
# Look for delete events for this specific finding_group instance
2526
pghistory_delete_events = DojoEvents.objects.filter(
2627
pgh_obj_model="dojo.Finding_Group",
@@ -32,7 +33,6 @@ def finding_group_post_delete(sender, instance, using, origin, **kwargs):
3233
latest_delete = pghistory_delete_events.first()
3334
# Extract user from pghistory context
3435
if latest_delete.user:
35-
from django.contrib.auth import get_user_model
3636
User = get_user_model()
3737
with contextlib.suppress(User.DoesNotExist):
3838
user = User.objects.get(id=latest_delete.user)

dojo/management/commands/pghistory_backfill.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from django.conf import settings
1010
from django.core.management.base import BaseCommand
1111
from django.db import transaction
12+
from django.utils import timezone
1213

1314
logger = logging.getLogger(__name__)
1415

@@ -178,7 +179,6 @@ def handle(self, *args, **options):
178179

179180
# Set pgh_created_at to current time (this is for the event creation time)
180181
# The created/updated fields above contain the original instance timestamps
181-
from django.utils import timezone
182182
event_data["pgh_created_at"] = timezone.now()
183183

184184
event_records.append(EventModel(**event_data))

dojo/management/commands/pghistory_clear.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from django.apps import apps
1010
from django.conf import settings
1111
from django.core.management.base import BaseCommand
12-
from django.db import transaction
12+
from django.db import connection, transaction
1313

1414
logger = logging.getLogger(__name__)
1515

@@ -159,7 +159,6 @@ def handle(self, *args, **options):
159159
# Get the actual database table name
160160
db_table = EventModel._meta.db_table
161161

162-
from django.db import connection
163162
with connection.cursor() as cursor:
164163
if drop_tables:
165164
# DROP TABLE - completely removes the table structure

dojo/product/signals.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from auditlog.models import LogEntry
44
from django.conf import settings
5+
from django.contrib.auth import get_user_model
56
from django.contrib.contenttypes.models import ContentType
67
from django.db.models.signals import post_delete, post_save
78
from django.dispatch import receiver
@@ -10,6 +11,7 @@
1011

1112
from dojo.models import Product
1213
from dojo.notifications.helper import create_notification
14+
from dojo.pghistory_models import DojoEvents
1315

1416

1517
@receiver(post_save, sender=Product)
@@ -32,7 +34,6 @@ def product_post_delete(sender, instance, **kwargs):
3234

3335
if settings.ENABLE_AUDITLOG:
3436
# First try to find deletion author in pghistory events
35-
from dojo.pghistory_models import DojoEvents
3637
# Look for delete events for this specific product instance
3738
pghistory_delete_events = DojoEvents.objects.filter(
3839
pgh_obj_model="dojo.Product",
@@ -44,7 +45,6 @@ def product_post_delete(sender, instance, **kwargs):
4445
latest_delete = pghistory_delete_events.first()
4546
# Extract user from pghistory context
4647
if latest_delete.user:
47-
from django.contrib.auth import get_user_model
4848
User = get_user_model()
4949
with contextlib.suppress(User.DoesNotExist):
5050
user = User.objects.get(id=latest_delete.user)

dojo/product_type/signals.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from auditlog.models import LogEntry
44
from django.conf import settings
5+
from django.contrib.auth import get_user_model
56
from django.contrib.contenttypes.models import ContentType
67
from django.db.models.signals import post_delete, post_save
78
from django.dispatch import receiver
@@ -10,6 +11,7 @@
1011

1112
from dojo.models import Product_Type
1213
from dojo.notifications.helper import create_notification
14+
from dojo.pghistory_models import DojoEvents
1315

1416

1517
@receiver(post_save, sender=Product_Type)
@@ -32,7 +34,6 @@ def product_type_post_delete(sender, instance, **kwargs):
3234

3335
if settings.ENABLE_AUDITLOG:
3436
# First try to find deletion author in pghistory events
35-
from dojo.pghistory_models import DojoEvents
3637
# Look for delete events for this specific product_type instance
3738
pghistory_delete_events = DojoEvents.objects.filter(
3839
pgh_obj_model="dojo.Product_Type",
@@ -44,7 +45,6 @@ def product_type_post_delete(sender, instance, **kwargs):
4445
latest_delete = pghistory_delete_events.first()
4546
# Extract user from pghistory context
4647
if latest_delete.user:
47-
from django.contrib.auth import get_user_model
4848
User = get_user_model()
4949
with contextlib.suppress(User.DoesNotExist):
5050
user = User.objects.get(id=latest_delete.user)

dojo/test/signals.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from auditlog.models import LogEntry
44
from django.conf import settings
5+
from django.contrib.auth import get_user_model
56
from django.contrib.contenttypes.models import ContentType
67
from django.db.models.signals import post_delete, pre_delete, pre_save
78
from django.dispatch import receiver
@@ -12,6 +13,7 @@
1213
from dojo.models import Engagement, Finding, Product, Test
1314
from dojo.notes.helper import delete_related_notes
1415
from dojo.notifications.helper import create_notification
16+
from dojo.pghistory_models import DojoEvents
1517

1618

1719
@receiver(post_delete, sender=Test)
@@ -24,7 +26,6 @@ def test_post_delete(sender, instance, using, origin, **kwargs):
2426

2527
if settings.ENABLE_AUDITLOG:
2628
# First try to find deletion author in pghistory events
27-
from dojo.pghistory_models import DojoEvents
2829
# Look for delete events for this specific test instance
2930
pghistory_delete_events = DojoEvents.objects.filter(
3031
pgh_obj_model="dojo.Test",
@@ -36,7 +37,6 @@ def test_post_delete(sender, instance, using, origin, **kwargs):
3637
latest_delete = pghistory_delete_events.first()
3738
# Extract user from pghistory context
3839
if latest_delete.user:
39-
from django.contrib.auth import get_user_model
4040
User = get_user_model()
4141
with contextlib.suppress(User.DoesNotExist):
4242
user = User.objects.get(id=latest_delete.user)

0 commit comments

Comments
 (0)