diff --git a/openslides/users/serializers.py b/openslides/users/serializers.py index 162179a33..22c5b4dce 100644 --- a/openslides/users/serializers.py +++ b/openslides/users/serializers.py @@ -4,8 +4,8 @@ from django.utils.translation import ugettext as _ from django.utils.translation import ugettext_lazy from ..utils.rest_api import ( + IdPrimaryKeyRelatedField, ModelSerializer, - PrimaryKeyRelatedField, RelatedField, ValidationError, ) @@ -40,7 +40,7 @@ class UserFullSerializer(ModelSerializer): Serializes all relevant fields. """ - groups = PrimaryKeyRelatedField( + groups = IdPrimaryKeyRelatedField( many=True, queryset=Group.objects.exclude(pk__in=(1, 2)), help_text=ugettext_lazy('The groups this user belongs to. A user will ' diff --git a/openslides/users/static/js/users/base.js b/openslides/users/static/js/users/base.js index 004a80e59..6e9c8c0f2 100644 --- a/openslides/users/static/js/users/base.js +++ b/openslides/users/static/js/users/base.js @@ -122,8 +122,8 @@ angular.module('OpenSlidesApp.users', []) getPerms: function() { var allPerms = []; var allGroups = []; - if (this.groups) { - allGroups = this.groups.slice(0); + if (this.groups_id) { + allGroups = this.groups_id.slice(0); } // Add registered group allGroups.push(2); @@ -146,6 +146,14 @@ angular.module('OpenSlidesApp.users', []) return "Participant"; }, }, + relations: { + hasMany: { + 'users/group': { + localField: 'groups', + localKey: 'groups_id', + } + } + } }); } ]) diff --git a/openslides/users/static/js/users/site.js b/openslides/users/static/js/users/site.js index eb83b5102..c7411de17 100644 --- a/openslides/users/static/js/users/site.js +++ b/openslides/users/static/js/users/site.js @@ -319,7 +319,7 @@ angular.module('OpenSlidesApp.users.site', ['OpenSlidesApp.users']) } }, { - key: 'groups', + key: 'groups_id', type: 'select-multiple', templateOptions: { label: gettextCatalog.getString('Groups'), @@ -672,7 +672,7 @@ angular.module('OpenSlidesApp.users.site', ['OpenSlidesApp.users']) var user = { first_name: first_name, last_name: last_name, - groups: [] + groups_id: [] }; User.create(user).then( function(success) { @@ -741,7 +741,7 @@ angular.module('OpenSlidesApp.users.site', ['OpenSlidesApp.users']) // groups if (user.groups) { var csvGroups = user.groups.replace(quotionRe, '$1').split(","); - user.groups = []; + user.groups_id = []; user.groupnames = []; if (csvGroups !== '') { // All group objects are already loaded via the resolve statement from ui-router. @@ -749,14 +749,14 @@ angular.module('OpenSlidesApp.users.site', ['OpenSlidesApp.users']) csvGroups.forEach(function(csvGroup) { allGroups.forEach(function (allGroup) { if (csvGroup == allGroup.id) { - user.groups.push(allGroup.id); + user.groups_id.push(allGroup.id); user.groupnames.push(allGroup.name); } }); }); } } else { - user.groups = []; + user.groups_id = []; } // comment if (user.comment) { diff --git a/openslides/users/static/templates/users/user-detail.html b/openslides/users/static/templates/users/user-detail.html index f205c88f3..1ade58593 100644 --- a/openslides/users/static/templates/users/user-detail.html +++ b/openslides/users/static/templates/users/user-detail.html @@ -31,8 +31,8 @@ {{ user.structure_level }} -