Merge pull request #5900 from FinnStutzenstein/projector

Remodel the projector
This commit is contained in:
Finn Stutzenstein 2021-02-22 08:03:43 +01:00 committed by GitHub
commit f0a5e2716a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 278 additions and 415 deletions

View File

@ -211,8 +211,7 @@
"poll_default_group_ids": [5], "poll_default_group_ids": [5],
"projector_ids": [1], "projector_ids": [1],
"projection_ids": [], "all_projection_ids": [],
"projectiondefault_ids": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13],
"projector_message_ids": [], "projector_message_ids": [],
"projector_countdown_ids": [], "projector_countdown_ids": [],
"tag_ids": [], "tag_ids": [],
@ -250,6 +249,40 @@
"user_ids": [1], "user_ids": [1],
"reference_projector_id": 1, "reference_projector_id": 1,
"default_$_projector_id": [
"agenda_all_items",
"topics",
"list_of_speakers",
"current_list_of_speakers",
"motion",
"amendment",
"motion_block",
"assignment",
"user",
"mediafile",
"projector_message",
"projector_countdowns",
"assignment_poll",
"motion_poll",
"poll"
],
"default_$agenda_all_items_projector_id": 1,
"default_$topics_projector_id": 1,
"default_$list_of_speakers_projector_id": 1,
"default_$current_list_of_speakers_projector_id": 1,
"default_$motion_projector_id": 1,
"default_$amendment_projector_id": 1,
"default_$motion_block_projector_id": 1,
"default_$assignment_projector_id": 1,
"default_$user_projector_id": 1,
"default_$mediafile_projector_id": 1,
"default_$projector_message_projector_id": 1,
"default_$projector_countdowns_projector_id": 1,
"default_$assignment_poll_projector_id": 1,
"default_$motion_poll_projector_id": 1,
"default_$poll_projector_id": 1,
"projection_ids": [],
"default_group_id": 1, "default_group_id": 1,
"admin_group_id": 2 "admin_group_id": 2
}], }],
@ -541,121 +574,49 @@
"show_header_footer": true, "show_header_footer": true,
"show_title": true, "show_title": true,
"show_logo": true, "show_logo": true,
"show_clock": true,
"current_projection_ids": [], "current_projection_ids": [],
"current_element_ids": [],
"preview_projection_ids": [], "preview_projection_ids": [],
"history_projection_ids": [], "history_projection_ids": [],
"used_as_reference_projector_meeting_id": 1, "used_as_reference_projector_meeting_id": 1,
"projectiondefault_ids": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13],
"used_as_default_$_in_meeting_id": [
"agenda_all_items",
"topics",
"list_of_speakers",
"current_list_of_speakers",
"motion",
"amendment",
"motion_block",
"assignment",
"user",
"mediafile",
"projector_message",
"projector_countdowns",
"assignment_poll",
"motion_poll",
"poll"
],
"used_as_default_$agenda_all_items_in_meeting_id": 1,
"used_as_default_$topics_in_meeting_id": 1,
"used_as_default_$list_of_speakers_in_meeting_id": 1,
"used_as_default_$current_list_of_speakers_in_meeting_id": 1,
"used_as_default_$motion_in_meeting_id": 1,
"used_as_default_$amendment_in_meeting_id": 1,
"used_as_default_$motion_block_in_meeting_id": 1,
"used_as_default_$assignment_in_meeting_id": 1,
"used_as_default_$user_in_meeting_id": 1,
"used_as_default_$mediafile_in_meeting_id": 1,
"used_as_default_$projector_message_in_meeting_id": 1,
"used_as_default_$projector_countdowns_in_meeting_id": 1,
"used_as_default_$assignment_poll_in_meeting_id": 1,
"used_as_default_$motion_poll_in_meeting_id": 1,
"used_as_default_$poll_in_meeting_id": 1,
"meeting_id": 1 "meeting_id": 1
}], }],
"projection": [], "projection": [],
"projectiondefault": [
{
"id": 1,
"name": "agenda_all_items",
"display_name": "Agenda",
"projector_id": 1,
"meeting_id": 1
},
{
"id": 2,
"name": "topics",
"display_name": "Topics",
"projector_id": 1,
"meeting_id": 1
},
{
"id": 3,
"name": "agenda_list_of_speakers",
"display_name": "List of speakers",
"projector_id": 1,
"meeting_id": 1
},
{
"id": 4,
"name": "agenda_current_list_of_speakers",
"display_name": "Current list of speakers",
"projector_id": 1,
"meeting_id": 1
},
{
"id": 5,
"name": "motions",
"display_name": "Motions",
"projector_id": 1,
"meeting_id": 1
},
{
"id": 6,
"name": "motionBlocks",
"display_name": "Motion blocks",
"projector_id": 1,
"meeting_id": 1
},
{
"id": 7,
"name": "assignments",
"display_name": "Elections",
"projector_id": 1,
"meeting_id": 1
},
{
"id": 8,
"name": "users",
"display_name": "Participants",
"projector_id": 1,
"meeting_id": 1
},
{
"id": 9,
"name": "mediafiles",
"display_name": "Files",
"projector_id": 1,
"meeting_id": 1
},
{
"id": 10,
"name": "messages",
"display_name": "Messages",
"projector_id": 1,
"meeting_id": 1
},
{
"id": 11,
"name": "countdowns",
"display_name": "Countdowns",
"projector_id": 1,
"meeting_id": 1
},
{
"id": 12,
"name": "assignment_poll",
"display_name": "Assignment poll",
"projector_id": 1,
"meeting_id": 1
},
{
"id": 13,
"name": "motion_poll",
"display_name": "Motion Poll",
"projector_id": 1,
"meeting_id": 1
}],
"projector_message": [], "projector_message": [],
"projector_countdown": [] "projector_countdown": []
} }

View File

@ -41,6 +41,12 @@ def check_string(value: Any) -> bool:
return value is None or isinstance(value, str) return value is None or isinstance(value, str)
color_regex = re.compile("^#[0-9a-f]{6}$")
def check_color(value: Any) -> bool:
return value is None or (isinstance(value, str) and color_regex.match(value))
def check_number(value: Any) -> bool: def check_number(value: Any) -> bool:
return value is None or isinstance(value, int) return value is None or isinstance(value, int)
@ -158,6 +164,8 @@ class Checker:
checker = check_number_list checker = check_number_list
elif field_type == "decimal(6)": elif field_type == "decimal(6)":
checker = check_decimal checker = check_decimal
elif field_type == "color":
checker = check_color
elif field_type in ( elif field_type in (
"JSON", "JSON",
"template", "template",

View File

@ -344,8 +344,7 @@
"poll_default_group_ids": [3], "poll_default_group_ids": [3],
"projector_ids": [1, 2], "projector_ids": [1, 2],
"projection_ids": [1, 2, 4], "all_projection_ids": [1, 2, 3, 4],
"projectiondefault_ids": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
"projector_message_ids": [1], "projector_message_ids": [1],
"projector_countdown_ids": [1], "projector_countdown_ids": [1],
"tag_ids": [1, 2, 3], "tag_ids": [1, 2, 3],
@ -384,6 +383,40 @@
"user_ids": [1, 2, 3], "user_ids": [1, 2, 3],
"reference_projector_id": 2, "reference_projector_id": 2,
"default_$_projector_id": [
"agenda_all_items",
"topics",
"list_of_speakers",
"current_list_of_speakers",
"motion",
"amendment",
"motion_block",
"assignment",
"user",
"mediafile",
"projector_message",
"projector_countdowns",
"assignment_poll",
"motion_poll",
"poll"
],
"default_$agenda_all_items_projector_id": 1,
"default_$topics_projector_id": 1,
"default_$list_of_speakers_projector_id": 2,
"default_$current_list_of_speakers_projector_id": 2,
"default_$motion_projector_id": 1,
"default_$amendment_projector_id": 1,
"default_$motion_block_projector_id": 1,
"default_$assignment_projector_id": 1,
"default_$user_projector_id": 1,
"default_$mediafile_projector_id": 1,
"default_$projector_message_projector_id": 1,
"default_$projector_countdowns_projector_id": 1,
"default_$assignment_poll_projector_id": 1,
"default_$motion_poll_projector_id": 1,
"default_$poll_projector_id": 1,
"projection_ids": [3],
"default_group_id": 1, "default_group_id": 1,
"admin_group_id": 2 "admin_group_id": 2
}], }],
@ -584,7 +617,6 @@
"child_ids": [14], "child_ids": [14],
"tag_ids": [], "tag_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -604,7 +636,6 @@
"child_ids": [], "child_ids": [],
"tag_ids": [], "tag_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -624,7 +655,6 @@
"child_ids": [], "child_ids": [],
"tag_ids": [2], "tag_ids": [2],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -644,7 +674,6 @@
"child_ids": [], "child_ids": [],
"tag_ids": [], "tag_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -664,7 +693,6 @@
"child_ids": [], "child_ids": [],
"tag_ids": [], "tag_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -684,7 +712,6 @@
"child_ids": [], "child_ids": [],
"tag_ids": [], "tag_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -704,7 +731,6 @@
"child_ids": [], "child_ids": [],
"tag_ids": [], "tag_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -724,7 +750,6 @@
"child_ids": [], "child_ids": [],
"tag_ids": [], "tag_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -744,7 +769,6 @@
"child_ids": [], "child_ids": [],
"tag_ids": [], "tag_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -764,7 +788,6 @@
"child_ids": [], "child_ids": [],
"tag_ids": [], "tag_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -784,7 +807,6 @@
"child_ids": [], "child_ids": [],
"tag_ids": [], "tag_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -804,7 +826,6 @@
"child_ids": [], "child_ids": [],
"tag_ids": [], "tag_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -824,7 +845,6 @@
"child_ids": [], "child_ids": [],
"tag_ids": [], "tag_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -844,7 +864,6 @@
"child_ids": [], "child_ids": [],
"tag_ids": [], "tag_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -864,7 +883,6 @@
"child_ids": [], "child_ids": [],
"tag_ids": [], "tag_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}], }],
"list_of_speakers": [ "list_of_speakers": [
@ -875,7 +893,6 @@
"content_object_id": "motion/1", "content_object_id": "motion/1",
"speaker_ids": [11, 12, 13], "speaker_ids": [11, 12, 13],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -885,7 +902,6 @@
"content_object_id": "motion/2", "content_object_id": "motion/2",
"speaker_ids": [], "speaker_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -895,7 +911,6 @@
"content_object_id": "topic/1", "content_object_id": "topic/1",
"speaker_ids": [1, 2], "speaker_ids": [1, 2],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -905,7 +920,6 @@
"content_object_id": "topic/2", "content_object_id": "topic/2",
"speaker_ids": [], "speaker_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -915,7 +929,6 @@
"content_object_id": "topic/3", "content_object_id": "topic/3",
"speaker_ids": [], "speaker_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -925,7 +938,6 @@
"content_object_id": "topic/4", "content_object_id": "topic/4",
"speaker_ids": [], "speaker_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -935,7 +947,6 @@
"content_object_id": "topic/5", "content_object_id": "topic/5",
"speaker_ids": [3, 4], "speaker_ids": [3, 4],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -945,7 +956,6 @@
"content_object_id": "topic/6", "content_object_id": "topic/6",
"speaker_ids": [5], "speaker_ids": [5],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -955,7 +965,6 @@
"content_object_id": "topic/7", "content_object_id": "topic/7",
"speaker_ids": [], "speaker_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -965,7 +974,6 @@
"content_object_id": "topic/8", "content_object_id": "topic/8",
"speaker_ids": [], "speaker_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -975,7 +983,6 @@
"content_object_id": "assignment/1", "content_object_id": "assignment/1",
"speaker_ids": [6, 7, 8], "speaker_ids": [6, 7, 8],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -985,7 +992,6 @@
"content_object_id": "motion/3", "content_object_id": "motion/3",
"speaker_ids": [], "speaker_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -995,7 +1001,6 @@
"content_object_id": "motion/4", "content_object_id": "motion/4",
"speaker_ids": [], "speaker_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -1005,7 +1010,6 @@
"content_object_id": "assignment/2", "content_object_id": "assignment/2",
"speaker_ids": [9, 10], "speaker_ids": [9, 10],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -1015,7 +1019,6 @@
"content_object_id": "motion_block/1", "content_object_id": "motion_block/1",
"speaker_ids": [], "speaker_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -1025,7 +1028,6 @@
"content_object_id": "mediafile/1", "content_object_id": "mediafile/1",
"speaker_ids": [], "speaker_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -1035,7 +1037,6 @@
"content_object_id": "mediafile/2", "content_object_id": "mediafile/2",
"speaker_ids": [], "speaker_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -1045,7 +1046,6 @@
"content_object_id": "mediafile/3", "content_object_id": "mediafile/3",
"speaker_ids": [], "speaker_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}], }],
"speaker": [ "speaker": [
@ -1217,7 +1217,6 @@
"tag_ids": [], "tag_ids": [],
"option_ids": [], "option_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -1231,7 +1230,6 @@
"tag_ids": [], "tag_ids": [],
"option_ids": [], "option_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -1245,7 +1243,6 @@
"tag_ids": [], "tag_ids": [],
"option_ids": [], "option_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -1259,7 +1256,6 @@
"tag_ids": [], "tag_ids": [],
"option_ids": [], "option_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -1273,7 +1269,6 @@
"tag_ids": [], "tag_ids": [],
"option_ids": [], "option_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -1287,7 +1282,6 @@
"tag_ids": [], "tag_ids": [],
"option_ids": [], "option_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -1301,7 +1295,6 @@
"tag_ids": [], "tag_ids": [],
"option_ids": [], "option_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -1315,7 +1308,6 @@
"tag_ids": [], "tag_ids": [],
"option_ids": [], "option_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}], }],
"motion": [ "motion": [
@ -1361,7 +1353,6 @@
"tag_ids": [], "tag_ids": [],
"attachment_ids": [], "attachment_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"personal_note_ids": [], "personal_note_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
@ -1407,7 +1398,6 @@
"tag_ids": [1, 3], "tag_ids": [1, 3],
"attachment_ids": [], "attachment_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"personal_note_ids": [1], "personal_note_ids": [1],
"meeting_id": 1 "meeting_id": 1
}, },
@ -1453,7 +1443,6 @@
"tag_ids": [3], "tag_ids": [3],
"attachment_ids": [], "attachment_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"personal_note_ids": [], "personal_note_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
@ -1499,7 +1488,6 @@
"tag_ids": [], "tag_ids": [],
"attachment_ids": [2], "attachment_ids": [2],
"projection_ids": [2], "projection_ids": [2],
"current_projector_ids": [],
"personal_note_ids": [], "personal_note_ids": [],
"meeting_id": 1 "meeting_id": 1
}], }],
@ -1591,7 +1579,6 @@
"agenda_item_id": 15, "agenda_item_id": 15,
"list_of_speakers_id": 15, "list_of_speakers_id": 15,
"projection_ids": [1], "projection_ids": [1],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}], }],
"motion_change_recommendation": [ "motion_change_recommendation": [
@ -1981,7 +1968,6 @@
"voted_ids": [], "voted_ids": [],
"entitled_group_ids": [], "entitled_group_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -2008,7 +1994,6 @@
"voted_ids": [], "voted_ids": [],
"entitled_group_ids": [], "entitled_group_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -2035,7 +2020,6 @@
"option_ids": [5], "option_ids": [5],
"global_option_id": 6, "global_option_id": 6,
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -2062,7 +2046,6 @@
"option_ids": [7, 8, 9], "option_ids": [7, 8, 9],
"global_option_id": 10, "global_option_id": 10,
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -2089,7 +2072,6 @@
"option_ids": [11, 12], "option_ids": [11, 12],
"global_option_id": 13, "global_option_id": 13,
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}], }],
"option": [ "option": [
@ -2384,7 +2366,6 @@
"tag_ids": [], "tag_ids": [],
"attachment_ids": [], "attachment_ids": [],
"projection_ids": [4], "projection_ids": [4],
"current_projector_ids": [1],
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -2404,7 +2385,6 @@
"tag_ids": [2], "tag_ids": [2],
"attachment_ids": [], "attachment_ids": [],
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}], }],
"assignment_candidate": [ "assignment_candidate": [
@ -2466,7 +2446,6 @@
"child_ids": [3], "child_ids": [3],
"list_of_speakers_id": 16, "list_of_speakers_id": 16,
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"attachment_ids": [], "attachment_ids": [],
"used_as_logo_$_in_meeting_id": [], "used_as_logo_$_in_meeting_id": [],
"used_as_font_$_in_meeting_id": [], "used_as_font_$_in_meeting_id": [],
@ -2489,7 +2468,6 @@
"child_ids": [], "child_ids": [],
"list_of_speakers_id": 17, "list_of_speakers_id": 17,
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"attachment_ids": ["motion/4"], "attachment_ids": ["motion/4"],
"used_as_logo_$_in_meeting_id": [], "used_as_logo_$_in_meeting_id": [],
"used_as_font_$_in_meeting_id": [], "used_as_font_$_in_meeting_id": [],
@ -2512,7 +2490,6 @@
"child_ids": [], "child_ids": [],
"list_of_speakers_id": 18, "list_of_speakers_id": 18,
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"attachment_ids": [], "attachment_ids": [],
"used_as_logo_$_in_meeting_id": ["web_header"], "used_as_logo_$_in_meeting_id": ["web_header"],
"used_as_logo_$web_header_in_meeting_id": 1, "used_as_logo_$web_header_in_meeting_id": 1,
@ -2538,13 +2515,42 @@
"show_header_footer": true, "show_header_footer": true,
"show_title": true, "show_title": true,
"show_logo": true, "show_logo": true,
"show_clock": true,
"current_projection_ids": [4], "current_projection_ids": [3, 4],
"current_element_ids": ["assignment/1"],
"preview_projection_ids": [1, 2], "preview_projection_ids": [1, 2],
"history_projection_ids": [], "history_projection_ids": [],
"used_as_reference_projector_meeting_id": null, "used_as_reference_projector_meeting_id": null,
"projectiondefault_ids": [1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
"used_as_default_$_in_meeting_id": [
"agenda_all_items",
"topics",
"motion",
"amendment",
"motion_block",
"assignment",
"user",
"mediafile",
"projector_message",
"projector_countdowns",
"assignment_poll",
"motion_poll",
"poll"
],
"used_as_default_$agenda_all_items_in_meeting_id": 1,
"used_as_default_$topics_in_meeting_id": 1,
"used_as_default_$motion_in_meeting_id": 1,
"used_as_default_$amendment_in_meeting_id": 1,
"used_as_default_$motion_block_in_meeting_id": 1,
"used_as_default_$assignment_in_meeting_id": 1,
"used_as_default_$user_in_meeting_id": 1,
"used_as_default_$mediafile_in_meeting_id": 1,
"used_as_default_$projector_message_in_meeting_id": 1,
"used_as_default_$projector_countdowns_in_meeting_id": 1,
"used_as_default_$assignment_poll_in_meeting_id": 1,
"used_as_default_$motion_poll_in_meeting_id": 1,
"used_as_default_$poll_in_meeting_id": 1,
"meeting_id": 1 "meeting_id": 1
}, },
{ {
@ -2565,13 +2571,20 @@
"show_header_footer": true, "show_header_footer": true,
"show_title": true, "show_title": true,
"show_logo": true, "show_logo": true,
"show_clock": true,
"current_projection_ids": [], "current_projection_ids": [],
"current_element_ids": [],
"preview_projection_ids": [], "preview_projection_ids": [],
"history_projection_ids": [], "history_projection_ids": [],
"used_as_reference_projector_meeting_id": 1, "used_as_reference_projector_meeting_id": 1,
"projectiondefault_ids": [2, 3],
"used_as_default_$_in_meeting_id": [
"list_of_speakers",
"current_list_of_speakers"
],
"used_as_default_$list_of_speakers_in_meeting_id": 1,
"used_as_default_$current_list_of_speakers_in_meeting_id": 1,
"meeting_id": 1 "meeting_id": 1
}], }],
"projection": [ "projection": [
@ -2580,7 +2593,10 @@
"current_projector_id": null, "current_projector_id": null,
"preview_projector_id": 1, "preview_projector_id": 1,
"history_projector_id": null, "history_projector_id": null,
"element_id": "motion_block/1", "content_object_id": "motion_block/1",
"stable": false,
"type": null,
"weight": 1,
"options": {}, "options": {},
"meeting_id": 1 "meeting_id": 1
}, },
@ -2589,149 +2605,45 @@
"current_projector_id": null, "current_projector_id": null,
"preview_projector_id": 1, "preview_projector_id": 1,
"history_projector_id": null, "history_projector_id": null,
"element_id": "motion/4", "content_object_id": "motion/4",
"stable": false,
"type": null,
"weight": 2,
"options": { "options": {
"mode": "diff" "mode": "diff"
}, },
"meeting_id": 1 "meeting_id": 1
}, },
{
"id": 3,
"current_projector_id": 1,
"preview_projector_id": null,
"history_projector_id": null,
"content_object_id": "meeting/1",
"stable": true,
"type": "current-list-of-speakers",
"weight": 1,
"options": {},
"meeting_id": 1
},
{ {
"id": 4, "id": 4,
"current_projector_id": 1, "current_projector_id": 1,
"preview_projector_id": null, "preview_projector_id": null,
"history_projector_id": null, "history_projector_id": null,
"element_id": "assignment/1", "content_object_id": "assignment/1",
"stable": false,
"type": null,
"weight": 1,
"options": {}, "options": {},
"meeting_id": 1 "meeting_id": 1
}], }],
"projectiondefault": [
{
"id": 1,
"name": "agenda_all_items",
"display_name": "Agenda",
"projector_id": 1,
"meeting_id": 1
},
{
"id": 2,
"name": "topics",
"display_name": "Topics",
"projector_id": 2,
"meeting_id": 1
},
{
"id": 3,
"name": "agenda_list_of_speakers",
"display_name": "List of speakers",
"projector_id": 2,
"meeting_id": 1
},
{
"id": 4,
"name": "agenda_current_list_of_speakers",
"display_name": "Current list of speakers",
"projector_id": 1,
"meeting_id": 1
},
{
"id": 5,
"name": "motions",
"display_name": "Motions",
"projector_id": 1,
"meeting_id": 1
},
{
"id": 6,
"name": "motionBlocks",
"display_name": "Motion blocks",
"projector_id": 1,
"meeting_id": 1
},
{
"id": 7,
"name": "assignments",
"display_name": "Elections",
"projector_id": 1,
"meeting_id": 1
},
{
"id": 8,
"name": "users",
"display_name": "Participants",
"projector_id": 1,
"meeting_id": 1
},
{
"id": 9,
"name": "mediafiles",
"display_name": "Files",
"projector_id": 1,
"meeting_id": 1
},
{
"id": 10,
"name": "messages",
"display_name": "Messages",
"projector_id": 1,
"meeting_id": 1
},
{
"id": 11,
"name": "countdowns",
"display_name": "Countdowns",
"projector_id": 1,
"meeting_id": 1
},
{
"id": 12,
"name": "assignment_poll",
"display_name": "Assignment poll",
"projector_id": 1,
"meeting_id": 1
},
{
"id": 13,
"name": "motion_poll",
"display_name": "Motion Poll",
"projector_id": 1,
"meeting_id": 1
},
{
"id": 14,
"name": "poll",
"display_name": "Poll",
"projector_id": 1,
"meeting_id": 1
},
{
"id": 15,
"name": "amendments",
"display_name": "Amendments",
"projector_id": 1,
"meeting_id": 1
}],
"projector_message": [ "projector_message": [
{ {
"id": 1, "id": 1,
"message": "<p>Hi!</p>", "message": "<p>Hi!</p>",
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}], }],
"projector_countdown": [ "projector_countdown": [
@ -2744,7 +2656,6 @@
"running": false, "running": false,
"projection_ids": [], "projection_ids": [],
"current_projector_ids": [],
"meeting_id": 1 "meeting_id": 1
}] }]
} }

