Merge pull request #6285 from jsangmeister/restrictions-fix

Various fixes for the exporter
This commit is contained in:
Emanuel Schütze 2021-11-18 17:27:29 +01:00 committed by GitHub
commit 4efc591d21
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -15,6 +15,7 @@ from openslides.mediafiles.views import (
)
from openslides.motions.models import Motion
from openslides.users.views import demo_mode_users, is_demo_mode
from openslides.utils import logging
from openslides.utils.cache import element_cache
@ -198,7 +199,7 @@ class OS4Exporter:
# Note: When returning self.all_data one has access to the original data to compare it to the export.
# return {"all": self.all_data, "export": self.to_list_format()}
return self.to_list_format()
return self.data
def set_model(self, collection, model):
if model["id"] in self.data[collection]:
@ -419,7 +420,6 @@ class OS4Exporter:
"is_pseudoanonymized",
"pollmethod",
"onehundred_percent_base",
"majority_method",
"votesvalid",
"votesinvalid",
"votescast",
@ -869,15 +869,24 @@ class OS4Exporter:
new["css_class"] = old["css_class"]
else:
new["css_class"] = "lightblue"
new["restrictions"] = [
{
"motions.can_see_internal": "motion.can_see_internal",
"motions.can_manage_metadata": "motion.can_manage_metadata",
"motions.can_manage": "motion.can_manage",
"is_submitter": "is_submitter",
}[restriction]
for restriction in old["restriction"]
]
new["weight"] = old["id"]
new["restrictions"] = []
restrictions_map = {
"motions.can_see_internal": "motion.can_see_internal",
"motions.can_manage_metadata": "motion.can_manage_metadata",
"motions.can_manage": "motion.can_manage",
"managers_only": "motion.can_manage", # Should not exist any more since migration 0026, but does anyway...
"is_submitter": "is_submitter",
}
for restriction in old["restriction"]:
if restriction in restrictions_map:
new["restrictions"].append(restrictions_map[restriction])
else:
logging.getLogger(__name__).warn(
f"Invalid restriction '{restriction}' for motion {old['id']} is ignored."
)
new["set_number"] = not old["dont_set_identifier"]
new["merge_amendment_into_final"] = {
-1: "do_not_merge",
@ -1023,6 +1032,9 @@ class OS4Exporter:
"gender",
"email",
)
# remove invalid genders
if new["gender"] not in ("male", "female", "diverse"):
new["gender"] = None
new["is_physical_person"] = not old["is_committee"]
new["password"] = ""
@ -1405,9 +1417,30 @@ class OS4Exporter:
self.meeting["conference_auto_connect_next_speakers"] = configs[
"general_system_conference_auto_connect_next_speakers"
]
self.meeting["conference_enable_helpdesk"] = configs[
"general_system_conference_enable_helpdesk"
]
# TODO: missing setting in OS4
# self.meeting["conference_enable_helpdesk"] = configs["general_system_conference_enable_helpdesk"]
self.meeting["applause_enable"] = configs["general_system_applause_enable"]
self.meeting["applause_type"] = configs["general_system_applause_type"]
self.meeting["applause_show_level"] = configs[
"general_system_applause_show_level"
]
self.meeting["applause_min_amount"] = configs[
"general_system_applause_min_amount"
]
self.meeting["applause_max_amount"] = configs[
"general_system_applause_max_amount"
]
self.meeting["applause_particle_image_url"] = configs[
"general_system_applause_particle_image"
]
self.meeting["applause_timeout"] = configs[
"general_system_stream_applause_timeout"
]
self.meeting["applause_timeout"] = configs[
"general_system_stream_applause_timeout"
]
self.meeting["projector_countdown_default_time"] = configs[
"projector_default_countdown"
@ -1525,7 +1558,10 @@ class OS4Exporter:
self.meeting["motions_recommendation_text_mode"] = configs[
"motions_recommendation_text_mode"
]
self.meeting["motions_default_sorting"] = configs["motions_motions_sorting"]
self.meeting["motions_default_sorting"] = {
"identifier": "number",
"weight": "weight",
}[configs["motions_motions_sorting"]]
self.meeting["motions_number_type"] = configs["motions_identifier"]
self.meeting["motions_number_min_digits"] = configs[
"motions_identifier_min_digits"
@ -1572,9 +1608,6 @@ class OS4Exporter:
self.meeting["motion_poll_default_100_percent_base"] = configs[
"motion_poll_default_100_percent_base"
]
self.meeting["motion_poll_default_majority_method"] = configs[
"motion_poll_default_majority_method"
]
group_ids = configs["motion_poll_default_groups"]
for group_id in group_ids:
@ -1627,9 +1660,6 @@ class OS4Exporter:
self.meeting["assignment_poll_default_100_percent_base"] = configs[
"assignment_poll_default_100_percent_base"
]
self.meeting["assignment_poll_default_majority_method"] = configs[
"assignment_poll_default_majority_method"
]
group_ids = configs["assignment_poll_default_groups"]
for group_id in group_ids:
@ -1643,7 +1673,6 @@ class OS4Exporter:
self.meeting["poll_default_type"] = "analog"
self.meeting["poll_default_method"] = "Y"
self.meeting["poll_default_100_percent_base"] = "YNA"
self.meeting["poll_default_majority_method"] = "simple"
self.meeting["poll_default_group_ids"] = []
self.meeting["poll_couple_countdown"] = True
@ -1690,6 +1719,7 @@ class OS4Exporter:
self.meeting["committee_id"] = None
self.meeting["default_meeting_for_committee_id"] = None
self.meeting["is_active_in_organization_id"] = None
self.meeting["organization_tag_ids"] = []
self.meeting["present_user_ids"] = [
x["id"]