ADD Zammad Export
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
import psycopg2
|
||||
from datetime import datetime, timedelta
|
||||
from Controller import mysql_connect
|
||||
|
||||
def tickets(ip,name):
|
||||
# Verbindungsinformationen zur PostgreSQL-Datenbank
|
||||
db_host = "172.17.1.5"
|
||||
db_name = "zammad_production"
|
||||
db_user = "zammad"
|
||||
db_password = "zammad"
|
||||
|
||||
table_name = "Tickets"
|
||||
|
||||
# Verbindung zur Datenbank herstellen
|
||||
connection = psycopg2.connect(
|
||||
host=db_host,
|
||||
database=db_name,
|
||||
user=db_user,
|
||||
password=db_password
|
||||
)
|
||||
## Abfrage der Daten mit SL / ZL
|
||||
cursor = connection.cursor()
|
||||
query = "SELECT tickets.*, tag_items.name AS SLA FROM tickets LEFT JOIN tags ON tickets.id = tags.o_id LEFT JOIN tag_items ON tags.tag_item_id = tag_items.id;"
|
||||
cursor.execute(query)
|
||||
|
||||
## Header auslesen
|
||||
headers = [desc[0] for desc in cursor.description]
|
||||
|
||||
## Orga Auslesen
|
||||
group = f"SELECT id FROM groups WHERE name = '{name.replace('ae','ä').replace('ue','ü').replace('oe','ö').replace('-',' ')}'"
|
||||
cursor.execute(group)
|
||||
query = f"SELECT tickets.*, tag_items.name AS SLA FROM tickets LEFT JOIN tags ON tickets.id = tags.o_id LEFT JOIN tag_items ON tags.tag_item_id = tag_items.id WHERE group_id = {cursor.fetchone()[0]}"
|
||||
cursor.execute(query)
|
||||
results = cursor.fetchall()
|
||||
|
||||
column_type = f"SELECT column_name, data_type FROM information_schema.columns WHERE table_name = 'tickets' order by column_name ASC;"
|
||||
cursor.execute(column_type)
|
||||
column_type = cursor.fetchall()
|
||||
|
||||
columns = ""
|
||||
## Cretae Tabelle with column_type
|
||||
create_table_query = f"CREATE TABLE IF NOT EXISTS `{table_name}` (importdate BIGINT(11), "
|
||||
for i in column_type:
|
||||
columns += f"{i[0]},"
|
||||
if i[1] == "timestamp without time zone":
|
||||
create_table_query += f"`{i[0]}` DATETIME, "
|
||||
elif i[1] == "character varying":
|
||||
create_table_query += f"`{i[0]}` TEXT, "
|
||||
else:
|
||||
create_table_query += f"`{i[0]}` {i[1]}, "
|
||||
create_table_query = create_table_query.rstrip(",") + "sla TEXT)"
|
||||
mysql_connect.create_database(create_table_query, name)
|
||||
|
||||
for row in results:
|
||||
unix_time = int(datetime.now().timestamp())
|
||||
id = mysql_connect.get_user(f"SELECT id FROM `{table_name}` where id = '%s'", name,(row[0],))
|
||||
given_date = datetime.strptime(str(row[36]), "%Y-%m-%d %H:%M:%S.%f")
|
||||
yesterday = datetime.now() - timedelta(days=1)
|
||||
if id is None:
|
||||
insert_query = f"INSERT INTO `{table_name}` (importdate, `{'`, `'.join(headers)}`) VALUES (%s, {', '.join(['%s'] * len(headers))})"
|
||||
mysql_connect.add_user(insert_query, name, (unix_time,) + row)
|
||||
else:
|
||||
if given_date > yesterday:
|
||||
update_query = f"UPDATE `{table_name}` SET "
|
||||
for field in headers:
|
||||
update_query += f" `{field}` = %s, "
|
||||
update_query = update_query.rstrip(", ")
|
||||
update_query += f" WHERE id = {row[0]}"
|
||||
mysql_connect.add_user(update_query,name, row)
|
||||
Reference in New Issue
Block a user