Change reco default value, Slide test cases
This commit is contained in:
parent
35cd49e4fe
commit
7b2e116f51
@ -31,6 +31,7 @@ def get_state(
|
|||||||
f"motion {motion['id']} can not be on the state with id {state_id}"
|
f"motion {motion['id']} can not be on the state with id {state_id}"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def get_amendment_merge_into_motion(all_data, motion, amendment):
|
def get_amendment_merge_into_motion(all_data, motion, amendment):
|
||||||
"""
|
"""
|
||||||
HINT: This implementation should be consistent to isAccepted() in ViewMotionAmendedParagraph.ts
|
HINT: This implementation should be consistent to isAccepted() in ViewMotionAmendedParagraph.ts
|
||||||
@ -38,33 +39,38 @@ def get_amendment_merge_into_motion(all_data, motion, amendment):
|
|||||||
if amendment["state_id"] is None:
|
if amendment["state_id"] is None:
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
state = get_state(
|
state = get_state(all_data, motion, amendment["state_id"])
|
||||||
all_data, motion, amendment["state_id"]
|
if (
|
||||||
)
|
state["merge_amendment_into_final"] == -1
|
||||||
if state["merge_amendment_into_final"] == -1 or state["merge_amendment_into_final"] == 1:
|
or state["merge_amendment_into_final"] == 1
|
||||||
|
):
|
||||||
return state["merge_amendment_into_final"]
|
return state["merge_amendment_into_final"]
|
||||||
|
|
||||||
if amendment["recommendation_id"] is None:
|
if amendment["recommendation_id"] is None:
|
||||||
return 0
|
return 0
|
||||||
recommendation = get_state(
|
recommendation = get_state(all_data, motion, amendment["recommendation_id"])
|
||||||
all_data, motion, amendment["recommendation_id"]
|
|
||||||
)
|
|
||||||
return recommendation["merge_amendment_into_final"]
|
return recommendation["merge_amendment_into_final"]
|
||||||
|
|
||||||
|
|
||||||
def get_amendments_for_motion(motion, all_data):
|
def get_amendments_for_motion(motion, all_data):
|
||||||
amendment_data = []
|
amendment_data = []
|
||||||
for amendment_id, amendment in all_data["motions/motion"].items():
|
for amendment_id, amendment in all_data["motions/motion"].items():
|
||||||
if amendment["parent_id"] == motion["id"]:
|
if amendment["parent_id"] == motion["id"]:
|
||||||
merge_amendment_into_final = get_amendment_merge_into_motion(all_data, motion, amendment)
|
merge_amendment_into_final = get_amendment_merge_into_motion(
|
||||||
amendment_data.append({
|
all_data, motion, amendment
|
||||||
|
)
|
||||||
|
amendment_data.append(
|
||||||
|
{
|
||||||
"id": amendment["id"],
|
"id": amendment["id"],
|
||||||
"identifier": amendment["identifier"],
|
"identifier": amendment["identifier"],
|
||||||
"title": amendment["title"],
|
"title": amendment["title"],
|
||||||
"amendment_paragraphs": amendment["amendment_paragraphs"],
|
"amendment_paragraphs": amendment["amendment_paragraphs"],
|
||||||
"merge_amendment_into_final": merge_amendment_into_final,
|
"merge_amendment_into_final": merge_amendment_into_final,
|
||||||
})
|
}
|
||||||
|
)
|
||||||
return amendment_data
|
return amendment_data
|
||||||
|
|
||||||
|
|
||||||
def get_amendment_base_motion(amendment, all_data):
|
def get_amendment_base_motion(amendment, all_data):
|
||||||
try:
|
try:
|
||||||
motion = all_data["motions/motion"][amendment["parent_id"]]
|
motion = all_data["motions/motion"][amendment["parent_id"]]
|
||||||
@ -78,17 +84,18 @@ def get_amendment_base_motion(amendment, all_data):
|
|||||||
"text": motion["text"],
|
"text": motion["text"],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def get_amendment_base_statute(amendment, all_data):
|
def get_amendment_base_statute(amendment, all_data):
|
||||||
try:
|
try:
|
||||||
statute = all_data["motions/statute-paragraph"][amendment["statute_paragraph_id"]]
|
statute = all_data["motions/statute-paragraph"][
|
||||||
|
amendment["statute_paragraph_id"]
|
||||||
|
]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
statute_id = amendment["statute_paragraph_id"]
|
statute_id = amendment["statute_paragraph_id"]
|
||||||
raise ProjectorElementException(f"statute with id {statute_id} does not exist")
|
raise ProjectorElementException(f"statute with id {statute_id} does not exist")
|
||||||
|
|
||||||
return {
|
return {"title": statute["title"], "text": statute["text"]}
|
||||||
"title": statute["title"],
|
|
||||||
"text": statute["text"],
|
|
||||||
}
|
|
||||||
|
|
||||||
def motion_slide(all_data: AllData, element: Dict[str, Any]) -> Dict[str, Any]:
|
def motion_slide(all_data: AllData, element: Dict[str, Any]) -> Dict[str, Any]:
|
||||||
"""
|
"""
|
||||||
@ -109,7 +116,7 @@ def motion_slide(all_data: AllData, element: Dict[str, Any]) -> Dict[str, Any]:
|
|||||||
* change_recommendations
|
* change_recommendations
|
||||||
* submitter
|
* submitter
|
||||||
"""
|
"""
|
||||||
mode = element.get("mode", "original")
|
mode = element.get("mode", get_config(all_data, "motions_recommendation_text_mode"))
|
||||||
motion_id = element.get("id")
|
motion_id = element.get("id")
|
||||||
|
|
||||||
if motion_id is None:
|
if motion_id is None:
|
||||||
@ -126,9 +133,8 @@ def motion_slide(all_data: AllData, element: Dict[str, Any]) -> Dict[str, Any]:
|
|||||||
motions_preamble = get_config(all_data, "motions_preamble")
|
motions_preamble = get_config(all_data, "motions_preamble")
|
||||||
|
|
||||||
if motion["statute_paragraph_id"]:
|
if motion["statute_paragraph_id"]:
|
||||||
print("statute")
|
change_recommendations = [] # type: ignore
|
||||||
change_recommendations = []
|
amendments = [] # type: ignore
|
||||||
amendments = []
|
|
||||||
base_motion = None
|
base_motion = None
|
||||||
base_statute = get_amendment_base_statute(motion, all_data)
|
base_statute = get_amendment_base_statute(motion, all_data)
|
||||||
elif bool(motion["parent_id"]) and motion["amendment_paragraphs"]:
|
elif bool(motion["parent_id"]) and motion["amendment_paragraphs"]:
|
||||||
@ -137,7 +143,11 @@ def motion_slide(all_data: AllData, element: Dict[str, Any]) -> Dict[str, Any]:
|
|||||||
base_motion = get_amendment_base_motion(motion, all_data)
|
base_motion = get_amendment_base_motion(motion, all_data)
|
||||||
base_statute = None
|
base_statute = None
|
||||||
else:
|
else:
|
||||||
change_recommendations = list(filter(lambda reco: reco["internal"] == False, motion["change_recommendations"]))
|
change_recommendations = list(
|
||||||
|
filter(
|
||||||
|
lambda reco: reco["internal"] is False, motion["change_recommendations"]
|
||||||
|
)
|
||||||
|
)
|
||||||
amendments = get_amendments_for_motion(motion, all_data)
|
amendments = get_amendments_for_motion(motion, all_data)
|
||||||
base_motion = None
|
base_motion = None
|
||||||
base_statute = None
|
base_statute = None
|
||||||
|
@ -74,7 +74,99 @@ def all_data():
|
|||||||
"weight": 10000,
|
"weight": 10000,
|
||||||
"created": "2019-01-19T18:37:34.741336+01:00",
|
"created": "2019-01-19T18:37:34.741336+01:00",
|
||||||
"last_modified": "2019-01-19T18:37:34.741368+01:00",
|
"last_modified": "2019-01-19T18:37:34.741368+01:00",
|
||||||
}
|
"change_recommendations": [
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"motion_id": 1,
|
||||||
|
"rejected": False,
|
||||||
|
"internal": True,
|
||||||
|
"type": 0,
|
||||||
|
"other_description": "",
|
||||||
|
"line_from": 1,
|
||||||
|
"line_to": 2,
|
||||||
|
"text": "internal new motion text",
|
||||||
|
"creation_time": "2019-02-09T09:54:06.256378+01:00",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 2,
|
||||||
|
"motion_id": 1,
|
||||||
|
"rejected": False,
|
||||||
|
"internal": False,
|
||||||
|
"type": 0,
|
||||||
|
"other_description": "",
|
||||||
|
"line_from": 1,
|
||||||
|
"line_to": 2,
|
||||||
|
"text": "public new motion text",
|
||||||
|
"creation_time": "2019-02-09T09:54:06.256378+01:00",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
2: {
|
||||||
|
"id": 2,
|
||||||
|
"identifier": "Ä1",
|
||||||
|
"title": "Amendment for 12345",
|
||||||
|
"text": "",
|
||||||
|
"amendment_paragraphs": ["New motion text"],
|
||||||
|
"modified_final_version": "",
|
||||||
|
"reason": "",
|
||||||
|
"parent_id": 1,
|
||||||
|
"category_id": None,
|
||||||
|
"comments": [],
|
||||||
|
"motion_block_id": None,
|
||||||
|
"origin": "",
|
||||||
|
"submitters": [{"id": 4, "user_id": 1, "motion_id": 1, "weight": 1}],
|
||||||
|
"supporters_id": [],
|
||||||
|
"state_id": 1,
|
||||||
|
"state_extension": None,
|
||||||
|
"state_access_level": 0,
|
||||||
|
"statute_paragraph_id": None,
|
||||||
|
"workflow_id": 1,
|
||||||
|
"recommendation_id": None,
|
||||||
|
"recommendation_extension": None,
|
||||||
|
"tags_id": [],
|
||||||
|
"attachments_id": [],
|
||||||
|
"polls": [],
|
||||||
|
"agenda_item_id": 4,
|
||||||
|
"log_messages": [],
|
||||||
|
"sort_parent_id": None,
|
||||||
|
"weight": 10000,
|
||||||
|
"created": "2019-01-19T18:37:34.741336+01:00",
|
||||||
|
"last_modified": "2019-01-19T18:37:34.741368+01:00",
|
||||||
|
"change_recommendations": [],
|
||||||
|
},
|
||||||
|
3: {
|
||||||
|
"id": 3,
|
||||||
|
"identifier": None,
|
||||||
|
"title": "Statute amendment for §1 Preamble",
|
||||||
|
"text": "<p>Some other preamble text</p>",
|
||||||
|
"amendment_paragraphs": None,
|
||||||
|
"modified_final_version": "",
|
||||||
|
"reason": "",
|
||||||
|
"parent_id": None,
|
||||||
|
"category_id": None,
|
||||||
|
"comments": [],
|
||||||
|
"motion_block_id": None,
|
||||||
|
"origin": "",
|
||||||
|
"submitters": [{"id": 4, "user_id": 1, "motion_id": 1, "weight": 1}],
|
||||||
|
"supporters_id": [],
|
||||||
|
"state_id": 1,
|
||||||
|
"state_extension": None,
|
||||||
|
"state_access_level": 0,
|
||||||
|
"statute_paragraph_id": 1,
|
||||||
|
"workflow_id": 1,
|
||||||
|
"recommendation_id": None,
|
||||||
|
"recommendation_extension": None,
|
||||||
|
"tags_id": [],
|
||||||
|
"attachments_id": [],
|
||||||
|
"polls": [],
|
||||||
|
"agenda_item_id": 4,
|
||||||
|
"log_messages": [],
|
||||||
|
"sort_parent_id": None,
|
||||||
|
"weight": 10000,
|
||||||
|
"created": "2019-01-19T18:37:34.741336+01:00",
|
||||||
|
"last_modified": "2019-01-19T18:37:34.741368+01:00",
|
||||||
|
"change_recommendations": [],
|
||||||
|
},
|
||||||
}
|
}
|
||||||
return_value["motions/workflow"] = {
|
return_value["motions/workflow"] = {
|
||||||
1: {
|
1: {
|
||||||
@ -149,6 +241,14 @@ def all_data():
|
|||||||
"first_state_id": 1,
|
"first_state_id": 1,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return_value["motions/statute-paragraph"] = {
|
||||||
|
1: {
|
||||||
|
"id": 1,
|
||||||
|
"title": "§1 Preamble",
|
||||||
|
"text": "<p>Some preamble text</p>",
|
||||||
|
"weight": 10000,
|
||||||
|
}
|
||||||
|
}
|
||||||
return_value["motions/motion-change-recommendation"] = {}
|
return_value["motions/motion-change-recommendation"] = {}
|
||||||
return return_value
|
return return_value
|
||||||
|
|
||||||
@ -162,9 +262,85 @@ def test_motion_slide(all_data):
|
|||||||
"identifier": "4",
|
"identifier": "4",
|
||||||
"title": "12345",
|
"title": "12345",
|
||||||
"text": "motion text",
|
"text": "motion text",
|
||||||
|
"amendments": [
|
||||||
|
{
|
||||||
|
"id": 2,
|
||||||
|
"title": "Amendment for 12345",
|
||||||
|
"amendment_paragraphs": ["New motion text"],
|
||||||
|
"identifier": "Ä1",
|
||||||
|
"merge_amendment_into_final": 0,
|
||||||
|
}
|
||||||
|
],
|
||||||
"amendment_paragraphs": None,
|
"amendment_paragraphs": None,
|
||||||
|
"change_recommendations": [
|
||||||
|
{
|
||||||
|
"id": 2,
|
||||||
|
"motion_id": 1,
|
||||||
|
"rejected": False,
|
||||||
|
"internal": False,
|
||||||
|
"type": 0,
|
||||||
|
"other_description": "",
|
||||||
|
"line_from": 1,
|
||||||
|
"line_to": 2,
|
||||||
|
"text": "public new motion text",
|
||||||
|
"creation_time": "2019-02-09T09:54:06.256378+01:00",
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"base_motion": None,
|
||||||
|
"base_statute": None,
|
||||||
"is_child": False,
|
"is_child": False,
|
||||||
"show_meta_box": True,
|
"show_meta_box": True,
|
||||||
"reason": "",
|
"reason": "",
|
||||||
"submitter": ["Administrator"],
|
"submitter": ["Administrator"],
|
||||||
|
"line_length": 90,
|
||||||
|
"line_numbering_mode": "none",
|
||||||
|
"preamble": "The assembly may decide:",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def test_amendment_slide(all_data):
|
||||||
|
element: Dict[str, Any] = {"id": 2}
|
||||||
|
|
||||||
|
data = projector.motion_slide(all_data, element)
|
||||||
|
|
||||||
|
assert data == {
|
||||||
|
"identifier": "Ä1",
|
||||||
|
"title": "Amendment for 12345",
|
||||||
|
"text": "",
|
||||||
|
"amendments": [],
|
||||||
|
"amendment_paragraphs": ["New motion text"],
|
||||||
|
"change_recommendations": [],
|
||||||
|
"base_motion": {"identifier": "4", "text": "motion text", "title": "12345"},
|
||||||
|
"base_statute": None,
|
||||||
|
"is_child": True,
|
||||||
|
"show_meta_box": True,
|
||||||
|
"reason": "",
|
||||||
|
"submitter": ["Administrator"],
|
||||||
|
"line_length": 90,
|
||||||
|
"line_numbering_mode": "none",
|
||||||
|
"preamble": "The assembly may decide:",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def test_statute_amendment_slide(all_data):
|
||||||
|
element: Dict[str, Any] = {"id": 3}
|
||||||
|
|
||||||
|
data = projector.motion_slide(all_data, element)
|
||||||
|
|
||||||
|
assert data == {
|
||||||
|
"identifier": None,
|
||||||
|
"title": "Statute amendment for §1 Preamble",
|
||||||
|
"text": "<p>Some other preamble text</p>",
|
||||||
|
"amendments": [],
|
||||||
|
"amendment_paragraphs": None,
|
||||||
|
"change_recommendations": [],
|
||||||
|
"base_motion": None,
|
||||||
|
"base_statute": {"title": "§1 Preamble", "text": "<p>Some preamble text</p>"},
|
||||||
|
"is_child": False,
|
||||||
|
"show_meta_box": True,
|
||||||
|
"reason": "",
|
||||||
|
"submitter": ["Administrator"],
|
||||||
|
"line_length": 90,
|
||||||
|
"line_numbering_mode": "none",
|
||||||
|
"preamble": "The assembly may decide:",
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user