2021-05-17 16:27:27 -04:00
{% extends 'base/layout.html' %}
2019-09-05 17:23:56 -04:00
{% load helpers %}
{% load form_helpers %}
2023-07-29 03:30:25 +07:00
{% load i18n %}
2019-09-05 17:23:56 -04:00
2022-02-08 11:23:52 -05:00
{% comment %}
Context:
model: The model class being imported
form: The bulk import form
fields: A dictionary of form fields, to display import options (optional)
return_url: The URL to which the user is redirected after submitting the form
{% endcomment %}
2023-07-29 03:30:25 +07:00
{% block title %}{{ model|meta:"verbose_name"|bettertitle }} {% trans "Bulk Import" %}{% endblock %}
2021-04-18 11:35:42 -07:00
2021-07-21 09:24:43 -04:00
{% block tabs %}
< ul class = "nav nav-tabs px-3" >
< li class = "nav-item" role = "presentation" >
2023-04-12 17:38:16 -04:00
< button class = "nav-link active" id = "import-form-tab" data-bs-toggle = "tab" data-bs-target = "#import-form" data-href = "#tab_import-form" type = "button" role = "tab" aria-controls = "import-form" aria-selected = "true" >
2023-07-29 03:30:25 +07:00
{% trans "Direct Import" %}
2022-11-10 08:01:52 -08:00
< / button >
< / li >
< li class = "nav-item" role = "presentation" >
2023-04-12 17:38:16 -04:00
< button class = "nav-link" id = "upload-form-tab" data-bs-toggle = "tab" data-bs-target = "#upload-form" data-href = "#tab_upload-form" type = "button" role = "tab" aria-controls = "upload-form" aria-selected = "false" >
2023-07-29 03:30:25 +07:00
{% trans "Upload File" %}
2022-11-10 08:01:52 -08:00
< / button >
2021-07-21 09:24:43 -04:00
< / li >
2023-03-14 14:53:26 -04:00
< li class = "nav-item" role = "presentation" >
2023-04-12 17:38:16 -04:00
< button class = "nav-link" id = "datafile-form-tab" data-bs-toggle = "tab" data-bs-target = "#datafile-form" data-href = "#tab_datafile-form" type = "button" role = "tab" aria-controls = "datafile-form" aria-selected = "false" >
2023-07-29 03:30:25 +07:00
{% trans "Data File" %}
2023-03-14 14:53:26 -04:00
< / button >
< / li >
2021-07-21 09:24:43 -04:00
< / ul >
2022-02-08 11:23:52 -05:00
{% endblock tabs %}
2021-07-21 09:24:43 -04:00
{% block content-wrapper %}
< div class = "tab-content" >
2022-11-10 08:01:52 -08:00
{# Data Import Form #}
2023-03-14 14:53:26 -04:00
< div class = "tab-pane show active" id = "import-form" role = "tabpanel" aria-labelledby = "import-form-tab" >
< div class = "row" >
< div class = "col col-md-12 col-lg-10 offset-lg-1" >
< form action = "" method = "post" enctype = "multipart/form-data" class = "form" >
{% csrf_token %}
< input type = "hidden" name = "import_method" value = "direct" / >
{% render_field form.data %}
{% render_field form.format %}
< div class = "form-group" >
< div class = "col col-md-12 text-end" >
2023-07-29 03:30:25 +07:00
< button type = "submit" name = "data_submit" class = "btn btn-primary" > {% trans "Submit" %}< / button >
2023-03-14 14:53:26 -04:00
{% if return_url %}
2023-07-29 03:30:25 +07:00
< a href = "{{ return_url }}" class = "btn btn-outline-danger" > {% trans "Cancel" %}< / a >
2023-03-14 14:53:26 -04:00
{% endif %}
2022-11-10 08:01:52 -08:00
< / div >
2023-03-14 14:53:26 -04:00
< / div >
< / form >
< / div >
< / div >
2022-11-10 08:01:52 -08:00
< / div >
{# File Upload Form #}
2023-03-14 14:53:26 -04:00
< div class = "tab-pane show" id = "upload-form" role = "tabpanel" aria-labelledby = "upload-form-tab" >
< div class = "col col-md-12 col-lg-10 offset-lg-1" >
< form action = "" method = "post" enctype = "multipart/form-data" class = "form" >
{% csrf_token %}
< input type = "hidden" name = "import_method" value = "upload" / >
{% render_field form.upload_file %}
{% render_field form.format %}
< div class = "form-group" >
< div class = "col col-md-12 text-end" >
2023-07-29 03:30:25 +07:00
< button type = "submit" name = "file_submit" class = "btn btn-primary" > {% trans "Submit" %}< / button >
2023-03-14 14:53:26 -04:00
{% if return_url %}
2023-07-29 03:30:25 +07:00
< a href = "{{ return_url }}" class = "btn btn-outline-danger" > {% trans "Cancel" %}< / a >
2023-03-14 14:53:26 -04:00
{% endif %}
< / div >
< / div >
< / form >
< / div >
< / div >
{# DataFile Form #}
< div class = "tab-pane show" id = "datafile-form" role = "tabpanel" aria-labelledby = "datafile-form-tab" >
< div class = "col col-md-12 col-lg-10 offset-lg-1" >
< form action = "" method = "post" enctype = "multipart/form-data" class = "form" >
{% csrf_token %}
< input type = "hidden" name = "import_method" value = "datafile" / >
{% render_field form.data_source %}
{% render_field form.data_file %}
{% render_field form.format %}
< div class = "form-group" >
< div class = "col col-md-12 text-end" >
2023-07-29 03:30:25 +07:00
< button type = "submit" name = "file_submit" class = "btn btn-primary" > {% trans "Submit" %}< / button >
2023-03-14 14:53:26 -04:00
{% if return_url %}
2023-07-29 03:30:25 +07:00
< a href = "{{ return_url }}" class = "btn btn-outline-danger" > {% trans "Cancel" %}< / a >
2023-03-14 14:53:26 -04:00
{% endif %}
< / div >
< / div >
< / form >
< / div >
2022-11-10 08:01:52 -08:00
< / div >
{% if fields %}
< div class = "row my-3" >
< div class = "col col-md-12" >
< div class = "card" >
< h5 class = "card-header" >
2023-07-29 03:30:25 +07:00
{% trans "Field Options" %}
2022-11-10 08:01:52 -08:00
< / h5 >
< div class = "card-body" >
< table class = "table" >
< tr >
2023-07-29 03:30:25 +07:00
< th > {% trans "Field" %}< / th >
< th > {% trans "Required" %}< / th >
< th > {% trans "Accessor" %}< / th >
< th > {% trans "Description" %}< / th >
2022-11-10 08:01:52 -08:00
< / tr >
{% for name, field in fields.items %}
< tr >
< td >
< code > {% if field.required %}< strong > {% endif %}{{ name }}{% if field.required %}< / strong > {% endif %}< / code >
< / td >
< td >
{% if field.required %}
{% checkmark True true="Required" %}
{% else %}
{{ ''|placeholder }}
{% endif %}
< / td >
< td >
{% if field.to_field_name %}
< code > {{ field.to_field_name }}< / code >
{% else %}
{{ ''|placeholder }}
{% endif %}
< / td >
< td >
{% if field.STATIC_CHOICES %}
< button type = "button" class = "btn btn-link btn-sm float-end" data-bs-toggle = "modal" data-bs-target = "#{{ name }}_choices" >
< i class = "mdi mdi-help-circle" > < / i >
< / button >
< div class = "modal fade" id = "{{ name }}_choices" tabindex = "-1" role = "dialog" >
< div class = "modal-dialog" role = "document" >
< div class = "modal-content" >
< div class = "modal-header" >
2023-07-29 03:30:25 +07:00
< h5 class = "modal-title" > < code > {{ name }}< / code > {% trans "Choices" %}< / h5 >
2022-11-10 08:01:52 -08:00
< button type = "button" class = "btn-close" data-bs-dismiss = "modal" aria-label = "Close" > < / button >
2021-07-21 09:24:43 -04:00
< / div >
2022-11-10 08:01:52 -08:00
< div class = "modal-body" >
< table class = "table table-striped" >
< tr >
2023-07-29 03:30:25 +07:00
< th > {% trans "Import Value" %}< / th >
< th > {% trans "Label" %}< / th >
2022-11-10 08:01:52 -08:00
< / tr >
{% for value, label in field.choices %}
{% if value %}
< tr >
< td >
< samp > {{ value }}< / samp >
< / td >
< td >
{{ label }}
< / td >
< / tr >
{% endif %}
{% endfor %}
< / table >
< / div >
< / div >
< / div >
< / div >
{% endif %}
{% if field.help_text %}
{{ field.help_text }}< br / >
{% elif field.label %}
{{ field.label }}< br / >
{% endif %}
{% if field|widget_type == 'dateinput' %}
2023-07-29 03:30:25 +07:00
< small class = "text-muted" > {% trans "Format: YYYY-MM-DD" %}< / small >
2022-11-10 08:01:52 -08:00
{% elif field|widget_type == 'checkboxinput' %}
2023-07-29 03:30:25 +07:00
< small class = "text-muted" > {% trans "Specify \"true\" or \"false" %}"< / small >
2022-11-10 08:01:52 -08:00
{% endif %}
< / td >
< / tr >
{% endfor %}
< / table >
2019-09-05 17:23:56 -04:00
< / div >
< / div >
2020-05-01 14:26:04 -04:00
< / div >
2022-11-10 08:01:52 -08:00
< / div >
< p class = "small text-muted" >
2023-07-29 03:30:25 +07:00
< i class = "mdi mdi-check-bold text-success" > < / i >
{% blocktrans %}Required fields < strong > must< / strong > be specified for all objects.{% endblocktrans %}
2022-11-10 08:01:52 -08:00
< / p >
< p class = "small text-muted" >
2023-07-29 03:30:25 +07:00
< i class = "mdi mdi-information-outline" > < / i >
{% blocktrans with example="vrf.rd" %}Related objects may be referenced by any unique attribute. For example, < code > {{ example }}< / code > would identify a VRF by its route distinguisher.{% endblocktrans %}
2022-11-10 08:01:52 -08:00
< / p >
{% endif %}
2021-07-21 09:24:43 -04:00
< / div >
2022-02-08 11:23:52 -05:00
{% endblock content-wrapper %}