Add manufacturers and distributors to Website

This commit is contained in:
2021-11-14 20:38:19 +01:00
parent 3bbc05db1e
commit 01124d9904
9 changed files with 573 additions and 3 deletions

View File

@@ -50,7 +50,7 @@
</td>
<td class="align-middle" >
{% if component.manufacturer %}
{{component.manufacturer.name}}
<a href="{% url 'parts-manufacturers-detail' uuid=component.manufacturer.id %}" class="link-primary text-decoration-none">{{component.manufacturer.name}}</a>
{% if component.manufacturer.image %}
<img src="{{component.manufacturer.image.url}}" class="component-img-small">
{% endif %}

View File

@@ -0,0 +1,94 @@
{% extends 'base.html' %}
{% load static %}
{% load crispy_forms_tags %}
{% block content %}
<div class="container">
<div class="row">
<div class="col-md-3">
<div class="row justify-content-center">
{% if distributor.image %}
<img src="{{distributor.image.url}}" alt="{{distributor.name}}" class="component-img-big btn" data-bs-toggle="modal" data-bs-target="#distri-img-modal">
{% else %}
<img src="{% static 'css/icons/card-image.svg' %}" alt="{{distributor.name}}" class="component-img-def-big">
{% endif %}
</div>
<div class="row">
<button class="btn btn-danger" data-bs-toggle="modal" data-bs-target="#distri-delete-modal"><i class="bi bi-file-x"></i> Delete {{distributor.name}}</button>
</div>
</div>
<div class="col m-1">
<h2>Distributor {{distributor.name}}</h2>
<form action="" method="post" enctype="multipart/form-data">
{% csrf_token %}
{{edit_form|crispy}}
<input type="submit" class="btn btn-primary" value="Save" name="submit-distri-edit">
</form>
</div>
</div>
</div>
{% if distributor.image %}
<div class="modal fade" id="distri-img-modal" tabindex="-1">
<div class="modal-dialog modal-lg modal-fullscreen-lg-down">
<div class="modal-content">
<div class="modal-header">
<h5>{{distributor.name}}</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<div class="text-center">
<img class="component-img-huge" src="{{distributor.image.url}}">
</div>
</div>
</div>
</div>
</div>
{% endif %}
<!-- Delete modal -->
<div class="modal fade" id="distri-delete-modal" tabindex="-1">
<div class="modal-dialog modal-lg modal-fullscreen-lg-down">
<div class="modal-content">
<div class="modal-header">
<h5>{{distributor.name}}</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<h4>Delete this Distributor?</h4>
{% if delete_error %}
<div class="alert alert-danger">
{{delete_error}}
</div>
{% if protected_components %}
<h4>Following components prevent the deletion:</h4>
<ul>
{% for comp in protected_components %}
<li><a class="text-decoration-none text-primary" href="{% url 'parts-components-detail' uuid=comp.id %}">{{comp}}</a></li>
{% endfor %}
</ul>
{% endif %}
{% endif %}
</div>
<div class="modal-footer">
<form action="" method="post">
{% csrf_token %}
<button type="submit" class="btn btn-danger" name="submit-distri-delete"><i class="bi bi-file-x"></i> Delete {{distributor.name}}</button>
</form>
</div>
</div>
</div>
</div>
{% endblock content %}
{% block custom_scripts %}
<script type="text/javascript">
{% if delete_error %}
bootstrap.Modal.getOrCreateInstance(document.getElementById('distri-delete-modal')).show();
{% endif %}
</script>
{% endblock custom_scripts %}

View File

@@ -0,0 +1,75 @@
{% extends 'base.html' %}
{% load static %}
{% load crispy_forms_tags %}
{% block content %}
<div class="container">
<div class="row">
<div class="col-md">
<h2>Distributors</h2>
<form action="" method="get">
<div class="input-group mb-3">
<input class="form-control" name="search" type="search" placeholder="Search Distributor..." {% if search_string %}value="{{search_string}}"{% endif %}>
<button type="submit" class="btn btn-primary">
<i class="bi bi-search"></i>
</button>
<button class="btn btn-success" type="button" data-bs-toggle="modal" data-bs-target="#add-distri-modal"><i class="bi bi-plus-circle"></i> Add Distributor</button>
</div>
</form>
<div class="mb-3">
{% include 'paginator.html' with paginator=distributors get_param='page' aria_label='Distributor Page Navigation' %}
</div>
<div class="list-group mb-3">
{% for distri in distributors %}
<a href="{% url 'parts-distributors-detail' uuid=distri.id %}" class="text-decoration-none">
<li class="list-group-item list-group-item-action d-flex align-items-center">
<div class="flex-shrink-0">
{% if distri.image %}
<img src="{{distri.image.url}}" class="component-img-small" alt="{{ distri.name }}" class="mr-3">
{% else %}
<img src="{% static 'css/icons/card-image.svg' %}" class="component-img-def-small" alt="{{ distri.name }}" class="mr-3">
{% endif %}
</div>
<div class="flex-grow-1 ms-3">
<h6 class="mt-0 text-primary">{{ distri.name }}</h6>
{{distri.website|default_if_none:"No website specified"}}
</div>
</li>
</a>
{% endfor %}
</div>
{% include 'paginator.html' with paginator=distributors get_param='page' aria_label='Distributor Page Navigation' %}
</div>
</div>
</div>
<div class="modal fade" id="add-distri-modal" tabindex="-1" aria-labelledby="Add Distributor Modal" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Add New Distributor</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
<div class="modal-body">
{{new_distri_form|crispy}}
</div>
<div class="modal-footer">
<input type="submit" class="btn btn-primary" name="submit-distri-add-new" value="Add Distributor">
</div>
</form>
</div>
</div>
</div>
{% endblock content %}
{% block custom_scripts %}
<script type="text/javascript">
{% if new_distri_form.errors %}
bootstrap.Modal.getOrCreateInstance(document.getElementById('add-distri-modal')).show()
{% endif %}
</script>
{% endblock custom_scripts %}

View File

@@ -0,0 +1,94 @@
{% extends 'base.html' %}
{% load static %}
{% load crispy_forms_tags %}
{% block content %}
<div class="container">
<div class="row">
<div class="col-md-3">
<div class="row justify-content-center">
{% if manufacturer.image %}
<img src="{{manufacturer.image.url}}" alt="{{manufacturer.name}}" class="component-img-big btn" data-bs-toggle="modal" data-bs-target="#manufacturer-img-modal">
{% else %}
<img src="{% static 'css/icons/card-image.svg' %}" alt="{{manufacturer.name}}" class="component-img-def-big">
{% endif %}
</div>
<div class="row">
<button class="btn btn-danger" data-bs-toggle="modal" data-bs-target="#manufacturer-delete-modal"><i class="bi bi-file-x"></i> Delete {{manufacturer.name}}</button>
</div>
</div>
<div class="col m-1">
<h2>Manufacturer {{manufacturer.name}}</h2>
<form action="" method="post" enctype="multipart/form-data">
{% csrf_token %}
{{edit_form|crispy}}
<input type="submit" class="btn btn-primary" value="Save" name="submit-manufacturer-edit">
</form>
</div>
</div>
</div>
{% if manufacturer.image %}
<div class="modal fade" id="manufacturer-img-modal" tabindex="-1">
<div class="modal-dialog modal-lg modal-fullscreen-lg-down">
<div class="modal-content">
<div class="modal-header">
<h5>{{manufacturer.name}}</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<div class="text-center">
<img class="component-img-huge" src="{{manufacturer.image.url}}">
</div>
</div>
</div>
</div>
</div>
{% endif %}
<!-- Delete modal -->
<div class="modal fade" id="manufacturer-delete-modal" tabindex="-1">
<div class="modal-dialog modal-lg modal-fullscreen-lg-down">
<div class="modal-content">
<div class="modal-header">
<h5>{{manufacturer.name}}</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<h4>Delete this Manufacturer?</h4>
{% if delete_error %}
<div class="alert alert-danger">
{{delete_error}}
</div>
{% if protected_components %}
<h4>Following components prevent the deletion:</h4>
<ul>
{% for comp in protected_components %}
<li><a class="text-decoration-none text-primary" href="{% url 'parts-components-detail' uuid=comp.id %}">{{comp}}</a></li>
{% endfor %}
</ul>
{% endif %}
{% endif %}
</div>
<div class="modal-footer">
<form action="" method="post">
{% csrf_token %}
<button type="submit" class="btn btn-danger" name="submit-manufacturer-delete"><i class="bi bi-file-x"></i> Delete {{manufacturer.name}}</button>
</form>
</div>
</div>
</div>
</div>
{% endblock content %}
{% block custom_scripts %}
<script type="text/javascript">
{% if delete_error %}
bootstrap.Modal.getOrCreateInstance(document.getElementById('manufacturer-delete-modal')).show();
{% endif %}
</script>
{% endblock custom_scripts %}

