ipfabric_netbox 4.3.1b2__py3-none-any.whl → 4.3.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of ipfabric_netbox might be problematic. Click here for more details.

Files changed (31) hide show
  1. ipfabric_netbox/__init__.py +1 -1
  2. ipfabric_netbox/choices.py +20 -20
  3. ipfabric_netbox/forms.py +17 -15
  4. ipfabric_netbox/models.py +19 -19
  5. ipfabric_netbox/navigation.py +10 -9
  6. ipfabric_netbox/tables.py +12 -10
  7. ipfabric_netbox/templates/ipfabric_netbox/inc/clone_form.html +7 -4
  8. ipfabric_netbox/templates/ipfabric_netbox/inc/diff.html +10 -8
  9. ipfabric_netbox/templates/ipfabric_netbox/inc/json.html +4 -2
  10. ipfabric_netbox/templates/ipfabric_netbox/inc/logs_pending.html +4 -3
  11. ipfabric_netbox/templates/ipfabric_netbox/inc/merge_form.html +7 -5
  12. ipfabric_netbox/templates/ipfabric_netbox/inc/site_topology_button.html +8 -6
  13. ipfabric_netbox/templates/ipfabric_netbox/inc/site_topology_modal.html +8 -4
  14. ipfabric_netbox/templates/ipfabric_netbox/inc/transform_map_field_map.html +2 -1
  15. ipfabric_netbox/templates/ipfabric_netbox/inc/transform_map_relationship_map.html +2 -1
  16. ipfabric_netbox/templates/ipfabric_netbox/ipfabric_table.html +4 -4
  17. ipfabric_netbox/templates/ipfabric_netbox/ipfabricingestion.html +12 -11
  18. ipfabric_netbox/templates/ipfabric_netbox/ipfabricsnapshot.html +15 -14
  19. ipfabric_netbox/templates/ipfabric_netbox/ipfabricsource.html +13 -12
  20. ipfabric_netbox/templates/ipfabric_netbox/ipfabricsync.html +16 -15
  21. ipfabric_netbox/templates/ipfabric_netbox/ipfabrictransformmap.html +7 -6
  22. ipfabric_netbox/templates/ipfabric_netbox/ipfabrictransformmap_list.html +2 -1
  23. ipfabric_netbox/templates/ipfabric_netbox/ipfabrictransformmap_restore.html +1 -1
  24. ipfabric_netbox/templates/ipfabric_netbox/ipfabrictransformmapgroup.html +4 -3
  25. ipfabric_netbox/templates/ipfabric_netbox/partials/ingestion_progress.html +5 -4
  26. ipfabric_netbox/templates/ipfabric_netbox/partials/ingestion_statistics.html +5 -4
  27. ipfabric_netbox/templates/ipfabric_netbox/partials/job_logs.html +10 -9
  28. ipfabric_netbox/views.py +8 -7
  29. {ipfabric_netbox-4.3.1b2.dist-info → ipfabric_netbox-4.3.2.dist-info}/METADATA +1 -1
  30. {ipfabric_netbox-4.3.1b2.dist-info → ipfabric_netbox-4.3.2.dist-info}/RECORD +31 -31
  31. {ipfabric_netbox-4.3.1b2.dist-info → ipfabric_netbox-4.3.2.dist-info}/WHEEL +0 -0
@@ -1,7 +1,7 @@
1
1
  {% load helpers %}
2
-
2
+ {% load i18n %}
3
3
  <div class="modal-body">
4
- <div class="d-flex flex-row m-2"">
4
+ <div class="d-flex flex-row m-2">
5
5
  {% if svg %}
6
6
  <div class=" d-flex flex-row flex-grow-1 align-items-center">
7
7
  {{svg|safe}}
@@ -9,10 +9,12 @@
9
9
  <div>
10
10
  <div class="position-absolute top-0 end-0 m-2 border rounded p-2">
11
11
  <ul class="list-unstyled">
12
+ {% blocktrans %}
12
13
  <li><span>Fetched: {{ time|isodatetime }}</span></li>
13
14
  <li>Snapshot Name: {{ snapshot.name }}</li>
14
15
  <li>Snapshot ID: {{ snapshot.snapshot_id }}</li>
15
16
  <li>Snapshot Date: {{ snapshot.end|isodatetime }}</li>
17
+ {% endblocktrans %}
16
18
  </ul>
