Skip to content
Snippets Groups Projects
Unverified Commit 2b1cc21f authored by hanfi's avatar hanfi
Browse files

fixed zammad integration

parent c70e9d08
Branches
No related tags found
No related merge requests found
......@@ -190,12 +190,12 @@ def edit_transport(id=None):
#
# if ticket is new, update object with zammad ticket id
#
# if transport.ticket_id is None:
# transport.ticket_id = update_ticket(transport)
# db.session.add(transport)
# db.session.commit()
# else:
# update_ticket(transport)
if transport.ticket_id is None:
transport.ticket_id = update_ticket(transport)
db.session.add(transport)
db.session.commit()
else:
update_ticket(transport)
for file in request.files.getlist("file_upload"):
if file.filename:
......@@ -322,8 +322,8 @@ def mark_transport(mark, id=None):
#
# close ticket
#
# if transport.ticket_id:
# close_ticket(transport, mark)
if transport.ticket_id:
close_ticket(transport, mark)
db.session.add(transport)
db.session.commit()
......
......@@ -5,27 +5,28 @@ from flask import render_template
from zammad_py import ZammadAPI
def close_ticket(transport, reason):
client = ZammadAPI(
username=app.config["ZAMMAD_USER"],
password=app.config["ZAMMAD_PASS"],
host=app.config["ZAMMAD_HOST"],
is_secure=app.config["ZAMMAD_SECURE"],
def get_client():
return ZammadAPI(
url=app.config["ZAMMAD_URL"], http_token=app.config["ZAMMAD_TOKEN"]
)
def get_user(email, client):
# very cheap userlookup.
# the email should be unique so we never should get more than 1 result
# if 0 results we need create the user
zammad_search_result = client.user.search(f"query=email:{email}")
if len(zammad_search_result) == 0:
return client.user.create({"firstname": email, "email": email})
return zammad_search_result[0]
def close_ticket(transport, reason):
client = get_client()
messagebody = reason
#
# if new helpdesk user is closing a ticket,
# we need to create the user in the ticket system
#
zammad_search_result = client.user.search({"query": transport.user.login})
if zammad_search_result:
zammad_user = zammad_search_result[0]
else:
zammad_user = client.user.create(
{"firstname": transport.user.login, "email": transport.user.login}
)
zammad_user = get_user(transport.user.login, client)
ticketTemplate = {
"id": transport.ticket_id,
......@@ -50,23 +51,9 @@ def close_ticket(transport, reason):
def update_ticket(transport):
client = ZammadAPI(
username=app.config["ZAMMAD_USER"],
password=app.config["ZAMMAD_PASS"],
host=app.config["ZAMMAD_HOST"],
is_secure=app.config["ZAMMAD_SECURE"],
)
client = get_client()
#
# Create user if not exists
#
zammad_search_result = client.user.search({"query": transport.user.login})
if zammad_search_result:
zammad_user = zammad_search_result[0]
else:
zammad_user = client.user.create(
{"firstname": transport.user.login, "email": transport.user.login}
)
zammad_user = get_user(transport.user.login, client)
messagebody = render_template("email_transport_update.html", transport=transport)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment