Merge pull request #6205 from r-peschke/Issue6204_fields_for_archiving_meetings

Issue6204: Define fields for archiving of meetings
This commit is contained in:
Finn Stutzenstein 2021-08-17 09:04:13 +02:00 committed by GitHub
commit bd537b5678
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 208 additions and 164 deletions

View File

@ -0,0 +1,30 @@
---
name: Prevent manual changes of initial-data.json without md5 hash
# The file initial-data.json has a migration-index (MI) set to an active migration,
# In consequence setting up a new system triggers migrations beginning at this MI.
# That's the reason this file is protected against unwanted/unintended edits.
#
# If one is sure to change the initial-data.json file it is allowed!
# 1. Change the file
# 2. Get the md5sum for changed initial-dta.json
# 3. Change the md5-check-literal in this workflow-file
on:
push:
paths:
- "docker/initial-data.json"
pull_request:
paths:
- "docker/initial-data.json"
jobs:
validate-data:
name: Validate example-data.json and initial-data.json
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v2
- name: Show hash for initial-data.json
run: md5sum docker/initial-data.json
- name: Validate and protect initial-data.json
run: echo "79e29bd433253fac11899059d59cebe3 docker/initial-data.json" | md5sum -c -

View File

@ -1,5 +1,5 @@
--- ---
name: Validate models.yml and initial and example data name: Validate models.yml and example data
on: [push, pull_request] on: [push, pull_request]
env: env:
PYTHON_VERSION: 3.9.6 PYTHON_VERSION: 3.9.6
@ -8,44 +8,45 @@ jobs:
name: Validate models.yml name: Validate models.yml
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Check out code - name: Check out code
uses: actions/checkout@v2 uses: actions/checkout@v2
- name: Set up Python - name: Set up Python
uses: actions/setup-python@v2 uses: actions/setup-python@v2
with: with:
python-version: ${{ env.PYTHON_VERSION }} python-version: ${{ env.PYTHON_VERSION }}
- name: Install requirements - name: Install requirements
run: pip install -U -r docs/modelsvalidator/requirements.txt run: pip install -U -r docs/modelsvalidator/requirements.txt
- name: Validate models.yml - name: Validate models.yml
working-directory: docs/modelsvalidator working-directory: docs/modelsvalidator
run: python validate.py run: python validate.py
validate-data: validate-data:
name: Validate example-data.json and initial-data.json name: Validate example-data.json
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Check out code - name: Check out code
uses: actions/checkout@v2 uses: actions/checkout@v2
- name: Checkout backend submodule - name: Checkout backend submodule
run: git submodule update --init openslides-backend/ run: git submodule update --init openslides-backend/
- name: Set up Python - name: Set up Python
uses: actions/setup-python@v2 uses: actions/setup-python@v2
with: with:
python-version: ${{ env.PYTHON_VERSION }} python-version: ${{ env.PYTHON_VERSION }}
- name: Install requirements - name: Install requirements
run: pip install -U -r openslides-backend/cli/requirements.txt run: pip install -U -r openslides-backend/cli/requirements.txt
- name: set pythonpath - name: set pythonpath
run: echo "PYTHONPATH=openslides-backend" >> $GITHUB_ENV run: echo "PYTHONPATH=openslides-backend" >> $GITHUB_ENV
- name: generate models.py for next step - name: generate models.py for next step
run: python openslides-backend/cli/generate_models.py run: python openslides-backend/cli/generate_models.py docs/models.yml
- name: Validate example-data.json
run: python openslides-backend/cli/check_json.py docs/example-data.json
- name: Validate example-data.json
run: python openslides-backend/cli/check_json.py docs/example-data.json docker/initial-data.json

View File

