Skip to content

Commit bd6ca9d

Browse files
committed
fix: lint issues for bootprocess
1 parent 551867b commit bd6ca9d

File tree

8 files changed

+71
-47
lines changed

8 files changed

+71
-47
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ test: setup_mounts ensure_web_container_for_test
7070
lint: export APPUID = $(APP_UID)
7171
lint: setup_mounts ensure_web_container_for_test
7272
@docker exec dev python -m pylama --version
73-
@docker exec dev python -m pylama Access/accessrequest_helper.py scripts
73+
@docker exec dev python -m pylama Access/accessrequest_helper.py scripts bootprocess
7474
@if [ "$$?" -ne 0 ]; then \
7575
echo "Linter checks failed"; \
7676
exit 1; \

bootprocess/admin.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +0,0 @@
1-
from django.contrib import admin

bootprocess/apps.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1+
""" apps file for bootprocess """
12
from django.apps import AppConfig
23

34

45
class BootprocessConfig(AppConfig):
6+
""" Config for bootprocess """
57
default_auto_field = "django.db.models.BigAutoField"
68
name = "bootprocess"

bootprocess/general.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,25 @@
1+
""" file contains general methods for bootprocess """
2+
import logging
13
from django.core import mail
24
from django.core.mail import BadHeaderError
3-
import logging
45
from EnigmaAutomation.settings import EMAIL_BACKEND, DEFAULT_FROM_EMAIL
56
logger = logging.getLogger(__name__)
67

7-
def emailSES(destination, subject, body):
8+
9+
def emailSES(destination, subject, body): # noqa: C0103
10+
""" method to send email to destination with given subject and body """
811
if destination and subject and body:
912
with mail.get_connection(backend=EMAIL_BACKEND) as connection:
1013
try:
1114
email = mail.EmailMessage(subject=subject, body=body,
12-
from_email=DEFAULT_FROM_EMAIL, to=destination,
13-
connection=connection)
15+
from_email=DEFAULT_FROM_EMAIL, to=destination,
16+
connection=connection)
1417
email.content_subtype = "html"
1518
response = email.send(fail_silently=False)
1619
if response != 1:
1720
raise Exception('Message not delivered. Contact Admin for more details.')
18-
except BadHeaderError:
19-
raise Exception("Invalid header found.")
21+
except BadHeaderError as exc:
22+
raise Exception("Invalid header found.") from exc
2023
else:
2124
raise Exception('Make sure all fields are entered and valid.')
2225

Lines changed: 41 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,20 @@
1+
""" test file for views_helper """
2+
import threading
13
import pytest
24
from bootprocess import views_helper
35
from Access import models
4-
import threading
56
from EnigmaAutomation.settings import DEFAULT_ACCESS_GROUP
67

78

89
class MockAuthUser:
10+
""" mocking AuthUser """
911
def __init__(self, username="", user=""):
1012
self.user = user
1113
self.username = username
1214

1315

1416
class MockRequest:
17+
""" mocking Request """
1518
def __init__(self, username=""):
1619
self.user = MockAuthUser(username)
1720

@@ -28,57 +31,64 @@ def __init__(self, username=""):
2831
("UserInDefaultGroup", False, 40),
2932
],
3033
)
31-
def test_getDashboardData(
32-
monkeypatch,
33-
testName,
34-
userIsInDefaultAccessGroup,
35-
groupCount,
36-
):
34+
def test_getDashboardData(monkeypatch, testName, userIsInDefaultAccessGroup, groupCount): # noqa: C901
3735
class MockUserModelobj:
36+
""" mocking method UserModelobj """
3837
def __init__(self, user="", gitusername="", name=""):
3938
self.user = user
4039
self.gitusername = gitusername
4140
self.name = name
4241

4342
def get(self, user__username=""):
43+
""" mocked method get """
4444
self.user = user__username
4545
return MockUserModelobj(user="username", gitusername="username")
4646

4747
class MockGitAccessModelobj:
48-
def __init__(self, requestInfo={"": ""}):
48+
""" mocking GitAccessModelobj """
49+
def __init__(self, request_info=None):
50+
del request_info
4951
self.user = ""
50-
self.requestInfo = requestInfo
5152

5253
def filter(self, requester="", status=""):
54+
""" mocked method filter """
55+
del requester
5356
if status == "Approved":
5457
return [MockGitAccessModelobj()]
5558
return MockGitAccessModelobj()
5659

5760
class MockGroupV2:
61+
""" mocking class GroupV2 """
5862
def filter(self, name="", status=""):
63+
""" mocked method filter """
64+
del name
5965
if status == "Approved":
6066
return [MockGroupV2()]
6167
return MockGitAccessModelobj()
6268

6369
class MockUserAccessMapping:
70+
""" mocking UserAccessMapping """
6471
def filter(self, user="", status="", access__access_tag=""):
72+
""" mocked method filter """
73+
del user, status
6574
if access__access_tag == "other":
6675
return []
67-
elif access__access_tag == "github_access":
76+
if access__access_tag == "github_access":
6877
return []
69-
elif access__access_tag == "ssh":
78+
if access__access_tag == "ssh":
7079
return []
71-
else:
72-
group = []
73-
for i in range(groupCount):
74-
group.append(i)
75-
return group
80+
group = []
81+
for i in range(groupCount):
82+
group.append(i)
83+
return group
7684

7785
class Group:
86+
""" class Group """
7887
def __init__(self):
7988
self.name = ""
8089

