wbcompliance 1.61.3__py2.py3-none-any.whl → 1.61.4__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/models/compliance_form.py +2 -4
- wbcompliance/models/risk_management/rules.py +1 -1
- wbcompliance/permissions.py +2 -3
- wbcompliance/serializers/compliance_form.py +1 -1
- wbcompliance/tests/risk_management/models/test_rules.py +1 -1
- wbcompliance/tests/test_models.py +2 -2
- wbcompliance/viewsets/menu/risk_management.py +4 -5
- wbcompliance/viewsets/risk_management/incidents.py +1 -1
- wbcompliance/viewsets/risk_management/rules.py +3 -3
- {wbcompliance-1.61.3.dist-info → wbcompliance-1.61.4.dist-info}/METADATA +1 -1
- {wbcompliance-1.61.3.dist-info → wbcompliance-1.61.4.dist-info}/RECORD +12 -12
- {wbcompliance-1.61.3.dist-info → wbcompliance-1.61.4.dist-info}/WHEEL +0 -0
|
@@ -29,7 +29,6 @@ from wbcore.enums import RequestType
|
|
|
29
29
|
from wbcore.markdown.utils import custom_url_fetcher
|
|
30
30
|
from wbcore.metadata.configs.buttons import ActionButton, ButtonDefaultColor
|
|
31
31
|
from wbcore.models import WBModel
|
|
32
|
-
from wbcore.permissions.shortcuts import get_internal_users
|
|
33
32
|
from weasyprint import HTML
|
|
34
33
|
|
|
35
34
|
from .compliance_type import ComplianceDocumentMixin, ComplianceType, can_active_request
|
|
@@ -263,10 +262,9 @@ class ComplianceForm(ComplianceDocumentMixin, WBModel):
|
|
|
263
262
|
self.notify(title, msg, recipients, admin_compliance=True)
|
|
264
263
|
|
|
265
264
|
def get_signing_users(self) -> QuerySet["User"]:
|
|
265
|
+
users = User.objects.filter(is_active=True)
|
|
266
266
|
if self.only_internal:
|
|
267
|
-
users =
|
|
268
|
-
else:
|
|
269
|
-
users = User.objects.filter(is_active=True)
|
|
267
|
+
users = users.filter_internal()
|
|
270
268
|
if self.assigned_to.exists():
|
|
271
269
|
users = users.filter(groups__in=self.assigned_to.all())
|
|
272
270
|
return users.distinct()
|
|
@@ -24,8 +24,8 @@ from pandas.tseries.offsets import BDay
|
|
|
24
24
|
from rest_framework.reverse import reverse
|
|
25
25
|
from wbcore.contrib.authentication.models.users import User
|
|
26
26
|
from wbcore.contrib.directory.models import Person
|
|
27
|
-
from wbcore.contrib.guardian.models.mixins import PermissionObjectModelMixin
|
|
28
27
|
from wbcore.contrib.notifications.dispatch import send_notification
|
|
28
|
+
from wbcore.contrib.permission.models.mixins import PermissionObjectModelMixin
|
|
29
29
|
from wbcore.models import WBModel
|
|
30
30
|
from wbcore.utils.models import ComplexToStringMixin
|
|
31
31
|
from wbcore.utils.rrules import convert_rrulestr_to_dict
|
wbcompliance/permissions.py
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
from guardian.core import ObjectPermissionChecker
|
|
2
2
|
from rest_framework.permissions import IsAuthenticated
|
|
3
|
-
from wbcore.permissions.shortcuts import is_internal_user
|
|
4
3
|
|
|
5
4
|
from wbcompliance.models.risk_management import RiskRule
|
|
6
5
|
|
|
@@ -26,8 +25,8 @@ class RulePermission(IsAuthenticated):
|
|
|
26
25
|
|
|
27
26
|
|
|
28
27
|
def is_admin_compliance(request):
|
|
29
|
-
return
|
|
28
|
+
return request.user.is_internal and request.user.has_perm("wbcompliance.administrate_compliance")
|
|
30
29
|
|
|
31
30
|
|
|
32
31
|
def is_internal_employee_compliance(request):
|
|
33
|
-
return
|
|
32
|
+
return request.user.is_internal and not is_admin_compliance(request)
|
|
@@ -7,7 +7,7 @@ from wbcore import serializers as wb_serializers
|
|
|
7
7
|
from wbcore.contrib.authentication.serializers import GroupRepresentationSerializer
|
|
8
8
|
from wbcore.contrib.directory.models import Person
|
|
9
9
|
from wbcore.contrib.directory.serializers import PersonRepresentationSerializer
|
|
10
|
-
from wbcore.
|
|
10
|
+
from wbcore.contrib.permission.internal.registry import get_internal_groups
|
|
11
11
|
|
|
12
12
|
from wbcompliance.models import (
|
|
13
13
|
ComplianceForm,
|
|
@@ -9,7 +9,7 @@ from django.core.exceptions import ValidationError
|
|
|
9
9
|
from faker import Faker
|
|
10
10
|
from guardian.utils import get_anonymous_user
|
|
11
11
|
from psycopg.types.range import NumericRange
|
|
12
|
-
from wbcore.
|
|
12
|
+
from wbcore.contrib.permission.utils import perm_to_permission
|
|
13
13
|
|
|
14
14
|
from wbcompliance.models import (
|
|
15
15
|
RiskIncident,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import pytest
|
|
2
2
|
from wbcore.contrib.authentication.factories import UserFactory
|
|
3
|
-
from wbcore.
|
|
3
|
+
from wbcore.contrib.authentication.models import User
|
|
4
4
|
|
|
5
5
|
from wbcompliance.models import ComplianceForm, ComplianceFormSignature
|
|
6
6
|
|
|
@@ -44,7 +44,7 @@ class TestSpecificModels(UserTestMixin):
|
|
|
44
44
|
compliance_form1.active()
|
|
45
45
|
assert (
|
|
46
46
|
ComplianceFormSignature.objects.filter(compliance_form=compliance_form1).count()
|
|
47
|
-
==
|
|
47
|
+
== User.objects.filter_internal().count()
|
|
48
48
|
)
|
|
49
49
|
|
|
50
50
|
# def test_only_internal(self, compliance_form_factory):
|
|
@@ -2,7 +2,6 @@ from contextlib import suppress
|
|
|
2
2
|
|
|
3
3
|
from django.utils.translation import gettext as _
|
|
4
4
|
from wbcore.menus import ItemPermission, Menu, MenuItem
|
|
5
|
-
from wbcore.permissions.shortcuts import is_internal_user
|
|
6
5
|
|
|
7
6
|
from wbcompliance.models.risk_management.rules import RuleGroup
|
|
8
7
|
|
|
@@ -10,13 +9,13 @@ RULE_MENUITEM = MenuItem(
|
|
|
10
9
|
label=_("Rules"),
|
|
11
10
|
endpoint="wbcompliance:riskrule-list",
|
|
12
11
|
permission=ItemPermission(
|
|
13
|
-
method=lambda request:
|
|
12
|
+
method=lambda request: request.user.is_internal, permissions=["wbcompliance.view_riskrule"]
|
|
14
13
|
),
|
|
15
14
|
add=MenuItem(
|
|
16
15
|
label=_("Add Rule"),
|
|
17
16
|
endpoint="wbcompliance:riskrule-list",
|
|
18
17
|
permission=ItemPermission(
|
|
19
|
-
method=lambda request:
|
|
18
|
+
method=lambda request: request.user.is_internal, permissions=["wbcompliance.add_riskrule"]
|
|
20
19
|
),
|
|
21
20
|
),
|
|
22
21
|
)
|
|
@@ -31,7 +30,7 @@ def _get_incident_menu():
|
|
|
31
30
|
label=rule_group.name,
|
|
32
31
|
endpoint="wbcompliance:riskincident-list",
|
|
33
32
|
permission=ItemPermission(
|
|
34
|
-
method=lambda request:
|
|
33
|
+
method=lambda request: request.user.is_internal,
|
|
35
34
|
permissions=["wbcompliance.view_riskincident"],
|
|
36
35
|
),
|
|
37
36
|
endpoint_get_parameters={"rule_group": rule_group.id},
|
|
@@ -43,7 +42,7 @@ def _get_incident_menu():
|
|
|
43
42
|
label=_("Incidents"),
|
|
44
43
|
endpoint="wbcompliance:riskincident-list",
|
|
45
44
|
permission=ItemPermission(
|
|
46
|
-
method=lambda request:
|
|
45
|
+
method=lambda request: request.user.is_internal, permissions=["wbcompliance.view_riskincident"]
|
|
47
46
|
),
|
|
48
47
|
)
|
|
49
48
|
|
|
@@ -21,8 +21,8 @@ from django.utils.functional import cached_property
|
|
|
21
21
|
from rest_framework import status
|
|
22
22
|
from rest_framework.decorators import action
|
|
23
23
|
from wbcore import viewsets
|
|
24
|
-
from wbcore.contrib.guardian.models import UserObjectPermission
|
|
25
24
|
from wbcore.contrib.icons import WBIcon
|
|
25
|
+
from wbcore.contrib.permission.models import UserObjectPermission
|
|
26
26
|
|
|
27
27
|
from wbcompliance.filters import (
|
|
28
28
|
CheckedObjectIncidentRelationshipFilterSet,
|
|
@@ -7,7 +7,7 @@ from rest_framework import status
|
|
|
7
7
|
from rest_framework.decorators import action
|
|
8
8
|
from wbcore import serializers as wb_serializers
|
|
9
9
|
from wbcore import viewsets
|
|
10
|
-
from wbcore.contrib.
|
|
10
|
+
from wbcore.contrib.permission.viewsets.mixins import ObjectPermissionFilterMixin
|
|
11
11
|
from wbcore.utils.date import get_date_interval_from_request
|
|
12
12
|
|
|
13
13
|
from wbcompliance.filters import RiskRuleFilterSet
|
|
@@ -66,7 +66,7 @@ class RuleThresholdRepresentationViewSet(viewsets.RepresentationViewSet):
|
|
|
66
66
|
serializer_class = RuleThresholdRepresentationSerializer
|
|
67
67
|
|
|
68
68
|
|
|
69
|
-
class RiskRuleRepresentationViewSet(
|
|
69
|
+
class RiskRuleRepresentationViewSet(ObjectPermissionFilterMixin, viewsets.RepresentationViewSet):
|
|
70
70
|
queryset = RiskRule.objects.all()
|
|
71
71
|
serializer_class = RiskRuleRepresentationSerializer
|
|
72
72
|
search_fields = (
|
|
@@ -105,7 +105,7 @@ class RuleCheckedObjectRelationshipRiskRuleModelViewSet(viewsets.ModelViewSet):
|
|
|
105
105
|
return super().get_queryset().filter(rule_id=self.kwargs["rule_id"])
|
|
106
106
|
|
|
107
107
|
|
|
108
|
-
class RiskRuleModelViewSet(
|
|
108
|
+
class RiskRuleModelViewSet(ObjectPermissionFilterMixin, viewsets.ModelViewSet):
|
|
109
109
|
display_config_class = RiskRuleDisplayConfig
|
|
110
110
|
endpoint_config_class = RiskRuleEndpointConfig
|
|
111
111
|
button_config_class = RiskRuleButtonConfig
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
wbcompliance/__init__.py,sha256=J-j-u0itpEFT6irdmWmixQqYMadNl1X91TxUmoiLHMI,22
|
|
2
2
|
wbcompliance/apps.py,sha256=YtNYwXg6t_XiLQf0TxCiXYRs1tvUYtGrENay-8tztyI,415
|
|
3
|
-
wbcompliance/permissions.py,sha256=
|
|
3
|
+
wbcompliance/permissions.py,sha256=f9ySGD59rNFhGmqNeBxVykprZy6TDuTa3eKcQM2izuw,1321
|
|
4
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
|
|
@@ -51,7 +51,7 @@ 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=
|
|
54
|
+
wbcompliance/models/compliance_form.py,sha256=k2NvwOJm_rFKPy5SRfMBNrdbLyueL-DjIYDReyVwOA4,24792
|
|
55
55
|
wbcompliance/models/compliance_task.py,sha256=cwX7KA681yneK5xw2I8YFYjK8ODnoalo0AAudBYjkYQ,30794
|
|
56
56
|
wbcompliance/models/compliance_type.py,sha256=_v5HDbzDN8b1bRGpTBI2ppAL0PjXjKeSC3PVI2Q-eZw,4733
|
|
57
57
|
wbcompliance/models/enums.py,sha256=id1m8trG7b6Sw3Sa9VrLgD104GC2nG9A8ngJzaRqIIQ,424
|
|
@@ -61,9 +61,9 @@ wbcompliance/models/risk_management/checks.py,sha256=drBNhT7kj7TA1EclKX9jpPp-Iyc
|
|
|
61
61
|
wbcompliance/models/risk_management/dispatch.py,sha256=cLi63vSGbk9xhCoVgr4UmVk2kfYmGiyohKINSvCodb0,1423
|
|
62
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=uuEjamSVURlgXX4pzLumGdY3Fl5Yh58bdJSR3R3-8EA,25920
|
|
65
65
|
wbcompliance/serializers/__init__.py,sha256=OhRIuUrexqQePCISpu-BKry9dfioYGfpO8RwlcwhHtI,1122
|
|
66
|
-
wbcompliance/serializers/compliance_form.py,sha256=
|
|
66
|
+
wbcompliance/serializers/compliance_form.py,sha256=hDQMZZEExFNNMTzVj7brepYm_2nL1328C29LNCeCAeQ,11630
|
|
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
|
|
@@ -80,7 +80,7 @@ wbcompliance/tests/disable_signals.py,sha256=N3nosCNpUDdauokoWTOLOpqXgZo7BD52OCE
|
|
|
80
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
|
-
wbcompliance/tests/test_models.py,sha256=
|
|
83
|
+
wbcompliance/tests/test_models.py,sha256=sNh2yA-LKdMHliVaNKUVPuiT3LGkcgbIujJPm8cKObc,2608
|
|
84
84
|
wbcompliance/tests/test_serializers.py,sha256=JxlLGAxnOHu2etULUN4uy1Q3AFD8K4ZPTLcU1rBMZww,1881
|
|
85
85
|
wbcompliance/tests/test_tasks.py,sha256=ynsspQCJoB6wnRDn1vWdRKMmNtToF1L5EIyEP4Ndxpo,1246
|
|
86
86
|
wbcompliance/tests/test_views.py,sha256=nZIpfttDP-BedwYA-Y6Wkeh43lAJBNEb9tnhfdByrzw,16839
|
|
@@ -90,7 +90,7 @@ wbcompliance/tests/risk_management/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-
|
|
|
90
90
|
wbcompliance/tests/risk_management/models/test_backends.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
91
91
|
wbcompliance/tests/risk_management/models/test_checks.py,sha256=F4Pbn7q4PBmWx5fjvkwEclioG1mEt2M53maegSI9hYU,2467
|
|
92
92
|
wbcompliance/tests/risk_management/models/test_incidents.py,sha256=kBDZ1LqaUY592g1_nexV5ye9Wz7AoKppAJhGv_qj00s,15035
|
|
93
|
-
wbcompliance/tests/risk_management/models/test_rules.py,sha256=
|
|
93
|
+
wbcompliance/tests/risk_management/models/test_rules.py,sha256=JVTUzBAnMkemAiaGWI3Q0ZwPM99xMIkwhTUvf3rZ3ag,11184
|
|
94
94
|
wbcompliance/viewsets/__init__.py,sha256=JVv3mT5i-9dSYIC_lrvJqcFCPI92KQp9AZ21lR-eqEg,1498
|
|
95
95
|
wbcompliance/viewsets/compliance_form.py,sha256=_oAG5zkPHQ4g_IVy_MSQamk_gk1XBlgX6CDU8YHhHFE,17298
|
|
96
96
|
wbcompliance/viewsets/compliance_task.py,sha256=gz071EDL3kctR_pv38m_vaNplw-6Rdvuq5W6CYLV_4Y,19213
|
|
@@ -124,12 +124,12 @@ wbcompliance/viewsets/menu/__init__.py,sha256=TpXH4kxAhJDy6SVpelL9LCxFoRUD-WpbcV
|
|
|
124
124
|
wbcompliance/viewsets/menu/compliance_form.py,sha256=FJk6k1y-K-fMkwneDJgEwb7Qbq6kibynaK9-Vg9w8G4,1852
|
|
125
125
|
wbcompliance/viewsets/menu/compliance_task.py,sha256=SsB9wrP13VBdxFBYYOT2Dh0isRk8uSYbcdnn7qXe81k,4510
|
|
126
126
|
wbcompliance/viewsets/menu/compliance_type.py,sha256=8jvu9dFhTeYqJy0lhx4BD_rOeVi4iz073BPKYbnkuFY,684
|
|
127
|
-
wbcompliance/viewsets/menu/risk_management.py,sha256=
|
|
127
|
+
wbcompliance/viewsets/menu/risk_management.py,sha256=YYlAd5ST8iuIOXT3kHlbs-zQ5CcY-6Z8w5ZzMjOSPbQ,1887
|
|
128
128
|
wbcompliance/viewsets/risk_management/__init__.py,sha256=Gu2vavnClUg9RKpGMhwqo_DOv-FLAGlBf7BbYNyEkJM,821
|
|
129
129
|
wbcompliance/viewsets/risk_management/checks.py,sha256=kCitq6tlqW_z_oGGiRqRKft3XDlLq0gEGDRIuT4wYlI,2377
|
|
130
|
-
wbcompliance/viewsets/risk_management/incidents.py,sha256=
|
|
130
|
+
wbcompliance/viewsets/risk_management/incidents.py,sha256=NzD9BSDoRD0p_yNoM9B1_Cus5d31KWrBZqssYBxg2S4,8186
|
|
131
131
|
wbcompliance/viewsets/risk_management/mixins.py,sha256=g8gF7Glzc36bKfKng9jlb9CCXAqsVZsGfHc6SjDHGlY,1559
|
|
132
|
-
wbcompliance/viewsets/risk_management/rules.py,sha256=
|
|
132
|
+
wbcompliance/viewsets/risk_management/rules.py,sha256=t95x0OefTReUY592fVovU4wQ1r-XajRAjTu3Hzhw28k,6914
|
|
133
133
|
wbcompliance/viewsets/risk_management/tables.py,sha256=Yj_oJXjh-9trPmRs2pFRAVAe15TnA9542fdXkX8xeq4,3896
|
|
134
134
|
wbcompliance/viewsets/titles/__init__.py,sha256=bzKjQrFzqTUSH8OxBAeI7Cc6HHGAIae0gBp8fzzgpfw,589
|
|
135
135
|
wbcompliance/viewsets/titles/compliance_form.py,sha256=9LdQf54U6cAJwdjNxuaxFKEXkLXA8EloeR9baziqLkA,4256
|
|
@@ -140,6 +140,6 @@ wbcompliance/viewsets/titles/risk_managment/checks.py,sha256=47DEQpj8HBSa-_TImW-
|
|
|
140
140
|
wbcompliance/viewsets/titles/risk_managment/incidents.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
141
141
|
wbcompliance/viewsets/titles/risk_managment/rules.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
142
142
|
wbcompliance/viewsets/titles/risk_managment/tables.py,sha256=x_9mr6JWZ9GVNAEvfdNCeFZtGGYSG0-sXrR9pwTyocU,256
|
|
143
|
-
wbcompliance-1.61.
|
|
144
|
-
wbcompliance-1.61.
|
|
145
|
-
wbcompliance-1.61.
|
|
143
|
+
wbcompliance-1.61.4.dist-info/METADATA,sha256=OVwH7D0J1eQ-LLabEXaPHOxGfm8YoynSpZDgEVbF9og,196
|
|
144
|
+
wbcompliance-1.61.4.dist-info/WHEEL,sha256=aha0VrrYvgDJ3Xxl3db_g_MDIW-ZexDdrc_m-Hk8YY4,105
|
|
145
|
+
wbcompliance-1.61.4.dist-info/RECORD,,
|
|
File without changes
|