mirror of
https://github.com/eduardogsilva/routerfleet.git
synced 2025-06-21 01:25:41 +02:00
import tool visualizations
This commit is contained in:
parent
b2ef6138d9
commit
5732cd8a6c
7 changed files with 149 additions and 5 deletions
|
@ -1,12 +1,26 @@
|
|||
from django.shortcuts import render
|
||||
from django.shortcuts import render, redirect, get_object_or_404
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from .models import CsvData, ImportTask
|
||||
from .forms import CsvDataForm
|
||||
|
||||
from django.contrib import messages
|
||||
|
||||
@login_required()
|
||||
def view_import_tool_list(request):
|
||||
import_list = CsvData.objects.all().order_by('-created')
|
||||
import_list = []
|
||||
for csv_data in CsvData.objects.all().order_by('-created'):
|
||||
import_summary = {
|
||||
'csv_data': csv_data,
|
||||
'task_count': csv_data.importtask_set.filter(csv_data=csv_data).count(),
|
||||
'success_count': csv_data.importtask_set.filter(csv_data=csv_data, import_success=True).count(),
|
||||
'error_count': csv_data.importtask_set.filter(csv_data=csv_data, import_error=True).count(),
|
||||
}
|
||||
if import_summary['task_count'] != import_summary['success_count'] + import_summary['error_count']:
|
||||
import_summary['status'] = 'In Progress'
|
||||
elif import_summary['error_count'] > 0:
|
||||
import_summary['status'] = 'Completed with Errors'
|
||||
else:
|
||||
import_summary['status'] = 'Completed'
|
||||
import_list.append(import_summary)
|
||||
data = {
|
||||
'import_list': import_list,
|
||||
'page_title': 'CSV import List',
|
||||
|
@ -14,9 +28,34 @@ def view_import_tool_list(request):
|
|||
return render(request, 'import_tool/import_tool_list.html', context=data)
|
||||
|
||||
|
||||
@login_required()
|
||||
def view_import_details(request):
|
||||
csv_data = get_object_or_404(CsvData, uuid=request.GET.get('uuid'))
|
||||
import_task_list = ImportTask.objects.filter(csv_data=csv_data).order_by('-created')
|
||||
if request.GET.get('view') == 'raw':
|
||||
import_view = 'raw'
|
||||
elif request.GET.get('view') == 'processed':
|
||||
import_view = 'processed'
|
||||
else:
|
||||
import_view = 'tasks'
|
||||
data = {
|
||||
'csv_data': csv_data,
|
||||
'import_task_list': import_task_list,
|
||||
'import_view': import_view,
|
||||
}
|
||||
return render(request, 'import_tool/import_details.html', context=data)
|
||||
|
||||
|
||||
@login_required()
|
||||
def view_import_csv_file(request):
|
||||
form = CsvDataForm(request.POST or None)
|
||||
data = {'form': form, 'page_title': 'Import CSV File'}
|
||||
if form.is_valid():
|
||||
csv_data_instance = form.save(commit=False)
|
||||
csv_data_instance.import_data = form.cleaned_data['import_data']
|
||||
csv_data_instance.save()
|
||||
|
||||
messages.success(request, 'CSV data successfully processed and saved.')
|
||||
return redirect('success_url')
|
||||
|
||||
return render(request, 'generic_form.html', context=data)
|
||||
|
|
|
@ -10,7 +10,7 @@ from monitoring.views import view_export_router_list, view_update_router_status,
|
|||
from backup_data.views import view_generate_backup_schedule, view_create_backup_tasks, view_perform_backup_tasks, view_housekeeping
|
||||
from routerfleet_tools.views import cron_check_updates
|
||||
from message_center.views import view_message_channel_list, view_manage_message_settings, view_manage_message_channel, view_debug_test_messages, view_cron_concatenate_notifications, view_cron_send_messages, view_cron_daily_reports, view_message_history
|
||||
from import_tool.views import view_import_tool_list, view_import_csv_file
|
||||
from import_tool.views import view_import_tool_list, view_import_csv_file, view_import_details
|
||||
|
||||
|
||||
urlpatterns = [
|
||||
|
@ -35,6 +35,7 @@ urlpatterns = [
|
|||
path('router/create_instant_backup/', view_create_instant_backup_task, name='create_instant_backup_task'),
|
||||
path('router/import_tool/', view_import_tool_list, name='import_tool_list'),
|
||||
path('router/import_tool/csv/', view_import_csv_file, name='import_csv_file'),
|
||||
path('router/import_tool/details/', view_import_details, name='import_details'),
|
||||
path('backup/profile_list/', view_backup_profile_list, name='backup_profile_list'),
|
||||
path('backup/manage_profile/', view_manage_backup_profile, name='manage_backup_profile'),
|
||||
path('backup/backup_list/', view_backup_list, name='backup_list'),
|
||||
|
|
48
templates/import_tool/import_details.html
Normal file
48
templates/import_tool/import_details.html
Normal file
|
@ -0,0 +1,48 @@
|
|||
{% extends 'base.html' %}
|
||||
|
||||
|
||||
{% block content %}
|
||||
<div class='row'>
|
||||
<div class='col-lg-12'>
|
||||
<div class="card card-primary card-outline">
|
||||
{% if page_title %}
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">{{ page_title }}</h3>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="card-body">
|
||||
<ul class="nav nav-tabs" role="tablist">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link {% if import_view == 'tasks' %}active{% endif %}" href="?uuid={{ csv_data.uuid }}&view=taks" role="tab">
|
||||
Tasks
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link {% if import_view == 'processed' %}active{% endif %}" href="?uuid={{ csv_data.uuid }}&view=processed" role="tab">
|
||||
Processed data
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link {% if import_view == 'raw' %}active{% endif %}" href="?uuid={{ csv_data.uuid }}&view=raw" role="tab">
|
||||
Raw data
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
{% if import_view == 'tasks' %}
|
||||
{% include 'import_tool/import_details_tasks.html' %}
|
||||
{% elif import_view == 'processed' %}
|
||||
{% include 'import_tool/import_details_processed.html' %}
|
||||
{% elif import_view == 'raw' %}
|
||||
{% include 'import_tool/import_details_raw.html' %}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
34
templates/import_tool/import_details_processed.html
Normal file
34
templates/import_tool/import_details_processed.html
Normal file
|
@ -0,0 +1,34 @@
|
|||
<table class="table table-hover datatables-no-export">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="min-width">Import ID</th>
|
||||
<th>Name</th>
|
||||
<th>Address</th>
|
||||
<th>Port</th>
|
||||
<th>Username</th>
|
||||
<th>Password</th>
|
||||
<th>SSH Key</th>
|
||||
<th>Router Type</th>
|
||||
<th>Backup Profile</th>
|
||||
<th>Router Group</th>
|
||||
<th>Monitoring</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for import_task in csv_data.import_data %}
|
||||
<tr>
|
||||
<td>{{ import_task.import_id }}</td>
|
||||
<td>{{ import_task.name }}</td>
|
||||
<td>{{ import_task.address }}</td>
|
||||
<td>{{ import_task.port }}</td>
|
||||
<td>{{ import_task.username }}</td>
|
||||
<td>{{ import_task.password }}</td>
|
||||
<td>{{ import_task.ssh_key }}</td>
|
||||
<td>{{ import_task.router_type }}</td>
|
||||
<td>{{ import_task.backup_profile }}</td>
|
||||
<td>{{ import_task.router_group }}</td>
|
||||
<td>{{ import_task.monitoring }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
1
templates/import_tool/import_details_raw.html
Normal file
1
templates/import_tool/import_details_raw.html
Normal file
|
@ -0,0 +1 @@
|
|||
<pre>{{ csv_data.raw_csv_data }}</pre>
|
0
templates/import_tool/import_details_tasks.html
Normal file
0
templates/import_tool/import_details_tasks.html
Normal file
|
@ -16,11 +16,32 @@
|
|||
<table class="table table-hover datatables-no-export">
|
||||
<thead>
|
||||
<tr>
|
||||
|
||||
<th>ID</th>
|
||||
<th>Created</th>
|
||||
<th>Total Tasks</th>
|
||||
<th>Success</th>
|
||||
<th>Error</th>
|
||||
<th>Status</th>
|
||||
</tr>
|
||||
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for import in import_list %}
|
||||
<tr>
|
||||
<td>
|
||||
<a href="/router/import_tool/details/?uuid={{ import.csv_data.uuid }}">
|
||||
{{ import.csv_data.id }}
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
{{ import.csv_data.created }}
|
||||
</td>
|
||||
<td>{{ import.task_count }}</td>
|
||||
<td>{{ import.success_count }}</td>
|
||||
<td>{{ import.error_count }}</td>
|
||||
<td>{{ import.status }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue