Get osTicket number and verify with name in ticket

This commit is contained in:
2Shirt 2018-09-18 20:33:33 -06:00
parent 58dead2382
commit 5edde45f0e
Signed by: 2Shirt
GPG key ID: 152FAC923B0E132C

View file

@ -137,6 +137,22 @@ def get_graph_step(rate, scale=16):
break
return step
def get_osticket_number():
"""Get ticket number and confirm with name from osTicket DB."""
ticket_number = None
while ticket_number is None:
print_standard(' ')
_input = input('Enter ticket number: ')
if not re.match(r'^([0-9]+)$', _input):
continue
_name = osticket_get_ticket_name(_input)
if _name:
print_standard('You have selected ticket #{} ({})'.format(
_input, _name))
if ask('Is this correct?'):
ticket_number = _input
return ticket_number
def get_read_rate(s):
"""Get read rate in bytes/s from dd progress output."""
real_rate = None
@ -226,10 +242,11 @@ def menu_diags(*args):
if selection.isnumeric():
if diag_modes[int(selection)-1]['Name'] != 'Quick drive test':
# Save log for non-quick tests
ticket_number = get_ticket_number()
global_vars['LogDir'] = '{}/Logs/{}'.format(
ticket_number = get_osticket_number()
global_vars['LogDir'] = '{}/Logs/{}_{}'.format(
global_vars['Env']['HOME'],
ticket_number if ticket_number else global_vars['Date-Time'])
ticket_number,
global_vars['Date-Time'])
os.makedirs(global_vars['LogDir'], exist_ok=True)
global_vars['LogFile'] = '{}/Hardware Diagnostics.log'.format(
global_vars['LogDir'])
@ -255,6 +272,28 @@ def menu_diags(*args):
elif selection == 'Q':
break
def osticket_get_ticket_name(ticket_id):
"""Lookup ticket and return name as str."""
ticket_name = 'Unknown'
if not ticket_id:
raise GenericError
if not ost_db['Cursor']:
# Skip section
return
# Set command
sql_cmd = "SELECT name FROM `ost_ticket` WHERE `ticket_id` = {}".format(
ticket_id)
# Run command
try:
ost_db['Cursor'].execute(sql_cmd)
for name in ost_db['Cursor']:
ticket_name = name[0]
return ticket_name
except:
ost_db['Errors'] = True
def osticket_needs_attention(ticket_id):
"""Marks the ticket as "NEEDS ATTENTION" in osTicket."""
if not ticket_id:
@ -273,7 +312,7 @@ def osticket_needs_attention(ticket_id):
try:
ost_db['Cursor'].execute(sql_cmd)
except:
sql_errors = True
ost_db['Errors'] = True
def osticket_reply(ticket_id, response):
"""Post a reply to a ticket in osTicket."""
@ -296,7 +335,7 @@ def osticket_reply(ticket_id, response):
try:
ost_db['Cursor'].execute(sql_cmd)
except:
sql_errors = True
ost_db['Errors'] = True
def osticket_set_drive_result(ticket_id, passed):
"""Marks the pass/fail box for the drive(s) in osTicket."""
@ -317,7 +356,7 @@ def osticket_set_drive_result(ticket_id, passed):
try:
ost_db['Cursor'].execute(sql_cmd)
except:
sql_errors = True
ost_db['Errors'] = True
def run_badblocks():
"""Run a read-only test for all detected disks."""
@ -739,18 +778,16 @@ def run_tests(tests):
TESTS['NVMe/SMART']['Quick'] = 'Quick' in tests
# Initialize
if not TESTS['NVMe/SMART']['Quick']:
print_standard(' ')
try_and_print(
message='Connecting to osTicket database...',
function=connect_to_db,
width=40)
if TESTS['NVMe/SMART']['Enabled'] or TESTS['badblocks']['Enabled'] or TESTS['iobenchmark']['Enabled']:
if not TESTS['NVMe/SMART']['Quick']:
print_standard(' ')
try_and_print(
message='Connecting to osTicket database...',
function=connect_to_db,
width=40)
print_standard(' ')
scan_disks()
update_progress()
pause()
exit_script()
# Run
mprime_aborted = False