From eb74c6a78c5452adf15268eeae43ba7f057b49f0 Mon Sep 17 00:00:00 2001 From: tvluke <tvluke@chaotikum.org> Date: Sat, 11 Feb 2023 12:59:00 +0100 Subject: [PATCH] add media ticket generator --- media_ticket_generator.py | 77 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 media_ticket_generator.py diff --git a/media_ticket_generator.py b/media_ticket_generator.py new file mode 100644 index 00000000..a619f5c7 --- /dev/null +++ b/media_ticket_generator.py @@ -0,0 +1,77 @@ +# requires requests==2.28.2 +# requires xmltodict=0.13.0 +# requires python-frontmatter==1.0.0 + +import requests +import xmltodict +import frontmatter +import glob +import os +import sys + +api_key = os.environ.get('REDMINE_API_KEY') + +known_uids = [] +url = 'https://chaotikum.org/conferences/all/frab.xml' +response = requests.get(url) +data = xmltodict.parse(response.content) + +for day in data['schedule']['day']: + if 'event' in day['room']: + if '@guid' in day['room']['event']: + known_uids.append(day['room']['event']['@guid']) + else: + for event in day['room']['event']: + known_uids.append(event['@guid']) + else: + for room in day['room']: + if '@guid' in room['event']: + known_uids.append(room['event']['@guid']) + else: + for event in room['event']: + known_uids.append(event['@guid']) + +files = glob.glob('_media/*.md') +for file in files: + post = frontmatter.load(file) + if 'uid' in post.keys(): + uid = post['uid'] + if uid not in known_uids: + if api_key is None: + print("No environment variable REDMINE_API_KEY present.", file=sys.stderr) + sys.exit(1) + else: + print('new uid, create ticket in redmine') + title = post['title'] + content = post.content + print('Title:' + title) + print('uid:' + uid) + print(content) + # https://www.redmine.org/projects/redmine/wiki/rest_issues + # https://www.redmine.org/projects/redmine/wiki/rest_api + # https://www.redmine.org/issues/31186 + url = f"https://redmine.chaotikum.org/issues.json?key={api_key}" + post_content = {} + post_content['issue'] = {}; + post_content['issue']["project_id"] = 38 + post_content['issue']["subject"] = title + post_content['issue']["description"] = content + post_content['issue']["custom_fields"] = [] + + uuid_field = {} + uuid_field['id'] = 11 + uuid_field['value'] = uid + uuid_field['name'] = "Video-UUID" + post_content['issue']["custom_fields"].append(uuid_field) + + speaker_field = {} + speaker_field['id'] = 8 + speaker_field['value'] = "Speaker" + speaker_field['name'] = "Sprecher" + post_content['issue']["custom_fields"].append(speaker_field) + + r = requests.post(url=url, json=post_content) + print(r.json()) + + + -- GitLab