diff --git a/HISTORY.rst b/HISTORY.rst index 540ac20a12..394b02e54f 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -5,6 +5,7 @@ - Backport zoom transformation performance improvement (GitLab #334). - Backport trash can navigation link resolution fix (GitLab #331). - Improve documentation regarding the use of GPG version 1 (GitLab #333). +- Fix ACL create view HTML response type. (GitLab #335). 2.1.4 (2016-10-28) ================== diff --git a/docs/releases/2.1.5.rst b/docs/releases/2.1.5.rst index 4a75e8fd18..93105f83ff 100644 --- a/docs/releases/2.1.5.rst +++ b/docs/releases/2.1.5.rst @@ -21,6 +21,7 @@ Other changes - Backport zoom performance improvement (GitLab #334). - Backport trash can navigation link resolution fix (GitLab #331). - Improve documentation regarding the use of GPG version 1 (GitLab #333). +- Fix ACL create view HTML response type. (GitLab #335). Removals -------- @@ -79,5 +80,7 @@ Bugs fixed or issues closed * `GitLab issue #331 `_ Trash List View: Items actions should be limited * `GitLab issue #333 `_ "Unable to run gpg - it may not be available." * `GitLab issue #334 `_ Perfomance improvment: prevent unnecessary image.resize in TransformationZoom +* `GitLab issue #335 `_ Wrong HTML Content-Type in ACL->NEW + .. _PyPI: https://pypi.python.org/pypi/mayan-edms/ diff --git a/mayan/apps/acls/tests/test_views.py b/mayan/apps/acls/tests/test_views.py index 58dfb936b4..556c0f3738 100644 --- a/mayan/apps/acls/tests/test_views.py +++ b/mayan/apps/acls/tests/test_views.py @@ -26,7 +26,7 @@ class AccessControlListViewTestCase(GenericDocumentViewTestCase): def test_acl_create_view_no_permission(self): self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) - response = self.post( + response = self.get( viewname='acls:acl_create', kwargs=self.view_arguments, data={ 'role': self.role.pk } @@ -42,6 +42,35 @@ class AccessControlListViewTestCase(GenericDocumentViewTestCase): permission_acl_edit.stored_permission ) + response = self.get( + viewname='acls:acl_create', kwargs=self.view_arguments, data={ + 'role': self.role.pk + }, follow=True + ) + + self.assertContains( + response, text=self.document.label, status_code=200 + ) + + def test_acl_create_view_post_no_permission(self): + self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) + + response = self.post( + viewname='acls:acl_create', kwargs=self.view_arguments, data={ + 'role': self.role.pk + } + ) + + self.assertEquals(response.status_code, 403) + self.assertEqual(AccessControlList.objects.count(), 0) + + def test_acl_create_view_with_post_permission(self): + self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) + + self.role.permissions.add( + permission_acl_edit.stored_permission + ) + response = self.post( viewname='acls:acl_create', kwargs=self.view_arguments, data={ 'role': self.role.pk diff --git a/mayan/apps/acls/views.py b/mayan/apps/acls/views.py index 2ee1228f20..0d1795d058 100644 --- a/mayan/apps/acls/views.py +++ b/mayan/apps/acls/views.py @@ -29,16 +29,16 @@ class ACLCreateView(SingleObjectCreateView): model = AccessControlList def dispatch(self, request, *args, **kwargs): - self.content_type = get_object_or_404( + self.object_content_type = get_object_or_404( ContentType, app_label=self.kwargs['app_label'], model=self.kwargs['model'] ) try: - self.content_object = self.content_type.get_object_for_this_type( + self.content_object = self.object_content_type.get_object_for_this_type( pk=self.kwargs['object_id'] ) - except self.content_type.model_class().DoesNotExist: + except self.object_content_type.model_class().DoesNotExist: raise Http404 try: @@ -60,7 +60,7 @@ class ACLCreateView(SingleObjectCreateView): def form_valid(self, form): try: acl = AccessControlList.objects.get( - content_type=self.content_type, + content_type=self.object_content_type, object_id=self.content_object.pk, role=form.cleaned_data['role'] ) @@ -130,7 +130,7 @@ class ACLListView(SingleObjectListView): self.content_object = self.object_content_type.get_object_for_this_type( pk=self.kwargs['object_id'] ) - except self.content_type.model_class().DoesNotExist: + except self.object_content_type.model_class().DoesNotExist: raise Http404 try: