forked from fnux/rt2zammad
Download and cache rt data
This commit is contained in:
parent
560911282c
commit
e20d2eb150
2 changed files with 44 additions and 1 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -105,3 +105,5 @@ venv.bak/
|
||||||
|
|
||||||
# configuration
|
# configuration
|
||||||
rt2zammad.json
|
rt2zammad.json
|
||||||
|
# cache
|
||||||
|
rt2zammad.cache
|
||||||
|
|
43
migrate.py
43
migrate.py
|
@ -3,13 +3,15 @@
|
||||||
Quick and dirty attempt to migrate issues from Request Tracker to Zammad.
|
Quick and dirty attempt to migrate issues from Request Tracker to Zammad.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
import pickle
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from requests.exceptions import HTTPError
|
from requests.exceptions import HTTPError
|
||||||
from zammad_py import ZammadAPI
|
from zammad_py import ZammadAPI
|
||||||
from rt import Rt
|
from zammad_py.api import TagList
|
||||||
|
from rt import Rt, ALL_QUEUES
|
||||||
|
|
||||||
TEMPLATE = """{
|
TEMPLATE = """{
|
||||||
"zammad_host": "",
|
"zammad_host": "",
|
||||||
|
@ -43,3 +45,42 @@ source = Rt(config['rt_url'], config['rt_user'], config['rt_pass'])
|
||||||
if not source.login():
|
if not source.login():
|
||||||
print('Failed to login to RT!')
|
print('Failed to login to RT!')
|
||||||
sys.exit(2)
|
sys.exit(2)
|
||||||
|
|
||||||
|
if os.path.exists('rt2zammad.cache'):
|
||||||
|
with open('rt2zammad.cache', 'rb') as handle:
|
||||||
|
data = pickle.load(handle)
|
||||||
|
users = data['users']
|
||||||
|
queues = data['queues']
|
||||||
|
tickets = data['tickets']
|
||||||
|
|
||||||
|
else:
|
||||||
|
users = {}
|
||||||
|
tickets = []
|
||||||
|
queues = set()
|
||||||
|
|
||||||
|
def ensure_user(username):
|
||||||
|
if username not in users:
|
||||||
|
users[username] = source.get_user(username)
|
||||||
|
|
||||||
|
|
||||||
|
for i in range(1, 1000):
|
||||||
|
print('Loading ticket {}'.format(i))
|
||||||
|
ticket = source.get_ticket(i)
|
||||||
|
if ticket is None:
|
||||||
|
break
|
||||||
|
queues.add(ticket['Queue'])
|
||||||
|
ensure_user(ticket['Creator'])
|
||||||
|
ensure_user(ticket['Owner'])
|
||||||
|
history = source.get_history(i)
|
||||||
|
attachments = []
|
||||||
|
for a in source.get_attachments_ids(i):
|
||||||
|
attachment = source.get_attachment(i, a)
|
||||||
|
attachments.append(attachments)
|
||||||
|
ensure_user(attachment['Creator'])
|
||||||
|
tickets.append({
|
||||||
|
'ticket': ticket,
|
||||||
|
'history': history,
|
||||||
|
'attachments': attachments,
|
||||||
|
})
|
||||||
|
with open('rt2zammad.cache', 'wb') as handle:
|
||||||
|
data = pickle.dump({'users': users, 'queues': queues, 'tickets': tickets}, handle)
|
||||||
|
|
Loading…
Reference in a new issue