Skip to content
Snippets Groups Projects
Commit ba634614 authored by OndraRehounek's avatar OndraRehounek Committed by jan.bednarik
Browse files

district & region: Fill redmine block on page save

parent 6120dfc2
No related branches found
No related tags found
2 merge requests!468Release,!466Feature/redmine on back
Pipeline #7666 passed
......@@ -12,6 +12,8 @@ from wagtail.core.blocks import (
from wagtail.core.blocks.struct_block import StructBlockValidationError
from wagtail.images.blocks import ImageChooserBlock
from shared.blocks import ProgramItemBlock
class AddressBlock(StructBlock):
title = CharBlock(label="Titulek", required=True)
......@@ -213,11 +215,6 @@ class PersonUrlBlock(StructBlock):
)
class ProgramItemBlock(StructBlock):
title = CharBlock(label="Název", required=True)
completion_percentage = IntegerBlock(label="Procento dokončení", required=True)
class StaticProgramBlock(StructBlock):
headline = CharBlock(label="Titulek bloku", required=True)
perex = TextBlock(label="Krátký text pod nadpisem", required=True)
......
......@@ -872,6 +872,12 @@ class DistrictProgramPage(SubpageMixin, MetadataPageMixin, Page):
class Meta:
verbose_name = "Program"
def save(self, **kwargs):
from redmine_utils.functions import fill_data_from_redmine_for_page
fill_data_from_redmine_for_page(self)
return super().save(**kwargs)
class DistrictCenterPage(CalendarMixin, SubpageMixin, MetadataPageMixin, Page):
### FIELDS
......
from wagtail.core.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", ""),
}
)
program_block_value["program_items"].append(sv)
File moved
from django.core.management.base import BaseCommand
from wagtail.core.blocks import StructValue
from district.blocks import ProgramItemBlock
from district.models import DistrictProgramPage
from redmine_utils.functions import fill_data_from_redmine_for_page
from region.models import RegionProgramPage
from ...utils import get_issue_list, get_issue_overall_percentage
class Command(BaseCommand):
def handle(self, *args, **options):
......@@ -20,47 +17,7 @@ class Command(BaseCommand):
for model in updated_models:
for page in model.objects.all():
for program_block in page.content:
if program_block.block_type == "redmine_program_block":
fill_data_from_redmine(program_block.value)
fill_data_from_redmine_for_page(page)
page.save()
self.stdout.write("\nUpdating Redmine issues finished")
def fill_data_from_redmine(program_block_value: dict):
"""
Naplní hondnotu completion_percentage a program_items pro RedmineProgramBlock
"""
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", ""),
}
)
program_block_value["program_items"].append(sv)
......@@ -12,6 +12,8 @@ from wagtail.core.blocks import (
from wagtail.core.blocks.struct_block import StructBlockValidationError
from wagtail.images.blocks import ImageChooserBlock
from shared.blocks import ProgramItemBlock
class AddressBlock(StructBlock):
title = CharBlock(label="Titulek", required=True)
......@@ -213,11 +215,6 @@ class PersonUrlBlock(StructBlock):
)
class ProgramItemBlock(StructBlock):
title = CharBlock(label="Název", required=True)
completion_percentage = IntegerBlock(label="Procento dokončení", required=True)
class StaticProgramBlock(StructBlock):
headline = CharBlock(label="Titulek bloku", required=True)
perex = TextBlock(label="Krátký text pod nadpisem", required=True)
......
......@@ -859,6 +859,12 @@ class RegionProgramPage(SubpageMixin, MetadataPageMixin, Page):
class Meta:
verbose_name = "Program"
def save(self, **kwargs):
from redmine_utils.functions import fill_data_from_redmine_for_page
fill_data_from_redmine_for_page(self)
return super().save(**kwargs)
class RegionCenterPage(CalendarMixin, SubpageMixin, MetadataPageMixin, Page):
### FIELDS
......
......@@ -50,3 +50,10 @@ class MenuParentBlock(blocks.StructBlock):
class Meta:
label = "Podmenu"
template = "styleguide/2.3.x/menu_parent.html"
class ProgramItemBlock(blocks.StructBlock):
title = blocks.CharBlock(label="Název", required=True)
completion_percentage = blocks.IntegerBlock(
label="Procento dokončení", required=True
)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment