Skip to content

Commit cb89712

Browse files
authored
Merge pull request #43 from renderbox/TC-1096-roles-and-permissions-saving-a-permafrost-role-in
TC-1096-roles-and-permissions-saving-a-permafrost-role-in
2 parents f555e47 + 988dbb6 commit cb89712

File tree

4 files changed

+32
-8
lines changed

4 files changed

+32
-8
lines changed

permafrost/__version__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
VERSION = "0.2.14"
1+
VERSION = "0.2.15"

permafrost/forms.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,8 @@ class Meta:
6666
labels = LABELS
6767

6868
def __init__(self, *args, **kwargs):
69-
super().__init__(*args, **kwargs)
7069
self.site = kwargs.pop('site', Site.objects.get_current())
70+
super().__init__(*args, **kwargs)
7171
self.fields['category'].choices = CHOICES
7272

7373
category = self.initial.get(

permafrost/tests.py

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -298,9 +298,10 @@ class PermafrostViewTests(TestCase):
298298

299299
def setUp(self):
300300
self.client = Client()
301-
self.pf_role = PermafrostRole.objects.create(category="staff", name="Test Role")
302-
super_user = get_user_model().objects.get(pk=1)
303-
self.client.force_login(super_user)
301+
self.pf_role = PermafrostRole.objects.create(category="staff", name="Test Role", site=Site.objects.get_current())
302+
PermafrostRole.objects.create(category="staff", name="Test Role", site=Site.objects.get(pk=2))
303+
self.super_user = get_user_model().objects.get(pk=1)
304+
self.client.force_login(self.super_user)
304305

305306
def test_permafrost_base_url_resolves(self):
306307
found = resolve("/permafrost/")
@@ -505,6 +506,19 @@ def test_role_update_POST_updates_name(self):
505506
updated_role = PermafrostRole.objects.get(pk=self.pf_role.pk)
506507
self.assertEqual(updated_role.name, "Test Change")
507508

509+
def test_role_update_POST_updates_when_no_values_are_changed(self):
510+
uri = reverse('permafrost:role-update', kwargs={'slug': 'test-role'})
511+
512+
request = RequestFactory().post(uri, data={'name': 'Test Role'}, follow=True)
513+
514+
request.user = self.super_user
515+
request.site = Site.objects.get(pk=2)
516+
response = PermafrostRoleUpdateView.as_view()(request, slug='test-role')
517+
response.client = self.client
518+
self.assertRedirects(response, '/permafrost/role/test-role/')
519+
updated_role = PermafrostRole.objects.get(pk=self.pf_role.pk)
520+
521+
508522
def test_optional_permissions_are_updated_on_POST(self):
509523
## ensure role currently has no optional permissions
510524
allowed_optional_permission_ids =[permission.id for permission in self.pf_role.optional_permissions()]
@@ -553,7 +567,6 @@ def test_optional_permissions_are_removed_when_empty_array_submitted_to_POST(sel
553567
response = self.client.post(uri, data=data, follow=True)
554568

555569
updated_permission_ids = [permission.id for permission in self.pf_role.permissions().all() if permission.id in allowed_optional_permission_ids]
556-
557570
try:
558571
self.assertEqual(updated_permission_ids, [])
559572
except:
@@ -571,11 +584,11 @@ def test_delete_role_POST(self):
571584
response = self.client.post(uri, data=data, follow=True)
572585

573586
try:
574-
updated_role = PermafrostRole.objects.get(slug=self.pf_role.slug)
587+
updated_role = PermafrostRole.objects.get(slug=self.pf_role.slug, site__id=1)
575588
self.assertEqual(updated_role.deleted, True)
576589
except:
577590
print("")
578-
print(model_to_dict(PermafrostRole.objects.get(slug=self.pf_role.slug)))
591+
print(model_to_dict(PermafrostRole.objects.get(slug=self.pf_role.slug, site__id=1)))
579592
print("")
580593
raise
581594

permafrost/views.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,12 @@ def get_form_class(self):
184184
return SelectPermafrostRoleTypeForm
185185
return PermafrostRoleCreateForm
186186

187+
def get_form_kwargs(self):
188+
kwargs = super().get_form_kwargs()
189+
if self.get_form_class() == PermafrostRoleCreateForm:
190+
if hasattr(self.request, 'site'):
191+
kwargs['site'] = self.request.site
192+
return kwargs
187193

188194
# List Permission Groups
189195
class PermafrostRoleListView(PermafrostSiteMixin, FilterByRequestSiteQuerysetMixin, ListView):
@@ -261,6 +267,11 @@ def get_context_data(self, **kwargs):
261267
)
262268
return context
263269

270+
def get_form_kwargs(self):
271+
kwargs = super().get_form_kwargs()
272+
if hasattr(self.request, 'site'):
273+
kwargs['site'] = self.request.site
274+
return kwargs
264275

265276
# Delete Permission Groups
266277
class PermafrostRoleDeleteView(DeleteView):

0 commit comments

Comments
 (0)