diff --git a/transporte/views.py b/transporte/views.py index ecfbf26fadb9ff5c6bb85e7052b929d872356124..b5b5b0ea26280fbd6416ddeb802300e9e69470f6 100644 --- a/transporte/views.py +++ b/transporte/views.py @@ -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() diff --git a/transporte/zammad_integration.py b/transporte/zammad_integration.py index 4ac74f2f8cbe06aad7d87eedad99ad1c4e089ee8..e3ce9cb28fc29a24e8fff9e54112aa23f5846917 100644 --- a/transporte/zammad_integration.py +++ b/transporte/zammad_integration.py @@ -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)