8190
class MockMembershipV2:
91+
""" mocking class MembershipV2 """
8292
def __init__(self, is_owner=False, approver="", status="", user=""):
8393
self.is_owner = is_owner
8494
self.approver = approver
@@ -87,47 +97,53 @@ def __init__(self, is_owner=False, approver="", status="", user=""):
8797
self.group = Group()
8898

8999
def filter(self, user="", status="", group="", is_owner=False):
100+
""" mocked method filter """
101+
del user, status, group
90102
if is_owner:
91103
return [MockMembershipV2()]
92104
return MockMembershipV2()
93105

94-
def only(self, filter):
106+
def only(self, _filter):
107+
""" mocked method only """
95108
return MockMembershipV2()
96109

97-
def create(*args, **kwargs):
110+
def create(self, *_, **__):
111+
""" mocked method create """
98112
return MockMembershipV2()
99113

100114
def save(self):
115+
""" mocked method save """
101116
return ""
102117

103118
def __str__(self):
104119
if userIsInDefaultAccessGroup:
105120
return DEFAULT_ACCESS_GROUP
106-
else:
107-
return ""
121+
return ""
108122

109123
def __len__(self):
110124
return groupCount
111125

112126
class MockThread:
127+
""" class for mocking Thread """
113128
def start(self):
129+
""" method to mock start method of Thread """
114130
return True
115131

116-
def mockgenerateUserMappings(*args, **kwargs):
132+
def mockgenerate_user_mappings(*_, **__):
117133
return []
118134

119-
views_helper.generate_user_mappings = mockgenerateUserMappings
135+
views_helper.generate_user_mappings = mockgenerate_user_mappings
120136

121-
def mock_Thread(*args, **kwargs):
137+
def mock_thread(*_, **__):
122138
return MockThread()
123139

124-
monkeypatch.setattr(threading, "Thread", mock_Thread)
140+
monkeypatch.setattr(threading, "Thread", mock_thread)
125141

126142
models.MembershipV2.objects = MockMembershipV2()
127143
models.User.objects = MockUserModelobj()
128144
models.UserAccessMapping.objects = MockUserAccessMapping()
129145
models.GroupV2.objects = MockGroupV2()
130146
request = MockRequest(username="username1")
131-
context = views_helper.getDashboardData(request)
147+
context = views_helper.get_dashboard_data(request)
132148
assert context["regions"] == ["eu-central-1"]
133149
assert context["groupCount"] == groupCount

bootprocess/views.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
1+
""" views for bootprocess """
2+
import logging
13
from django.contrib.auth import logout
24
from django.contrib.auth.decorators import login_required
35
from django.shortcuts import render
4-
import logging
5-
from .views_helper import getDashboardData
6+
from .views_helper import get_dashboard_data
67

78
logger = logging.getLogger(__name__)
8-
# Create your views here.
99

1010

1111
@login_required
1212
def logout_view(request):
1313
"""Logout View runs when logout url call"""
1414
logout(request)
15-
logger.debug("User: {0} is logging out".format(request.user.username))
15+
logger.debug("User: %s is logging out", request.user.username)
1616
return render(request, "registration/login.html")
1717

1818

1919
@login_required
2020
def dashboard(request):
2121
"""Loaded dashboard"""
22-
context = getDashboardData(request)
22+
context = get_dashboard_data(request)
2323
logger.info("Dashboard load for user %s", request.user.username)
2424
return render(request, "EnigmaOps/dashboard.html", context)

bootprocess/views_helper.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,20 @@
1+
""" helper for views of bootprocess """
12
import logging
3+
import json
4+
import datetime
25
from Access.models import (
36
User as access_user,
47
MembershipV2,
58
GroupV2,
6-
UserAccessMapping,
79
)
8-
from EnigmaAutomation.settings import DEFAULT_ACCESS_GROUP
910
from Access.views_helper import generate_user_mappings, execute_group_access
10-
import json
11-
import datetime
11+
from EnigmaAutomation.settings import DEFAULT_ACCESS_GROUP
1212

1313
logger = logging.getLogger(__name__)
1414

1515

16-
def getDashboardData(request):
16+
def get_dashboard_data(request):
17+
""" helper to get dashboard data """
1718
user = access_user.objects.get(user__username=request.user)
1819

1920
# Add users to DEFAULT_ACCESS_GROUP if the user is not already on the group
@@ -31,7 +32,7 @@ def getDashboardData(request):
3132
.filter(status="Approved")
3233
.only("user")
3334
)
34-
group_owner = [member for member in group_members.filter(is_owner=True)]
35+
group_owner = list(group_members.filter(is_owner=True))
3536
membership_id = (
3637
user.name
3738
+ "-"
@@ -61,17 +62,17 @@ def getDashboardData(request):
6162
+ request.user.username
6263
)
6364

64-
with open("instanceTypes.json") as data_file:
65+
with open("instanceTypes.json", encoding="utf-8") as data_file:
6566
data = json.load(data_file)
6667
ec2_regions = list(data.keys())
6768

6869
context = {}
6970

70-
groupCount = len(
71+
group_count = len(
7172
MembershipV2.objects.filter(user=request.user.user, status="Approved")
7273
)
7374

7475
context["regions"] = ec2_regions
75-
context["groupCount"] = groupCount
76+
context["groupCount"] = group_count
7677

7778
return context

pylama.ini

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ ignore = W0718,W0719,E1101
1414
[pylama:Access/accessrequest_helper.py]
1515
ignore = W1202,R901,R0911,C0302,R0914
1616

17+
[pylama:bootprocess/tests/test_views_helper.py]
18+
ignore = R0903
19+
1720
[pylama:vulture]
1821
min-confidence = 100
1922

0 commit comments

Comments
 (0)