tum před 1 rokem
rodič
revize
c1df101f86

binární
app/Output/excel_out_test_excel_formatter_update.xlsx


+ 15 - 0
app/backend/templates/backend/list_reports.html

1
+{% extends "base_raw.html" %}
2
+{% load backend_tags %}
3
+{% block content %}
4
+<h2>List Reports</h2>
5
+<ul>
6
+  {% for f in file_list %}
7
+  <li><a href="/media/{{ f }}">{{ f }}</a></li>
8
+  {% endfor %}
9
+</ul>
10
+<style>
11
+th {
12
+  text-align:center;
13
+}
14
+</style>
15
+{% endblock %}

+ 1 - 0
app/backend/urls.py

13
     path('dump_fixed_results/', views.dump_fixed_results, name='dump_fixed_results'),
13
     path('dump_fixed_results/', views.dump_fixed_results, name='dump_fixed_results'),
14
     path('print_table/', views.print_table, name='print_table'),
14
     path('print_table/', views.print_table, name='print_table'),
15
     path('gen_report/', views.gen_report, name='gen_report'), 
15
     path('gen_report/', views.gen_report, name='gen_report'), 
16
+    path('list_reports/', views.list_reports, name='list_reports'), 
16
 ]
17
 ]

+ 44 - 3
app/backend/views.py

359
 
359
 
360
     df0 = pd.DataFrame(data)
360
     df0 = pd.DataFrame(data)
361
     df0 = df0.explode(["header", "results"])
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
     df1 = df1.query('sla_name == sla_name')
367
     df1 = df1.query('sla_name == sla_name')
364
     #pprint(df1['sla_name'].unique())
368
     #pprint(df1['sla_name'].unique())
365
     
369
     
366
     #df1['results_text'] = df1['results'].apply(con_human)
370
     #df1['results_text'] = df1['results'].apply(con_human)
367
     df1['results_text'] = df1.apply(con_human, axis=1)
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
     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])
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
     table = table.dropna(how='all', axis=0)
378
     table = table.dropna(how='all', axis=0)
371
     return (table,df1)
379
     return (table,df1)
404
     report_link = None
412
     report_link = None
405
     if gen_report:
413
     if gen_report:
406
         import time
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
         fn = f"report_{ts}.xlsx"
419
         fn = f"report_{ts}.xlsx"
409
 
420
 
410
         table.to_excel(f'/code/media/{fn}')
421
         table.to_excel(f'/code/media/{fn}')
432
         col.insert_one(temp)
443
         col.insert_one(temp)
433
     pprint("dump ip complete")
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})

+ 4 - 0
app/network_report/settings.py

206
         "task": "backend.views.mikro_dump_task",
206
         "task": "backend.views.mikro_dump_task",
207
         "schedule": crontab(minute="*/3"),
207
         "schedule": crontab(minute="*/3"),
208
     },
208
     },
209
+    "gen_report": {
210
+        "task": "backend.views.gen_report_task",
211
+        "schedule": crontab(minute="*/10"),
212
+    },
209
 }
213
 }