from wagtail.blocks import StructValue from shared.blocks import ProgramItemBlock from .getters import get_issue_list, get_issue_overall_percentage def fill_data_from_redmine_for_page(page): """ Naplní hondnotu completion_percentage a program_items pro RedmineProgramBlock pro danou Page (musí mít atribut content s blockem redmine_program_block) """ for program_block in page.content: if program_block.block_type == "redmine_program_block": redmine_issue_id = program_block.value["redmine_issue"] fill_overall_percentage_from_redmine(program_block.value, redmine_issue_id) fill_program_items_from_redmine(program_block.value, redmine_issue_id) def fill_overall_percentage_from_redmine(program_block_value: dict, issue_id: int): """ Naplní hondnotu completion_percentage pro RedmineProgramBlock hodnoutou z Redmine. """ program_block_value["completion_percentage"] = get_issue_overall_percentage( issue_id ) def fill_program_items_from_redmine(program_block_value: dict, issue_id: int): """ Naplní hondnotu program_items pro RedmineProgramBlock. Nejdříve hodnotu (list) promaže a pak z getných issues naplní pomocí StructValue """ issue_list = get_issue_list(issue_id) program_block_value["program_items"].clear() for issue in issue_list: sv = StructValue(ProgramItemBlock) sv.update( { "completion_percentage": issue.get("done_ratio", None), "title": issue.get("subject", ""), "issue_link": "https://redmine.pirati.cz/issues/{}".format( issue.get("id", "") ), } ) program_block_value["program_items"].append(sv)