all the project copy
This commit is contained in:
396
conn/mysql5.py
Normal file
396
conn/mysql5.py
Normal file
@@ -0,0 +1,396 @@
|
||||
import mysql.connector
|
||||
import config
|
||||
|
||||
|
||||
def getMySqlConnection():
|
||||
connection = mysql.connector.connect(**config.MYSQL_CONFIG)
|
||||
return connection
|
||||
|
||||
|
||||
def closeConnection(connection,cursor):
|
||||
if connection:
|
||||
cursor.close()
|
||||
connection.close()
|
||||
|
||||
|
||||
|
||||
def get_areas():
|
||||
connection = getMySqlConnection()
|
||||
cursor = connection.cursor()
|
||||
|
||||
postgreSQL_select_Query = "select * from aree"
|
||||
|
||||
cursor.execute(postgreSQL_select_Query)
|
||||
publisher_records = cursor.fetchall()
|
||||
|
||||
closeConnection(connection,cursor)
|
||||
return publisher_records
|
||||
|
||||
def get_sub_areas(area):
|
||||
|
||||
connection = getMySqlConnection()
|
||||
cursor = connection.cursor()
|
||||
|
||||
postgreSQL_select_Query = "select ID,SOTTOAREA,AREA from sottoaree where area = %s"
|
||||
|
||||
cursor.execute(postgreSQL_select_Query, (area,))
|
||||
publisher_records = cursor.fetchall()
|
||||
|
||||
closeConnection(connection,cursor)
|
||||
return publisher_records
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# print(get_sub_areas(2))
|
||||
|
||||
|
||||
|
||||
def getCompetences(competence_id=999999):
|
||||
connection = getMySqlConnection()
|
||||
cursor = connection.cursor()
|
||||
|
||||
postgreSQL_select_Query = "select * from competenze order by ID"
|
||||
if competence_id != 999999:
|
||||
postgreSQL_select_Query += " WHERE ID =" + str(competence_id)
|
||||
|
||||
cursor.execute(postgreSQL_select_Query)
|
||||
publisher_records = cursor.fetchall()
|
||||
|
||||
closeConnection(connection,cursor)
|
||||
return publisher_records
|
||||
|
||||
def getProducts(product_id=999999):
|
||||
connection = getMySqlConnection()
|
||||
cursor = connection.cursor()
|
||||
|
||||
postgreSQL_select_Query = "select * from prodotti order by ID"
|
||||
if product_id != 999999:
|
||||
postgreSQL_select_Query += " WHERE ID =" + str(product_id)
|
||||
|
||||
cursor.execute(postgreSQL_select_Query)
|
||||
publisher_records = cursor.fetchall()
|
||||
|
||||
closeConnection(connection,cursor)
|
||||
return publisher_records
|
||||
|
||||
|
||||
|
||||
|
||||
def getTicket(filter_type="", filter_value=""):
|
||||
connection = getMySqlConnection()
|
||||
cursor = connection.cursor()
|
||||
postgreSQL_select_Query = ""
|
||||
params = ()
|
||||
if filter_type == "":
|
||||
postgreSQL_select_Query = "select * from segnalazioni limit 2"
|
||||
elif filter_type == "C":
|
||||
postgreSQL_select_Query = "select s.TICKET,cl.INTESTATARIO,s.OGGETTO,g.GRAVITA,c.COMPETENZA,p.PRODOTTO,s.APERTURA from segnalazioni as s join prodotti as p on s.PRODOTTO=p.ID join competenze as c on s.COMPETENZA=c.ID join gravita as g on s.GRAVITA=g.ID join clienti as cl on cl.ID=s.CLIENTE where s.COMPETENZA=%s AND DATE(s.APERTURA)=CURDATE()"
|
||||
params = (filter_value,)
|
||||
elif filter_type == "P":
|
||||
postgreSQL_select_Query = "select s.TICKET,cl.INTESTATARIO,s.OGGETTO,g.GRAVITA,c.COMPETENZA,p.PRODOTTO,s.APERTURA from segnalazioni as s join prodotti as p on s.PRODOTTO=p.ID join gravita as g on s.GRAVITA=g.ID join competenze as c on s.COMPETENZA=c.ID join clienti as cl on cl.ID=s.CLIENTE where s.PRODOTTO=%s AND DATE(s.APERTURA)=CURDATE()"
|
||||
params = (filter_value,)
|
||||
elif filter_type == "A":
|
||||
postgreSQL_select_Query = "select s.TICKET,cl.INTESTATARIO,s.OGGETTO,g.GRAVITA,c.COMPETENZA,p.PRODOTTO,s.APERTURA from segnalazioni as s join prodotti as p on s.PRODOTTO=p.ID join gravita as g on s.GRAVITA=g.ID join competenze as c on s.COMPETENZA=c.ID join clienti as cl on cl.ID=s.CLIENTE where s.AREA=%s AND DATE(s.APERTURA)=CURDATE()"
|
||||
params = (filter_value,)
|
||||
elif filter_type == "S":
|
||||
postgreSQL_select_Query = "select s.TICKET,cl.INTESTATARIO,s.OGGETTO,g.GRAVITA,c.COMPETENZA,p.PRODOTTO,s.APERTURA from segnalazioni as s join prodotti as p on s.PRODOTTO=p.ID join gravita as g on s.GRAVITA=g.ID join competenze as c on s.COMPETENZA=c.ID join clienti as cl on cl.ID=s.CLIENTE where s.SOTTOAREA=%s AND DATE(s.APERTURA)=CURDATE()"
|
||||
params = (filter_value,)
|
||||
else:
|
||||
closeConnection(connection, cursor)
|
||||
return []
|
||||
|
||||
cursor.execute(postgreSQL_select_Query, params)
|
||||
publisher_records = cursor.fetchall()
|
||||
|
||||
closeConnection(connection,cursor)
|
||||
return publisher_records
|
||||
|
||||
|
||||
def getTicketsByFilterSet(filter_rows):
|
||||
filter_values = {
|
||||
"C": [],
|
||||
"P": [],
|
||||
"A": [],
|
||||
"S": [],
|
||||
}
|
||||
for row in filter_rows:
|
||||
filter_type = str(row[2])
|
||||
if filter_type not in filter_values:
|
||||
continue
|
||||
try:
|
||||
filter_value = int(row[3])
|
||||
except (TypeError, ValueError):
|
||||
continue
|
||||
if filter_value not in filter_values[filter_type]:
|
||||
filter_values[filter_type].append(filter_value)
|
||||
|
||||
if not any(filter_values.values()):
|
||||
return []
|
||||
|
||||
connection = getMySqlConnection()
|
||||
cursor = connection.cursor()
|
||||
select_query = """
|
||||
select
|
||||
s.TICKET,
|
||||
cl.INTESTATARIO,
|
||||
s.OGGETTO,
|
||||
g.GRAVITA,
|
||||
c.COMPETENZA,
|
||||
p.PRODOTTO,
|
||||
s.APERTURA
|
||||
from segnalazioni as s
|
||||
join prodotti as p on s.PRODOTTO=p.ID
|
||||
join gravita as g on s.GRAVITA=g.ID
|
||||
join competenze as c on s.COMPETENZA=c.ID
|
||||
join clienti as cl on cl.ID=s.CLIENTE
|
||||
"""
|
||||
column_map = {
|
||||
"C": "s.COMPETENZA",
|
||||
"P": "s.PRODOTTO",
|
||||
"A": "s.AREA",
|
||||
"S": "s.SOTTOAREA",
|
||||
}
|
||||
where_parts = ["DATE(s.APERTURA)=CURDATE()"]
|
||||
params = []
|
||||
for filter_type, values in filter_values.items():
|
||||
if not values:
|
||||
continue
|
||||
placeholders = ",".join(["%s"] * len(values))
|
||||
where_parts.append(f"{column_map[filter_type]} IN ({placeholders})")
|
||||
params.extend(values)
|
||||
|
||||
select_query += " where " + " AND ".join(where_parts)
|
||||
cursor.execute(select_query, tuple(params))
|
||||
publisher_records = cursor.fetchall()
|
||||
|
||||
closeConnection(connection,cursor)
|
||||
return publisher_records
|
||||
|
||||
|
||||
|
||||
def getProductOrCompetence(type_,value_):
|
||||
connection = getMySqlConnection()
|
||||
cursor = connection.cursor()
|
||||
|
||||
postgreSQL_select_product = "select prodotto from prodotti WHERE ID="+value_
|
||||
postgreSQL_select_competence = "select COMPETENZA from competenze WHERE ID="+value_
|
||||
postgreSQL_select_area = "select AREA from aree a where ID="+value_
|
||||
postgreSQL_select_sub_area = "select SOTTOAREA from sottoaree where ID="+value_
|
||||
|
||||
if type_ == "P":
|
||||
cursor.execute(postgreSQL_select_product)
|
||||
elif type_ == 'C':
|
||||
cursor.execute(postgreSQL_select_competence)
|
||||
elif type_ == 'A':
|
||||
cursor.execute(postgreSQL_select_area)
|
||||
elif type_ == 'S':
|
||||
cursor.execute(postgreSQL_select_sub_area)
|
||||
|
||||
publisher_records = cursor.fetchall()
|
||||
|
||||
closeConnection(connection,cursor)
|
||||
# print(publisher_records)
|
||||
return publisher_records
|
||||
|
||||
|
||||
def getCompetenceOrProdotto(ticket):
|
||||
connection = getMySqlConnection()
|
||||
cursor = connection.cursor()
|
||||
|
||||
select_problem = "SELECT COMPETENZA, PRODOTTO, PROBLEMA, AREA, SOTTOAREA FROM segnalazioni where TICKET = %s"
|
||||
cursor.execute(select_problem, (ticket,))
|
||||
|
||||
publisher_records = cursor.fetchall()
|
||||
|
||||
closeConnection(connection,cursor)
|
||||
|
||||
if not publisher_records:
|
||||
return "", "", "", "", ""
|
||||
|
||||
return str(publisher_records[0][0]) ,str(publisher_records[0][1]) ,str(publisher_records[0][2]) , str(publisher_records[0][3]) ,str(publisher_records[0][4])
|
||||
|
||||
# def getProblemaBYCompetenzaOrProgramma(competence, prodotto):
|
||||
# connection = getMySqlConnection()
|
||||
# cursor = connection.cursor()
|
||||
# # From DB the competence is not null
|
||||
# if prodotto != None and competence != None:
|
||||
# select_problem = "SELECT PROBLEMA FROM segnalazioni where COMPETENZA = " + str(competence) + " AND PRODOTTO = " + str(prodotto)+ ""
|
||||
# elif prodotto == None:
|
||||
# select_problem = "SELECT PROBLEMA FROM segnalazioni where COMPETENZA = " + str(competence) + ""
|
||||
|
||||
# cursor.execute(select_problem)
|
||||
|
||||
# publisher_records = cursor.fetchall()
|
||||
|
||||
# closeConnection(connection,cursor)
|
||||
# return publisher_records
|
||||
|
||||
def getProblemaBYCompetenzaOrProgramma_manul(competence, prodotto, area, sottoarea):
|
||||
connection = getMySqlConnection()
|
||||
cursor = connection.cursor()
|
||||
|
||||
|
||||
where_parts = []
|
||||
params = []
|
||||
|
||||
if prodotto is not None and prodotto.isdigit():
|
||||
print("Trovato prodotto: ", prodotto)
|
||||
where_parts.append("PRODOTTO = %s")
|
||||
params.append(int(prodotto))
|
||||
|
||||
if area is not None and area.isdigit():
|
||||
print("Trovato area: ", area)
|
||||
where_parts.append("AREA = %s")
|
||||
params.append(int(area))
|
||||
|
||||
|
||||
if sottoarea is not None and sottoarea.isdigit():
|
||||
print("Trovato sottoarea: ", sottoarea)
|
||||
where_parts.append("SOTTOAREA = %s")
|
||||
params.append(int(sottoarea))
|
||||
|
||||
# If none of the where condition is satisfied
|
||||
if not where_parts:
|
||||
if competence is not None and str(competence).isdigit():
|
||||
print("Trovato competence: ", competence)
|
||||
where_parts.append("COMPETENZA = %s")
|
||||
params.append(int(competence))
|
||||
else:
|
||||
print("Trovato : ", "Nulla")
|
||||
where_parts.append("FALSE")
|
||||
|
||||
|
||||
main_sql = "SELECT PROBLEMA FROM segnalazioni WHERE " + " AND ".join(where_parts)
|
||||
|
||||
print(main_sql)
|
||||
cursor.execute(main_sql, tuple(params))
|
||||
|
||||
publisher_records = cursor.fetchall()
|
||||
count = cursor.rowcount
|
||||
|
||||
closeConnection(connection,cursor)
|
||||
# if count <1:
|
||||
# print("FFFFFF")
|
||||
# return "Non ho trovato ticket con i filtri del ticket principale."
|
||||
return publisher_records
|
||||
|
||||
|
||||
def getTicketByProblema(problem):
|
||||
connection = getMySqlConnection()
|
||||
cursor = connection.cursor()
|
||||
|
||||
# Use placeholders for the query and pass the value as a parameter
|
||||
select_problem = "SELECT TICKET, SOLUZIONE, PROBLEMA FROM segnalazioni WHERE PROBLEMA = %s"
|
||||
cursor.execute(select_problem, (problem,))
|
||||
|
||||
publisher_records = cursor.fetchall()
|
||||
|
||||
closeConnection(connection,cursor)
|
||||
return publisher_records[0]
|
||||
|
||||
|
||||
def get_ticket_context(ticket):
|
||||
connection = getMySqlConnection()
|
||||
cursor = connection.cursor(dictionary=True)
|
||||
|
||||
query = """
|
||||
SELECT
|
||||
s.TICKET AS ticket_id,
|
||||
s.OGGETTO AS subject,
|
||||
s.PROBLEMA AS problem,
|
||||
s.SOLUZIONE AS solution,
|
||||
s.COMPETENZA AS competence_id,
|
||||
c.COMPETENZA AS competence,
|
||||
s.PRODOTTO AS product_id,
|
||||
p.prodotto AS product,
|
||||
s.AREA AS area_id,
|
||||
a.AREA AS area,
|
||||
s.SOTTOAREA AS subarea_id,
|
||||
sa.SOTTOAREA AS subarea,
|
||||
s.CLIENTE AS client_id,
|
||||
cl.INTESTATARIO AS client,
|
||||
s.GRAVITA AS gravity_id,
|
||||
g.GRAVITA AS gravity,
|
||||
s.STATO AS status_id,
|
||||
st.STATO AS status,
|
||||
s.APERTURA AS opened_at,
|
||||
s.CHIUSURA AS closed_at,
|
||||
s.PROGRAMMA AS program,
|
||||
s.TIPO_PROGRAMMA AS program_type,
|
||||
s.VERSIONE AS version_id,
|
||||
s.PATCH AS patch_id,
|
||||
s.CLASSIFICAZIONE AS classification_id,
|
||||
s.SISTEMA_OPERATIVO AS os_id
|
||||
FROM segnalazioni s
|
||||
LEFT JOIN competenze c ON c.ID = s.COMPETENZA
|
||||
LEFT JOIN prodotti p ON p.ID = s.PRODOTTO
|
||||
LEFT JOIN aree a ON a.ID = s.AREA
|
||||
LEFT JOIN sottoaree sa ON sa.ID = s.SOTTOAREA
|
||||
LEFT JOIN clienti cl ON cl.ID = s.CLIENTE
|
||||
LEFT JOIN gravita g ON g.ID = s.GRAVITA
|
||||
LEFT JOIN stati st ON st.ID = s.STATO
|
||||
WHERE s.TICKET = %s
|
||||
"""
|
||||
cursor.execute(query, (ticket,))
|
||||
records = cursor.fetchall()
|
||||
closeConnection(connection, cursor)
|
||||
return records[0] if records else None
|
||||
|
||||
|
||||
def fetch_solved_ticket_batch(last_ticket=0, limit=1000):
|
||||
connection = getMySqlConnection()
|
||||
cursor = connection.cursor(dictionary=True)
|
||||
|
||||
query = """
|
||||
SELECT
|
||||
s.TICKET AS ticket_id,
|
||||
s.OGGETTO AS subject,
|
||||
s.PROBLEMA AS problem,
|
||||
s.SOLUZIONE AS solution,
|
||||
s.COMPETENZA AS competence_id,
|
||||
c.COMPETENZA AS competence,
|
||||
s.PRODOTTO AS product_id,
|
||||
p.prodotto AS product,
|
||||
s.AREA AS area_id,
|
||||
a.AREA AS area,
|
||||
s.SOTTOAREA AS subarea_id,
|
||||
sa.SOTTOAREA AS subarea,
|
||||
s.CLIENTE AS client_id,
|
||||
cl.INTESTATARIO AS client,
|
||||
s.GRAVITA AS gravity_id,
|
||||
g.GRAVITA AS gravity,
|
||||
s.STATO AS status_id,
|
||||
st.STATO AS status,
|
||||
s.APERTURA AS opened_at,
|
||||
s.CHIUSURA AS closed_at,
|
||||
s.PROGRAMMA AS program,
|
||||
s.TIPO_PROGRAMMA AS program_type,
|
||||
s.VERSIONE AS version_id,
|
||||
s.PATCH AS patch_id,
|
||||
s.CLASSIFICAZIONE AS classification_id,
|
||||
s.SISTEMA_OPERATIVO AS os_id
|
||||
FROM segnalazioni s
|
||||
LEFT JOIN competenze c ON c.ID = s.COMPETENZA
|
||||
LEFT JOIN prodotti p ON p.ID = s.PRODOTTO
|
||||
LEFT JOIN aree a ON a.ID = s.AREA
|
||||
LEFT JOIN sottoaree sa ON sa.ID = s.SOTTOAREA
|
||||
LEFT JOIN clienti cl ON cl.ID = s.CLIENTE
|
||||
LEFT JOIN gravita g ON g.ID = s.GRAVITA
|
||||
LEFT JOIN stati st ON st.ID = s.STATO
|
||||
WHERE s.TICKET > %s
|
||||
AND s.SOLUZIONE IS NOT NULL
|
||||
AND TRIM(s.SOLUZIONE) <> ''
|
||||
ORDER BY s.TICKET
|
||||
LIMIT %s
|
||||
"""
|
||||
cursor.execute(query, (last_ticket, limit))
|
||||
records = cursor.fetchall()
|
||||
closeConnection(connection, cursor)
|
||||
return records
|
||||
|
||||
|
||||
|
||||
# print(getTicketByProblema("CERCA SABRINA"))
|
||||
# print(getTicketTest("P", "24"))
|
||||
Reference in New Issue
Block a user