View File

@ -11,6 +11,7 @@
# - <T>[]: This indicates and arbitrary array of the given type. At the moment # - <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 # we support only some types. You can add JSON Schema properties for items
# using the extra property `items` # using the extra property `items`
# - color: string that must match ^#[0-9a-f]{6}$
# Relations: # Relations:
# - We have the following types: `relation`, `relation-list`, `generic-relation` # - We have the following types: `relation`, `relation-list`, `generic-relation`
# and `generic-relation-list`. # and `generic-relation-list`.
@ -221,13 +222,7 @@ user:
replacement: meeting_id replacement: meeting_id
fields: fields:
type: relation-list type: relation-list
to: projection/element_id to: projection/content_object_id
current_projector_$_ids:
type: template
replacement: meeting_id
fields:
type: relation-list
to: projector/current_element_ids
vote_delegated_$_to_id: vote_delegated_$_to_id:
type: template type: template
replacement: meeting_id replacement: meeting_id
@ -695,14 +690,10 @@ meeting:
type: relation-list type: relation-list
to: projector/meeting_id to: projector/meeting_id
on_delete: CASCADE on_delete: CASCADE
projection_ids: all_projection_ids:
type: relation-list type: relation-list
to: projection/meeting_id to: projection/meeting_id
on_delete: CASCADE on_delete: CASCADE
projectiondefault_ids:
type: relation-list
to: projectiondefault/meeting_id
on_delete: CASCADE
projector_message_ids: projector_message_ids:
type: relation-list type: relation-list
to: projector_message/meeting_id to: projector_message/meeting_id
@ -815,9 +806,6 @@ meeting:
fields: fields:
type: relation type: relation
to: mediafile/used_as_font_$_in_meeting_id to: mediafile/used_as_font_$_in_meeting_id
# Examples:
# logo_web_header: Mediafile;
# font_italic_pdf: Mediafile;
# The client can define these resources. There is no need # The client can define these resources. There is no need
# to have whitelist/blacklist on the server. The places must # to have whitelist/blacklist on the server. The places must
# be checked: They must match `[a-z]([a-z_]*[a-z])?` and must # be checked: They must match `[a-z]([a-z_]*[a-z])?` and must
@ -848,6 +836,31 @@ meeting:
type: relation type: relation
to: projector/used_as_reference_projector_meeting_id to: projector/used_as_reference_projector_meeting_id
default_projector_$_id:
type: template
fields:
type: relation
to: projector/used_as_default_$_in_meeting_id
# Available template field replacements:
# - agenda_all_items
# - topics
# - list_of_speakers
# - current_list_of_speakers
# - motion
# - amendment
# - motion_block
# - assignment
# - user
# - mediafile
# - projector_message
# - projector_countdowns
# - assignment_poll
# - motion_poll
# - poll
projection_ids:
type: relation-list
to: projection/content_object_id
default_group_id: default_group_id:
type: relation type: relation
to: group/default_group_for_meeting_id to: group/default_group_for_meeting_id
@ -1044,11 +1057,7 @@ agenda_item:
equal_fields: meeting_id equal_fields: meeting_id
projection_ids: projection_ids:
type: relation-list type: relation-list
to: projection/element_id to: projection/content_object_id
equal_fields: meeting_id
current_projector_ids:
type: relation-list
to: projector/current_element_ids
equal_fields: meeting_id equal_fields: meeting_id
meeting_id: meeting_id:
type: relation type: relation
@ -1078,11 +1087,7 @@ list_of_speakers:
equal_fields: meeting_id equal_fields: meeting_id
projection_ids: projection_ids:
type: relation-list type: relation-list
to: projection/element_id to: projection/content_object_id
equal_fields: meeting_id
current_projector_ids:
type: relation-list
to: projector/current_element_ids
equal_fields: meeting_id equal_fields: meeting_id
meeting_id: meeting_id:
type: relation type: relation
@ -1151,11 +1156,7 @@ topic:
equal_fields: meeting_id equal_fields: meeting_id
projection_ids: projection_ids:
type: relation-list type: relation-list
to: projection/element_id to: projection/content_object_id
equal_fields: meeting_id
current_projector_ids:
type: relation-list
to: projector/current_element_ids
equal_fields: meeting_id equal_fields: meeting_id
meeting_id: meeting_id:
type: relation type: relation
@ -1301,11 +1302,7 @@ motion:
equal_fields: meeting_id equal_fields: meeting_id
projection_ids: projection_ids:
type: relation-list type: relation-list
to: projection/element_id to: projection/content_object_id
equal_fields: meeting_id
current_projector_ids:
type: relation-list
to: projector/current_element_ids
equal_fields: meeting_id equal_fields: meeting_id
personal_note_ids: personal_note_ids:
type: relation-list type: relation-list
@ -1437,11 +1434,7 @@ motion_block:
equal_fields: meeting_id equal_fields: meeting_id
projection_ids: projection_ids:
type: relation-list type: relation-list
to: projection/element_id to: projection/content_object_id
equal_fields: meeting_id
current_projector_ids:
type: relation-list
to: projector/current_element_ids
equal_fields: meeting_id equal_fields: meeting_id
meeting_id: meeting_id:
type: relation type: relation
@ -1697,11 +1690,7 @@ poll:
equal_fields: meeting_id equal_fields: meeting_id
projection_ids: projection_ids:
type: relation-list type: relation-list
to: projection/element_id to: projection/content_object_id
equal_fields: meeting_id
current_projector_ids:
type: relation-list
to: projector/current_element_ids
equal_fields: meeting_id equal_fields: meeting_id
meeting_id: meeting_id:
type: relation type: relation
@ -1814,11 +1803,7 @@ assignment:
equal_fields: meeting_id equal_fields: meeting_id
projection_ids: projection_ids:
type: relation-list type: relation-list
to: projection/element_id to: projection/content_object_id
equal_fields: meeting_id
current_projector_ids:
type: relation-list
to: projector/current_element_ids
equal_fields: meeting_id equal_fields: meeting_id
meeting_id: meeting_id:
type: relation type: relation
@ -1892,11 +1877,7 @@ mediafile:
equal_fields: meeting_id equal_fields: meeting_id
projection_ids: projection_ids:
type: relation-list type: relation-list
to: projection/element_id to: projection/content_object_id
equal_fields: meeting_id
current_projector_ids:
type: relation-list
to: projector/current_element_ids
equal_fields: meeting_id equal_fields: meeting_id
attachment_ids: attachment_ids:
type: generic-relation-list type: generic-relation-list
@ -1927,44 +1908,60 @@ mediafile:
projector: projector:
id: number id: number
name: string name: string
scale: number scale:
scroll: number type: number
width: number default: 0
aspect_ratio_numerator: number scroll:
aspect_ratio_denominator: number type: number
color: string default: 0
background_color: string width:
header_background_color: string type: number
header_font_color: string default: 1200
header_h1_color: string aspect_ratio_numerator:
chyron_background_color: string type: number
chyron_font_color: string default: 16
show_header_footer: boolean aspect_ratio_denominator:
show_title: boolean type: number
show_logo: boolean default: 9
color:
type: color
default: "#000000"
background_color:
type: color
default: "#ffffff"
header_background_color:
type: color
default: "#317796"
header_font_color:
type: color
default: "#f5f5f5"
header_h1_color:
type: color
default: "#317796"
chyron_background_color:
type: color
default: "#317796"
chyron_font_color:
type: color
default: "#ffffff"
show_header_footer:
type: boolean
default: true
show_title:
type: boolean
default: true
show_logo:
type: boolean
default: true
show_clock:
type: boolean
default: true
current_projection_ids: current_projection_ids:
type: relation-list type: relation-list
to: projection/current_projector_id to: projection/current_projector_id
on_delete: CASCADE on_delete: CASCADE
equal_fields: meeting_id equal_fields: meeting_id
# 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:
- motion/current_projector_ids
- mediafile/current_projector_ids
- list_of_speakers/current_projector_ids
- motion_block/current_projector_ids
- assignment/current_projector_ids
- agenda_item/current_projector_ids
- topic/current_projector_ids
- poll/current_projector_ids
- projector_message/current_projector_ids
- projector_countdown/current_projector_ids
- user/current_projector_$_ids
equal_fields: meeting_id
preview_projection_ids: preview_projection_ids:
type: relation-list type: relation-list
to: projection/preview_projector_id to: projection/preview_projector_id
@ -1976,11 +1973,11 @@ projector:
used_as_reference_projector_meeting_id: used_as_reference_projector_meeting_id:
type: relation type: relation
to: meeting/reference_projector_id to: meeting/reference_projector_id
projectiondefault_ids: used_as_default_$_in_meeting_id:
type: relation-list type: template
to: projectiondefault/projector_id fields:
on_delete: PROTECT type: relation
equal_fields: meeting_id to: meeting/default_projector_$_id
meeting_id: meeting_id:
type: relation type: relation
to: meeting/projector_ids to: meeting/projector_ids
@ -1993,6 +1990,11 @@ projector:
projection: projection:
id: number id: number
options: JSON options: JSON
stable:
type: boolean
default: false
weight: number
type: string
current_projector_id: current_projector_id:
type: relation type: relation
@ -2006,9 +2008,10 @@ projection:
type: relation type: relation
to: projector/history_projection_ids to: projector/history_projection_ids
equal_fields: meeting_id equal_fields: meeting_id
element_id: content_object_id:
type: generic-relation type: generic-relation
to: to:
- meeting/projection_ids
- motion/projection_ids - motion/projection_ids
- mediafile/projection_ids - mediafile/projection_ids
- list_of_speakers/projection_ids - list_of_speakers/projection_ids
@ -2023,33 +2026,16 @@ projection:
equal_fields: meeting_id equal_fields: meeting_id
meeting_id: meeting_id:
type: relation type: relation
to: meeting/projection_ids to: meeting/all_projection_ids
required: true required: true
projectiondefault:
id: number
name: string
display_name: string
projector_id:
type: relation
to: projector/projectiondefault_ids
equal_fields: meeting_id
meeting_id:
type: relation
to: meeting/projectiondefault_ids
projector_message: projector_message:
id: number id: number
message: HTMLStrict message: HTMLStrict
projection_ids: projection_ids:
type: relation-list type: relation-list
to: projection/element_id to: projection/content_object_id
equal_fields: meeting_id
current_projector_ids:
type: relation-list
to: projector/current_element_ids
equal_fields: meeting_id equal_fields: meeting_id
meeting_id: meeting_id:
type: relation type: relation
@ -2065,11 +2051,7 @@ projector_countdown:
projection_ids: projection_ids:
type: relation-list type: relation-list
to: projection/element_id to: projection/content_object_id
equal_fields: meeting_id
current_projector_ids:
type: relation-list
to: projector/current_element_ids
equal_fields: meeting_id equal_fields: meeting_id
meeting_id: meeting_id:
type: relation type: relation

View File

@ -133,6 +133,7 @@ func scalarTypes() map[string]bool {
"float", "float",
"decimal(6)", "decimal(6)",
"timestamp", "timestamp",
"color",
} }
out := make(map[string]bool) out := make(map[string]bool)
for _, t := range s { for _, t := range s {