Merge pull request #3306 from FinnStutzenstein/Issue2862
Remove OPTION request to query permissions (fixes #2862)
This commit is contained in:
commit
77a321894b
@ -45,3 +45,16 @@ class UsersAppConfig(AppConfig):
|
|||||||
"""
|
"""
|
||||||
for model in ('User', 'Group', 'PersonalNote'):
|
for model in ('User', 'Group', 'PersonalNote'):
|
||||||
yield Collection(self.get_model(model).get_collection_string())
|
yield Collection(self.get_model(model).get_collection_string())
|
||||||
|
|
||||||
|
def get_angular_constants(self):
|
||||||
|
from django.contrib.auth.models import Permission
|
||||||
|
|
||||||
|
permissions = []
|
||||||
|
for permission in Permission.objects.all():
|
||||||
|
permissions.append({
|
||||||
|
'display_name': permission.name,
|
||||||
|
'value': '.'.join((permission.content_type.app_label, permission.codename,))})
|
||||||
|
permission_settings = {
|
||||||
|
'name': 'permissions',
|
||||||
|
'value': permissions}
|
||||||
|
return [permission_settings]
|
||||||
|
@ -128,25 +128,12 @@ angular.module('OpenSlidesApp.users', [])
|
|||||||
])
|
])
|
||||||
|
|
||||||
.factory('Group', [
|
.factory('Group', [
|
||||||
'$http',
|
|
||||||
'DS',
|
'DS',
|
||||||
function($http, DS) {
|
function(DS) {
|
||||||
var name = 'users/group';
|
var name = 'users/group';
|
||||||
var permissions;
|
var permissions;
|
||||||
return DS.defineResource({
|
return DS.defineResource({
|
||||||
name: name,
|
name: name,
|
||||||
permissions: permissions,
|
|
||||||
// TODO (Issue 2862): Do not query the permissions from server. They should be included
|
|
||||||
// in the startup data. Then remove 'permission' injection from group list controller.
|
|
||||||
getPermissions: function() {
|
|
||||||
if (!this.permissions) {
|
|
||||||
this.permissions = $http({ 'method': 'OPTIONS', 'url': '/rest/users/group/' })
|
|
||||||
.then(function(result) {
|
|
||||||
return result.data.actions.POST.permissions.choices;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
return this.permissions;
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
])
|
])
|
||||||
|
@ -85,13 +85,7 @@ angular.module('OpenSlidesApp.users.site', [
|
|||||||
title: gettext('Groups'),
|
title: gettext('Groups'),
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
.state('users.group.list', {
|
.state('users.group.list', {})
|
||||||
resolve: {
|
|
||||||
permissions: function(Group) {
|
|
||||||
return Group.getPermissions();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.state('login', {
|
.state('login', {
|
||||||
template: null,
|
template: null,
|
||||||
url: '/login',
|
url: '/login',
|
||||||
|
@ -164,3 +164,15 @@ class ProjectorAPI(TestCase):
|
|||||||
self.viewset.request = request
|
self.viewset.request = request
|
||||||
self.viewset.clear_elements(request=request, pk=MagicMock())
|
self.viewset.clear_elements(request=request, pk=MagicMock())
|
||||||
self.assertEqual(len(mock_object.return_value.config), 1)
|
self.assertEqual(len(mock_object.return_value.config), 1)
|
||||||
|
|
||||||
|
|
||||||
|
class WebclientJavaScriptView(TestCase):
|
||||||
|
def setUp(self):
|
||||||
|
self.request = MagicMock()
|
||||||
|
self.view_instance = views.WebclientJavaScriptView()
|
||||||
|
self.view_instance.request = self.request
|
||||||
|
|
||||||
|
@patch('django.contrib.auth.models.Permission.objects.all')
|
||||||
|
def test_permissions_as_constant(self, mock_all):
|
||||||
|
self.view_instance.get()
|
||||||
|
self.assertEqual(mock_all.call_count, 1)
|
||||||
|
Loading…
Reference in New Issue
Block a user