Skip to content

Commit c446b0d

Browse files
committed
[change] Improved code quality
1 parent 2fe5487 commit c446b0d

3 files changed

Lines changed: 27 additions & 49 deletions

File tree

openwisp_users/api/permissions.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
from django.utils.translation import gettext_lazy as _
2-
from rest_framework.permissions import BasePermission, DjangoModelPermissions
2+
from rest_framework.permissions import BasePermission
3+
from rest_framework.permissions import (
4+
DjangoModelPermissions as BaseDjangoModelPermissions,
5+
)
36
from swapper import load_model
47

58
Organization = load_model('openwisp_users', 'Organization')
@@ -68,7 +71,7 @@ def validate_membership(self, user, org):
6871
return org and (user.is_superuser or user.is_owner(org))
6972

7073

71-
class ViewDjangoModelPermissions(DjangoModelPermissions):
74+
class DjangoModelPermissions(BaseDjangoModelPermissions):
7275
perms_map = {
7376
'GET': ['%(app_label)s.view_%(model_name)s'],
7477
'OPTIONS': [],
@@ -94,9 +97,6 @@ def has_permission(self, request, view):
9497
change_perm = self.get_required_permissions('PUT', queryset.model)
9598

9699
if request.method == 'GET':
97-
if user.has_perms(perms) or user.has_perms(change_perm):
98-
return True
99-
else:
100-
return False
100+
return user.has_perms(perms) or user.has_perms(change_perm)
101101

102102
return user.has_perms(perms)

tests/testapp/tests/test_permission_classes.py

Lines changed: 18 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -127,18 +127,20 @@ def test_organization_field_with_errored_parent(self):
127127
self.client.get(reverse('test_error_field_view'), **auth)
128128
self.assertIn('Organization not found', str(error.exception))
129129

130-
def test_view_permission_with_operator(self):
131-
user = User.objects.create_user(
132-
username='operator', password='tester', email='operator@test.com'
133-
)
134-
operator_group = Group.objects.filter(name='Operator')
135-
user.groups.set(operator_group)
136-
org1 = self._get_org()
130+
def _get_auth_template(self, user, org1):
137131
OrganizationUser.objects.create(user=user, organization=org1, is_admin=True)
138132
self.client.force_login(user)
139-
token = self._obtain_auth_token()
133+
token = self._obtain_auth_token(user)
140134
auth = dict(HTTP_AUTHORIZATION=f'Bearer {token}')
141135
t1 = self._create_template(organization=org1)
136+
return (auth, t1)
137+
138+
def test_view_permission_with_operator(self):
139+
user = self._get_user()
140+
operator_group = Group.objects.filter(name='Operator')
141+
user.groups.set(operator_group)
142+
org1 = self._get_org()
143+
auth, t1 = self._get_auth_template(user, org1)
142144
with self.subTest('Get Template List'):
143145
response = self.client.get(reverse('test_template_list'), **auth)
144146
self.assertEqual(response.status_code, 403)
@@ -149,19 +151,13 @@ def test_view_permission_with_operator(self):
149151
self.assertEqual(response.status_code, 403)
150152

151153
def test_view_permission_with_administrator(self):
152-
user = User.objects.create_user(
153-
username='operator', password='tester', email='operator@test.com'
154-
)
154+
user = self._get_user()
155155
administrator_group = Group.objects.get(name='Administrator')
156156
change_perm = Permission.objects.get(codename='change_template')
157157
administrator_group.permissions.add(change_perm)
158158
user.groups.add(administrator_group)
159159
org1 = self._get_org()
160-
OrganizationUser.objects.create(user=user, organization=org1, is_admin=True)
161-
self.client.force_login(user)
162-
token = self._obtain_auth_token()
163-
auth = dict(HTTP_AUTHORIZATION=f'Bearer {token}')
164-
t1 = self._create_template(organization=org1)
160+
auth, t1 = self._get_auth_template(user, org1)
165161
with self.subTest('Get Template List'):
166162
response = self.client.get(reverse('test_template_list'), **auth)
167163
self.assertEqual(response.status_code, 200)
@@ -175,19 +171,13 @@ def test_view_permission_with_administrator(self):
175171
self.assertTrue('change_template' in permissions)
176172

177173
def test_view_permission_with_operator_having_view_perm(self):
178-
user = User.objects.create_user(
179-
username='operator', password='tester', email='operator@test.com'
180-
)
174+
user = self._get_user()
181175
operator_group = Group.objects.get(name='Operator')
182176
view_perm = Permission.objects.get(codename='view_template')
183177
operator_group.permissions.add(view_perm)
184178
user.groups.add(operator_group)
185179
org1 = self._get_org()
186-
OrganizationUser.objects.create(user=user, organization=org1, is_admin=True)
187-
self.client.force_login(user)
188-
token = self._obtain_auth_token()
189-
auth = dict(HTTP_AUTHORIZATION=f'Bearer {token}')
190-
t1 = self._create_template(organization=org1)
180+
auth, t1 = self._get_auth_template(user, org1)
191181
with self.subTest('Get Template List'):
192182
response = self.client.get(reverse('test_template_list'), **auth)
193183
self.assertEqual(response.status_code, 200)
@@ -209,18 +199,12 @@ def test_view_permission_with_operator_having_view_perm(self):
209199
self.assertEqual(response.status_code, 403)
210200

211201
def test_view_django_model_permission_with_view_perm(self):
212-
user = User.objects.create_user(
213-
username='operator', password='tester', email='operator@test.com'
214-
)
202+
user = self._get_user()
215203
user_permissions = Permission.objects.filter(codename='view_template')
216204
user.user_permissions.add(*user_permissions)
217205
user.organizations_dict # force caching
218206
org1 = self._get_org()
219-
OrganizationUser.objects.create(user=user, organization=org1, is_admin=True)
220-
self.client.force_login(user)
221-
token = self._obtain_auth_token()
222-
auth = dict(HTTP_AUTHORIZATION=f'Bearer {token}')
223-
t1 = self._create_template(organization=org1)
207+
auth, t1 = self._get_auth_template(user, org1)
224208
with self.subTest('Get Template List'):
225209
response = self.client.get(reverse('test_template_list'), **auth)
226210
self.assertEqual(response.status_code, 200)
@@ -231,18 +215,12 @@ def test_view_django_model_permission_with_view_perm(self):
231215
self.assertEqual(response.status_code, 200)
232216

233217
def test_view_django_model_permission_with_change_perm(self):
234-
user = User.objects.create_user(
235-
username='operator', password='tester', email='operator@test.com'
236-
)
218+
user = self._get_user()
237219
user_permissions = Permission.objects.filter(codename='change_template')
238220
user.user_permissions.add(*user_permissions)
239221
user.organizations_dict # force caching
240222
org1 = self._get_org()
241-
OrganizationUser.objects.create(user=user, organization=org1, is_admin=True)
242-
self.client.force_login(user)
243-
token = self._obtain_auth_token()
244-
auth = dict(HTTP_AUTHORIZATION=f'Bearer {token}')
245-
t1 = self._create_template(organization=org1)
223+
auth, t1 = self._get_auth_template(user, org1)
246224
with self.subTest('Get Template List'):
247225
response = self.client.get(reverse('test_template_list'), **auth)
248226
self.assertEqual(response.status_code, 200)

tests/testapp/views.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@
1818
)
1919
from openwisp_users.api.permissions import (
2020
BaseOrganizationPermission,
21+
DjangoModelPermissions,
2122
IsOrganizationManager,
2223
IsOrganizationMember,
2324
IsOrganizationOwner,
24-
ViewDjangoModelPermissions,
2525
)
2626

2727
from .models import Book, Config, Shelf, Template
@@ -176,7 +176,7 @@ class TemplateListCreateView(FilterByOrganizationManaged, ListCreateAPIView):
176176
authentication_classes = (BearerAuthentication,)
177177
permission_classes = (
178178
IsOrganizationMember,
179-
ViewDjangoModelPermissions,
179+
DjangoModelPermissions,
180180
)
181181
queryset = Template.objects.all()
182182

@@ -186,7 +186,7 @@ class TemplateDetailView(FilterByOrganizationManaged, RetrieveUpdateDestroyAPIVi
186186
authentication_classes = (BearerAuthentication,)
187187
permission_classes = (
188188
IsOrganizationMember,
189-
ViewDjangoModelPermissions,
189+
DjangoModelPermissions,
190190
)
191191
queryset = Template.objects.all()
192192

0 commit comments

Comments
 (0)