|
|
@@ -359,13 +359,21 @@ def gen_report_notebook():
|
|
359
|
359
|
|
|
360
|
360
|
df0 = pd.DataFrame(data)
|
|
361
|
361
|
df0 = df0.explode(["header", "results"])
|
|
362
|
|
- df1 = df0[["header", "results", "dt", "sla_name", "test_display_name", "verifier_name", "network", "address", "interface"]]
|
|
|
362
|
+ try:
|
|
|
363
|
+ df1 = df0[["header", "results", "dt", "sla_name", "test_display_name", "verifier_name", "network", "address", "interface"]]
|
|
|
364
|
+ except:
|
|
|
365
|
+ df1 = df0[["header", "results", "dt", "sla_name", "test_display_name", "verifier_name",]]
|
|
|
366
|
+
|
|
363
|
367
|
df1 = df1.query('sla_name == sla_name')
|
|
364
|
368
|
#pprint(df1['sla_name'].unique())
|
|
365
|
369
|
|
|
366
|
370
|
#df1['results_text'] = df1['results'].apply(con_human)
|
|
367
|
371
|
df1['results_text'] = df1.apply(con_human, axis=1)
|
|
368
|
|
- df1['network_str'] = df1['network'] + " / " + df1['interface']
|
|
|
372
|
+ try:
|
|
|
373
|
+ df1['network_str'] = df1['network'] + " / " + df1['interface']
|
|
|
374
|
+ except:
|
|
|
375
|
+ df1['network_str'] = "N/A"
|
|
|
376
|
+
|
|
369
|
377
|
table = df1.pivot(index=['sla_name', 'dt', 'verifier_name', 'network_str'],columns=['test_display_name','header'], values='results_text').sort_values(by=['sla_name', 'dt'], ascending=[True, False])
|
|
370
|
378
|
table = table.dropna(how='all', axis=0)
|
|
371
|
379
|
return (table,df1)
|
|
|
@@ -404,7 +412,10 @@ def gen_report(request):
|
|
404
|
412
|
report_link = None
|
|
405
|
413
|
if gen_report:
|
|
406
|
414
|
import time
|
|
407
|
|
- ts = int(time.time())
|
|
|
415
|
+ # ts = int(time.time())
|
|
|
416
|
+ import pytz
|
|
|
417
|
+ tz = pytz.timezone('Asia/Bangkok')
|
|
|
418
|
+ ts = datetime.now(tz).strftime("%Y%m%d_%H%M%S")
|
|
408
|
419
|
fn = f"report_{ts}.xlsx"
|
|
409
|
420
|
|
|
410
|
421
|
table.to_excel(f'/code/media/{fn}')
|
|
|
@@ -432,3 +443,33 @@ def mikro_dump_task():
|
|
432
|
443
|
col.insert_one(temp)
|
|
433
|
444
|
pprint("dump ip complete")
|
|
434
|
445
|
|
|
|
446
|
+@shared_task
|
|
|
447
|
+def gen_report_task():
|
|
|
448
|
+ import requests
|
|
|
449
|
+ import socket
|
|
|
450
|
+ ip = socket.gethostbyname(socket.gethostname())
|
|
|
451
|
+
|
|
|
452
|
+ r = requests.get(f'http://web:8000/backend/dump_fixed_results/', timeout=None)
|
|
|
453
|
+ if r.status_code == 200:
|
|
|
454
|
+ pprint("dump OK")
|
|
|
455
|
+ else:
|
|
|
456
|
+ pprint(f"dump = {r.status_code}")
|
|
|
457
|
+
|
|
|
458
|
+ r = requests.get(f'http://web:8000/backend/gen_report/?sla_name=BNG-144-VLAN20-Public&sla_name=BNG-144-VLAN10-Private&sla_name=BRAS-88-VLAN20-Public&sla_name=BRAS-88-VLAN10-Private&genReport=Gen+Report', timeout=None)
|
|
|
459
|
+ if r.status_code == 200:
|
|
|
460
|
+ pprint("genreport OK")
|
|
|
461
|
+ else:
|
|
|
462
|
+ pprint(f"genreport = {r.status_code}")
|
|
|
463
|
+
|
|
|
464
|
+def list_reports(request):
|
|
|
465
|
+ import os
|
|
|
466
|
+ from django.conf import settings
|
|
|
467
|
+
|
|
|
468
|
+ mr = settings.MEDIA_ROOT
|
|
|
469
|
+ file_list =os.listdir(mr)
|
|
|
470
|
+
|
|
|
471
|
+ def get_creation_time(item):
|
|
|
472
|
+ item_path = os.path.join(mr, item)
|
|
|
473
|
+ return os.path.getctime(item_path)
|
|
|
474
|
+ file_list = sorted(file_list, key=get_creation_time, reverse=True)
|
|
|
475
|
+ return render(request, 'backend/list_reports.html', {'file_list': file_list})
|