17
19
  </div>
18
20
  </div>
@@ -24,10 +26,12 @@
24
26
  <div>
25
27
  <div class="border rounded p-2">
26
28
  <ul class="list-unstyled">
29
+ {% blocktrans %}
27
30
  <li><span>Fetched: {{ time|isodatetime }}</span></li>
28
31
  <li>Snapshot Name: {{ snapshot.name }}</li>
29
32
  <li>Snapshot ID: {{ snapshot.snapshot_id }}</li>
30
33
  <li>Snapshot Date: {{ snapshot.end|isodatetime }}</li>
34
+ {% endblocktrans %}
31
35
  </ul>
32
36
  </div>
33
37
  </div>
@@ -40,8 +44,8 @@
40
44
  <a href="#" hx-get="{% url 'plugins:ipfabric_netbox:ipfabricsource_topology' pk=source.pk site=site.pk %}?snapshot={{ snapshot.snapshot_id }}"
41
45
  hx-target="#topology-modal-content" class="btn btn-success" hx-indicator=".my-indicator"><span
42
46
  class="spinner-border spinner-border-sm loader my-indicator" role="status" aria-hidden="true"></span>
43
- Refresh</a>
44
- <a href="{{ link }}" class="btn btn-primary" target="_blank">Open in IP Fabric</a>
47
+ {% trans "Refresh" %}</a>
48
+ <a href="{{ link }}" class="btn btn-primary" target="_blank">{% trans "Open in IP Fabric" %}</a>
45
49
  </div>
46
50
  {% endif %}
47
51
 
@@ -1,10 +1,11 @@
1
1
  {% extends 'generic/object_children.html' %}
2
+ {% load i18n %}
2
3
 
3
4
  {% block extra_controls %}
4
5
  {% if perms.ipfabric_netbox.add_ipfabrictransformfield %}
5
6
  <a href="{% url 'plugins:ipfabric_netbox:ipfabrictransformfield_add' %}?transform_map={{ object.pk }}&return_url={% url 'plugins:ipfabric_netbox:ipfabrictransformmap_fields' pk=object.pk %}"
6
7
  class="btn btn-primary">
7
- <i class="mdi mdi-plus-thick" aria-hidden="true"></i> Field Map
8
+ <i class="mdi mdi-plus-thick" aria-hidden="true"></i>&nbsp;{% trans "Field Map" %}
8
9
  </a>
9
10
  {% endif %}
10
11
  {{ block.super }}
@@ -1,10 +1,11 @@
1
1
  {% extends 'generic/object_children.html' %}
2
+ {% load i18n %}
2
3
 
3
4
  {% block extra_controls %}
4
5
  {% if perms.ipfabric_netbox.add_ipfabricrelationshipfield %}
5
6
  <a href="{% url 'plugins:ipfabric_netbox:ipfabricrelationshipfield_add' %}?transform_map={{ object.pk }}&return_url={% url 'plugins:ipfabric_netbox:ipfabrictransformmap_relationships' pk=object.pk %}"
6
7
  class="btn btn-primary">
7
- <i class="mdi mdi-plus-thick" aria-hidden="true"></i> Relationship Map
8
+ <i class="mdi mdi-plus-thick" aria-hidden="true"></i>&nbsp;{% trans "Relationship Map" %}
8
9
  </a>
9
10
  {% endif %}
10
11
  {{ block.super }}
@@ -11,7 +11,7 @@
11
11
  <div class="row px-3">
12
12
  <div class="card">
13
13
  <div class="card-body">
14
- Device does not have a serial number configured. The serial number is used to match devices between NetBox and IP Fabric.
14
+ {% trans "Device does not have a serial number configured. The serial number is used to match devices between NetBox and IP Fabric." %}
15
15
  </div>
16
16
  </div>
17
17
  </div>
@@ -19,7 +19,7 @@
19
19
  <div class="row px-3">
20
20
  <div class="card">
21
21
  <div class="card-body">
22
- Device has a remote IP Fabric Source configured and cannot directly query IP Fabric.
22
+ {% trans "Device has a remote IP Fabric Source configured and cannot directly query IP Fabric." %}
23
23
  </div>
24
24
  </div>
25
25
  {% else %}
@@ -29,7 +29,7 @@
29
29
  {% render_form form %}
30
30
  <div class="text-end">
