diff --git a/district/blocks.py b/district/blocks.py index b885a0a302f198503dd6c9499c2bb6dcc6836c82..f4849df74bfde2bea70c41b4f8100cabbe1d7a77 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 963e6153bcc458a2e14df8aa135a0cddf1cc2030..4f0b1440ee6a9ea5ed0573ef4f84023622d4eb89 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 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/redmine_utils/apps.py b/redmine_utils/apps.py new file mode 100644 index 0000000000000000000000000000000000000000..bdd5f89334edc6b608f8ace1e0d287cd3cfe3a80 --- /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 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/redmine_utils/management/commands/__init__.py b/redmine_utils/management/commands/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 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 0000000000000000000000000000000000000000..b42ddb1137941acc982985d9f33b1d3c58cecfc4 --- /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 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/redmine_utils/models.py b/redmine_utils/models.py new file mode 100644 index 0000000000000000000000000000000000000000..d07ff1c1aa5c9d466947499e76de8e54268663fd --- /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 0000000000000000000000000000000000000000..e06990d3d4c396bffa7506eb3382c261fb942084 --- /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 a70005f83ecbbb943630e408790b0060dfdc4bd6..d54020cb6556634b356971ae5c6b65f0d9044ecb 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"