From bb253d60fc70905d9d83779c36f720421cef20e0 Mon Sep 17 00:00:00 2001 From: OndraRehounek <ondra.rehounek@seznam.cz> Date: Fri, 15 Apr 2022 13:25:54 +0200 Subject: [PATCH] district & region: WIP redmine --- district/blocks.py | 3 +- majak/settings/base.py | 1 + redmine_utils/__init__.py | 0 redmine_utils/apps.py | 5 ++++ redmine_utils/management/__init__.py | 0 redmine_utils/management/commands/__init__.py | 0 .../commands/update_redmine_issues.py | 30 +++++++++++++++++++ redmine_utils/migrations/__init__.py | 0 redmine_utils/models.py | 5 ++++ redmine_utils/utils.py | 24 +++++++++++++++ region/blocks.py | 2 -- 11 files changed, 66 insertions(+), 4 deletions(-) create mode 100644 redmine_utils/__init__.py create mode 100644 redmine_utils/apps.py create mode 100644 redmine_utils/management/__init__.py create mode 100644 redmine_utils/management/commands/__init__.py create mode 100644 redmine_utils/management/commands/update_redmine_issues.py create mode 100644 redmine_utils/migrations/__init__.py create mode 100644 redmine_utils/models.py create mode 100644 redmine_utils/utils.py diff --git a/district/blocks.py b/district/blocks.py index b885a0a3..f4849df7 100644 --- a/district/blocks.py +++ b/district/blocks.py @@ -224,8 +224,6 @@ class StaticProgramBlock(StructBlock): person = PageChooserBlock(label="Garant", page_type=["district.DistrictPersonPage"]) completion_percentage = IntegerBlock(label="Procento dokončení", required=True) program_items = ListBlock(ProgramItemBlock()) - # program_items = TableBlock(label="Tabulka plnění programu", required=True) - person = PageChooserBlock(label="Garant", page_type=["district.DistrictPersonPage"]) class Meta: template = "district/blocks/static_program_block.html" @@ -238,6 +236,7 @@ class RedmineProgramBlock(StructBlock): perex = TextBlock(label="Krátký text pod nadpisem", required=True) person = PageChooserBlock(label="Garant", page_type=["district.DistrictPersonPage"]) redmine_issue = IntegerBlock(label="Číslo Redmine issue", required=True) + completion_percentage = IntegerBlock(label="Procento dokončení", required=False) class Meta: template = "district/blocks/redmine_program_block.html" diff --git a/majak/settings/base.py b/majak/settings/base.py index 963e6153..4f0b1440 100644 --- a/majak/settings/base.py +++ b/majak/settings/base.py @@ -44,6 +44,7 @@ INSTALLED_APPS = [ "czech_inspirational", "shared", "calendar_utils", + "redmine_utils", "users", "pirates", "tuning", diff --git a/redmine_utils/__init__.py b/redmine_utils/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/redmine_utils/apps.py b/redmine_utils/apps.py new file mode 100644 index 00000000..bdd5f893 --- /dev/null +++ b/redmine_utils/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class RedmineUtilsConfig(AppConfig): + name = "redmine_utils" diff --git a/redmine_utils/management/__init__.py b/redmine_utils/management/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/redmine_utils/management/commands/__init__.py b/redmine_utils/management/commands/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/redmine_utils/management/commands/update_redmine_issues.py b/redmine_utils/management/commands/update_redmine_issues.py new file mode 100644 index 00000000..b42ddb11 --- /dev/null +++ b/redmine_utils/management/commands/update_redmine_issues.py @@ -0,0 +1,30 @@ +from django.core.management.base import BaseCommand + +from district.models import DistrictProgramPage +from region.models import RegionProgramPage + +from ...utils import get_issue_list, get_issue_overall + + +class Command(BaseCommand): + def handle(self, *args, **options): + """ + Pro updated_models (DistrictProgramPage, RegionProgramPage) projedu obsah, + zda má v sobě `redmine_program_block` - ten má IntegerBlock `redmine_issue`. + Podle něj pak stahujeme data z Redmine. + """ + updated_models = DistrictProgramPage, RegionProgramPage + self.stdout.write("Updating Redmine issues...") + + for model in updated_models: + program_pages = model.objects.all() + for page_content in model.objects.all().values_list("content", flat=True): + for program_block in page_content: + if program_block.block_type == "redmine_program_block": + # block_content_dict = program_block.value + redmine_issue = program_block.value["redmine_issue"] + program_block.value["headline"] = "test" + get_issue_overall(redmine_issue) + get_issue_list(redmine_issue) + + self.stdout.write("\nUpdating Redmine issues finished") diff --git a/redmine_utils/migrations/__init__.py b/redmine_utils/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/redmine_utils/models.py b/redmine_utils/models.py new file mode 100644 index 00000000..d07ff1c1 --- /dev/null +++ b/redmine_utils/models.py @@ -0,0 +1,5 @@ +from django.db import models + + +class RedmineIssue(models.Model): + pass diff --git a/redmine_utils/utils.py b/redmine_utils/utils.py new file mode 100644 index 00000000..e06990d3 --- /dev/null +++ b/redmine_utils/utils.py @@ -0,0 +1,24 @@ +import json + +import requests + + +def get_issue_overall(issue_id): + response = requests.get("https://redmine.pirati.cz/issues/{}.json".format(issue_id)) + print(response.text) + + +def get_issue_list(issue_id): + response = requests.get( + "https://redmine.pirati.cz/issues.json?parent_id={}&sort=id:as".format(issue_id) + ) + + if response.status_code != 200 or not response.text: + # TODO log + return + + data = json.loads(response.text) + + print(response) + + return data["issues"] diff --git a/region/blocks.py b/region/blocks.py index a70005f8..d54020cb 100644 --- a/region/blocks.py +++ b/region/blocks.py @@ -224,8 +224,6 @@ class StaticProgramBlock(StructBlock): person = PageChooserBlock(label="Garant", page_type=["region.RegionPersonPage"]) completion_percentage = IntegerBlock(label="Procento dokončení", required=True) program_items = ListBlock(ProgramItemBlock()) - # program_items = TableBlock(label="Tabulka plnění programu", required=True) - person = PageChooserBlock(label="Garant", page_type=["region.RegionPersonPage"]) class Meta: template = "region/blocks/static_program_block.html" -- GitLab