2020-09-19 20:53:44 +02:00
---
2020-09-18 18:00:08 +02:00
# Types:
2020-09-19 20:53:44 +02:00
# - Nativ datatypes: string, number, boolean, JSON
2020-10-01 14:14:09 +02:00
# - HTMLStrict: A string with HTML content.
# - HTMLPermissive: A string with HTML content (with video tags).
2020-09-19 20:53:44 +02:00
# - float: Numbers that are expected to be non-integer. Formatted as in rfc7159.
# - decimal(X): Decimal values represented as a string with X decimal places.
2020-09-24 00:52:10 +02:00
# At the moment we support only X == 6.
2020-10-01 14:14:09 +02:00
# - timestamp: Datetime as a unix timestamp. Why a number? This enables queries
2020-09-18 18:00:08 +02:00
# in the DB. And we do not need more precision than 1 second.
2020-09-24 00:52:10 +02:00
# - <T>[]: This indicates and arbitrary array of the given type. At the moment
# we support only some types. You can add JSON Schema properties for items
# using the extra property `items`
2020-09-18 18:00:08 +02:00
# Relations:
2020-09-19 20:53:44 +02:00
# - We have the following types: `relation`, `relation-list`, `generic-relation`
# and `generic-relation-list`.
# - Non-generic relations: The simple syntax for such a field
# `to: <collection>/<field>`. This is a reference to a collection. The reverse
# relation field in this collection is <field>. E. g. in a motion the field
# `category_id` links to one category where the field `motion_ids` contains the
# motion id. The simple notation for the field is `motion_category/motion_ids`.
# The reverse field has type `relation-list` and is related back to
# `motion/category_id`. The type indicates that there are many
# motion ids.
# - Generic relations: The difference to non-generic relations is that you have a
# list of possible collections. Therefor we split the simple notation up to the
# properties `collection` and `field`.
2020-10-01 14:14:09 +02:00
# - on_delete: This fields determines what should happen with the foreign model if
# this model gets deleted. Possible values are:
# - SET_NULL (default): delete the id from the foreign key
# - PROTECT: if the foreign key is not empty, throw an error instead of
# deleting the object
# - CASCADE: also delete all models in this foreign key
2020-09-19 20:53:44 +02:00
# Structured fields:
2020-09-18 18:00:08 +02:00
# - There are template fields (see autoupdate service interface) with a `$` as
2020-09-19 20:53:44 +02:00
# the placeholder. We have three different types: `template`,
# `structured-relation` and `structured-tag`.
# - The type `template` describes a structured field for the given model. The
# property `replacement` describes the meaning of the template. The property
# `fields` contains the definition for all the fields that come from the template
# field.
# - The type `structured-relation` describes the content of a related field as a
# structured field (with properties `name`, `replacement` and `through`).
# - The type `structured-tag` describes the content of a related field as a
# structured field where the template is filled with arbitrary strings instead of
# instance ids.
2020-09-24 00:52:10 +02:00
# JSON Schema Properties:
# - You can add JSON Schema properties like `enum` and `description` to the fields.
2020-09-19 20:53:44 +02:00
2020-09-18 18:00:08 +02:00
organisation :
id : number
name : string
2020-10-01 14:14:09 +02:00
description : HTMLStrict
2020-09-18 18:00:08 +02:00
2020-10-05 11:15:14 +02:00
# Settings (configurable by the client)
2020-09-18 18:00:08 +02:00
legal_notice : string
privacy_policy : string
login_text : string
theme : string
custom_translations : JSON
2020-10-05 11:15:14 +02:00
reset_password_verbose_errors : boolean
# Configuration (only for the server owner)
enable_electronic_voting :
type : boolean
read_only : true
2020-09-18 18:00:08 +02:00
committee_ids :
type : relation-list
to : committee/organisation_id
role_ids :
type : relation-list
to : role/organisation_id
superadmin_role_id :
type : relation
to : role/superadmin_role_for_organisation_id
resource_ids :
type : relation-list
to : resource/organisation_id
user :
id : number
username : string
title : string
first_name : string
last_name : string
is_active : boolean
2020-11-03 11:33:23 +01:00
is_physical_person :
type : boolean
default : true
2020-09-18 18:00:08 +02:00
password : string
default_password : string
2020-10-01 14:14:09 +02:00
about_me : HTMLStrict
2020-09-18 18:00:08 +02:00
gender : string
2020-10-01 14:14:09 +02:00
comment : HTMLStrict
2020-09-18 18:00:08 +02:00
number : string
structure_level : string
email : string
last_email_send : string
2020-09-19 20:53:44 +02:00
vote_weight : decimal(6)
2020-10-05 11:15:14 +02:00
is_demo_user :
type : boolean
read_only : true
2020-09-18 18:00:08 +02:00
role_id :
type : relation
to: role/user_ids # Attention : prevent impelenting a "default-role" or let a
# user create such a role! This would cause the user_ids-array for this
# role to explode in size. If a user has no role, it should be handles as
# the user has no permission in the organisation and is a "normal" delegate
# there. Just a few users (expected <100) should even get a role and all
# other don't.
# Meeting and committee
is_present_in_meeting_ids :
type : relation-list
to : meeting/present_user_ids
meeting_id :
type : relation
to : meeting/temporary_user_ids # Temporary users
guest_meeting_ids :
type : relation-list
to : meeting/guest_ids # Guests in meetings
committee_as_member_ids :
type : relation-list
to : committee/member_ids
committee_as_manager_ids :
type : relation-list
to : committee/manager_ids
# Projection
projection_ids :
type : relation-list
to : projection/element_id
current_projector_ids :
type : relation-list
to : projector/current_element_ids
# All foreign keys are meeting-specific:
# - Keys are smaller (Space is in O(n^2) for n keys
# in the relation), so this saves storagespace
# - This makes quering things like this possible:
# "Give me all groups for User X in Meeting Y" without
# the need to get all groups and filter them for the meeting
group_$_ids :
type : template
replacement : meeting_id
fields :
type : relation-list
to : group/user_ids
speaker_$_ids :
type : template
replacement : meeting_id
fields :
type : relation-list
to : speaker/user_id
personal_note_$_ids :
type : template
replacement : meeting_id
fields :
type : relation-list
to : personal_note/user_id
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
2020-09-18 18:00:08 +02:00
supported_motion_$_ids :
type : template
replacement : meeting_id
fields :
type : relation-list
to : motion/supporter_ids
submitted_motion_$_ids :
type : template
replacement : meeting_id
fields :
type : relation-list
to : motion_submitter/user_id
motion_poll_voted_$_ids :
type : template
replacement : meeting_id
fields :
type : relation-list
to : motion_poll/voted_ids
motion_vote_$_ids :
type : template
replacement : meeting_id
fields :
type : relation-list
to : motion_vote/user_id
2020-10-05 11:15:14 +02:00
motion_delegated_vote_$_ids :
type : template
replacement : meeting_id
fields :
type : relation-list
to : motion_vote/delegated_user_id
2020-09-18 18:00:08 +02:00
assignment_candidate_$_ids :
type : template
replacement : meeting_id
fields :
type : relation-list
to : assignment_candidate/user_id
assignment_poll_voted_$_ids :
type : template
replacement : meeting_id
fields :
type : relation-list
to : assignment_poll/voted_ids
assignment_option_$_ids :
type : template
replacement : meeting_id
fields :
type : relation-list
to : assignment_option/user_id
assignment_vote_$_ids :
type : template
replacement : meeting_id
fields :
type : relation-list
to : assignment_vote/user_id
2020-10-05 11:15:14 +02:00
assignment_delegated_vote_$_ids :
type : template
replacement : meeting_id
fields :
type : relation-list
to : assignment_vote/delegated_user_id
vote_delegated_$_to_id :
type : template
replacement : meeting_id
fields :
type : relation
2020-10-08 14:08:00 +02:00
to :
collection : user
field :
name : vote_delegations_$_from_ids
type : structured-relation
replacement : meeting_id
2020-10-05 11:15:14 +02:00
vote_delegations_$_from_ids :
type : template
replacement : meeting_id
fields :
type : relation-list
2020-10-08 14:08:00 +02:00
to :
collection : user
field :
name : vote_delegated_$_to_id
type : structured-relation
replacement : meeting_id
2020-09-18 18:00:08 +02:00
role :
id : number
name : string
permissions : string[]
organisation_id :
type : relation
to : organisation/role_ids
superadmin_role_for_organisation_id :
type : relation
to : organisation/superadmin_role_id
user_ids :
type : relation-list
to : user/role_id
# New: Resource
# Resources are organsation wide "mediafiles", like logos for the organisatio or
# organisation-wide fonts. Therefore, no permission checks are done and the user
# must not be logged in to retrieve files. A resource has a token, e.g. `web_header`
# or `pdf_font_italic`, so the client knowns, where to put the resource.
resource :
id : number
token : string
filesize : number
mimetype : string
organisation_id :
type : relation
to : organisation/resource_ids
committee :
id : number
2020-09-24 00:52:10 +02:00
name :
type : string
required : true
2020-10-01 14:14:09 +02:00
description : HTMLStrict
2020-09-18 18:00:08 +02:00
meeting_ids :
type : relation-list
to : meeting/committee_id
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
2020-09-18 18:00:08 +02:00
template_meeting_id :
type : relation
to : meeting/template_for_committee_id
default_meeting_id :
type : relation
to : meeting/default_meeting_for_committee_id
member_ids :
type : relation-list
2020-09-19 20:53:44 +02:00
to : user/committee_as_member_ids
2020-09-18 18:00:08 +02:00
manager_ids :
type : relation-list
to : user/committee_as_manager_ids
forward_to_committee_ids :
type : relation-list
to : committee/receive_forwardings_from_committee_ids
receive_forwardings_from_committee_ids :
type : relation-list
to : committee/forward_to_committee_ids
organisation_id :
type : relation
to : organisation/committee_ids
2020-09-24 00:52:10 +02:00
required : true
2020-09-18 18:00:08 +02:00
meeting :
id : number
welcome_title : string
2020-10-06 15:28:10 +02:00
welcome_text : HTMLPermissive
2020-09-18 18:00:08 +02:00
# General
2020-09-24 00:52:10 +02:00
name :
type : string
maxLength : 100
description :
type : string
maxLength : 100
2020-09-18 18:00:08 +02:00
location : string
2020-10-01 14:14:09 +02:00
start_time : timestamp
end_time : timestamp
2020-10-05 11:15:14 +02:00
# Configuration (only for the server owner)
jitsi_domain :
type : string
read_only : true
jitsi_room_name :
type : string
read_only : true
jitsi_room_password :
type : string
read_only : true
2020-09-18 18:00:08 +02:00
# System
2020-09-19 20:53:44 +02:00
url_name :
type : string
description : For unique urls.
2020-09-18 18:00:08 +02:00
template_for_committee_id :
type : relation
to : committee/template_meeting_id
enable_anonymous : boolean
# Jitsi/Livestream settings
conference_show : boolean
conference_auto_connect : boolean
conference_los_restriction : boolean
conference_stream_url : string
2020-10-05 11:15:14 +02:00
conference_stream_poster_url : string
2020-09-18 18:00:08 +02:00
# Projector
projector_default_countdown_time : number
2020-09-24 00:52:10 +02:00
projector_countdown_warning_time :
type : number
minimum : 0
2020-09-18 18:00:08 +02:00
# Exports
2020-09-24 00:52:10 +02:00
export_csv_encoding :
type : string
enum :
- utf-8
- iso-8859-15
2020-09-18 18:00:08 +02:00
export_csv_separator : string
2020-09-24 00:52:10 +02:00
export_pdf_pagenumber_alignment :
type : string
enum :
- left
- right
- center
export_pdf_fontsize :
type : number
enum :
- 10
- 11
- 12
export_pdf_pagesize :
type : string
enum :
- A4
- A5
2020-09-18 18:00:08 +02:00
# Agenda
agenda_show_subtitles : boolean
agenda_enable_numbering : boolean
2020-09-24 00:52:10 +02:00
agenda_number_prefix :
type : string
maxLength : 20
agenda_numeral_system :
type : string
enum :
- arabic
- roman
agenda_item_creation :
type : string
enum :
- always
- never
- default_yes
- default_no
agenda_new_items_default_visibility :
type : number
enum :
- 1
- 2
- 3
2020-09-18 18:00:08 +02:00
agenda_show_internal_items_on_projector : boolean
# List of speakers
2020-09-24 00:52:10 +02:00
list_of_speakers_amount_last_on_projector :
type : number
minimum : 0
2020-09-18 18:00:08 +02:00
list_of_speakers_amount_next_on_projector : boolean
list_of_speakers_couple_countdown : boolean
list_of_speakers_show_amount_of_speakers_on_slide : boolean
list_of_speakers_present_users_only : boolean
list_of_speakers_show_first_contribution : boolean
# Motions
motions_default_workflow_id :
type : relation
to : motion_workflow/default_workflow_meeting_id
2020-09-24 00:52:10 +02:00
required : true
2020-09-18 18:00:08 +02:00
motions_default_amendment_workflow_id :
type : relation
to : motion_workflow/default_amendment_workflow_meeting_id
2020-09-24 00:52:10 +02:00
required : true
2020-09-18 18:00:08 +02:00
motions_default_statute_amendment_workflow_id :
type : relation
to : motion_workflow/default_statute_amendment_workflow_meeting_id
2020-09-24 00:52:10 +02:00
required : true
2020-09-18 18:00:08 +02:00
motions_preamble : string
2020-09-24 00:52:10 +02:00
motions_default_line_numbering :
type : string
enum :
- outside
- inline
- none
motions_line_length :
type : number
minimium : 40
2020-09-18 18:00:08 +02:00
motions_reason_required : boolean
motions_enable_text_on_projector : boolean
motions_enable_reason_on_projector : boolean
motions_enable_sidebox_on_projector : boolean
motions_enable_recommendation_on_projector : boolean
motions_show_referring_motions : boolean
motions_show_sequential_number : boolean
motions_recommendations_by : string
motions_statute_recommendations_by : string
2020-09-24 00:52:10 +02:00
motions_recommendation_text_mode :
type : string
enum :
- original
- changed
- diff
- agreed
2020-09-18 18:00:08 +02:00
motions_default_sorting : string
2020-10-05 11:15:14 +02:00
motions_number_type :
2020-09-24 00:52:10 +02:00
type : string
enum :
- per_category
- serially_numbered
- manually
2020-10-05 11:15:14 +02:00
motions_number_min_digits : number
motions_number_with_blank : boolean
2020-09-18 18:00:08 +02:00
motions_statutes_enabled : boolean
motions_amendments_enabled : boolean
motions_amendments_in_main_list : boolean
motions_amendments_of_amendments : boolean
motions_amendments_prefix : string
2020-09-24 00:52:10 +02:00
motions_amendments_text_mode :
type : string
enum :
- freestyle
- fulltext
- paragraph
2020-09-18 18:00:08 +02:00
motions_amendments_multiple_paragraphs : boolean
2020-09-24 00:52:10 +02:00
motions_supporters_min_amount :
type : number
minimum : 0
2020-09-18 18:00:08 +02:00
motions_supporters_enable_autoremove : boolean
motions_export_title : string
motions_export_preamble : string
motions_export_submitter_recommendation : boolean
motions_export_follow_recommendation : boolean
2020-09-24 00:52:10 +02:00
motion_poll_ballot_paper_selection :
type : string
enum :
- NUMBER_OF_DELEGATES
- NUMBER_OF_ALL_PARTICIPANTS
- CUSTOM_NUMBER
2020-09-18 18:00:08 +02:00
motion_poll_ballot_paper_number : number
motion_poll_default_type : string
motion_poll_default_100_percent_base : string
motion_poll_default_majority_method : string
motion_poll_default_group_ids :
type : relation-list
to : group/used_as_motion_poll_default_id
# Users
2020-09-24 00:52:10 +02:00
users_sort_by :
type : string
enum :
- first_name
- last_name
- number
2020-09-18 18:00:08 +02:00
users_enable_presence_view : boolean
users_enable_vote_weight : boolean
users_allow_self_set_present : boolean
users_pdf_welcometitle : string
users_pdf_welcometext : string
users_pdf_url : string
users_pdf_wlan_ssid : string
users_pdf_wlan_password : string
2020-09-24 00:52:10 +02:00
users_pdf_wlan_encryption :
type : string
enum :
- ""
- WEP
- WPA
- nopass
2020-09-18 18:00:08 +02:00
users_email_sender : string
users_email_replyto : string
users_email_subject : string
users_email_body : string
# Assignments
assignemnts_export_title : string
assignments_export_preamble : string
2020-09-24 00:52:10 +02:00
assignment_poll_ballot_paper_selection :
type : string
enum :
- NUMBER_OF_DELEGATES
- NUMBER_OF_ALL_PARTICIPANTS
- CUSTOM_NUMBER
2020-09-18 18:00:08 +02:00
assignment_poll_ballot_paper_number : number
assignment_poll_add_candidates_to_list_of_speakers : boolean
assignment_poll_sort_poll_result_by_votes : boolean
assignment_poll_default_type : string
assignment_poll_default_method : string
assignment_poll_default_100_percent_base : string
assignment_poll_default_majority_method : string
assignment_poll_default_group_ids :
type : relation-list
to : group/used_as_assignment_poll_default_id
projector_ids :
type : relation-list
to : projector/meeting_id
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
2020-09-18 18:00:08 +02:00
projectiondefault_ids :
type : relation-list
to : projectiondefault/meeting_id
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
2020-09-18 18:00:08 +02:00
projector_message_ids :
type : relation-list
to : projector_message/meeting_id
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
2020-09-18 18:00:08 +02:00
projector_countdown_ids :
type : relation-list
to : projector_countdown/meeting_id
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
2020-09-18 18:00:08 +02:00
tag_ids :
type : relation-list
to : tag/meeting_id
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
2020-09-18 18:00:08 +02:00
agenda_item_ids :
type : relation-list
to : agenda_item/meeting_id
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
2020-09-18 18:00:08 +02:00
list_of_speakers_ids :
type : relation-list
to : list_of_speakers/meeting_id
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
2020-09-18 18:00:08 +02:00
topic_ids :
type : relation-list
to : topic/meeting_id
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
2020-09-18 18:00:08 +02:00
group_ids :
type : relation-list
to : group/meeting_id
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
2020-09-18 18:00:08 +02:00
mediafile_ids :
type : relation-list
to : mediafile/meeting_id
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
2020-09-18 18:00:08 +02:00
motion_ids :
type : relation-list
to : motion/meeting_id
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
2020-09-18 18:00:08 +02:00
motion_comment_section_ids :
type : relation-list
to : motion_comment_section/meeting_id
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
2020-09-18 18:00:08 +02:00
motion_category_ids :
type : relation-list
to : motion_category/meeting_id
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
2020-09-18 18:00:08 +02:00
motion_block_ids :
type : relation-list
to : motion_block/meeting_id
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
2020-09-18 18:00:08 +02:00
motion_workflow_ids :
type : relation-list
to : motion_workflow/meeting_id
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
2020-09-18 18:00:08 +02:00
motion_statute_paragraph_ids :
type : relation-list
to : motion_statute_paragraph/meeting_id
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
2020-09-18 18:00:08 +02:00
motion_poll_ids :
type : relation-list
to : motion_poll/meeting_id
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
2020-09-18 18:00:08 +02:00
assignment_ids :
type : relation-list
to : assignment/meeting_id
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
2020-09-18 18:00:08 +02:00
assignment_poll_ids :
type : relation-list
to : assignment_poll/meeting_id
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
personal_note_ids :
type : relation-list
to : personal_note/meeting_id
on_delete : CASCADE
projection_ids :
type : relation-list
to : projection/meeting_id
on_delete : CASCADE
speaker_ids :
type : relation-list
to : speaker/meeting_id
on_delete : CASCADE
motion_option_ids :
type : relation-list
to : motion_option/meeting_id
on_delete : CASCADE
motion_vote_ids :
type : relation-list
to : motion_vote/meeting_id
on_delete : CASCADE
motion_comment_ids :
type : relation-list
to : motion_comment/meeting_id
on_delete : CASCADE
motion_submitter_ids :
type : relation-list
to : motion_submitter/meeting_id
on_delete : CASCADE
motion_change_recommendation_ids :
type : relation-list
to : motion_change_recommendation/meeting_id
on_delete : CASCADE
motion_state_ids :
type : relation-list
to : motion_state/meeting_id
on_delete : CASCADE
assignment_candidate_ids :
type : relation-list
to : assignment_candidate/meeting_id
on_delete : CASCADE
assignment_option_ids :
type : relation-list
to : assignment_option/meeting_id
on_delete : CASCADE
assignment_vote_ids :
type : relation-list
to : assignment_vote/meeting_id
on_delete : CASCADE
2020-09-18 18:00:08 +02:00
# Logos and Fonts
logo_$_id :
type : template
2020-11-03 13:41:45 +01:00
replacement : place
2020-09-18 18:00:08 +02:00
fields :
type : relation
to :
collection : mediafile
field :
name : used_as_logo_$_in_meeting_id
type : structured-tag
2020-11-03 13:41:45 +01:00
replacement : place
2020-09-18 18:00:08 +02:00
font_$_id :
type : template
2020-11-03 13:41:45 +01:00
replacement : place
2020-09-18 18:00:08 +02:00
fields :
type : relation
to :
collection : mediafile
field :
2020-09-19 20:53:44 +02:00
name : used_as_font_$_in_meeting_id
2020-09-18 18:00:08 +02:00
type : structured-tag
2020-11-03 13:41:45 +01:00
replacement : place
2020-09-18 18:00:08 +02:00
# Examples:
# logo_web_header: Mediafile;
# font_italic_pdf: Mediafile;
# The client can define these resources. There is no need
# to have whitelist/blacklist on the server. The places must
# be checked: They must match `[a-z]([a-z_]*[a-z])?` and must
# not be longer than 32 characters.
# Other relations
committee_id :
type : relation
to : committee/meeting_ids
2020-09-24 00:52:10 +02:00
required : true
2020-09-18 18:00:08 +02:00
default_meeting_for_committee_id :
type : relation
to : committee/default_meeting_id
present_user_ids :
type : relation-list
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
2020-09-24 00:52:10 +02:00
user_ids :
type : number[]
decription : Calculated. All ids from temporary_user_ids, guest_ids and all users assigned to groups.
read_only : true
2020-09-18 18:00:08 +02:00
reference_projector_id :
type : relation
to : projector/used_as_reference_projector_meeting_id
default_group_id :
type : relation
to : group/default_group_for_meeting_id
2020-09-24 00:52:10 +02:00
required : true
2020-09-18 18:00:08 +02:00
superadmin_group_id :
type : relation
to : group/superadmin_group_for_meeting_id
group :
id : number
2020-09-24 00:52:10 +02:00
name :
type : string
required : true
2020-09-18 18:00:08 +02:00
permissions : string[]
user_ids :
type : relation-list
to :
collection : user
field :
name : group_$_ids
type : structured-relation
replacement : meeting_id
default_group_for_meeting_id :
type : relation
to : meeting/default_group_id
superadmin_group_for_meeting_id :
type : relation
to : meeting/superadmin_group_id
mediafile_access_group_ids :
type : relation-list
to : mediafile/access_group_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
mediafile_inherited_access_group_ids :
type : relation-list
to : mediafile/inherited_access_group_ids
2020-09-24 00:52:10 +02:00
description : Calculated field.
read_only : true
2020-09-18 18:00:08 +02:00
read_comment_section_ids :
type : relation-list
to : motion_comment_section/read_group_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
write_comment_section_ids :
type : relation-list
to : motion_comment_section/write_group_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
motion_poll_ids :
type : relation-list
to : motion_poll/entitled_group_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
assignment_poll_ids :
type : relation-list
to : assignment_poll/entitled_group_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
used_as_motion_poll_default_id :
type : relation
to : meeting/motion_poll_default_group_ids
used_as_assignment_poll_default_id :
type : relation
to : meeting/assignment_poll_default_group_ids
meeting_id :
type : relation
to : meeting/group_ids
2020-09-24 00:52:10 +02:00
required : true
2020-09-18 18:00:08 +02:00
personal_note :
id : number
2020-10-01 14:14:09 +02:00
note : HTMLStrict
2020-09-18 18:00:08 +02:00
star : boolean
user_id :
type : relation
to :
collection : user
field :
name : personal_note_$_ids
type : structured-relation
replacement : meeting_id
content_object_id :
type : generic-relation
to :
collection :
- motion
field : personal_note_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
meeting_id :
type : relation
to : meeting/personal_note_ids
required : true
2020-09-18 18:00:08 +02:00
tag :
id : number
2020-09-24 00:52:10 +02:00
name :
type : string
required : true
2020-09-18 18:00:08 +02:00
tagged_ids :
type : generic-relation-list
to :
collection :
- agenda_item
- assignment
- motion
- topic
field : tag_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
meeting_id :
type : relation
to : meeting/tag_ids
2020-09-24 00:52:10 +02:00
required : true
2020-09-18 18:00:08 +02:00
agenda_item :
id : number
item_number : string
comment : string
closed : boolean
2020-09-24 00:52:10 +02:00
type :
type : number
enum :
- 1
- 2
- 3
2020-10-12 11:48:23 +02:00
default : 1
2020-09-24 00:52:10 +02:00
duration :
type : number
description : Given in seconds
minimum : 0
is_internal :
type : boolean
description : Calculated by the server
read_only : true
is_hidden :
type : boolean
description : Calculated by the server
read_only : true
level :
type : number
description : Calculated by the server
read_only : true
2020-09-19 20:53:44 +02:00
weight :
type : number
2020-10-13 17:16:35 +02:00
default : 10000
2020-09-18 18:00:08 +02:00
content_object_id :
type : generic-relation
to :
collection :
- motion
- motion_block
- assignment
- topic
field : agenda_item_id
2020-09-24 00:52:10 +02:00
required : true
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
parent_id :
type : relation
to : agenda_item/child_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
child_ids :
type : relation-list
to : agenda_item/parent_id
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
tag_ids :
type : relation-list
to : tag/tagged_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
projection_ids :
type : relation-list
to : projection/element_id
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
current_projector_ids :
type : relation-list
to : projector/current_element_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
meeting_id :
type : relation
to : meeting/agenda_item_ids
2020-09-24 00:52:10 +02:00
required : true
2020-09-18 18:00:08 +02:00
list_of_speakers :
id : number
closed : boolean
content_object_id :
type : generic-relation
to :
collection :
- motion
- motion_block
- assignment
- topic
- mediafile
field : list_of_speakers_id
2020-09-24 00:52:10 +02:00
required : true
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
speaker_ids :
type : relation-list
to : speaker/list_of_speakers_id
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
projection_ids :
type : relation-list
to : projection/element_id
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
current_projector_ids :
type : relation-list
to : projector/current_element_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
meeting_id :
type : relation
to : meeting/list_of_speakers_ids
2020-09-24 00:52:10 +02:00
required : true
2020-09-18 18:00:08 +02:00
speaker :
id : number
2020-09-24 00:52:10 +02:00
begin_time :
2020-10-01 14:14:09 +02:00
type : timestamp
2020-09-24 00:52:10 +02:00
read_only : true
end_time :
2020-10-01 14:14:09 +02:00
type : timestamp
2020-09-24 00:52:10 +02:00
read_only : true
2020-09-19 20:53:44 +02:00
weight :
type : number
2020-10-13 17:16:35 +02:00
default : 10000
2020-09-18 18:00:08 +02:00
marked : boolean
list_of_speakers_id :
type : relation
to : list_of_speakers/speaker_ids
2020-09-24 00:52:10 +02:00
required : true
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
user_id :
type : relation
to :
collection : user
field :
name : speaker_$_ids
type : structured-relation
replacement : meeting_id
2020-10-08 14:08:00 +02:00
required : true
meeting_id :
type : relation
to : meeting/speaker_ids
2020-09-24 00:52:10 +02:00
required : true
2020-09-18 18:00:08 +02:00
topic :
id : number
2020-09-24 00:52:10 +02:00
title :
type : string
required : true
2020-10-06 15:28:10 +02:00
text : HTMLPermissive
2020-09-18 18:00:08 +02:00
attachment_ids :
type : relation-list
2020-09-19 20:53:44 +02:00
to : mediafile/attachment_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
agenda_item_id :
type : relation
to : agenda_item/content_object_id
2020-09-24 00:52:10 +02:00
required : true
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
list_of_speakers_id :
type : relation
to : list_of_speakers/content_object_id
2020-09-24 00:52:10 +02:00
required : true
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
tag_ids :
type : relation-list
to : tag/tagged_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-28 15:12:17 +02:00
projection_ids :
type : relation-list
to : projection/element_id
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-28 15:12:17 +02:00
current_projector_ids :
type : relation-list
to : projector/current_element_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
meeting_id :
type : relation
to : meeting/topic_ids
2020-09-24 00:52:10 +02:00
required : true
2020-09-18 18:00:08 +02:00
motion :
id : number
number : string
2020-09-24 00:52:10 +02:00
sequential_number :
type : number
description : The (positive) serial number of this motion. This number is auto-generated and read-only.
read_only : true
title :
type : string
required : true
2020-10-01 14:14:09 +02:00
text : HTMLStrict
2020-09-18 18:00:08 +02:00
amendment_paragraph_$ :
type : template
replacement : paragraph_number
2020-10-01 14:14:09 +02:00
fields : HTMLStrict
modified_final_version : HTMLStrict
reason : HTMLStrict
2020-09-19 20:53:44 +02:00
category_weight :
type : number
2020-10-13 17:16:35 +02:00
default : 10000
2020-09-18 18:00:08 +02:00
state_extension : string
recommendation_extension : string
2020-09-19 20:53:44 +02:00
sort_weight :
type : number
2020-10-13 17:16:35 +02:00
default : 10000
2020-09-24 00:52:10 +02:00
created :
2020-10-01 14:14:09 +02:00
type : timestamp
2020-09-24 00:52:10 +02:00
read_only : true
last_modified :
2020-10-01 14:14:09 +02:00
type : timestamp
2020-09-24 00:52:10 +02:00
read_only : true
2020-09-18 18:00:08 +02:00
lead_motion_id :
type : relation
to : motion/amendment_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
amendment_ids :
type : relation-list
to : motion/lead_motion_id
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
sort_parent_id :
type : relation
to : motion/sort_child_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
sort_child_ids :
type : relation-list
2020-09-19 20:53:44 +02:00
to : motion/sort_parent_id
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
origin_id :
type : relation
to: motion/derived_motion_ids # Note : The related motions may not be in the same meeting
derived_motion_ids :
type : relation-list
to: motion/origin_id # Note : The related motions may not be in the same meeting
2020-09-19 20:53:44 +02:00
forwarding_tree_motion_ids: number[] # Calculated : All children (derived_motion_ids), grand children, ... and all parents (origin_id).
2020-09-18 18:00:08 +02:00
state_id :
type : relation
to : motion_state/motion_ids
2020-09-24 00:52:10 +02:00
required : true
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
recommendation_id :
type : relation
to : motion_state/motion_recommendation_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
recommendation_extension_reference_ids :
type : generic-relation-list
to :
collection :
- motion
field : referenced_in_motion_recommendation_extension_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
referenced_in_motion_recommendation_extension_ids :
type : relation-list
to : motion/recommendation_extension_reference_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
category_id :
type : relation
to : motion_category/motion_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
block_id :
type : relation
to : motion_block/motion_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
submitter_ids :
type : relation-list
to : motion_submitter/motion_id
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
supporter_ids :
type : relation-list
to :
collection : user
field :
name : supported_motion_$_ids
type : structured-relation
replacement : meeting_id
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
poll_ids :
type : relation-list
to : motion_poll/motion_id
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
change_recommendation_ids :
type : relation-list
to : motion_change_recommendation/motion_id
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
statute_paragraph_id :
type : relation
to : motion_statute_paragraph/motion_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
comment_ids :
type : relation-list
to : motion_comment/motion_id
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
agenda_item_id :
type : relation
to : agenda_item/content_object_id
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
list_of_speakers_id :
type : relation
to : list_of_speakers/content_object_id
2020-09-24 00:52:10 +02:00
required : true
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
tag_ids :
type : relation-list
to : tag/tagged_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
attachment_ids :
type : relation-list
to : mediafile/attachment_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
projection_ids :
type : relation-list
to : projection/element_id
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
current_projector_ids :
type : relation-list
to : projector/current_element_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
personal_note_ids :
type : relation-list
to : personal_note/content_object_id
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
on_delete : CASCADE
2020-09-18 18:00:08 +02:00
meeting_id :
type : relation
to : meeting/motion_ids
2020-09-24 00:52:10 +02:00
required : true
2020-09-18 18:00:08 +02:00
motion_submitter :
id : number
2020-09-19 20:53:44 +02:00
weight :
type : number
2020-10-13 17:16:35 +02:00
default : 10000
2020-09-18 18:00:08 +02:00
user_id :
type : relation
to :
collection : user
field :
name : submitted_motion_$_ids
type : structured-relation
replacement : meeting_id
motion_id :
type : relation
to : motion/submitter_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
meeting_id :
type : relation
to : meeting/motion_submitter_ids
required : true
2020-09-18 18:00:08 +02:00
motion_comment :
id : number
2020-10-01 14:14:09 +02:00
comment : HTMLStrict
2020-09-18 18:00:08 +02:00
motion_id :
type : relation
to : motion/comment_ids
2020-09-24 00:52:10 +02:00
required : true
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
section_id :
type : relation
to : motion_comment_section/comment_ids
2020-09-24 00:52:10 +02:00
required : true
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
meeting_id :
type : relation
to : meeting/motion_comment_ids
required : true
2020-09-18 18:00:08 +02:00
motion_comment_section :
id : number
2020-09-24 00:52:10 +02:00
name :
type : string
required : true
2020-09-19 20:53:44 +02:00
weight :
type : number
2020-10-13 17:16:35 +02:00
default : 10000
2020-09-18 18:00:08 +02:00
comment_ids :
type : relation-list
to : motion_comment/section_id
2020-10-01 14:14:09 +02:00
on_delete : PROTECT
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
read_group_ids :
type : relation-list
to : group/read_comment_section_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
write_group_ids :
type : relation-list
to : group/write_comment_section_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
meeting_id :
type : relation
to : meeting/motion_comment_section_ids
2020-09-24 00:52:10 +02:00
required : true
2020-09-18 18:00:08 +02:00
motion_category :
id : number
2020-09-24 00:52:10 +02:00
name :
type : string
required : true
prefix :
type : string
required : true
2020-09-19 20:53:44 +02:00
weight :
type : number
2020-10-13 17:16:35 +02:00
default : 10000
2020-09-24 00:52:10 +02:00
level :
type : number
description : Calculated field.
read_only : true
2020-09-18 18:00:08 +02:00
parent_id :
type : relation
to : motion_category/child_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
child_ids :
type : relation-list
to : motion_category/parent_id
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
motion_ids :
type : relation-list
to : motion/category_id
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
meeting_id :
type : relation
2020-09-19 20:53:44 +02:00
to : meeting/motion_category_ids
2020-09-24 00:52:10 +02:00
required : true
2020-09-18 18:00:08 +02:00
motion_block :
id : number
2020-09-24 00:52:10 +02:00
title :
type : string
required : true
2020-09-18 18:00:08 +02:00
internal : boolean
motion_ids :
type : relation-list
to : motion/block_id
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
agenda_item_id :
type : relation
to : agenda_item/content_object_id
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
list_of_speakers_id :
type : relation
to : list_of_speakers/content_object_id
2020-09-24 00:52:10 +02:00
required : true
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
projection_ids :
type : relation-list
to : projection/element_id
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
current_projector_ids :
type : relation-list
to : projector/current_element_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
meeting_id :
type : relation
to : meeting/motion_block_ids
2020-09-24 00:52:10 +02:00
required : true
2020-09-18 18:00:08 +02:00
motion_change_recommendation :
id : number
rejected : boolean
internal : boolean
2020-09-24 00:52:10 +02:00
type :
type : number
enum :
- 0
- 1
- 2
- 3
2020-10-12 19:02:26 +02:00
default : 0
2020-09-18 18:00:08 +02:00
other_description : string
2020-09-24 00:52:10 +02:00
line_from :
type : number
minimum : 0
line_to :
type : number
minimum : 0
2020-10-01 14:14:09 +02:00
text : HTMLStrict
2020-09-24 00:52:10 +02:00
creation_time :
2020-10-01 14:14:09 +02:00
type : timestamp
2020-09-24 00:52:10 +02:00
read_only : true
2020-09-18 18:00:08 +02:00
motion_id :
type : relation
to : motion/change_recommendation_ids
2020-09-24 00:52:10 +02:00
required : true
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
meeting_id :
type : relation
to : meeting/motion_change_recommendation_ids
required : true
2020-09-18 18:00:08 +02:00
motion_state :
id : number
2020-09-24 00:52:10 +02:00
name :
type : string
required : true
2020-09-18 18:00:08 +02:00
recommendation_label : string
2020-09-24 00:52:10 +02:00
css_class :
type : string
2020-11-04 14:53:57 +01:00
default : lightblue
2020-09-24 00:52:10 +02:00
enum :
2020-10-20 09:35:29 +02:00
- grey
2020-09-24 00:52:10 +02:00
- red
- green
- lightblue
- yellow
restrictions :
type : string[]
items :
enum :
- motions.can_see_internal
- motions.can_manage_metadata
- motions.can_manage
- is_submitter
2020-09-18 18:00:08 +02:00
allow_support : boolean
allow_create_poll : boolean
allow_submitter_edit : boolean
set_number : boolean
show_state_extension_field : boolean
2020-09-24 00:52:10 +02:00
merge_amendment_into_final :
type : number
default : 0
enum :
- -1
- 0
- 1
2020-09-18 18:00:08 +02:00
show_recommendation_extension_field : boolean
next_state_ids :
type : relation-list
to : motion_state/previous_state_ids
2020-10-08 14:08:00 +02:00
equal_fields :
- meeting_id
- workflow_id
2020-09-18 18:00:08 +02:00
previous_state_ids :
type : relation-list
to : motion_state/next_state_ids
2020-10-08 14:08:00 +02:00
equal_fields :
- meeting_id
- workflow_id
2020-09-18 18:00:08 +02:00
motion_ids :
type : relation-list
to : motion/state_id
2020-10-08 14:08:00 +02:00
on_delete : PROTECT
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
motion_recommendation_ids :
type : relation-list
to : motion/recommendation_id
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
workflow_id :
type : relation
to : motion_workflow/state_ids
2020-09-24 00:52:10 +02:00
required : true
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
first_state_of_workflow_id :
type : relation
to : motion_workflow/first_state_id
2020-11-05 17:35:32 +01:00
on_delete : PROTECT
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
meeting_id :
type : relation
to : meeting/motion_state_ids
required : true
2020-09-18 18:00:08 +02:00
motion_workflow :
id : number
2020-09-24 00:52:10 +02:00
name :
type : string
required : true
2020-09-18 18:00:08 +02:00
state_ids :
type : relation-list
to : motion_state/workflow_id
2020-10-01 14:14:09 +02:00
on_delete : CASCADE
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
first_state_id :
type : relation
to : motion_state/first_state_of_workflow_id
2020-09-24 00:52:10 +02:00
required : true
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
default_workflow_meeting_id :
type : relation
to : meeting/motions_default_workflow_id
default_amendment_workflow_meeting_id :
type : relation
to : meeting/motions_default_amendment_workflow_id
default_statute_amendment_workflow_meeting_id :
type : relation
to : meeting/motions_default_statute_amendment_workflow_id
meeting_id :
type : relation
to : meeting/motion_workflow_ids
2020-09-24 00:52:10 +02:00
required : true
2020-09-18 18:00:08 +02:00
motion_statute_paragraph :
id : number
2020-09-24 00:52:10 +02:00
title :
type : string
required : true
2020-10-01 14:14:09 +02:00
text : HTMLStrict
2020-09-19 20:53:44 +02:00
weight :
type : number
2020-10-13 17:16:35 +02:00
default : 10000
2020-09-18 18:00:08 +02:00
motion_ids :
type : relation-list
to : motion/statute_paragraph_id
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
meeting_id :
type : relation
to : meeting/motion_statute_paragraph_ids
2020-09-24 00:52:10 +02:00
required : true
2020-09-18 18:00:08 +02:00
motion_poll :
id : number
pollmethod : string
state : number
type : string
title : string
onehundred_percent_base : string
majority_method : string
votesvalid : decimal(6)
votesinvalid : decimal(6)
votescast : decimal(6)
user_has_voted : boolean # This is user specific and set during restriction
motion_id :
type : relation
to : motion/poll_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
option_ids :
type : relation-list
to : motion_option/poll_id
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
voted_ids :
type : relation-list
to :
collection : user
field :
name : motion_poll_voted_$_ids
type : structured-relation
replacement : meeting_id
entitled_group_ids :
type : relation-list
to : group/motion_poll_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
projection_ids :
type : relation-list
to : projection/element_id
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
current_projector_ids :
type : relation-list
to : projector/current_element_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
meeting_id :
type : relation
to : meeting/motion_poll_ids
motion_option :
id : number
yes : decimal(6)
no : decimal(6)
abstain : decimal(6)
poll_id :
type : relation
to : motion_poll/option_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
vote_ids :
type : relation-list
to : motion_vote/option_id
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
equal_fields : meeting_id
meeting_id :
type : relation
to : meeting/motion_option_ids
required : true
2020-09-18 18:00:08 +02:00
motion_vote :
id : number
weight : decimal(6)
value : string
option_id :
type : relation
to : motion_option/vote_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
user_id :
type : relation
to :
collection : user
field :
name : motion_vote_$_ids
type : structured-relation
replacement : meeting_id
2020-10-05 11:15:14 +02:00
delegated_user_id :
type : relation
to :
collection : user
field :
name : motion_delegated_vote_$_ids
type : structured-relation
replacement : meeting_id
2020-10-08 14:08:00 +02:00
meeting_id :
type : relation
to : meeting/motion_vote_ids
required : true
2020-09-18 18:00:08 +02:00
assignment :
id : number
2020-09-24 00:52:10 +02:00
title :
type : string
required : true
2020-10-01 14:14:09 +02:00
description : HTMLStrict
2020-09-24 00:52:10 +02:00
open_posts :
type : number
minimum : 0
2020-10-13 17:16:35 +02:00
default : 0
2020-09-24 00:52:10 +02:00
phase :
type : number
enum :
2020-10-30 10:03:40 +01:00
- 0
2020-09-24 00:52:10 +02:00
- 1
- 2
2020-10-30 10:03:40 +01:00
default : 0
2020-09-18 18:00:08 +02:00
default_poll_description : string
number_poll_candidates : boolean
candidate_ids :
type : relation-list
to : assignment_candidate/assignment_id
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
poll_ids :
type : relation-list
to : assignment_poll/assignment_id
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
agenda_item_id :
type : relation
to : agenda_item/content_object_id
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
list_of_speakers_id :
type : relation
to : list_of_speakers/content_object_id
2020-09-24 00:52:10 +02:00
required : true
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
tag_ids :
type : relation-list
to : tag/tagged_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
attachment_ids :
type : relation-list
to : mediafile/attachment_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
projection_ids :
type : relation-list
to : projection/element_id
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
current_projector_ids :
type : relation-list
to : projector/current_element_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
meeting_id :
type : relation
to : meeting/assignment_ids
2020-09-24 00:52:10 +02:00
required : true
2020-09-18 18:00:08 +02:00
assignment_candidate :
id : number
2020-09-19 20:53:44 +02:00
weight :
type : number
2020-10-13 17:16:35 +02:00
default : 10000
2020-09-18 18:00:08 +02:00
assignment_id :
type : relation
to : assignment/candidate_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
user_id :
type : relation
to :
collection : user
field :
name : assignment_candidate_$_ids
type : structured-relation
replacement : meeting_id
2020-10-08 14:08:00 +02:00
meeting_id :
type : relation
to : meeting/assignment_candidate_ids
required : true
2020-09-18 18:00:08 +02:00
assignment_poll :
id : number
description : string
pollmethod : string
votes_amount : number
allow_multiple_votes_per_candidate : boolean
global_abstain : boolean
global_no : boolean
amount_global_abstain : decimal(6)
amount_global_no : decimal(6)
state : number
title : string
type : string
onehundred_percent_base : string
majority_method : string
votescast : decimal(6)
votesinvalid : decimal(6)
votesvalid : decimal(6)
user_has_voted : boolean # This is user specific and set during restriction
assignment_id :
type : relation
to : assignment/poll_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
voted_ids :
type : relation-list
to :
collection : user
field :
name : assignment_poll_voted_$_ids
type : structured-relation
replacement : meeting_id
entitled_group_ids :
type : relation-list
to : group/assignment_poll_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
option_ids :
type : relation-list
to : assignment_option/poll_id
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
projection_ids :
type : relation-list
to : projection/element_id
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
current_projector_ids :
type : relation-list
to : projector/current_element_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
meeting_id :
type : relation
to : meeting/assignment_poll_ids
assignment_option :
id : number
yes : decimal(6)
no : decimal(6)
abstain : decimal(6)
2020-09-19 20:53:44 +02:00
weight :
type : number
2020-10-13 17:16:35 +02:00
default : 10000
2020-09-18 18:00:08 +02:00
poll_id :
type : relation
to : assignment_poll/option_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
user_id :
type : relation
to :
collection : user
field :
name : assignment_option_$_ids
type : structured-relation
replacement : meeting_id
vote_ids :
type : relation-list
to : assignment_vote/option_id
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
equal_fields : meeting_id
meeting_id :
type : relation
to : meeting/assignment_option_ids
required : true
2020-09-18 18:00:08 +02:00
assignment_vote :
id : number
value : string
weight : decimal(6)
option_id :
type : relation
to : assignment_option/vote_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
user_id :
type : relation
to :
collection : user
field :
name : assignment_vote_$_ids
type : structured-relation
replacement : meeting_id
2020-10-05 11:15:14 +02:00
delegated_user_id :
type : relation
to :
collection : user
field :
name : assignment_delegated_vote_$_ids
type : structured-relation
replacement : meeting_id
2020-10-08 14:08:00 +02:00
meeting_id :
type : relation
to : meeting/assignment_vote_ids
required : true
2020-09-18 18:00:08 +02:00
# Mediafiles are delivered by the mediafile server with the URL
# `<media-prefix>/media/<meeting_id>/path`
mediafile :
id : number
2020-09-24 00:52:10 +02:00
title :
type : string
description : Title and parent_id must be unique.
2020-09-18 18:00:08 +02:00
is_directory : boolean
2020-09-24 00:52:10 +02:00
filesize :
type : number
description : In bytes, not the human readable format anymore.
read_only : true
filename :
type : string
descriptin : The uploaded filename. Will be used for downloading. Only writeable on create.
required : true
2020-09-18 18:00:08 +02:00
mimetype : string
pdf_information : JSON
2020-10-01 14:14:09 +02:00
create_timestamp : timestamp
2020-11-05 17:35:32 +01:00
is_public :
2020-09-24 00:52:10 +02:00
type : boolean
2020-11-05 17:35:32 +01:00
description : "Calculated field. inherited_access_group_ids == [] can have two causes: cancelling access groups (=> is_public := false) or no access groups at all (=> is_public := true)"
2020-09-24 00:52:10 +02:00
read_only : true
2020-09-18 18:00:08 +02:00
inherited_access_group_ids :
type : relation-list
2020-09-24 00:52:10 +02:00
to : group/mediafile_inherited_access_group_ids
description : Calculated field.
read_only : true
2020-09-18 18:00:08 +02:00
access_group_ids :
type : relation-list
to : group/mediafile_access_group_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
parent_id :
type : relation
to : mediafile/child_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
child_ids :
type : relation-list
to : mediafile/parent_id
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
list_of_speakers_id :
type : relation
to : list_of_speakers/content_object_id
2020-09-24 00:52:10 +02:00
required : true
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
projection_ids :
type : relation-list
to : projection/element_id
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
current_projector_ids :
type : relation-list
to : projector/current_element_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
attachment_ids :
type : generic-relation-list
to :
collection :
- motion
- topic
- assignment
field : attachment_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
meeting_id :
type : relation
to : meeting/mediafile_ids
2020-09-24 00:52:10 +02:00
required : true
2020-09-18 18:00:08 +02:00
# Reverse relations for meetings, if a mediafile is used as a special resource
used_as_logo_$_in_meeting_id :
type : template
2020-11-03 13:41:45 +01:00
replacement : place
2020-09-18 18:00:08 +02:00
fields :
type : relation
to :
collection : meeting
field :
name : logo_$_id
type : structured-tag
2020-11-03 13:41:45 +01:00
replacement : place
2020-09-18 18:00:08 +02:00
used_as_font_$_in_meeting_id :
type : template
2020-11-03 13:41:45 +01:00
replacement : place
2020-09-18 18:00:08 +02:00
fields :
type : relation
to :
collection : meeting
field :
name : font_$_id
type : structured-tag
2020-11-03 13:41:45 +01:00
replacement : place
2020-09-18 18:00:08 +02:00
projector :
id : number
name : string
scale : number
scroll : number
width : number
aspect_ratio_numerator : number
aspect_ratio_denominator : number
color : string
background_color : string
header_background_color : string
header_font_color : string
header_h1_color : string
chyron_background_color : string
chyron_font_color : string
show_header_footer : boolean
show_title : boolean
show_logo : boolean
current_projection_ids :
type : relation-list
to : projection/current_projector_id
2020-10-08 14:08:00 +02:00
on_delete : CASCADE
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
# A relation to the currently projected elements to get a direct link, if
# the element is projected.
current_element_ids :
type : generic-relation-list
to :
collection :
- motion
- mediafile
- list_of_speakers
- motion_block
- assignment
- agenda_item
2020-09-28 15:12:17 +02:00
- topic
2020-09-18 18:00:08 +02:00
- user
- assignment_poll
- motion_poll
- projector_message
- projector_countdown
field : current_projector_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
preview_projection_ids :
type : relation-list
2020-09-19 20:53:44 +02:00
to : projection/preview_projector_id
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
history_projection_ids :
type : relation-list
2020-09-19 20:53:44 +02:00
to : projection/history_projector_id
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
used_as_reference_projector_meeting_id :
type : relation
to : meeting/reference_projector_id
projectiondefault_ids :
type : relation-list
to : projectiondefault/projector_id
2020-10-08 14:08:00 +02:00
on_delete : PROTECT
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
meeting_id :
type : relation
to : meeting/projector_ids
# A projection is a M2M model between an element that is assigned to a
# projector. This element can either be the current one projected, in the
# preview, or in the history, but not more than one once. A projection is
# projector-specific, meaning that once a projection is created for a projector
# and element, these references will not change.
projection :
id : number
options : JSON
current_projector_id :
type : relation
to : projector/current_projection_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
preview_projector_id :
type : relation
to : projector/preview_projection_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
history_projector_id :
type : relation
to : projector/history_projection_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
element_id :
type : generic-relation
to :
collection :
- motion
- mediafile
- list_of_speakers
- motion_block
- assignment
- agenda_item
2020-09-28 15:12:17 +02:00
- topic
2020-09-18 18:00:08 +02:00
- user
- assignment_poll
- motion_poll
- projector_message
- projector_countdown
field : projection_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
meeting_id :
type : relation
to : meeting/projection_ids
required : true
2020-09-18 18:00:08 +02:00
projectiondefault :
id : number
name : string
display_name : string
projector_id :
type : relation
to : projector/projectiondefault_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
meeting_id :
type : relation
to : meeting/projectiondefault_ids
projector_message :
id : number
2020-10-01 14:14:09 +02:00
message : HTMLStrict
2020-09-18 18:00:08 +02:00
projection_ids :
type : relation-list
to : projection/element_id
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
current_projector_ids :
type : relation-list
to : projector/current_element_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
meeting_id :
type : relation
to : meeting/projector_message_ids
projector_countdown :
id : number
title : string
description : string
default_time : number
countdown_time : number # float?
running : boolean
projection_ids :
type : relation-list
to : projection/element_id
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
current_projector_ids :
type : relation-list
to : projector/current_element_ids
2020-10-08 14:08:00 +02:00
equal_fields : meeting_id
2020-09-18 18:00:08 +02:00
meeting_id :
type : relation
to : meeting/projector_countdown_ids