View File

@@ -0,0 +1,74 @@
{% extends 'base.html' %}
{% load static %}
{% load crispy_forms_tags %}
{% block content %}
<div class="container">
<div class="row">
<div class="col-md">
<h2>Manufacturers</h2>
<form action="" method="get">
<div class="input-group mb-3">
<input class="form-control" name="search" type="search" placeholder="Search Manufacturer..." {% if search_string %}value="{{search_string}}"{% endif %}>
<button type="submit" class="btn btn-primary">
<i class="bi bi-search"></i>
</button>
<button class="btn btn-success" type="button" data-bs-toggle="modal" data-bs-target="#add-manufacturer-modal"><i class="bi bi-plus-circle"></i> Add Manufacturer</button>
</div>
</form>
<div class="mb-3">
{% include 'paginator.html' with paginator=manufacturers get_param='page' aria_label='Manufacturer Page Navigation' %}
</div>
<div class="list-group mb-3">
{% for manufacturer in manufacturers %}
<a href="{% url 'parts-manufacturers-detail' uuid=manufacturer.id %}" class="text-decoration-none">
<li class="list-group-item list-group-item-action d-flex align-items-center">
<div class="flex-shrink-0">
{% if manufacturer.image %}
<img src="{{manufacturer.image.url}}" class="component-img-small" alt="{{ manufacturer.name }}" class="mr-3">
{% else %}
<img src="{% static 'css/icons/card-image.svg' %}" class="component-img-def-small" alt="{{ manufacturer.name }}" class="mr-3">
{% endif %}
</div>
<div class="flex-grow-1 ms-3">
<h6 class="mt-0 text-primary">{{ manufacturer.name }}</h6>
{{manufacturer.website|default_if_none:"No website specified"}}
</div>
</li>
</a>
{% endfor %}
</div>
{% include 'paginator.html' with paginator=manufacturers get_param='page' aria_label='Manufacturer Page Navigation' %}
</div>
</div>
</div>
<div class="modal fade" id="add-manufacturer-modal" tabindex="-1" aria-labelledby="Add Manufacturer Modal" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Add New Manufacturer</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
<div class="modal-body">
{{new_manufacturer_form|crispy}}
</div>
<div class="modal-footer">
<input type="submit" class="btn btn-primary" name="submit-manufacturer-add-new" value="Add Manufacturer">
</div>
</form>
</div>
</div>
</div>
{% endblock content %}
{% block custom_scripts %}
<script type="text/javascript">
{% if new_manufacturer_form.errors %}
bootstrap.Modal.getOrCreateInstance(document.getElementById('add-manufacturer-modal')).show()
{% endif %}
</script>
{% endblock custom_scripts %}