Merge pull request #6029 from FinnStutzenstein/remodelUsers

Remodel users
This commit is contained in:
Finn Stutzenstein 2021-05-03 14:01:19 +02:00 committed by GitHub
commit 50fdaca46f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 70 additions and 78 deletions

View File

@ -37,11 +37,11 @@
"is_demo_user": false, "is_demo_user": false,
"organisation_management_level": "superadmin", "organisation_management_level": "superadmin",
"is_present_in_meeting_ids": [], "is_present_in_meeting_ids": [],
"meeting_id": null, "committee_ids": [1],
"guest_meeting_ids": [], "committee_$_management_level": ["1"],
"committee_as_member_ids": [], "committee_$1_management_level": "can_manage",
"committee_as_manager_ids": [],
"comment_$": [], "comment_$": [],
"number_$": [], "number_$": [],
@ -63,7 +63,9 @@
"projection_$_ids": [], "projection_$_ids": [],
"current_projector_$_ids": [], "current_projector_$_ids": [],
"vote_delegated_$_to_id": [], "vote_delegated_$_to_id": [],
"vote_delegations_$_from_ids": [] "vote_delegations_$_from_ids": [],
"meeting_ids": [1]
}], }],
"resource": [], "resource": [],
"organisation_tag": [], "organisation_tag": [],
@ -76,8 +78,7 @@
"meeting_ids": [1], "meeting_ids": [1],
"template_meeting_id": null, "template_meeting_id": null,
"default_meeting_id": 1, "default_meeting_id": 1,
"member_ids": [], "user_ids": [1],
"manager_ids": [],
"forward_to_committee_ids": [], "forward_to_committee_ids": [],
"receive_forwardings_from_committee_ids": [], "receive_forwardings_from_committee_ids": [],
"organisation_tag_ids": [], "organisation_tag_ids": [],
@ -253,8 +254,6 @@
"default_meeting_for_committee_id": 1, "default_meeting_for_committee_id": 1,
"organisation_tag_ids": [], "organisation_tag_ids": [],
"present_user_ids": [], "present_user_ids": [],
"temporary_user_ids": [],
"guest_ids": [],
"user_ids": [1], "user_ids": [1],
"reference_projector_id": 1, "reference_projector_id": 1,
"list_of_speakers_countdown_id": 1, "list_of_speakers_countdown_id": 1,

View File

@ -38,10 +38,9 @@
"organisation_management_level": "superadmin", "organisation_management_level": "superadmin",
"is_present_in_meeting_ids": [1], "is_present_in_meeting_ids": [1],
"meeting_id": null, "committee_ids": [1],
"guest_meeting_ids": [], "committee_$_management_level": ["1"],
"committee_as_member_ids": [], "committee_$1_management_level": "can_manage",
"committee_as_manager_ids": [],
"comment_$": ["1"], "comment_$": ["1"],
"comment_$1": "Test comment", "comment_$1": "Test comment",
@ -76,7 +75,9 @@
"vote_delegated_vote_$_ids": ["1"], "vote_delegated_vote_$_ids": ["1"],
"vote_delegated_vote_$1_ids": [7], "vote_delegated_vote_$1_ids": [7],
"vote_delegated_$_to_id": [], "vote_delegated_$_to_id": [],
"vote_delegations_$_from_ids": [] "vote_delegations_$_from_ids": [],
"meeting_ids": [1]
}, },
{ {
"id": 2, "id": 2,
@ -99,10 +100,8 @@
"organisation_management_level": "", "organisation_management_level": "",
"is_present_in_meeting_ids": [], "is_present_in_meeting_ids": [],
"meeting_id": null, "committee_ids": [1],
"guest_meeting_ids": [], "committee_$_management_level": [],
"committee_as_member_ids": [],
"committee_as_manager_ids": [],
"comment_$": ["1"], "comment_$": ["1"],
"comment_$1": "Test comment a", "comment_$1": "Test comment a",
@ -116,7 +115,7 @@
"vote_weight_$1": "1.000000", "vote_weight_$1": "1.000000",
"group_$_ids": ["1"], "group_$_ids": ["1"],
"group_$1_ids": [6], "group_$1_ids": [5],
"speaker_$_ids": ["1"], "speaker_$_ids": ["1"],
"speaker_$1_ids": [2, 3, 7, 10, 11, 13], "speaker_$1_ids": [2, 3, 7, 10, 11, 13],
"personal_note_$_ids": [], "personal_note_$_ids": [],
@ -132,7 +131,9 @@
"current_projector_$_ids": [], "current_projector_$_ids": [],
"vote_delegated_vote_$_ids": [], "vote_delegated_vote_$_ids": [],
"vote_delegated_$_to_id": [], "vote_delegated_$_to_id": [],
"vote_delegations_$_from_ids": [] "vote_delegations_$_from_ids": [],
"meeting_ids": [1]
}, },
{ {
"id": 3, "id": 3,
@ -155,10 +156,8 @@
"organisation_management_level": "", "organisation_management_level": "",
"is_present_in_meeting_ids": [], "is_present_in_meeting_ids": [],
"meeting_id": null, "committee_ids": [],
"guest_meeting_ids": [1], "committee_$_management_level": [],
"committee_as_member_ids": [],
"committee_as_manager_ids": [],
"comment_$": ["1"], "comment_$": ["1"],
"comment_$1": "Test comment b as guest", "comment_$1": "Test comment b as guest",
@ -171,7 +170,8 @@
"vote_weight_$": ["1"], "vote_weight_$": ["1"],
"vote_weight_$1": "1.000000", "vote_weight_$1": "1.000000",
"group_$_ids": [], "group_$_ids": ["1"],
"group_$1_ids": [5],
"speaker_$_ids": ["1"], "speaker_$_ids": ["1"],
"speaker_$1_ids": [4, 8, 9], "speaker_$1_ids": [4, 8, 9],
"personal_note_$_ids": [], "personal_note_$_ids": [],
@ -188,7 +188,9 @@
"current_projector_$_ids": [], "current_projector_$_ids": [],
"vote_delegated_vote_$_ids": [], "vote_delegated_vote_$_ids": [],
"vote_delegated_$_to_id": [], "vote_delegated_$_to_id": [],
"vote_delegations_$_from_ids": [] "vote_delegations_$_from_ids": [],
"meeting_ids": [1]
}], }],
"resource": [ "resource": [
{ {
@ -217,8 +219,7 @@
"meeting_ids": [1], "meeting_ids": [1],
"template_meeting_id": null, "template_meeting_id": null,
"default_meeting_id": 1, "default_meeting_id": 1,
"member_ids": [], "user_ids": [1, 2],
"manager_ids": [],
"forward_to_committee_ids": [], "forward_to_committee_ids": [],
"receive_forwardings_from_committee_ids": [], "receive_forwardings_from_committee_ids": [],
"organisation_tag_ids": [1], "organisation_tag_ids": [1],
@ -395,8 +396,6 @@
"default_meeting_for_committee_id": 1, "default_meeting_for_committee_id": 1,
"organisation_tag_ids": [1], "organisation_tag_ids": [1],
"present_user_ids": [1], "present_user_ids": [1],
"temporary_user_ids": [],
"guest_ids": [3],
"user_ids": [1, 2, 3], "user_ids": [1, 2, 3],
"reference_projector_id": 2, "reference_projector_id": 2,
"list_of_speakers_countdown_id": 1, "list_of_speakers_countdown_id": 1,
@ -570,7 +569,7 @@
"user.can_change_own_password" "user.can_change_own_password"
], ],
"user_ids": [2], "user_ids": [2, 3],
"mediafile_access_group_ids": [], "mediafile_access_group_ids": [],
"mediafile_inherited_access_group_ids": [], "mediafile_inherited_access_group_ids": [],
"read_comment_section_ids": [1], "read_comment_section_ids": [1],

View File

@ -46,10 +46,10 @@
# - There are template fields (see autoupdate service interface) with a `$` as # - There are template fields (see autoupdate service interface) with a `$` as
# the placeholder. # the placeholder.
# - The type `template` describes a structured field for the given model. If the # - The type `template` describes a structured field for the given model. If the
# property `replacement` is given, it describes which field of the same model # property `replacement_collection` is given, it describes which model the
# is used as the replacement (=> structured relation). If it not given, the field # replacement ids are belonging to (=> structured relation). If it is not given,
# is a structured tag. The property `fields` contains the definition for all the # the field is a structured tag. The property `fields` contains the definition
# fields that come from the template field. # for all the fields that come from the template field.
# JSON Schema Properties: # JSON Schema Properties:
# - You can add JSON Schema properties to the fields like `enum`, `description`, # - You can add JSON Schema properties to the fields like `enum`, `description`,
# `maxLength` and `minimum` # `maxLength` and `minimum`
@ -126,40 +126,38 @@ user:
is_present_in_meeting_ids: is_present_in_meeting_ids:
type: relation-list type: relation-list
to: meeting/present_user_ids to: meeting/present_user_ids
meeting_id: committee_ids:
type: relation
to: meeting/temporary_user_ids # Temporary users
guest_meeting_ids:
type: relation-list type: relation-list
to: meeting/guest_ids # Guests in meetings to: committee/user_ids
committee_as_member_ids:
type: relation-list # committee specific permissions
to: committee/member_ids committee_$_management_level:
committee_as_manager_ids: type: template
type: relation-list replacement_collection: committee
to: committee/manager_ids description: Hierarchical permission level for the each committee organisation.
enum:
- can_manage
# Meeting specific personal data # Meeting specific personal data
# Replacement is the meeting id but it is not a structured relation.
comment_$: comment_$:
type: template type: template
replacement: meeting_id replacement_collection: meeting
fields: HTMLStrict fields: HTMLStrict
number_$: number_$:
type: template type: template
replacement: meeting_id replacement_collection: meeting
fields: string fields: string
structure_level_$: structure_level_$:
type: template type: template
replacement: meeting_id replacement_collection: meeting
fields: string fields: string
about_me_$: about_me_$:
type: template type: template
replacement: meeting_id replacement_collection: meeting
fields: HTMLStrict fields: HTMLStrict
vote_weight_$: vote_weight_$:
type: template type: template
replacement: meeting_id replacement_collection: meeting
fields: decimal(6) fields: decimal(6)
# All foreign keys are meeting-specific: # All foreign keys are meeting-specific:
@ -170,84 +168,89 @@ user:
# the need to get all groups and filter them for the meeting # the need to get all groups and filter them for the meeting
group_$_ids: group_$_ids:
type: template type: template
replacement: meeting_id replacement_collection: meeting
fields: fields:
type: relation-list type: relation-list
to: group/user_ids to: group/user_ids
speaker_$_ids: speaker_$_ids:
type: template type: template
replacement: meeting_id replacement_collection: meeting
fields: fields:
type: relation-list type: relation-list
to: speaker/user_id to: speaker/user_id
personal_note_$_ids: personal_note_$_ids:
type: template type: template
replacement: meeting_id replacement_collection: meeting
fields: fields:
type: relation-list type: relation-list
to: personal_note/user_id to: personal_note/user_id
on_delete: CASCADE on_delete: CASCADE
supported_motion_$_ids: supported_motion_$_ids:
type: template type: template
replacement: meeting_id replacement_collection: meeting
fields: fields:
type: relation-list type: relation-list
to: motion/supporter_ids to: motion/supporter_ids
submitted_motion_$_ids: submitted_motion_$_ids:
type: template type: template
replacement: meeting_id replacement_collection: meeting
fields: fields:
type: relation-list type: relation-list
to: motion_submitter/user_id to: motion_submitter/user_id
poll_voted_$_ids: poll_voted_$_ids:
type: template type: template
replacement: meeting_id replacement_collection: meeting
fields: fields:
type: relation-list type: relation-list
to: poll/voted_ids to: poll/voted_ids
option_$_ids: option_$_ids:
type: template type: template
replacement: meeting_id replacement_collection: meeting
fields: fields:
type: relation-list type: relation-list
to: option/content_object_id to: option/content_object_id
vote_$_ids: vote_$_ids:
type: template type: template
replacement: meeting_id replacement_collection: meeting
fields: fields:
type: relation-list type: relation-list
to: vote/user_id to: vote/user_id
vote_delegated_vote_$_ids: vote_delegated_vote_$_ids:
type: template type: template
replacement: meeting_id replacement_collection: meeting
fields: fields:
type: relation-list type: relation-list
to: vote/delegated_user_id to: vote/delegated_user_id
assignment_candidate_$_ids: assignment_candidate_$_ids:
type: template type: template
replacement: meeting_id replacement_collection: meeting
fields: fields:
type: relation-list type: relation-list
to: assignment_candidate/user_id to: assignment_candidate/user_id
projection_$_ids: projection_$_ids:
type: template type: template
replacement: meeting_id replacement_collection: meeting
fields: fields:
type: relation-list type: relation-list
to: projection/content_object_id to: projection/content_object_id
vote_delegated_$_to_id: vote_delegated_$_to_id:
type: template type: template
replacement: meeting_id replacement_collection: meeting
fields: fields:
type: relation type: relation
to: user/vote_delegations_$_from_ids to: user/vote_delegations_$_from_ids
vote_delegations_$_from_ids: vote_delegations_$_from_ids:
type: template type: template
replacement: meeting_id replacement_collection: meeting
fields: fields:
type: relation-list type: relation-list
to: user/vote_delegated_$_to_id to: user/vote_delegated_$_to_id
meeting_ids:
type: number[]
decription: Calculated. All ids from group_$_ids as integers.
read_only: true
# New: Resource # New: Resource
# Resources are organsation wide "mediafiles", like logos for the organisatio or # Resources are organsation wide "mediafiles", like logos for the organisatio or
# organisation-wide fonts. Therefore, no permission checks are done and the user # organisation-wide fonts. Therefore, no permission checks are done and the user
@ -300,12 +303,9 @@ committee:
default_meeting_id: default_meeting_id:
type: relation type: relation
to: meeting/default_meeting_for_committee_id to: meeting/default_meeting_for_committee_id
member_ids: user_ids:
type: relation-list type: relation-list
to: user/committee_as_member_ids to: user/committee_ids
manager_ids:
type: relation-list
to: user/committee_as_manager_ids
forward_to_committee_ids: forward_to_committee_ids:
type: relation-list type: relation-list
to: committee/receive_forwardings_from_committee_ids to: committee/receive_forwardings_from_committee_ids
@ -878,15 +878,9 @@ meeting:
present_user_ids: present_user_ids:
type: relation-list type: relation-list
to: user/is_present_in_meeting_ids to: user/is_present_in_meeting_ids
temporary_user_ids:
type: relation-list
to: user/meeting_id
guest_ids:
type: relation-list
to: user/guest_meeting_ids
user_ids: user_ids:
type: number[] type: number[]
decription: Calculated. All ids from temporary_user_ids, guest_ids and all users assigned to groups. decription: Calculated. All user ids from all users assigned to groups of this meeting.
read_only: true read_only: true
reference_projector_id: reference_projector_id:
type: relation type: relation