瀏覽代碼

list report

tum 1 年之前
父節點
當前提交
c1df101f86

二進制
app/Output/excel_out_test_excel_formatter_update.xlsx


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

@@ -0,0 +1,15 @@
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,4 +13,5 @@ urlpatterns = [
13 13
     path('dump_fixed_results/', views.dump_fixed_results, name='dump_fixed_results'),
14 14
     path('print_table/', views.print_table, name='print_table'),
15 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,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})

+ 4 - 0
app/network_report/settings.py

@@ -206,4 +206,8 @@ CELERY_BEAT_SCHEDULE = {
206 206
         "task": "backend.views.mikro_dump_task",
207 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
 }