31
31
  <button type="submit" class="btn btn-primary">
32
- <span class="mdi mdi-magnify" aria-hidden="true"></span> Fetch
32
+ <span class="mdi mdi-magnify" aria-hidden="true"></span>&nbsp{% trans "Fetch" %}
33
33
  </button>
34
34
  </div>
35
35
  </form>
@@ -47,7 +47,7 @@
47
47
  <div class="row px-3">
48
48
  <div class="card">
49
49
  <div class="card-body">
50
- Could not find an IP Fabric Source that could have synced this Device. The source is used to match devices between NetBox and IP Fabric instance.
50
+ {% trans "Could not find an IP Fabric Source that could have synced this Device. The source is used to match devices between NetBox and IP Fabric instance." %}
51
51
  </div>
52
52
  </div>
53
53
  </div>
@@ -5,6 +5,7 @@
5
5
  {% load perms %}
6
6
  {% load plugins %}
7
7
  {% load tabs %}
8
+ {% load i18n %}
8
9
 
9
10
  {% block title %}{{ object }}{% endblock %}
10
11
 
@@ -23,12 +24,12 @@
23
24
  data-bs-toggle="modal"
24
25
  data-bs-target="#htmx-modal" disabled
25
26
  >
26
- <span class="mdi mdi-sync" aria-hidden="true"></span>&nbsp;Merge
27
+ <span class="mdi mdi-sync" aria-hidden="true"></span>&nbsp;{% trans "Merge" %}
27
28
  </a>
28
29
  {% else %}
29
30
  <span class="inline-block" tabindex="0" data-bs-toggle="tooltip" data-bs-delay="100" data-bs-placement="bottom">
30
31
  <button class="btn btn-success" disabled>
31
- <i class="mdi mdi-sync" aria-hidden="true"></i> Merge
32
+ <i class="mdi mdi-sync" aria-hidden="true"></i>&nbsp;{% trans "Merge" %}
32
33
  </button>
33
34
  </span>
34
35
  {% endif %}
@@ -46,43 +47,43 @@
46
47
  <div class="row mb-3">
47
48
  <div class="col col-md-6">
48
49
  <div class="card">
49
- <h5 class="card-header">Ingestion Information</h5>
50
+ <h5 class="card-header">{% trans "Ingestion Information" %}</h5>
50
51
  <div class="card-body">
51
52
  <table class="table table-hover attr-table">
52
53
  <tr>
53
- <th scope="row">Name</th>
54
+ <th scope="row">{% trans "Name" %}</th>
54
55
  <td>{{ object.name }}</td>
55
56
  </tr>
56
57
  <tr>
57
- <th scope="row">Description</th>
58
+ <th scope="row">{% trans "Description" %}</th>
58
59
  <td>{{ object.description|placeholder }}</td>
59
60
  </tr>
60
61
  <tr>
61
- <th scope="row">Sync Object</th>
62
+ <th scope="row">{% trans "Sync Object" %}</th>
62
63
  <td><a href="{% url 'plugins:ipfabric_netbox:ipfabricsync' pk=object.sync.pk %}">{{ object.sync.name}}</a>
63
64
  </td>
64
65
  </tr>
65
66
  <tr>
66
- <th scope="row">Branch Object</th>
67
+ <th scope="row">{% trans "Branch Object" %}</th>
67
68
  <td>{% if object.branch %}<a href="{% url 'plugins:netbox_branching:branch' pk=object.branch.pk %}">{{ object.branch.name}}</a>{% else %}{{ ""|placeholder }}{% endif %}
68
69
  </td>
69
70
  </tr>
70
71
  <tr>
71
- <th scope="row">Job Object</th>
72
+ <th scope="row">{% trans "Job Object" %}</th>
72
73
  <td>{% if object.job %}<a href="{% url 'core:job' pk=object.job.pk %}">{{ object.job }}</a>{% else %}{{ ""|placeholder }}{% endif %}</td>
73
74
  </tr>
74
75
  <tr>
75
- <th scope="row">Ingestion Status</th>
76
+ <th scope="row">{% trans "Ingestion Status" %}</th>
76
77
  <td><div id="ingestion_status" hx-swap-oob="true">{% include 'ipfabric_netbox/partials/ingestion_status.html' with object=object %}</div></td>
77
78
  <!-- <td >{% badge object.sync.get_status_display bg_color=object.sync.get_status_color %}</td> -->
78
79
  </tr>
79
80
  <tr>
80
- <th scope="row">Snapshot</th>
81
+ <th scope="row">{% trans "Snapshot" %}</th>
81
82
  <td><a
82
83
  href="{% url 'plugins:ipfabric_netbox:ipfabricsnapshot' pk=object.sync.snapshot_data.pk %}">{{object.sync.snapshot_data.name }}</a></td>
83
84
  </tr>
84
85
  <tr>
85
- <th scope="row">Source</th>
86
+ <th scope="row">{% trans "Source" %}</th>
86
87
  <td><a
87
88
  href="{% url 'plugins:ipfabric_netbox:ipfabricsource' pk=object.sync.snapshot_data.source.pk %}">{{object.sync.snapshot_data.source.name }}</a></td>
88
89
  </tr>
@@ -2,6 +2,7 @@
2
2
  {% load buttons %}
3
3
  {% load helpers %}
4
4
  {% load perms %}
5
+ {% load i18n %}
5
6
 
6
7
  {% block controls %}
7
8
  <div class="controls">
@@ -17,25 +18,25 @@
17
18
  <div class="row mb-3">
18
19
  <div class="col col-md-6">
19
20
  <div class="card">
20
- <h5 class="card-header">Snapshot Information</h5>
21
+ <h5 class="card-header">{% trans "Snapshot Information</h5>
21
22
  <div class="card-body">
22
23
  <table class="table table-hover attr-table">
23
24
  <tr>
24
- <th scope="row">Name</th>
25
+ <th scope="row">{% trans "Name" %}</th>
25
26
  <td>{{ object.name|placeholder }}</td>
26
27
  </tr>
27
28
  <tr>
28
- <th scope="row">Snapshot ID</th>
29
+ <th scope="row">{% trans "Snapshot ID" %}</th>
29
30
  <td>{{ object.snapshot_id|placeholder }}</td>
30
31
  </tr>
31
32
  <tr>
32
- <th scope="row">Source</th>
33
+ <th scope="row">{% trans "Source" %}</th>
33
34
  <td>
34
35
  <a href="{% url 'plugins:ipfabric_netbox:ipfabricsource' pk=object.source.pk %}">{{ object.source }}</a>
35
36
  </td>
36
37
  </tr>
37
38
  <tr>
38
- <th scope="row">Last Updated</th>
39
+ <th scope="row">{% trans "Last Updated" %}</th>
39
40
  <td>{{ object.last_updated|placeholder }}</td>
40
41
  </tr>
41
42
  </table>
@@ -44,23 +45,23 @@
44
45
  </div>
45
46
  <div class="col col-md-6">
46
47
  <div class="card">
47
- <h5 class="card-header">Statistics</h5>
48
+ <h5 class="card-header">{% trans "Statistics" %}</h5>
48
49
  <div class="card-body">
49
50
  <table class="table table-hover attr-table">
50
51
  <tr>
51
- <th scope="row">Version</th>
52
+ <th scope="row">{% trans "Version" %}</th>
52
53
  <td>{{ object.data.version|placeholder }}</td>
53
54
  </tr>
54
55
  <tr>
55
- <th scope="row">Status</th>
56
+ <th scope="row">{% trans "Status" %}</th>
56
57
  <td>{% badge object.get_status_display bg_color=object.get_status_color %}</td>
57
58
  </tr>
58
59
  <tr>
59
- <th scope="row">Site Count</th>
60
+ <th scope="row">{% trans "Site Count" %}</th>
60
61
  <td>{{ object.data.sites|length|placeholder }}</td>
61
62
  </tr>
62
63
  <tr>
63
- <th scope="row">Sites</th>
64
+ <th scope="row">{% trans "Sites" %}</th>
64
65
  <td>
65
66
  {% if object.data.sites %}
66
67
  {% for site in object.data.sites %}
@@ -74,15 +75,15 @@
74
75
  </td>
75
76
  </tr>
76
77
  <tr>
77
- <th scope="row">Device Count</th>
78
+ <th scope="row">{% trans "Device Count" %}</th>
78
79
  <td>{{ object.data.total_dev_count|placeholder }}</td>
79
80
  </tr>
80
81
  <tr>
81
- <th scope="row">Interface Count</th>
82
+ <th scope="row">{% trans "Interface Count" %}</th>
82
83
  <td>{{ object.data.interface_count|placeholder }}</td>
83
84
  </tr>
84
85
  <tr>
85
- <th scope="row">Note</th>
86
+ <th scope="row">{% trans "Note" %}</th>
86
87
  <td>
87
88
  <pre>{{ object.data.note|placeholder }}</pre>
88
89
  </td>
@@ -95,7 +96,7 @@
95
96
  <div class="row">
96
97
  <div class="col col-12">
97
98
  <div class="card">
98
- <h5 class="card-header">Data</h5>
99
+ <h5 class="card-header">{% trans "Data" %}</h5>
99
100
  <div class="card-body">
100
101
  <pre class="block">{{ object.data | json }}</pre>
101
102
  </div>
@@ -4,6 +4,7 @@
4
4
  {% load plugins %}
5
5
  {% load render_table from django_tables2 %}
6
6
  {% load perms %}
7
+ {% load i18n %}
7
8
 
8
9
  {% block extra_controls %}
9
10
  {% if perms.ipfabric_netbox.sync_source %}
@@ -11,13 +12,13 @@
11
12
  <form action="{% url 'plugins:ipfabric_netbox:ipfabricsource_sync' pk=object.pk %}" method="post">
12
13
  {% csrf_token %}
13
14
  <button type="submit" class="btn btn-primary">
14
- <i class="mdi mdi-sync" aria-hidden="true"></i> Sync
15
+ <i class="mdi mdi-sync" aria-hidden="true"></i>&nbsp;{% trans "Sync" %}
15
16
  </button>
16
17
  </form>
17
18
  {% else %}
18
19
  <span class="inline-block" tabindex="0" data-bs-toggle="tooltip" data-bs-delay="100" data-bs-placement="bottom">
19
20
  <button class="btn btn-primary" disabled>
20
- <i class="mdi mdi-sync" aria-hidden="true"></i> Sync
21
+ <i class="mdi mdi-sync" aria-hidden="true"></i>&nbsp;{% trans "Sync" %}
21
22
  </button>
22
23
  </span>
23
24
  {% endif %}
@@ -28,31 +29,31 @@
28
29
  <div class="row mb-3">
29
30
  <div class="col col-md-6">
30
31
  <div class="card">
31
- <h5 class="card-header">Data Source</h5>
32
+ <h5 class="card-header">{% trans "Data Source" %}</h5>
32
33
  <div class="card-body">
33
34
  <table class="table table-hover attr-table">
34
35
  <tr>
35
- <th scope="row">Name</th>
36
+ <th scope="row">{% trans "Name" %}</th>
36
37
  <td>{{ object.name }}</td>
37
38
  </tr>
38
39
  <tr>
39
- <th scope="row">Type</th>
40
+ <th scope="row">{% trans "Type" %}</th>
40
41
  <td>{{ object.get_type_display }}</td>
41
42
  </tr>
42
43
  <tr>
43
- <th scope="row">Status</th>
44
+ <th scope="row">{% trans "Status" %}</th>
44
45
  <td>{% badge object.get_status_display bg_color=object.get_status_color %}</td>
45
46
  </tr>
46
47
  <tr>
47
- <th scope="row">Last synced</th>
48
+ <th scope="row">{% trans "Last synced" %}</th>
48
49
  <td>{{ object.last_synced|placeholder }}</td>
49
50
  </tr>
50
51
  <tr>
51
- <th scope="row">Description</th>
52
+ <th scope="row">{% trans "Description" %}</th>
52
53
  <td>{{ object.description|placeholder }}</td>
53
54
  </tr>
54
55
  <tr>
55
- <th scope="row">Base URL</th>
56
+ <th scope="row">{% trans "Base URL" %}</th>
56
57
  <td>
57
58
  <a href="{{ object.url }}">{{ object.url }}</a>
58
59
  </td>
@@ -66,7 +67,7 @@
66
67
  </div>
67
68
  <div class="col col-md-6">
68
69
  <div class="card">
69
- <h5 class="card-header">Parameters</h5>
70
+ <h5 class="card-header">{% trans "Parameters" %}</h5>
70
71
  <div class="card-body">
71
72
  <table class="table table-hover attr-table">
72
73
  {% for name, value in object.parameters.items %}
@@ -80,7 +81,7 @@
80
81
  <button type="button" class="btn btn-sm btn-primary toggle-secret float-end" data-bs-toggle="button">Show
81
82
  Secret</button>
82
83
  {% else %}
83
- <i>Password Hidden</i>
84
+ <i>{% trans "Password Hidden" %}</i>
84
85
  {% endif %}
85
86
  </td>
86
87
  {% else %}
@@ -90,7 +91,7 @@
90
91
  {% empty %}
91
92
  <tr>
92
93
  <td colspan="2" class="text-muted">
93
- No parameters defined
94
+ {% trans "No parameters defined" %}
94
95
  </td>
95
96
  </tr>
96
97
  {% endfor %}
@@ -5,6 +5,7 @@
5
5
  {% load render_table from django_tables2 %}
6
6
  {% load perms %}
7
7
  {% load ipfabric_netbox_helpers %}
8
+ {% load i18n %}
8
9
 
9
10
  {% block extra_controls %}
10
11
  {% if perms.ipfabric_netbox.start_sync %}
@@ -12,13 +13,13 @@
12
13
  <form action="{% url 'plugins:ipfabric_netbox:ipfabricsync_sync' pk=object.pk %}" method="post">
13
14
  {% csrf_token %}
14
15
  <button type="submit" class="btn btn-primary">
15
- <i class="mdi mdi-sync" aria-hidden="true"></i> Adhoc Ingestion
16
+ <i class="mdi mdi-sync" aria-hidden="true"></i>&nbsp;{% trans "Adhoc Ingestion" %}
16
17
  </button>
17
18
  </form>
18
19
  {% else %}
19
20
  <span class="inline-block" tabindex="0" data-bs-toggle="tooltip" data-bs-delay="100" data-bs-placement="bottom">
20
21
  <button class="btn btn-primary" disabled>
21
- <i class="mdi mdi-sync" aria-hidden="true"></i> Adhoc Ingestion
22
+ <i class="mdi mdi-sync" aria-hidden="true"></i>&nbsp;{% trans "Adhoc Ingestion" %}
22
23
  </button>
23
24
  </span>
24
25
  {% endif %}
@@ -29,43 +30,43 @@
29
30
  <div class="row mb-3">
30
31
  <div class="col col-md-6">
31
32
  <div class="card">
32
- <h5 class="card-header">Ingestion Information</h5>
33
+ <h5 class="card-header">{% trans "Ingestion Information" %}</h5>
33
34
  <div class="card-body">
34
35
  <table class="table table-hover attr-table">
35
36
  <tr>
36
- <th scope="row">Name</th>
37
+ <th scope="row">{% trans "Name" %}</th>
37
38
  <td>{{ object.name }}</td>
38
39
  </tr>
39
40
  <tr>
40
- <th scope="row">Source</th>
41
+ <th scope="row">{% trans "Source" %}</th>
41
42
  <td><a href="{% url 'plugins:ipfabric_netbox:ipfabricsource' pk=object.snapshot_data.source.pk %}">{{ object.snapshot_data.source.name }}</a></td>
42
43
  </tr>
43
44
  <tr>
44
- <th scope="row">Snapshot</th>
45
+ <th scope="row">{% trans "Snapshot" %}</th>
45
46
  <td><a href="{% url 'plugins:ipfabric_netbox:ipfabricsnapshot' pk=object.snapshot_data.pk %}">{{ object.snapshot_data.name}}</a></td>
46
47
  </tr>
47
48
  <tr>
48
- <th scope="row">Status</th>
49
+ <th scope="row">{% trans "Status" %}</th>
49
50
  <td>{% badge object.get_status_display bg_color=object.get_status_color %}</td>
50
51
  </tr>
51
52
  <tr>
52
- <th scope="row">Last synced</th>
53
+ <th scope="row">{% trans "Last synced" %}</th>
53
54
  <td>{{ object.last_synced|placeholder }}</td>
54
55
  </tr>
55
56
  <tr>
56
- <th scope="row">Latest ingestion</th>
57
+ <th scope="row">{% trans "Latest ingestion" %}</th>
57
58
  <td><div {% if object.status == 'queued' or object.status == 'syncing' %} hx-get="{% url 'plugins:ipfabric_netbox:ipfabricsync' pk=object.pk %}" hx-trigger="every 1s"{% endif %}>{% include 'ipfabric_netbox/partials/sync_last_ingestion.html' %}</div></td>
58
59
  </tr>
59
60
  <tr>
60
- <th scope="row">Schedule</th>
61
+ <th scope="row">{% trans "Schedule" %}</th>
61
62
  <td><div>{% if scheduled_job %}<a href="{% url 'core:job' pk=scheduled_job.pk %}">{{ object.scheduled }}</a>{% else %} {{ object.scheduled | placeholder }} {% endif %}</div></td>
62
63
  </tr>
63
64
  <tr>
64
- <th scope="row">Interval</th>
65
+ <th scope="row">{% trans "Interval" %}</th>
65
66
  <td><div>{{ object.interval }}</div></td>
66
67
  </tr>
67
68
  <tr>
68
- <th scope="row">User</th>
69
+ <th scope="row">{% trans "User" %}</th>
69
70
  <td><div>{{ object.user }}</div></td>
70
71
  </tr>
71
72
  </tr>
@@ -77,7 +78,7 @@
77
78
  </div>
78
79
  <div class="col col-md-6">
79
80
  <div class="card">
80
- <h5 class="card-header">Parameters</h5>
81
+ <h5 class="card-header">{% trans "Parameters" %}</h5>
81
82
  <div class="card-body">
82
83
  <table class="table table-hover attr-table">
83
84
  {% for name, field in object.parameters.items %}
@@ -91,7 +92,7 @@
91
92
  <a href="{% url 'plugins:ipfabric_netbox:ipfabrictransformmapgroup' pk=group.pk %}">{{ group }}</a>{% if not forloop.last %}, {% endif %}
92
93
  {% endwith %}
93
94
  {% empty %}
94
- <span class="text-muted">No groups assigned</span>
95
+ <span class="text-muted">{% trans "No groups assigned" %}</span>
95
96
  {% endfor %}
96
97
  {{"]"}}
97
98
  {% else %}
@@ -102,7 +103,7 @@
102
103
  {% empty %}
103
104
  <tr>
104
105
  <td colspan="2" class="text-muted">
105
- No parameters defined
106
+ {% trans "No parameters defined" %}
106
107
  </td>
107
108
  </tr>
108
109
  {% endfor %}
@@ -3,6 +3,7 @@
3
3
  {% load helpers %}
4
4
  {% load plugins %}
5
5
  {% load render_table from django_tables2 %}
6
+ {% load i18n %}
6
7
 
7
8
  {% block extra_controls %}
8
9
  <a href="#"
@@ -12,7 +13,7 @@
12
13
  data-bs-toggle="modal"
13
14
  data-bs-target="#htmx-modal" disabled
14
15
  >
15
- <span class="mdi mdi-content-copy" aria-hidden="true"></span>&nbsp;Clone
16
+ <span class="mdi mdi-content-copy" aria-hidden="true"></span>&nbsp;{% trans "Clone" %}
16
17
  </a>
17
18
  {% endblock %}
18
19
 
@@ -20,23 +21,23 @@
20
21
  <div class="row mb-3">
21
22
  <div class="col col-md-6">
22
23
  <div class="card">
23
- <h5 class="card-header">Transform Map Information</h5>
24
+ <h5 class="card-header">{% trans "Transform Map Information" %}</h5>
24
25
  <div class="card-body">
25
26
  <table class="table table-hover attr-table">
26
27
  <tr>
27
- <th scope="row">Name</th>
28
+ <th scope="row">{% trans "Name" %}</th>
28
29
  <td>{{ object.name }}</td>
29
30
  </tr>
30
31
  <tr>
31
- <th scope="row">Group</th>
32
+ <th scope="row">{% trans "Group" %}</th>
32
33
  <td>{{ object.group | linkify | placeholder}}</td>
33
34
  </tr>
34
35
  <tr>
35
- <th scope="row">Source Model</th>
36
+ <th scope="row">{% trans "Source Model" %}</th>
36
37
  <td>ipfabric | {{ object.source_model }}</td>
37
38
  </tr>
38
39
  <tr>
39
- <th scope="row">Target Model</th>
40
+ <th scope="row">{% trans "Target Model" %}</th>
40
41
  <td>{{ object.target_model }}</td>
41
42
  </tr>
42
43
  </table>
@@ -1,4 +1,5 @@
1
1
  {% extends 'generic/object_list.html' %}
2
+ {% load i18n %}
2
3
 
3
4
  {% block extra_controls %}
4
5
  <a href="#"
@@ -8,7 +9,7 @@
8
9
  data-bs-toggle="modal"
9
10
  data-bs-target="#htmx-modal"
10
11
  >
11
- <span class="mdi mdi-file-restore" aria-hidden="true"></span>&nbsp;Restore
12
+ <span class="mdi mdi-file-restore" aria-hidden="true"></span>&nbsp;{% trans "Restore" %}
12
13
  </a>
13
14
  {% endblock %}
14
15
 
@@ -4,7 +4,7 @@
4
4
  <form action="{{ form_url }}" method="post">
5
5
  {% csrf_token %}
6
6
  <div class="modal-header">
7
- <h5 class="modal-title">Confirm Restore</h5>
7
+ <h5 class="modal-title">{% trans "Confirm Restore" %}</h5>
8
8
  </div>
9
9
  <div class="modal-body">
10
10
  <p>
@@ -3,20 +3,21 @@
3
3
  {% load helpers %}
4
4
  {% load plugins %}
5
5
  {% load render_table from django_tables2 %}
6
+ {% load i18n %}
6
7
 
7
8
  {% block content %}
8
9
  <div class="row mb-3">
9
10
  <div class="col col-md-6">
10
11
  <div class="card">
11
- <h5 class="card-header">Transform Map Group Information</h5>
12
+ <h5 class="card-header">{% trans "Transform Map Group Information" %}</h5>
12
13
  <div class="card-body">
13
14
  <table class="table table-hover attr-table">
14
15
  <tr>
15
- <th scope="row">Name</th>
16
+ <th scope="row">{% trans "Name" %}</th>
16
17
  <td>{{ object.name }}</td>
17
18
  </tr>
18
19
  <tr>
19
- <th scope="row">Description</th>
20
+ <th scope="row">{% trans "Description" %}</th>
20
21
  <td>{{ object.description | placeholder }}</td>
21
22
  </tr>
22
23
  </tr>
@@ -1,9 +1,10 @@
1
1
  {% load helpers %}
2
+ {% load i18n %}
2
3
  <div class="card">
3
- <h5 class="card-header">Progress</h5>
4
+ <h5 class="card-header">{% trans "Progress" %}</h5>
4
5
  <div class="card-body">
5
6
  {% if not job %}
6
- Cannot show progress, no sync Job exists anymore.
7
+ {% trans "Cannot show progress, no sync Job exists anymore." %}
7
8
  {% elif statistics %}
8
9
  <table class="table table-hover attr-table">
9
10
  {% for model, util in statistics.items %}
@@ -14,8 +15,8 @@
14
15
  {% endfor %}
15
16
  </table>
16
17
  {% else %}
17
- Ingestion progress pending...<br>
18
- <small class="text-muted">Last updated {% now "H:i:s" %}</small>
18
+ {% trans "Ingestion progress pending..." %}<br>
19
+ <small class="text-muted">{% trans "Last updated" %} {% now "H:i:s" %}</small>
19
20
  {% endif %}
20
21
  </div>
21
22
  </div>
@@ -1,9 +1,10 @@
1
+ {% load i18n %}
1
2
  <div class="card">
2
- <h5 class="card-header">Statistics</h5>
3
+ <h5 class="card-header">{% trans "Statistics" %}</h5>
3
4
  <div class="card-body">
4
5
  <table class="table table-hover attr-table">
5
6
  <tr>
6
- <th scope="row">Created</th>
7
+ <th scope="row">{% trans "Created" %}</th>
7
8
  <td>
8
9
  {% if object.num_created %}
9
10
  {{ object.num_created }}
@@ -13,7 +14,7 @@
13
14
  </td>
14
15
  </tr>
15
16
  <tr>
16
- <th scope="row">Updated</th>
17
+ <th scope="row">{% trans "Updated" %}</th>
17
18
  <td>
18
19
  {% if object.num_updated %}
19
20
  {{ object.num_updated }}
@@ -23,7 +24,7 @@
23
24
  </td>
24
25
  </tr>
25
26
  <tr>
26
- <th scope="row">Deleted</th>
27
+ <th scope="row">{% trans "Deleted" %}</th>
27
28
  <td>
28
29
  {% if object.num_deleted %}
29
30
  {{ object.num_deleted }}