Skip to content

Commit f8a2c81

Browse files
sharad-sharmavedharish
authored andcommitted
fix: lint issues for Access/helpers.py
1 parent 7b9b7da commit f8a2c81

File tree

8 files changed

+52
-43
lines changed

8 files changed

+52
-43
lines changed

Diff for: .github/workflows/unit-tests.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,6 @@ jobs:
2525
run: |
2626
pip install -r Access/access_modules/requirements.txt --no-cache-dir --ignore-installed
2727
- name: Lint code base
28-
run: python -m pylama Access/accessrequest_helper.py Access/models.py Access/views.py Access/views_helper.py Access/validators.py Access/notifications.py scripts bootprocess enigma_automation
28+
run: python -m pylama Access/accessrequest_helper.py Access/models.py Access/views.py Access/views_helper.py Access/validators.py Access/notifications.py Access/helpers.py scripts bootprocess enigma_automation
2929
- name: Test with pytest
3030
run: python -m pytest -v --cov --disable-warnings

Diff for: Access/context_processors.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from Access.models import User
2-
from Access.helpers import get_available_access_modules, getPossibleApproverPermissions
2+
from Access.helpers import get_available_access_modules, get_possible_approver_permissions
33

44

55
def add_variables_to_context(request):

Diff for: Access/decorators.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from django.core.exceptions import PermissionDenied
2-
from Access.helpers import getPossibleApproverPermissions
2+
from Access.helpers import get_possible_approver_permissions
33
from django.core.paginator import Paginator
44

55

@@ -41,7 +41,7 @@ def wrap(request, *args, **kwargs):
4141

4242
def user_any_approver(function):
4343
def wrap(request, *args, **kwargs):
44-
all_approve_permissions = getPossibleApproverPermissions()
44+
all_approve_permissions = get_possible_approver_permissions()
4545
is_any_approver = request.user.user.is_an_approver(all_approve_permissions)
4646
if is_any_approver:
4747
return function(request, *args, **kwargs)

Diff for: Access/helpers.py

+25-16
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,23 @@
1-
from django.template import loader
1+
""" module contains helper methods """
22
from os.path import dirname, basename, isfile, join
33
import glob
44
import logging
55
import re
66
import datetime
77
import random
8-
8+
from typing import Dict
9+
from django.template import loader
910
from Access.access_modules import * # NOQA
10-
from enigma_automation.settings import PERMISSION_CONSTANTS
1111
from Access.models import User
12+
from enigma_automation.settings import PERMISSION_CONSTANTS
1213

1314
logger = logging.getLogger(__name__)
1415

15-
available_accesses = []
16-
cached_accesses = []
16+
MAP_ACCESSES: Dict[str, list[object]] = {}
1717

1818

1919
def get_available_access_module_from_tag(tag):
20+
""" method to get available access module from tag """
2021
all_modules = get_available_access_modules()
2122
if tag in all_modules:
2223
return get_available_access_modules()[tag]
@@ -31,27 +32,29 @@ def get_available_access_module_desc():
3132

3233

3334
def get_available_access_type():
35+
""" method to get available access type """
3436
available_accesses_type = [access.access_desc() for access in _get_modules_on_disk()]
3537
return available_accesses_type
3638

3739

3840
def get_available_access_modules():
39-
global available_accesses
40-
if len(available_accesses) > 0:
41-
return available_accesses.copy()
41+
""" method to get available access modules """
42+
if MAP_ACCESSES.get("AVAILABLE_ACCESSES"):
43+
return MAP_ACCESSES.get("AVAILABLE_ACCESSES").copy()
4244

4345
available_accesses = {
4446
access.tag(): access for access in _get_modules_on_disk() if access.available
4547
}
48+
MAP_ACCESSES["AVAILABLE_ACCESSES"] = available_accesses
4649
return available_accesses.copy()
4750

4851

4952
def _get_modules_on_disk():
50-
global cached_accesses
51-
if len(cached_accesses) > 0:
52-
return cached_accesses
53+
if MAP_ACCESSES.get("CACHED_ACCESSES"):
54+
return MAP_ACCESSES.get("CACHED_ACCESSES")
55+
5356
access_modules_dirs = glob.glob(join(dirname(__file__), "access_modules", "*"))
54-
# create a deepcopy copy of the list so we can remove items from the original list
57+
# create a deepcopy copy of the list, so we can remove items from the original list
5558
access_modules_dirs_copy = access_modules_dirs[:]
5659
for each_dir in access_modules_dirs_copy:
5760
if re.search(r"/(base_|__pycache__|secrets)", each_dir):
@@ -62,13 +65,15 @@ def _get_modules_on_disk():
6265
for f in access_modules_dirs
6366
if not isfile(f)
6467
]
68+
MAP_ACCESSES["CACHED_ACCESSES"] = cached_accesses
6569
return cached_accesses
6670

6771

6872
def check_user_permissions(user, permissions):
73+
""" method to check user permission """
6974
if hasattr(user, "user"):
7075
permission_labels = [permission.label for permission in user.user.permissions]
71-
if type(permissions) == list:
76+
if isinstance(permissions, list):
7277
if len(set(permissions).intersection(permission_labels)) > 0:
7378
return True
7479
else:
@@ -78,6 +83,7 @@ def check_user_permissions(user, permissions):
7883

7984

8085
def sla_breached(requested_on):
86+
""" method to handle sla breach """
8187
diff = datetime.datetime.now().replace(tzinfo=None) - requested_on.replace(
8288
tzinfo=None
8389
)
@@ -86,23 +92,26 @@ def sla_breached(requested_on):
8692
return hours >= 24
8793

8894

89-
def generateStringFromTemplate(filename, **kwargs):
95+
def generate_string_from_template(filename, **kwargs):
96+
""" method to generate string from template """
9097
template = loader.get_template(filename)
9198
vals = {}
9299
for key, value in kwargs.items():
93100
vals[key] = value
94101
return template.render(vals)
95102

96103

97-
def getPossibleApproverPermissions():
104+
def get_possible_approver_permissions():
105+
""" method to get possible approver permissions """
98106
all_approver_permissions = [PERMISSION_CONSTANTS["DEFAULT_APPROVER_PERMISSION"]]
99-
for each_tag, each_module in get_available_access_modules().items():
107+
for _each_tag, each_module in get_available_access_modules().items():
100108
approver_permissions = each_module.fetch_approver_permissions()
101109
all_approver_permissions.extend(approver_permissions.values())
102110
return list(set(all_approver_permissions))
103111

104112

105113
def get_approvers():
114+
""" method to get approvers """
106115
emails = [
107116
user.email
108117
for user in User.get_active_users_with_permission(

Diff for: Access/notifications.py

+15-15
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
def send_new_group_create_notification(auth_user, date_time, new_group, member_list):
3131
""" method to send group create notification """
3232
subject = NEW_GROUP_EMAIL_SUBJECT + auth_user.email + " -- " + date_time
33-
body = helpers.generateStringFromTemplate(
33+
body = helpers.generate_string_from_template(
3434
filename="groupCreationEmailBody.html",
3535
user=str(auth_user.user),
3636
first_name=auth_user.first_name,
@@ -52,7 +52,7 @@ def send_new_group_approved_notification(group, group_id, initial_member_names):
5252
if initial_member_names:
5353
body += NEW_MEMBERS_ADDED_MESSAGE
5454
body += generate_group_member_table(initial_member_names)
55-
body = helpers.generateStringFromTemplate(filename="email.html", emailBody=body)
55+
body = helpers.generate_string_from_template(filename="email.html", emailBody=body)
5656
destination = []
5757
destination += MAIL_APPROVER_GROUPS[:]
5858
destination.append(group.requester.email)
@@ -64,7 +64,7 @@ def send_new_group_approved_notification(group, group_id, initial_member_names):
6464
def send_membership_accepted_notification(user, group, membership):
6565
""" method to send membership accepted notification """
6666
subject = MEMBERSHIP_ACCEPTED_SUBJECT.format(user.name, group.name)
67-
body = helpers.generateStringFromTemplate(
67+
body = helpers.generate_string_from_template(
6868
filename="membershipAcceptedEmailBody.html",
6969
user_name=user.name,
7070
group_name=group.name,
@@ -80,7 +80,7 @@ def send_mulitple_membership_accepted_notification(all_user_emails, group_name,
8080
""" method to send multiple membership accepted notification """
8181
for each_user_email in all_user_emails.keys():
8282
subject = MEMBERSHIP_ACCEPTED_SUBJECT.format(each_user_email, group_name)
83-
body = helpers.generateStringFromTemplate(
83+
body = helpers.generate_string_from_template(
8484
filename="membershipAcceptedEmailBody.html",
8585
user_name=",".join(each_user_email),
8686
group_name=group_name,
@@ -96,7 +96,7 @@ def generate_group_member_table(member_list):
9696
""" method to generate group number table """
9797
if len(member_list) <= 0:
9898
return "No members are being added initially"
99-
return helpers.generateStringFromTemplate("listToTable.html", memberList=member_list)
99+
return helpers.generate_string_from_template("listToTable.html", memberList=member_list)
100100

101101

102102
def send_group_owners_update_mail(destination, group_name, updated_by):
@@ -116,9 +116,9 @@ def send_group_access_add_email(
116116
destination, group_name, requester, request_id, member_list
117117
):
118118
""" method to send email for group access add """
119-
body = helpers.generateStringFromTemplate(
119+
body = helpers.generate_string_from_template(
120120
filename="email.html",
121-
emailBody=helpers.generateStringFromTemplate(
121+
emailBody=helpers.generate_string_from_template(
122122
"add_access_to_group.html",
123123
request_id=request_id,
124124
group_name=group_name,
@@ -137,7 +137,7 @@ def send_revoke_failure_mail(
137137
""" method to send email for revoke failure """
138138
try:
139139
subject = f"Celery Revoke Failed for the request: {request_id}"
140-
body = helpers.generateStringFromTemplate(
140+
body = helpers.generate_string_from_template(
141141
"celery_revoke_failure_email.html",
142142
request_id=request_id,
143143
revoker_email=revoker_email,
@@ -161,7 +161,7 @@ def send_mail_for_request_decline(
161161
subject = USER_ACCESS_REQUEST_DENIED_SUBJECT.format(
162162
auth_user.email, access_type, description
163163
)
164-
body = helpers.generateStringFromTemplate(
164+
body = helpers.generate_string_from_template(
165165
filename="requestDeclineEmail.html",
166166
user=auth_user.email,
167167
request_id=request_id,
@@ -196,7 +196,7 @@ def send_mail_for_member_approval(user_email, requester, group_name, reason):
196196
+ "]"
197197
)
198198
destination = MAIL_APPROVER_GROUPS[:]
199-
body = helpers.generateStringFromTemplate(
199+
body = helpers.generate_string_from_template(
200200
filename="email.html",
201201
emailBody=generate_user_add_to_group_email_body(
202202
user_email,
@@ -214,7 +214,7 @@ def generate_user_add_to_group_email_body(
214214
user_email, primary_approver, other_approver, requester, group_name, reason
215215
):
216216
""" method to generate user add to group email body """
217-
return helpers.generateStringFromTemplate(
217+
return helpers.generate_string_from_template(
218218
filename="add_user_to_group_mail.html",
219219
user_email=user_email,
220220
primary_approver=primary_approver,
@@ -240,7 +240,7 @@ def send_group_access_declined(
240240
destination, group_name, requester, decliner, request_id, declined_access, reason
241241
):
242242
""" method to send email for group access declined """
243-
body = helpers.generateStringFromTemplate(
243+
body = helpers.generate_string_from_template(
244244
"groupAccessDeclined.html",
245245
request_id=request_id,
246246
requester=requester,
@@ -257,7 +257,7 @@ def send_group_access_declined(
257257
def send_accept_group_access_failed(destination, request_id, error):
258258
""" method to send email for accept group access failed """
259259
try:
260-
body = helpers.generateStringFromTemplate(
260+
body = helpers.generate_string_from_template(
261261
"acceptGroupAccessFailed.html", request_id=request_id, error=error
262262
)
263263

@@ -271,7 +271,7 @@ def send_accept_group_access_failed(destination, request_id, error):
271271
def send_decline_group_access_failed(destination, request_id, error):
272272
""" method to send decline group access failed """
273273
try:
274-
body = helpers.generateStringFromTemplate(
274+
body = helpers.generate_string_from_template(
275275
"declineGroupAccessFailed.html", request_id=request_id, error=error
276276
)
277277

@@ -286,7 +286,7 @@ def send_mail_for_request_resolve(auth_user, access_type, request_id):
286286
""" method to send mail for request resolve """
287287
destination = [auth_user.email]
288288
subject = USER_REQUEST_RESOLVE_SUBJECT.format(request_id)
289-
body = helpers.generateStringFromTemplate(
289+
body = helpers.generate_string_from_template(
290290
filename="requestResolvedEmail.html",
291291
user=auth_user.email,
292292
request_id=request_id,

Diff for: Access/tests/test_access_helpers.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from Access.helpers import (
44
get_available_access_modules,
55
_get_modules_on_disk,
6-
getPossibleApproverPermissions,
6+
get_possible_approver_permissions,
77
)
88
from Access.tests.helper_mocks import MockAccessModule
99

@@ -31,7 +31,7 @@ def test_get_available_access_modules(
3131
):
3232
mocker.patch("Access.helpers._get_modules_on_disk", return_value=expectedModuleList)
3333

34-
helpers.available_accesses = available_accesses
34+
helpers.MAP_ACCESSES["AVAILABLE_ACCESSES"] = available_accesses
3535
modules = list(get_available_access_modules().values())
3636
assert len(modules) == len(expectedModuleList)
3737
for i in range(len(modules)):
@@ -53,7 +53,7 @@ def test_get_modules_on_disk(mocker, testName, cached_accesses, expectedModuleLi
5353
"glob.glob", return_value=["dir1", "dir2"] + ["base_somedir", "__pycache__"]
5454
)
5555
mocker.patch("os.path.isfile", return_value=False)
56-
helpers.cached_accesses = cached_accesses
56+
helpers.MAP_ACCESSES["CACHED_ACCESSES"] = cached_accesses
5757
modules = _get_modules_on_disk()
5858
assert len(modules) == len(expectedModuleList)
5959
for i in range(len(modules)):
@@ -115,4 +115,4 @@ def test_getPossibleApproverPermissions(
115115
mocker.patch(
116116
"Access.helpers.get_available_access_modules", return_value=modulesPresent
117117
)
118-
assert getPossibleApproverPermissions().sort() == expectedApprovers.sort()
118+
assert get_possible_approver_permissions().sort() == expectedApprovers.sort()

Diff for: Access/tests/test_group_helper.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ def test_approve_new_group_request(
105105
return_value=mock_membership_update,
106106
)
107107
mocker.patch(
108-
"Access.helpers.generateStringFromTemplate", return_value="email body"
108+
"Access.helpers.generate_string_from_template", return_value="email body"
109109
)
110110
mocker.patch("bootprocess.general.email_via_smtp", return_value=True)
111111

@@ -128,7 +128,7 @@ def test_approve_new_group_request(
128128
return_value=mock_membership_update,
129129
)
130130
mocker.patch(
131-
"Access.helpers.generateStringFromTemplate", return_value="email body"
131+
"Access.helpers.generate_string_from_template", return_value="email body"
132132
)
133133
mocker.patch(
134134
"bootprocess.general.email_via_smtp",
@@ -145,7 +145,7 @@ def test_approve_new_group_request(
145145
if testname != test_approve_new_group_request_ProcessReq and requestApproved:
146146
assert general.email_via_smtp.call_count == 1
147147
assert models.MembershipV2.objects.filter.call_count == 2
148-
assert helpers.generateStringFromTemplate.call_count == 2
148+
assert helpers.generate_string_from_template.call_count == 2
149149

150150

151151
test_get_user_group_group_not_found = "GroupNotFound"

Diff for: Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ test: setup_mounts ensure_web_container_for_test
7272
lint: export APPUID = $(APP_UID)
7373
lint: setup_mounts ensure_web_container_for_test
7474
@docker exec dev python -m pylama --version
75-
@docker exec dev python -m pylama Access/accessrequest_helper.py Access/models.py Access/views.py Access/views_helper.py Access/validators.py Access/notifications.py scripts bootprocess enigma_automation
75+
@docker exec dev python -m pylama Access/accessrequest_helper.py Access/models.py Access/views.py Access/views_helper.py Access/validators.py Access/notifications.py Access/helpers.py scripts bootprocess enigma_automation
7676
@if [ "$$?" -ne 0 ]; then \
7777
echo "Linter checks failed"; \
7878
exit 1; \

0 commit comments

Comments
 (0)