Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
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())