Exemple #1
0
def zammad_api():
    return ZammadAPI(
        username=os.environ['ZAMMAD_USERNAME'],
        password=os.environ['ZAMMAD_PASSWORD'],
        host=os.environ['ZAMMAD_HOST'],
        is_secure=False
    )
Exemple #2
0
 def handle(self, *args, **options):
     self.client = ZammadAPI(
         http_token=settings.ZAMMAD_TOKEN,
         is_secure=True,
         host="care.weblate.org",
     )
     self.handle_hosted_account()
Exemple #3
0
def get_zammad(user=None):
    if user not in ZAMMADS:
        kwargs = {}
        if user:
            kwargs["on_behalf_of"] = user
        ZAMMADS[user] = ZammadAPI(
            host=config["zammad_host"],
            username=config["zammad_user"],
            password=config["zammad_password"],
            is_secure=config["zammad_secure"],
            **kwargs,
        )
    return ZAMMADS[user]
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"],
    )

    #
    # 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
        })

    messagebody = render_template("email_transport_update.html",
                                  transport=transport)

    ticketTemplate = {
        "title": "[Transport] from: " + transport.origin + " to: " +
        transport.destination,
        "group_id": app.config["ZAMMAD_GROUP_ID"],
        "customer_id": zammad_user["id"],
        "state_id": "3" if transport.needs_organization else "2",
        "article": {
            "from": "HelpDesk",
            "to": transport.user.login,
            "body": messagebody,
            "type_id": 1,
            "content_type": "text/html",
        },
        "tags": "transport",
        "pending_time": "{}Z".format(datetime.utcnow().isoformat()),
    }

    #
    # Create a new ticket, if the transport has no ticket_id in the db
    #
    if transport.ticket_id is None:
        transport.ticket_id = client.ticket.create(ticketTemplate)["id"]

    else:
        ticketTemplate["id"] = transport.ticket_id
        client.ticket.update(transport.ticket_id, ticketTemplate)

    return transport.ticket_id
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'])

    ##
    ## 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
        })

    messagebody = render_template('email_transport_update.html',
                                  transport=transport)

    ticketTemplate = {
        'title': '[Transport] from: ' + transport.origin + ' to: ' +
        transport.destination,
        'group_id': app.config['ZAMMAD_GROUP_ID'],
        'customer_id': zammad_user['id'],
        'state_id': '3' if transport.needs_organization else '2',
        'article': {
            'from': 'HelpDesk',
            'to': transport.user.login,
            'body': messagebody,
            'type_id': 1,
            'content_type': 'text/html'
        },
        'tags': 'transport',
        'pending_time': '{}Z'.format(datetime.utcnow().isoformat()),
    }

    ##
    ## Create a new ticket, if the transport has no ticket_id in the db
    ##
    if transport.ticket_id == None:
        transport.ticket_id = client.ticket.create(ticketTemplate)['id']

    else:
        ticketTemplate['id'] = transport.ticket_id
        client.ticket.update(transport.ticket_id, ticketTemplate)

    return transport.ticket_id
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"],
    )

    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
        })

    ticketTemplate = {
        "id": transport.ticket_id,
        "title": "[Transport] from: " + transport.origin + " to: " +
        transport.destination,
        "group_id": app.config["ZAMMAD_GROUP_ID"],
        "customer_id": zammad_user["id"],
        "state_id": "4",
        "article": {
            "from": "HelpDesk",
            "to": transport.user.login,
            "body": messagebody,
            "type_id": 1,
            "content_type": "text/html",
        },
        "tags": "transport",
    }

    client.ticket.update(transport.ticket_id, ticketTemplate)
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'])

    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
        })

    ticketTemplate = {
        'id': transport.ticket_id,
        'title': '[Transport] from: ' + transport.origin + ' to: ' +
        transport.destination,
        'group_id': app.config['ZAMMAD_GROUP_ID'],
        'customer_id': zammad_user['id'],
        'state_id': '4',
        'article': {
            'from': 'HelpDesk',
            'to': transport.user.login,
            'body': messagebody,
            'type_id': 1,
            'content_type': 'text/html'
        },
        'tags': 'transport',
    }

    client.ticket.update(transport.ticket_id, ticketTemplate)
Exemple #8
0
def zammad_api():
    return ZammadAPI(
        url="http://localhost/api/v1/",
        username="******",
        password="******",
    )
Exemple #9
0
def zammad_api():
    return ZammadAPI(host="localhost",
                     username="******",
                     password="******",
                     is_secure=False)