@ -1,5 +1,5 @@
{ {
"_migration_index": -1, "_migration_index": 1,
"organization": [ "organization": [
{ {
"id": 1, "id": 1,
@ -11,9 +11,7 @@
"theme": "openslides-default-light-theme", "theme": "openslides-default-light-theme",
"reset_password_verbose_errors": false, "reset_password_verbose_errors": false,
"enable_electronic_voting": false, "enable_electronic_voting": false,
"committee_ids": [ "committee_ids": [1],
1
],
"resource_ids": [], "resource_ids": [],
"organization_tag_ids": [] "organization_tag_ids": []
} }

View File

@ -13,6 +13,8 @@
"reset_password_verbose_errors": true, "reset_password_verbose_errors": true,
"committee_ids": [1], "committee_ids": [1],
"active_meeting_ids": [1],
"limit_of_meetings": 20,
"resource_ids": [1], "resource_ids": [1],
"organization_tag_ids": [1] "organization_tag_ids": [1]
}], }],
@ -228,6 +230,7 @@
"meeting": [ "meeting": [
{ {
"id": 1, "id": 1,
"is_active_in_organization_id": 1,
"url_name": "os3_test", "url_name": "os3_test",
"template_for_committee_id": null, "template_for_committee_id": null,
"enable_anonymous": false, "enable_anonymous": false,

View File

@ -92,16 +92,25 @@ organization:
type: boolean type: boolean
restriction_mode: B restriction_mode: B
# Configuration (only for the server owner) # Configuration (only for the server owner)
enable_electronic_voting: enable_electronic_voting:
type: boolean type: boolean
restriction_mode: B restriction_mode: B
limit_of_meetings:
type: number
description: Maximum of active meetings for the whole organization. 0 means no limitation at all
restriction_mode: B
default: 0
minimum: 0
committee_ids: committee_ids:
type: relation-list type: relation-list
restriction_mode: B restriction_mode: B
to: committee/organization_id to: committee/organization_id
active_meeting_ids:
type: relation-list
restriction_mode: B
to: meeting/is_active_in_organization_id
resource_ids: resource_ids:
type: relation-list type: relation-list
restriction_mode: A restriction_mode: A
@ -148,9 +157,9 @@ user:
gender: gender:
type: string type: string
enum: enum:
- male - male
- female - female
- diverse - diverse
restriction_mode: A restriction_mode: A
email: email:
type: string type: string
@ -177,9 +186,9 @@ user:
type: string type: string
description: Hierarchical permission level for the whole organization. description: Hierarchical permission level for the whole organization.
enum: enum:
- superadmin - superadmin
- can_manage_organization - can_manage_organization
- can_manage_users - can_manage_users
restriction_mode: E restriction_mode: E
is_present_in_meeting_ids: is_present_in_meeting_ids:
type: relation-list type: relation-list
@ -198,7 +207,7 @@ user:
fields: fields:
type: string type: string
enum: enum:
- can_manage - can_manage
restriction_mode: E restriction_mode: E
# Meeting specific personal data # Meeting specific personal data
@ -450,6 +459,11 @@ meeting:
maxLength: 100 maxLength: 100
default: OpenSlides default: OpenSlides
restriction_mode: A restriction_mode: A
is_active_in_organization_id:
type: relation
to: organization/active_meeting_ids
restriction_mode: A
description: Backrelation and boolean flag at once
description: description:
type: string type: string
maxLength: 100 maxLength: 100
@ -585,8 +599,8 @@ meeting:
export_csv_encoding: export_csv_encoding:
type: string type: string
enum: enum:
- utf-8 - utf-8
- iso-8859-15 - iso-8859-15
default: utf-8 default: utf-8
restriction_mode: B restriction_mode: B
export_csv_separator: export_csv_separator:
@ -596,24 +610,24 @@ meeting:
export_pdf_pagenumber_alignment: export_pdf_pagenumber_alignment:
type: string type: string
enum: enum:
- left - left
- right - right
- center - center
default: center default: center
restriction_mode: B restriction_mode: B
export_pdf_fontsize: export_pdf_fontsize:
type: number type: number
enum: enum:
- 10 - 10
- 11 - 11
- 12 - 12
default: 10 default: 10
restriction_mode: B restriction_mode: B
export_pdf_pagesize: export_pdf_pagesize:
type: string type: string
enum: enum:
- A4 - A4
- A5 - A5
default: A4 default: A4
restriction_mode: B restriction_mode: B
@ -623,9 +637,9 @@ meeting:
default: False default: False
restriction_mode: B restriction_mode: B
agenda_enable_numbering: agenda_enable_numbering:
type: boolean type: boolean
default: True default: True
restriction_mode: B restriction_mode: B
agenda_number_prefix: agenda_number_prefix:
type: string type: string
maxLength: 20 maxLength: 20
@ -633,25 +647,25 @@ meeting:
agenda_numeral_system: agenda_numeral_system:
type: string type: string
enum: enum:
- arabic - arabic
- roman - roman
default: arabic default: arabic
restriction_mode: B restriction_mode: B
agenda_item_creation: agenda_item_creation:
type: string type: string
enum: enum:
- always - always
- never - never
- default_yes - default_yes
- default_no - default_no
default: default_yes default: default_yes
restriction_mode: B restriction_mode: B
agenda_new_items_default_visibility: agenda_new_items_default_visibility:
type: string type: string
enum: enum:
- common - common
- internal - internal
- hidden - hidden
default: internal default: internal
restriction_mode: B restriction_mode: B
agenda_show_internal_items_on_projector: agenda_show_internal_items_on_projector:
@ -707,7 +721,6 @@ meeting:
default: False default: False
restriction_mode: B restriction_mode: B
# Motions # Motions
motions_default_workflow_id: motions_default_workflow_id:
type: relation type: relation
@ -731,9 +744,9 @@ meeting:
motions_default_line_numbering: motions_default_line_numbering:
type: string type: string
enum: enum:
- outside - outside
- inline - inline
- none - none
default: outside default: outside
restriction_mode: B restriction_mode: B
motions_line_length: motions_line_length:
@ -778,25 +791,25 @@ meeting:
motions_recommendation_text_mode: motions_recommendation_text_mode:
type: string type: string
enum: enum:
- original - original
- changed - changed
- diff - diff
- agreed - agreed
default: diff default: diff
restriction_mode: B restriction_mode: B
motions_default_sorting: motions_default_sorting:
type: string type: string
enum: enum:
- number - number
- weight - weight
default: number default: number
restriction_mode: B restriction_mode: B
motions_number_type: motions_number_type:
type: string type: string
enum: enum:
- per_category - per_category
- serially_numbered - serially_numbered
- manually - manually
default: per_category default: per_category
restriction_mode: B restriction_mode: B
motions_number_min_digits: motions_number_min_digits:
@ -830,9 +843,9 @@ meeting:
motions_amendments_text_mode: motions_amendments_text_mode:
type: string type: string
enum: enum:
- freestyle - freestyle
- fulltext - fulltext
- paragraph - paragraph
default: paragraph default: paragraph
restriction_mode: B restriction_mode: B
motions_amendments_multiple_paragraphs: motions_amendments_multiple_paragraphs:
@ -864,9 +877,9 @@ meeting:
motion_poll_ballot_paper_selection: motion_poll_ballot_paper_selection:
type: string type: string
enum: enum:
- NUMBER_OF_DELEGATES - NUMBER_OF_DELEGATES
- NUMBER_OF_ALL_PARTICIPANTS - NUMBER_OF_ALL_PARTICIPANTS
- CUSTOM_NUMBER - CUSTOM_NUMBER
default: CUSTOM_NUMBER default: CUSTOM_NUMBER
restriction_mode: B restriction_mode: B
motion_poll_ballot_paper_number: motion_poll_ballot_paper_number:
@ -890,9 +903,9 @@ meeting:
users_sort_by: users_sort_by:
type: string type: string
enum: enum:
- first_name - first_name
- last_name - last_name
- number - number
default: first_name default: first_name
restriction_mode: B restriction_mode: B
users_enable_presence_view: users_enable_presence_view:
@ -928,10 +941,10 @@ meeting:
users_pdf_wlan_encryption: users_pdf_wlan_encryption:
type: string type: string
enum: enum:
- "" - ""
- WEP - WEP
- WPA - WPA
- nopass - nopass
restriction_mode: B restriction_mode: B
users_email_sender: users_email_sender:
type: string type: string
@ -977,9 +990,9 @@ meeting:
assignment_poll_ballot_paper_selection: assignment_poll_ballot_paper_selection:
type: string type: string
enum: enum:
- NUMBER_OF_DELEGATES - NUMBER_OF_DELEGATES
- NUMBER_OF_ALL_PARTICIPANTS - NUMBER_OF_ALL_PARTICIPANTS
- CUSTOM_NUMBER - CUSTOM_NUMBER
default: CUSTOM_NUMBER default: CUSTOM_NUMBER
restriction_mode: B restriction_mode: B
assignment_poll_ballot_paper_number: assignment_poll_ballot_paper_number:
@ -1014,9 +1027,9 @@ meeting:
poll_ballot_paper_selection: poll_ballot_paper_selection:
type: string type: string
enum: enum:
- NUMBER_OF_DELEGATES - NUMBER_OF_DELEGATES
- NUMBER_OF_ALL_PARTICIPANTS - NUMBER_OF_ALL_PARTICIPANTS
- CUSTOM_NUMBER - CUSTOM_NUMBER
restriction_mode: B restriction_mode: B
poll_ballot_paper_number: poll_ballot_paper_number:
type: number type: number
@ -1290,43 +1303,42 @@ group:
type: string[] type: string[]
items: items:
enum: enum:
- agenda_item.can_manage - agenda_item.can_manage
- agenda_item.can_see - agenda_item.can_see
- agenda_item.can_see_internal - agenda_item.can_see_internal
- assignment.can_manage - assignment.can_manage
- assignment.can_nominate_other - assignment.can_nominate_other
- assignment.can_nominate_self - assignment.can_nominate_self
- assignment.can_see - assignment.can_see
- chat.can_manage - chat.can_manage
- list_of_speakers.can_be_speaker - list_of_speakers.can_be_speaker
- list_of_speakers.can_manage - list_of_speakers.can_manage
- list_of_speakers.can_see - list_of_speakers.can_see
- mediafile.can_manage - mediafile.can_manage
- mediafile.can_see - mediafile.can_see
- meeting.can_manage_logos_and_fonts - meeting.can_manage_logos_and_fonts
- meeting.can_manage_settings - meeting.can_manage_settings
- meeting.can_see_autopilot - meeting.can_see_autopilot
- meeting.can_see_frontpage - meeting.can_see_frontpage
- meeting.can_see_history - meeting.can_see_history
- meeting.can_see_livestream - meeting.can_see_livestream
- motion.can_create - motion.can_create
- motion.can_create_amendments - motion.can_create_amendments
- motion.can_manage - motion.can_manage
- motion.can_manage_metadata - motion.can_manage_metadata
- motion.can_manage_polls - motion.can_manage_polls
- motion.can_see - motion.can_see
- motion.can_see_internal - motion.can_see_internal
- motion.can_support - motion.can_support
- poll.can_manage - poll.can_manage
- projector.can_manage - projector.can_manage
- projector.can_see - projector.can_see
- tag.can_manage - tag.can_manage
- user.can_manage - user.can_manage
- user.can_see - user.can_see
- user.can_see_extra_data - user.can_see_extra_data
restriction_mode: A restriction_mode: A
user_ids: user_ids:
type: relation-list type: relation-list
to: user/group_$_ids to: user/group_$_ids
@ -1461,15 +1473,15 @@ agenda_item:
type: string type: string
restriction_mode: C restriction_mode: C
closed: closed:
type: boolean type: boolean
default: false default: false
restriction_mode: A restriction_mode: A
type: type:
type: string type: string
enum: enum:
- common - common
- internal - internal
- hidden - hidden
default: common default: common
restriction_mode: A restriction_mode: A
duration: duration:
@ -1755,17 +1767,17 @@ motion:
restriction_mode: C restriction_mode: C
origin_id: origin_id:
type: relation type: relation
to: motion/derived_motion_ids # Note: The related motions may not be in the same meeting to: motion/derived_motion_ids # Note: The related motions may not be in the same meeting
restriction_mode: B restriction_mode: B
derived_motion_ids: derived_motion_ids:
type: relation-list type: relation-list
to: motion/origin_id # Note: The related motions may not be in the same meeting to: motion/origin_id # Note: The related motions may not be in the same meeting
restriction_mode: B restriction_mode: B
all_origin_ids: all_origin_ids:
type: number[] # Calculated: All parents (origin_id), grandparents, etc. of this motion. type: number[] # Calculated: All parents (origin_id), grandparents, etc. of this motion.
restriction_mode: B restriction_mode: B
all_derived_motion_ids: all_derived_motion_ids:
type: number[] # Calculated: All children (derived_motion_ids), grandchildren, etc. of this motion. type: number[] # Calculated: All children (derived_motion_ids), grandchildren, etc. of this motion.
restriction_mode: B restriction_mode: B
state_id: state_id:
type: relation type: relation
@ -2061,10 +2073,10 @@ motion_change_recommendation:
type: type:
type: string type: string
enum: enum:
- replacement - replacement
- insertion - insertion
- deletion - deletion
- other - other
default: replacement default: replacement
restriction_mode: A restriction_mode: A
other_description: other_description:
@ -2112,11 +2124,11 @@ motion_state:
css_class: css_class:
type: string type: string
enum: enum:
- grey - grey
- red - red
- green - green
- lightblue - lightblue
- yellow - yellow
default: lightblue default: lightblue
required: true required: true
restriction_mode: A restriction_mode: A
@ -2124,10 +2136,10 @@ motion_state:
type: string[] type: string[]
items: items:
enum: enum:
- motion.can_see_internal - motion.can_see_internal
- motion.can_manage_metadata - motion.can_manage_metadata
- motion.can_manage - motion.can_manage
- is_submitter - is_submitter
default: [] default: []
restriction_mode: A restriction_mode: A
allow_support: allow_support:
@ -2153,9 +2165,9 @@ motion_state:
merge_amendment_into_final: merge_amendment_into_final:
type: string type: string
enum: enum:
- do_not_merge - do_not_merge
- undefined - undefined
- do_merge - do_merge
default: undefined default: undefined
restriction_mode: A restriction_mode: A
show_recommendation_extension_field: show_recommendation_extension_field:
@ -2167,15 +2179,15 @@ motion_state:
type: relation-list type: relation-list
to: motion_state/previous_state_ids to: motion_state/previous_state_ids
equal_fields: equal_fields:
- meeting_id - meeting_id
- workflow_id - workflow_id
restriction_mode: A restriction_mode: A
previous_state_ids: previous_state_ids:
type: relation-list type: relation-list
to: motion_state/next_state_ids to: motion_state/next_state_ids
equal_fields: equal_fields:
- meeting_id - meeting_id
- workflow_id - workflow_id
restriction_mode: A restriction_mode: A
motion_ids: motion_ids:
type: relation-list type: relation-list
@ -2512,9 +2524,9 @@ assignment:
phase: phase:
type: string type: string
enum: enum:
- search - search
- voting - voting
- finished - finished
default: search default: search
restriction_mode: B restriction_mode: B
default_poll_description: default_poll_description:

@ -1 +1 @@
Subproject commit c3cef6c3d5066d80fe2ad446dfbb84270def0023 Subproject commit 6218992fe4512b8d00242131de4ce952669ab11a