wbcompliance 1.59.16__py2.py3-none-any.whl → 1.60.1__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- wbcompliance/factories/risk_management/backends.py +1 -2
- wbcompliance/factories/risk_management/checks.py +2 -2
- wbcompliance/factories/risk_management/rules.py +2 -2
- wbcompliance/filters/risk_management/checks.py +3 -2
- wbcompliance/filters/risk_management/incidents.py +3 -2
- wbcompliance/filters/risk_management/rules.py +2 -1
- wbcompliance/filters/risk_management/tables.py +1 -1
- wbcompliance/locale/de/LC_MESSAGES/django.po +195 -189
- wbcompliance/locale/en/LC_MESSAGES/django.po +195 -188
- wbcompliance/locale/fr/LC_MESSAGES/django.po +195 -189
- wbcompliance/models/compliance_form.py +1 -3
- wbcompliance/models/compliance_task.py +1 -3
- wbcompliance/models/compliance_type.py +6 -11
- wbcompliance/models/risk_management/incidents.py +2 -5
- wbcompliance/models/risk_management/rules.py +2 -2
- wbcompliance/serializers/risk_management/checks.py +2 -2
- wbcompliance/serializers/risk_management/incidents.py +1 -1
- wbcompliance/serializers/risk_management/rules.py +2 -2
- wbcompliance/tasks.py +27 -1
- wbcompliance/tests/mixins.py +0 -2
- wbcompliance/tests/risk_management/models/test_incidents.py +0 -3
- wbcompliance/tests/test_tasks.py +28 -0
- wbcompliance/viewsets/compliance_form.py +1 -3
- wbcompliance/viewsets/risk_management/checks.py +0 -3
- wbcompliance/viewsets/risk_management/incidents.py +1 -4
- wbcompliance/viewsets/risk_management/rules.py +0 -3
- {wbcompliance-1.59.16.dist-info → wbcompliance-1.60.1.dist-info}/METADATA +1 -1
- {wbcompliance-1.59.16.dist-info → wbcompliance-1.60.1.dist-info}/RECORD +29 -28
- {wbcompliance-1.59.16.dist-info → wbcompliance-1.60.1.dist-info}/WHEEL +0 -0
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
from django.apps import apps
|
|
2
2
|
from django.conf import settings
|
|
3
|
-
from django.contrib.auth import get_user_model
|
|
4
3
|
from django.contrib.auth.models import Group
|
|
5
4
|
from django.db import models
|
|
6
5
|
from django.db.models import (
|
|
@@ -22,6 +21,7 @@ from django.utils import timezone
|
|
|
22
21
|
from django.utils.translation import gettext_lazy as _
|
|
23
22
|
from django_fsm import FSMField, transition
|
|
24
23
|
from rest_framework.reverse import reverse
|
|
24
|
+
from wbcore.contrib.authentication.models.users import User
|
|
25
25
|
from wbcore.contrib.icons import WBIcon
|
|
26
26
|
from wbcore.contrib.notifications.dispatch import send_notification
|
|
27
27
|
from wbcore.contrib.notifications.utils import create_notification_type
|
|
@@ -34,8 +34,6 @@ from weasyprint import HTML
|
|
|
34
34
|
|
|
35
35
|
from .compliance_type import ComplianceDocumentMixin, ComplianceType, can_active_request
|
|
36
36
|
|
|
37
|
-
User = get_user_model()
|
|
38
|
-
|
|
39
37
|
|
|
40
38
|
class ComplianceFormType(WBModel):
|
|
41
39
|
class Type(models.TextChoices):
|
|
@@ -2,7 +2,6 @@ import re
|
|
|
2
2
|
from datetime import date, datetime, timedelta
|
|
3
3
|
|
|
4
4
|
from django.conf import settings
|
|
5
|
-
from django.contrib.auth import get_user_model
|
|
6
5
|
from django.core.validators import MaxValueValidator, MinValueValidator
|
|
7
6
|
from django.db import models
|
|
8
7
|
from django.db.models import Count, Max, Q, QuerySet
|
|
@@ -13,6 +12,7 @@ from django.utils import timezone
|
|
|
13
12
|
from django.utils.translation import gettext_lazy as _
|
|
14
13
|
from django_fsm import FSMField, transition
|
|
15
14
|
from pandas.tseries.offsets import MonthEnd, YearEnd
|
|
15
|
+
from wbcore.contrib.authentication.models.users import User
|
|
16
16
|
from wbcore.contrib.color.enums import WBColor
|
|
17
17
|
from wbcore.contrib.icons import WBIcon
|
|
18
18
|
from wbcore.contrib.notifications.dispatch import send_notification
|
|
@@ -28,8 +28,6 @@ from weasyprint import HTML
|
|
|
28
28
|
from .compliance_type import ComplianceDocumentMixin, ComplianceType, can_active_request
|
|
29
29
|
from .enums import IncidentSeverity
|
|
30
30
|
|
|
31
|
-
User = get_user_model()
|
|
32
|
-
|
|
33
31
|
|
|
34
32
|
def can_draft_request(instance, user: "User") -> bool:
|
|
35
33
|
if instance.is_instance:
|
|
@@ -2,7 +2,6 @@ import logging
|
|
|
2
2
|
from typing import TypeVar
|
|
3
3
|
|
|
4
4
|
from celery import shared_task
|
|
5
|
-
from django.contrib.auth import get_user_model
|
|
6
5
|
from django.contrib.auth.models import Group
|
|
7
6
|
from django.contrib.contenttypes.models import ContentType
|
|
8
7
|
from django.core.files.base import ContentFile
|
|
@@ -10,12 +9,12 @@ from django.db import models
|
|
|
10
9
|
from django.db.models import Q
|
|
11
10
|
from django.utils.translation import gettext_lazy as _
|
|
12
11
|
from slugify import slugify
|
|
12
|
+
from wbcore.contrib.authentication.models.users import User
|
|
13
13
|
from wbcore.contrib.documents.models import Document, DocumentType
|
|
14
14
|
from wbcore.contrib.documents.models.mixins import DocumentMixin
|
|
15
15
|
from wbcore.models import WBModel
|
|
16
16
|
from wbcore.workers import Queue
|
|
17
17
|
|
|
18
|
-
User = get_user_model()
|
|
19
18
|
SelfComplianceType = TypeVar("SelfComplianceType", bound="ComplianceType")
|
|
20
19
|
|
|
21
20
|
|
|
@@ -67,14 +66,10 @@ class ComplianceType(WBModel):
|
|
|
67
66
|
|
|
68
67
|
@classmethod
|
|
69
68
|
def get_administrators(cls, type: SelfComplianceType | None = None) -> models.QuerySet["User"]:
|
|
70
|
-
administrators = (
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
| Q(user_permissions__codename="administrate_compliance")
|
|
75
|
-
)
|
|
76
|
-
.distinct()
|
|
77
|
-
)
|
|
69
|
+
administrators = User.objects.filter(
|
|
70
|
+
Q(groups__permissions__codename="administrate_compliance")
|
|
71
|
+
| Q(user_permissions__codename="administrate_compliance")
|
|
72
|
+
).distinct()
|
|
78
73
|
if type:
|
|
79
74
|
administrators = administrators.filter(groups__in=type.in_charge.all())
|
|
80
75
|
return administrators
|
|
@@ -86,7 +81,7 @@ class ComplianceType(WBModel):
|
|
|
86
81
|
|
|
87
82
|
@shared_task(queue=Queue.DEFAULT.value)
|
|
88
83
|
def update_or_create_compliance_document(user_id: int, content_type_id: int, object_id: int, send_email: bool = True):
|
|
89
|
-
user =
|
|
84
|
+
user = User.objects.get(id=user_id)
|
|
90
85
|
content_type = ContentType.objects.get(id=content_type_id)
|
|
91
86
|
content_object = content_type.model_class().objects.get(id=object_id)
|
|
92
87
|
|
|
@@ -3,8 +3,6 @@ from typing import TYPE_CHECKING, Any, Optional
|
|
|
3
3
|
|
|
4
4
|
import pandas as pd
|
|
5
5
|
from celery import shared_task
|
|
6
|
-
from django.contrib.auth import get_user_model
|
|
7
|
-
from django.contrib.auth.models import User as BaseUser
|
|
8
6
|
from django.contrib.contenttypes.fields import GenericForeignKey
|
|
9
7
|
from django.contrib.contenttypes.models import ContentType
|
|
10
8
|
from django.contrib.postgres.fields import DateRangeField
|
|
@@ -19,8 +17,9 @@ from django.utils.translation import gettext as _
|
|
|
19
17
|
from django_fsm import FSMField, transition
|
|
20
18
|
from guardian.core import ObjectPermissionChecker
|
|
21
19
|
from psycopg.types.range import DateRange
|
|
22
|
-
from wbcore.
|
|
20
|
+
from wbcore.contrib.authentication.models.users import User
|
|
23
21
|
from wbcore.contrib.color.enums import WBColor
|
|
22
|
+
from wbcore.contrib.content_type.utils import get_ancestors_content_type
|
|
24
23
|
from wbcore.contrib.directory.models import Person
|
|
25
24
|
from wbcore.contrib.icons import WBIcon
|
|
26
25
|
from wbcore.contrib.notifications.utils import create_notification_type
|
|
@@ -32,8 +31,6 @@ from wbcore.metadata.configs.display.instance_display.shortcuts import (
|
|
|
32
31
|
from wbcore.utils.models import ComplexToStringMixin
|
|
33
32
|
from wbcore.workers import Queue
|
|
34
33
|
|
|
35
|
-
User: BaseUser = get_user_model()
|
|
36
|
-
|
|
37
34
|
if TYPE_CHECKING:
|
|
38
35
|
from wbcompliance.models import RiskCheck
|
|
39
36
|
|
|
@@ -6,7 +6,6 @@ from typing import Any, Dict, Generator, Iterable, Iterator, Optional, Type
|
|
|
6
6
|
import pandas as pd
|
|
7
7
|
from celery import shared_task
|
|
8
8
|
from dateutil import rrule
|
|
9
|
-
from django.contrib.auth import get_user_model
|
|
10
9
|
from django.contrib.auth.models import Group
|
|
11
10
|
from django.contrib.auth.models import User as BaseUser
|
|
12
11
|
from django.contrib.contenttypes.fields import GenericForeignKey
|
|
@@ -23,6 +22,7 @@ from django.utils.functional import cached_property
|
|
|
23
22
|
from django.utils.translation import gettext_lazy as _
|
|
24
23
|
from pandas.tseries.offsets import BDay
|
|
25
24
|
from rest_framework.reverse import reverse
|
|
25
|
+
from wbcore.contrib.authentication.models.users import User
|
|
26
26
|
from wbcore.contrib.directory.models import Person
|
|
27
27
|
from wbcore.contrib.guardian.models.mixins import PermissionObjectModelMixin
|
|
28
28
|
from wbcore.contrib.notifications.dispatch import send_notification
|
|
@@ -35,7 +35,7 @@ from .backend import AbstractRuleBackend
|
|
|
35
35
|
from .checks import RiskCheck
|
|
36
36
|
from .incidents import CheckedObjectIncidentRelationship, RiskIncident
|
|
37
37
|
|
|
38
|
-
User: BaseUser =
|
|
38
|
+
User: BaseUser = User
|
|
39
39
|
|
|
40
40
|
|
|
41
41
|
class RuleGroup(models.Model):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from rest_framework.reverse import reverse
|
|
2
2
|
from wbcore import serializers as wb_serializers
|
|
3
|
-
from wbcore.content_type.serializers import ContentTypeRepresentationSerializer
|
|
3
|
+
from wbcore.contrib.content_type.serializers import ContentTypeRepresentationSerializer
|
|
4
4
|
from wbcore.contrib.icons.serializers import IconSelectField
|
|
5
5
|
|
|
6
6
|
from wbcompliance.models.risk_management import RiskCheck
|
|
@@ -25,7 +25,7 @@ class RiskCheckModelSerializer(wb_serializers.ModelSerializer):
|
|
|
25
25
|
res = {}
|
|
26
26
|
if instance.incidents.exists():
|
|
27
27
|
res["incidents"] = (
|
|
28
|
-
f
|
|
28
|
+
f"{reverse('wbcompliance:checkedobjectincidentrelationship-list', args=[], request=request)}?rule_check={instance.id}"
|
|
29
29
|
)
|
|
30
30
|
|
|
31
31
|
return res
|
|
@@ -5,8 +5,8 @@ from psycopg.types.range import NumericRange
|
|
|
5
5
|
from rest_framework import serializers
|
|
6
6
|
from rest_framework.reverse import reverse
|
|
7
7
|
from wbcore import serializers as wb_serializers
|
|
8
|
-
from wbcore.content_type.serializers import ContentTypeRepresentationSerializer
|
|
9
8
|
from wbcore.contrib.authentication.serializers import GroupRepresentationSerializer
|
|
9
|
+
from wbcore.contrib.content_type.serializers import ContentTypeRepresentationSerializer
|
|
10
10
|
from wbcore.contrib.directory.serializers import PersonRepresentationSerializer
|
|
11
11
|
|
|
12
12
|
from wbcompliance.models.risk_management import (
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
from django.contrib.contenttypes.models import ContentType
|
|
2
2
|
from rest_framework.reverse import reverse
|
|
3
3
|
from wbcore import serializers as wb_serializers
|
|
4
|
-
from wbcore.
|
|
4
|
+
from wbcore.contrib.authentication.serializers import UserRepresentationSerializer
|
|
5
|
+
from wbcore.contrib.content_type.serializers import (
|
|
5
6
|
ContentTypeRepresentationSerializer,
|
|
6
7
|
DynamicObjectIDRepresentationSerializer,
|
|
7
8
|
)
|
|
8
|
-
from wbcore.contrib.authentication.serializers import UserRepresentationSerializer
|
|
9
9
|
|
|
10
10
|
from wbcompliance.models.risk_management import (
|
|
11
11
|
RiskRule,
|
wbcompliance/tasks.py
CHANGED
|
@@ -2,12 +2,13 @@ from collections import defaultdict
|
|
|
2
2
|
from datetime import date, datetime
|
|
3
3
|
|
|
4
4
|
from celery import shared_task
|
|
5
|
+
from django.contrib.auth import get_user_model
|
|
5
6
|
from django.contrib.contenttypes.models import ContentType
|
|
6
7
|
from django.db.models import Q
|
|
7
8
|
from tqdm import tqdm
|
|
8
9
|
from wbcore.workers import Queue
|
|
9
10
|
|
|
10
|
-
from wbcompliance.models import ComplianceTask, ReviewComplianceTask
|
|
11
|
+
from wbcompliance.models import ComplianceForm, ComplianceFormSignature, ComplianceTask, ReviewComplianceTask
|
|
11
12
|
from wbcompliance.models.risk_management.rules import (
|
|
12
13
|
RiskRule,
|
|
13
14
|
RuleCheckedObjectRelationship,
|
|
@@ -112,3 +113,28 @@ def periodic_quaterly_or_monthly_compliance_task():
|
|
|
112
113
|
|
|
113
114
|
for task in qs:
|
|
114
115
|
task.generate_compliance_task_instance(link_instance_review=True)
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
@shared_task
|
|
119
|
+
def send_reminder_of_unsigned_compliance_form(compliance_form_ids: list[int] | None = None) -> None:
|
|
120
|
+
"""
|
|
121
|
+
Send a reminder to the user to sign the compliance form.
|
|
122
|
+
"""
|
|
123
|
+
|
|
124
|
+
compliance_forms = (
|
|
125
|
+
ComplianceForm.objects.filter(id__in=compliance_form_ids)
|
|
126
|
+
if compliance_form_ids
|
|
127
|
+
else ComplianceForm.objects.filter(status=ComplianceForm.Status.ACTIVE)
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
for compliance_form in compliance_forms:
|
|
131
|
+
signatures = ComplianceFormSignature.objects.filter(
|
|
132
|
+
compliance_form=compliance_form, version=compliance_form.version, signed=None
|
|
133
|
+
)
|
|
134
|
+
recipients = get_user_model().objects.filter(profile__id__in=signatures.values("person"))
|
|
135
|
+
if recipients.exists():
|
|
136
|
+
msg = f"<p>{compliance_form.changer} has activated a {compliance_form.title} {compliance_form.form_type} version {compliance_form.version} </p>"
|
|
137
|
+
if compliance_form.policy and compliance_form.policy != "<p></p>" and compliance_form.policy != "null":
|
|
138
|
+
msg += f"</br><p><b>User's ComplianceForm:</b></p><i>{compliance_form.policy}</i>"
|
|
139
|
+
title = f"Unsigned Compliance Form - {compliance_form.form_type} Reminder : {compliance_form.title}"
|
|
140
|
+
compliance_form.notify(title, msg, recipients=recipients)
|
wbcompliance/tests/mixins.py
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import pytest
|
|
2
|
-
from django.contrib.auth import get_user_model
|
|
3
2
|
from django.contrib.auth.models import Group
|
|
4
3
|
from faker import Faker
|
|
5
4
|
from wbcore.contrib.authentication.factories import InternalUserFactory
|
|
6
5
|
|
|
7
6
|
fake = Faker()
|
|
8
|
-
User = get_user_model()
|
|
9
7
|
|
|
10
8
|
|
|
11
9
|
class UserTestMixin:
|
|
@@ -2,7 +2,6 @@ from datetime import timedelta
|
|
|
2
2
|
from unittest.mock import patch
|
|
3
3
|
|
|
4
4
|
import pytest
|
|
5
|
-
from django.contrib.auth import get_user_model
|
|
6
5
|
from django.contrib.auth.models import Permission
|
|
7
6
|
from django.contrib.contenttypes.models import ContentType
|
|
8
7
|
from django.core.exceptions import ValidationError
|
|
@@ -17,8 +16,6 @@ from wbcompliance.models.risk_management.incidents import (
|
|
|
17
16
|
)
|
|
18
17
|
from wbcompliance.models.risk_management.rules import RiskRule
|
|
19
18
|
|
|
20
|
-
User = get_user_model()
|
|
21
|
-
|
|
22
19
|
fake = Faker()
|
|
23
20
|
|
|
24
21
|
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import pytest
|
|
2
|
+
from wbcore.contrib.notifications.models import Notification
|
|
3
|
+
|
|
4
|
+
from wbcompliance.tasks import send_reminder_of_unsigned_compliance_form
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
@pytest.mark.django_db
|
|
8
|
+
class TestComplianceForm:
|
|
9
|
+
def test_send_reminder_of_unsigned_compliance_form(
|
|
10
|
+
self, compliance_form_factory, compliance_form_signature_factory
|
|
11
|
+
):
|
|
12
|
+
cf1 = compliance_form_factory.create()
|
|
13
|
+
cf2 = compliance_form_factory.create()
|
|
14
|
+
cf3 = compliance_form_factory.create()
|
|
15
|
+
|
|
16
|
+
compliance_form_signature_factory.create(compliance_form=cf1, signed=None)
|
|
17
|
+
compliance_form_signature_factory.create(compliance_form=cf1, version=1, signed=None)
|
|
18
|
+
compliance_form_signature_factory.create(compliance_form=cf2)
|
|
19
|
+
compliance_form_signature_factory.create(compliance_form=cf3, signed=None)
|
|
20
|
+
|
|
21
|
+
assert Notification.objects.count() == 0
|
|
22
|
+
send_reminder_of_unsigned_compliance_form(compliance_form_ids=[cf1.id, cf2.id])
|
|
23
|
+
assert Notification.objects.filter(
|
|
24
|
+
title=f"Unsigned Compliance Form - {cf1.form_type} Reminder : {cf1.title}"
|
|
25
|
+
).exists()
|
|
26
|
+
assert Notification.objects.filter(
|
|
27
|
+
title=f"Unsigned Compliance Form - {cf2.form_type} Reminder : {cf2.title}"
|
|
28
|
+
).exists()
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
from django.contrib.auth import get_user_model
|
|
2
1
|
from django.contrib.contenttypes.models import ContentType
|
|
3
2
|
from django.db.models import (
|
|
4
3
|
BooleanField,
|
|
@@ -21,6 +20,7 @@ from rest_framework.response import Response
|
|
|
21
20
|
from reversion.views import RevisionMixin
|
|
22
21
|
from wbcore import viewsets
|
|
23
22
|
from wbcore.contrib.authentication.authentication import JWTCookieAuthentication
|
|
23
|
+
from wbcore.contrib.authentication.models.users import User
|
|
24
24
|
from wbcore.contrib.notifications.dispatch import send_notification
|
|
25
25
|
from wbcore.filters import DjangoFilterBackend
|
|
26
26
|
|
|
@@ -76,8 +76,6 @@ from .titles import (
|
|
|
76
76
|
ComplianceFormTitleConfig,
|
|
77
77
|
)
|
|
78
78
|
|
|
79
|
-
User = get_user_model()
|
|
80
|
-
|
|
81
79
|
|
|
82
80
|
class ComplianceFormRepresentationViewSet(viewsets.RepresentationViewSet):
|
|
83
81
|
IDENTIFIER = "wbcompliance:complianceformrepresentation"
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
from django.contrib.auth import get_user_model
|
|
2
1
|
from django.contrib.postgres.aggregates import StringAgg
|
|
3
2
|
from django.db import models
|
|
4
3
|
from django.db.models import F, OuterRef, Subquery, Value
|
|
@@ -16,8 +15,6 @@ from wbcompliance.viewsets.buttons import RiskCheckButtonConfig
|
|
|
16
15
|
from wbcompliance.viewsets.display import RiskCheckDisplayConfig
|
|
17
16
|
from wbcompliance.viewsets.endpoints import RiskCheckEndpointConfig
|
|
18
17
|
|
|
19
|
-
User = get_user_model()
|
|
20
|
-
|
|
21
18
|
|
|
22
19
|
class RiskCheckRepresentationViewSet(viewsets.RepresentationViewSet):
|
|
23
20
|
queryset = RiskCheck.objects.all()
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
from django.contrib.auth import get_user_model
|
|
2
1
|
from django.contrib.auth.models import Permission
|
|
3
2
|
from django.contrib.contenttypes.models import ContentType
|
|
4
3
|
from django.contrib.messages.api import warning
|
|
@@ -56,8 +55,6 @@ from wbcompliance.viewsets.endpoints import (
|
|
|
56
55
|
RiskIncidentEndpointConfig,
|
|
57
56
|
)
|
|
58
57
|
|
|
59
|
-
User = get_user_model()
|
|
60
|
-
|
|
61
58
|
|
|
62
59
|
class RiskIncidentTypeRepresentationViewSet(viewsets.RepresentationViewSet):
|
|
63
60
|
queryset = RiskIncidentType.objects.all()
|
|
@@ -188,7 +185,7 @@ class CheckedObjectIncidentRelationshipModelViewSet(viewsets.ModelViewSet):
|
|
|
188
185
|
object_repr=F("rule_check__checked_object_repr"),
|
|
189
186
|
checked_date=F("rule_check__evaluation_date"),
|
|
190
187
|
date_range=Cast(
|
|
191
|
-
Concat(Value("["), F("checked_date"), Value(","), F("checked_date"), Value("]")),
|
|
188
|
+
Concat(Value("["), F("checked_date"), Value(","), F("checked_date"), Value("]"), output_field=CharField()),
|
|
192
189
|
output_field=DateRangeField(),
|
|
193
190
|
),
|
|
194
191
|
threshold_repr=Subquery(
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import pandas as pd
|
|
2
|
-
from django.contrib.auth import get_user_model
|
|
3
2
|
from django.db.models import Case, CharField, Count, OuterRef, Q, Subquery, Value, When
|
|
4
3
|
from django.db.models.functions import Coalesce
|
|
5
4
|
from django.http import HttpResponse
|
|
@@ -43,8 +42,6 @@ from wbcompliance.viewsets.endpoints import (
|
|
|
43
42
|
RuleThresholdRiskRuleEndpointConfig,
|
|
44
43
|
)
|
|
45
44
|
|
|
46
|
-
User = get_user_model()
|
|
47
|
-
|
|
48
45
|
|
|
49
46
|
class RuleGroupRepresentationViewSet(viewsets.RepresentationViewSet):
|
|
50
47
|
queryset = RuleGroup.objects.all()
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
wbcompliance/__init__.py,sha256=J-j-u0itpEFT6irdmWmixQqYMadNl1X91TxUmoiLHMI,22
|
|
2
2
|
wbcompliance/apps.py,sha256=YtNYwXg6t_XiLQf0TxCiXYRs1tvUYtGrENay-8tztyI,415
|
|
3
3
|
wbcompliance/permissions.py,sha256=rb63hJ4pQHZ4QZjTIDCnqFh1LI2m_evXC7loG3B53lE,1391
|
|
4
|
-
wbcompliance/tasks.py,sha256=
|
|
4
|
+
wbcompliance/tasks.py,sha256=1yF2C1gxB-phXbYbsKqMkhYUa_Jlc1awnlcXMOFxnVA,5840
|
|
5
5
|
wbcompliance/urls.py,sha256=-190MsA5_DDPeZujun0BGCrqWOJop6EjO3NYXcv3y_o,8659
|
|
6
6
|
wbcompliance/admin/__init__.py,sha256=JiVPFKVgMQArksYuol4WMkl6BcfOBv75zJWpLmLyqV0,458
|
|
7
7
|
wbcompliance/admin/compliance_form.py,sha256=PwWYY1cvXcbKOjq0Mfkg6UCEFySJSELHYC4fls0WAhA,1632
|
|
@@ -15,25 +15,25 @@ wbcompliance/admin/risk_management/rules.py,sha256=CKWD3QvMGvD8AlDBxIeB9yH_l61T1
|
|
|
15
15
|
wbcompliance/factories/__init__.py,sha256=gpxfoKBAzYuawPSthg_z8BWh10UpS7beqB8SgjWZOM4,685
|
|
16
16
|
wbcompliance/factories/compliance.py,sha256=7saot-dJ4NvzVKdZCc9G007fsPPoMUa1QtlFnXW98hQ,8824
|
|
17
17
|
wbcompliance/factories/risk_management/__init__.py,sha256=A47UKvowLB_aZ-A21yxkuFJWvtTzBothPcOLX-p1q7A,300
|
|
18
|
-
wbcompliance/factories/risk_management/backends.py,sha256=
|
|
19
|
-
wbcompliance/factories/risk_management/checks.py,sha256=
|
|
18
|
+
wbcompliance/factories/risk_management/backends.py,sha256=ifYRGhZMgjzJCOubJQyZHNaHRiilgewaxRPCE1aGoQs,1543
|
|
19
|
+
wbcompliance/factories/risk_management/checks.py,sha256=9vxSNnP6C1ufV2bfbA3T3P51tqkeAdArDWk--w5prk0,1002
|
|
20
20
|
wbcompliance/factories/risk_management/incidents.py,sha256=5B44w5iPdXm_dv_R0biO55Pt1hXGlmzSIu9hGMAgrZg,2961
|
|
21
|
-
wbcompliance/factories/risk_management/rules.py,sha256=
|
|
21
|
+
wbcompliance/factories/risk_management/rules.py,sha256=BKu90nl6HqNT2_iHIBXR_qmgE-BkblkEdU-UCUHYYDw,3448
|
|
22
22
|
wbcompliance/filters/__init__.py,sha256=CBh2V4uX97KCmXX9P3M5BkBqBgIjVe74w05MNJ7NRQg,58
|
|
23
23
|
wbcompliance/filters/compliances.py,sha256=dKJcoPqW5aWlyPriBHLwsZnYY94GiIswK-E9pI2TYbA,6238
|
|
24
24
|
wbcompliance/filters/risk_management/__init__.py,sha256=2GbEGT87eA3_zP3zZ8OKZ11nbmf3rMfPVTg3dxxb1Zk,175
|
|
25
|
-
wbcompliance/filters/risk_management/checks.py,sha256=
|
|
26
|
-
wbcompliance/filters/risk_management/incidents.py,sha256=
|
|
27
|
-
wbcompliance/filters/risk_management/rules.py,sha256=
|
|
28
|
-
wbcompliance/filters/risk_management/tables.py,sha256=
|
|
25
|
+
wbcompliance/filters/risk_management/checks.py,sha256=xag_pyn5nUyb5hWuYnSToEctI8jtOUMmA8wjCtJAAFw,1086
|
|
26
|
+
wbcompliance/filters/risk_management/incidents.py,sha256=au3b1rSEroOwaFztSET5Tm3rqgi79RHBHQivFa4Odok,3976
|
|
27
|
+
wbcompliance/filters/risk_management/rules.py,sha256=FLUTbHqwesFmxBsMW_OVZRV2pMqvSrs9iPl_5MlBd7w,4489
|
|
28
|
+
wbcompliance/filters/risk_management/tables.py,sha256=oYOm3yLwCgKiQOLedezBrixPGEFpY4SjW74ZAPBuLmw,4252
|
|
29
29
|
wbcompliance/filters/risk_management/utils.py,sha256=8RSTURxpHfK3DstFS5nuPoa53rHWpAtggrq-Z4DmaNg,159
|
|
30
30
|
wbcompliance/fixtures/compliance.yaml,sha256=LrOTfJaQRQNIxwr_u1xGacy6gMfJSs-uT-96EGNSG-I,282
|
|
31
31
|
wbcompliance/locale/de/LC_MESSAGES/django.mo,sha256=FfQ5HV2xg7ZrJASidRJ4L-gCAbPNeQnFm940aRbb0js,378
|
|
32
|
-
wbcompliance/locale/de/LC_MESSAGES/django.po,sha256
|
|
32
|
+
wbcompliance/locale/de/LC_MESSAGES/django.po,sha256=DFpab9ItMf-HBdyd7l-QrCPLx26OS1Lxdi2B0fj42WY,38944
|
|
33
33
|
wbcompliance/locale/en/LC_MESSAGES/django.mo,sha256=UXCQbz2AxBvh-IQ7bGgjoBnijo8h9DfE9107A-2Mgkk,337
|
|
34
|
-
wbcompliance/locale/en/LC_MESSAGES/django.po,sha256=
|
|
34
|
+
wbcompliance/locale/en/LC_MESSAGES/django.po,sha256=88E5LBfvN0VkvvHPL4ZMyjh9KWchRncHS6hrF7qlMh8,38927
|
|
35
35
|
wbcompliance/locale/fr/LC_MESSAGES/django.mo,sha256=t4lh3zX7kshbDAFzXa5HU_YGPXkPzKqODNXL2MeZ5KQ,429
|
|
36
|
-
wbcompliance/locale/fr/LC_MESSAGES/django.po,sha256=
|
|
36
|
+
wbcompliance/locale/fr/LC_MESSAGES/django.po,sha256=PxjH5xsgB5HxG9VRM-x_zmyiGgvjHfQfEfjsKAQL7zQ,38995
|
|
37
37
|
wbcompliance/management/__init__.py,sha256=m66tbr6kx54PaHk0uGXZFHpn_9IJo65aJGaJKrdAgV4,429
|
|
38
38
|
wbcompliance/migrations/0001_initial_squashed_squashed_0010_alter_checkedobjectincidentrelationship_resolved_by_and_more.py,sha256=6wosnFvOHhvMhF9iD_FxnA04NhLoSB3xfahGhXgn3Rg,71200
|
|
39
39
|
wbcompliance/migrations/0011_alter_riskrule_parameters.py,sha256=RIRsuA_9B98xA7mySwJQDbISRpjOHCBCUMpYlj6WebI,607
|
|
@@ -51,25 +51,25 @@ wbcompliance/migrations/0022_riskincident_precheck.py,sha256=H2l9REAsogn7EsUMWcE
|
|
|
51
51
|
wbcompliance/migrations/0023_alter_checkedobjectincidentrelationship_unique_together_and_more.py,sha256=dSgzBAWvIs1tsegPgpr0GtBXEVKsHgtX5djuihQg93w,1486
|
|
52
52
|
wbcompliance/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
53
53
|
wbcompliance/models/__init__.py,sha256=gk3D0yZ3ZpJh1Nl-Kyc1PWm67t0Gj7t47Jl2xm9Lisk,534
|
|
54
|
-
wbcompliance/models/compliance_form.py,sha256=
|
|
55
|
-
wbcompliance/models/compliance_task.py,sha256=
|
|
56
|
-
wbcompliance/models/compliance_type.py,sha256=
|
|
54
|
+
wbcompliance/models/compliance_form.py,sha256=uyU8DhMuEp1uXcMyE1fdPZ0mxHO0H0Ecc0I7XDPR2Dc,24867
|
|
55
|
+
wbcompliance/models/compliance_task.py,sha256=cwX7KA681yneK5xw2I8YFYjK8ODnoalo0AAudBYjkYQ,30794
|
|
56
|
+
wbcompliance/models/compliance_type.py,sha256=_v5HDbzDN8b1bRGpTBI2ppAL0PjXjKeSC3PVI2Q-eZw,4733
|
|
57
57
|
wbcompliance/models/enums.py,sha256=id1m8trG7b6Sw3Sa9VrLgD104GC2nG9A8ngJzaRqIIQ,424
|
|
58
58
|
wbcompliance/models/risk_management/__init__.py,sha256=DJXoHheA5REDpPYP0uyRmFWyNKP-ir_z5YB61CN6N-E,247
|
|
59
59
|
wbcompliance/models/risk_management/backend.py,sha256=EsGOlBIDTVJdZzCYtFmRiL8sUc0LDQJebHq9mwR_Xm4,5061
|
|
60
60
|
wbcompliance/models/risk_management/checks.py,sha256=drBNhT7kj7TA1EclKX9jpPp-IycNcHvjj3xZsbKqB2E,12670
|
|
61
61
|
wbcompliance/models/risk_management/dispatch.py,sha256=cLi63vSGbk9xhCoVgr4UmVk2kfYmGiyohKINSvCodb0,1423
|
|
62
|
-
wbcompliance/models/risk_management/incidents.py,sha256=
|
|
62
|
+
wbcompliance/models/risk_management/incidents.py,sha256=bDSW34HJMKy1flbYxHI7XEjkJY9rc3FqKoK-9RYagEQ,24312
|
|
63
63
|
wbcompliance/models/risk_management/mixins.py,sha256=vitLClx1QwmhooXselB_MqNoLbxMRp-uNQKsvHDooj8,4449
|
|
64
|
-
wbcompliance/models/risk_management/rules.py,sha256=
|
|
64
|
+
wbcompliance/models/risk_management/rules.py,sha256=fDjHoI7A6CudRHP_8j3Wr0UgZFuhHk2dkKIKyGvY9nc,25918
|
|
65
65
|
wbcompliance/serializers/__init__.py,sha256=OhRIuUrexqQePCISpu-BKry9dfioYGfpO8RwlcwhHtI,1122
|
|
66
66
|
wbcompliance/serializers/compliance_form.py,sha256=OxPILlup_CP4Qwvu864oMqz7QUZsk2QOkOGFifWP3gM,11615
|
|
67
67
|
wbcompliance/serializers/compliance_task.py,sha256=euTQya2LdexoRblew9zMkv40kU7wkW9nU2uLTI-lwow,17035
|
|
68
68
|
wbcompliance/serializers/compliance_type.py,sha256=kxQTLS9JfGStJ1dJYmU_TlZh7Jqn3_9h_ZMAjiL61lA,1048
|
|
69
69
|
wbcompliance/serializers/risk_management/__init__.py,sha256=_95Z1L6f7muQ0UvbEY1P3ROK3nqwkjhgYf3onRhWmv0,733
|
|
70
|
-
wbcompliance/serializers/risk_management/checks.py,sha256=
|
|
71
|
-
wbcompliance/serializers/risk_management/incidents.py,sha256=
|
|
72
|
-
wbcompliance/serializers/risk_management/rules.py,sha256=
|
|
70
|
+
wbcompliance/serializers/risk_management/checks.py,sha256=wMG_z84nZ2d5lqWaW4XEDrgeqs0__Yyu_Cvam04iEUs,1764
|
|
71
|
+
wbcompliance/serializers/risk_management/incidents.py,sha256=SrNJ5fU7XHZX4CEWF8y7kJ99f_BANLocTHO0th1GpKk,8483
|
|
72
|
+
wbcompliance/serializers/risk_management/rules.py,sha256=mxxMzTYt65Hdkn6EAVZWcUh_igTNa0VjApkNPv0P5YY,5512
|
|
73
73
|
wbcompliance/templates/compliance/compliance_form.html,sha256=IR71gVnKlUZNalS63D4v18uwNg2GtbOWtqX4bCAON08,11943
|
|
74
74
|
wbcompliance/templates/compliance/review_compliance_task_report.html,sha256=-YPsQNS8N0eFhKd1cQ_8o5Exw3MdFgrh4muUMFcg-Aw,7819
|
|
75
75
|
wbcompliance/templates/risk_management/incident_notification.html,sha256=zg4cnfWq5gV60b5ZtDDXL-rElBtdr5RwQL0DO4XVnbY,1506
|
|
@@ -77,21 +77,22 @@ wbcompliance/templates/risk_management/incident_report.html,sha256=1Npuale82RfS-
|
|
|
77
77
|
wbcompliance/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
78
78
|
wbcompliance/tests/conftest.py,sha256=uoxRfVmFK3VDQsu_TQrn5-RxUhDfBCd4dijrKL2uvfs,1953
|
|
79
79
|
wbcompliance/tests/disable_signals.py,sha256=N3nosCNpUDdauokoWTOLOpqXgZo7BD52OCE9uUUcXyA,2386
|
|
80
|
-
wbcompliance/tests/mixins.py,sha256=
|
|
80
|
+
wbcompliance/tests/mixins.py,sha256=mfCd0Ul_YsRx_SQCv-ybqkXWQGT7QTU341cdKv-wDzc,396
|
|
81
81
|
wbcompliance/tests/signals.py,sha256=nCQBFcZNrkTuMxmVyY_fFrbj3C7b94i0s_MYlr-KKoU,4010
|
|
82
82
|
wbcompliance/tests/test_filters.py,sha256=LV9lma5c_16TWjyKohR-1Qs7Z9Fd_p6lhnswceVQuI8,1017
|
|
83
83
|
wbcompliance/tests/test_models.py,sha256=zoEK44J8ZfcKYm65ZZYj_wRWhMEGqdURnuDSYOSedFs,2604
|
|
84
84
|
wbcompliance/tests/test_serializers.py,sha256=JxlLGAxnOHu2etULUN4uy1Q3AFD8K4ZPTLcU1rBMZww,1881
|
|
85
|
+
wbcompliance/tests/test_tasks.py,sha256=ynsspQCJoB6wnRDn1vWdRKMmNtToF1L5EIyEP4Ndxpo,1246
|
|
85
86
|
wbcompliance/tests/test_views.py,sha256=nZIpfttDP-BedwYA-Y6Wkeh43lAJBNEb9tnhfdByrzw,16839
|
|
86
87
|
wbcompliance/tests/tests.py,sha256=5AwXagOkUAF_ahHBQTHzYOpUZEEOxEjuK_bZL4sdJCo,635
|
|
87
88
|
wbcompliance/tests/risk_management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
88
89
|
wbcompliance/tests/risk_management/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
89
90
|
wbcompliance/tests/risk_management/models/test_backends.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
90
91
|
wbcompliance/tests/risk_management/models/test_checks.py,sha256=F4Pbn7q4PBmWx5fjvkwEclioG1mEt2M53maegSI9hYU,2467
|
|
91
|
-
wbcompliance/tests/risk_management/models/test_incidents.py,sha256=
|
|
92
|
+
wbcompliance/tests/risk_management/models/test_incidents.py,sha256=kBDZ1LqaUY592g1_nexV5ye9Wz7AoKppAJhGv_qj00s,15035
|
|
92
93
|
wbcompliance/tests/risk_management/models/test_rules.py,sha256=j3g2gK6SV0F9a7U2eh2bEzPLI2wtZZoueQpzH6NTxpw,11177
|
|
93
94
|
wbcompliance/viewsets/__init__.py,sha256=JVv3mT5i-9dSYIC_lrvJqcFCPI92KQp9AZ21lR-eqEg,1498
|
|
94
|
-
wbcompliance/viewsets/compliance_form.py,sha256=
|
|
95
|
+
wbcompliance/viewsets/compliance_form.py,sha256=_oAG5zkPHQ4g_IVy_MSQamk_gk1XBlgX6CDU8YHhHFE,17298
|
|
95
96
|
wbcompliance/viewsets/compliance_task.py,sha256=gz071EDL3kctR_pv38m_vaNplw-6Rdvuq5W6CYLV_4Y,19213
|
|
96
97
|
wbcompliance/viewsets/compliance_type.py,sha256=XtPyVe6szzzpXEWA_F9JRSaI8YSxe--eydouCx1oTKM,1294
|
|
97
98
|
wbcompliance/viewsets/buttons/__init__.py,sha256=rL54B0c3GQiqowqEzc0d9BOneeQ39XblPssRZ-vwiwA,239
|
|
@@ -125,10 +126,10 @@ wbcompliance/viewsets/menu/compliance_task.py,sha256=SsB9wrP13VBdxFBYYOT2Dh0isRk
|
|
|
125
126
|
wbcompliance/viewsets/menu/compliance_type.py,sha256=8jvu9dFhTeYqJy0lhx4BD_rOeVi4iz073BPKYbnkuFY,684
|
|
126
127
|
wbcompliance/viewsets/menu/risk_management.py,sha256=3rxNrWw9sET7BqulxXWjAehg5NRIKmNoyTrBLOHx4g8,1969
|
|
127
128
|
wbcompliance/viewsets/risk_management/__init__.py,sha256=Gu2vavnClUg9RKpGMhwqo_DOv-FLAGlBf7BbYNyEkJM,821
|
|
128
|
-
wbcompliance/viewsets/risk_management/checks.py,sha256=
|
|
129
|
-
wbcompliance/viewsets/risk_management/incidents.py,sha256=
|
|
129
|
+
wbcompliance/viewsets/risk_management/checks.py,sha256=kCitq6tlqW_z_oGGiRqRKft3XDlLq0gEGDRIuT4wYlI,2377
|
|
130
|
+
wbcompliance/viewsets/risk_management/incidents.py,sha256=XLxcmcbIvUEPwIm2R2T5Z_XErFbWEWNjEihHF6p2Gv0,8184
|
|
130
131
|
wbcompliance/viewsets/risk_management/mixins.py,sha256=g8gF7Glzc36bKfKng9jlb9CCXAqsVZsGfHc6SjDHGlY,1559
|
|
131
|
-
wbcompliance/viewsets/risk_management/rules.py,sha256=
|
|
132
|
+
wbcompliance/viewsets/risk_management/rules.py,sha256=IDb4YSfcSLeMugkIh-7m4q2B-FKKTtF92LXX_RtNRIE,6888
|
|
132
133
|
wbcompliance/viewsets/risk_management/tables.py,sha256=Yj_oJXjh-9trPmRs2pFRAVAe15TnA9542fdXkX8xeq4,3896
|
|
133
134
|
wbcompliance/viewsets/titles/__init__.py,sha256=bzKjQrFzqTUSH8OxBAeI7Cc6HHGAIae0gBp8fzzgpfw,589
|
|
134
135
|
wbcompliance/viewsets/titles/compliance_form.py,sha256=9LdQf54U6cAJwdjNxuaxFKEXkLXA8EloeR9baziqLkA,4256
|
|
@@ -139,6 +140,6 @@ wbcompliance/viewsets/titles/risk_managment/checks.py,sha256=47DEQpj8HBSa-_TImW-
|
|
|
139
140
|
wbcompliance/viewsets/titles/risk_managment/incidents.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
140
141
|
wbcompliance/viewsets/titles/risk_managment/rules.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
141
142
|
wbcompliance/viewsets/titles/risk_managment/tables.py,sha256=x_9mr6JWZ9GVNAEvfdNCeFZtGGYSG0-sXrR9pwTyocU,256
|
|
142
|
-
wbcompliance-1.
|
|
143
|
-
wbcompliance-1.
|
|
144
|
-
wbcompliance-1.
|
|
143
|
+
wbcompliance-1.60.1.dist-info/METADATA,sha256=sa3biD3E90E--2CgVYA2ZrB5jt78uElKoq8DT4R8pM0,196
|
|
144
|
+
wbcompliance-1.60.1.dist-info/WHEEL,sha256=aha0VrrYvgDJ3Xxl3db_g_MDIW-ZexDdrc_m-Hk8YY4,105
|
|
145
|
+
wbcompliance-1.60.1.dist-info/RECORD,,
|
|
File without changes
|