mirror of
https://github.com/nottinghamtec/PyRIGS.git
synced 2026-01-17 05:22:16 +00:00
Add asset duplication
This commit is contained in:
@@ -8,6 +8,7 @@ class AssetCategory(models.Model):
|
|||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = 'Asset Category'
|
verbose_name = 'Asset Category'
|
||||||
verbose_name_plural = 'Asset Categories'
|
verbose_name_plural = 'Asset Categories'
|
||||||
|
|
||||||
name = models.CharField(max_length=80)
|
name = models.CharField(max_length=80)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
@@ -18,6 +19,7 @@ class AssetStatus(models.Model):
|
|||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = 'Asset Status'
|
verbose_name = 'Asset Status'
|
||||||
verbose_name_plural = 'Asset Statuses'
|
verbose_name_plural = 'Asset Statuses'
|
||||||
|
|
||||||
name = models.CharField(max_length=80)
|
name = models.CharField(max_length=80)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
<td>
|
<td>
|
||||||
<a href="{% url 'asset_detail' item.pk %}"><i class="material-icons">visibility</i></a>
|
<a href="{% url 'asset_detail' item.pk %}"><i class="material-icons">visibility</i></a>
|
||||||
<a href="{% url 'asset_update' item.pk %}"><i class="material-icons">edit</i></a>
|
<a href="{% url 'asset_update' item.pk %}"><i class="material-icons">edit</i></a>
|
||||||
|
<a href="{% url 'asset_duplicate' item.pk %}"><i class="material-icons">content_copy</i></a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
@@ -8,8 +8,10 @@
|
|||||||
|
|
||||||
<h4>
|
<h4>
|
||||||
Asset
|
Asset
|
||||||
{% if object %}
|
{% if object.id %}
|
||||||
| {{ object.asset_id }}
|
| {{ object.asset_id }}
|
||||||
|
{% elif duplicate %}
|
||||||
|
Duplication of {{ object.asset_id }}
|
||||||
{% else %}
|
{% else %}
|
||||||
Create
|
Create
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@@ -19,246 +21,264 @@
|
|||||||
<br>
|
<br>
|
||||||
|
|
||||||
<form method="post" id="asset_update_form">
|
<form method="post" id="asset_update_form">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<input type="hidden" name="id" value="{{ object.id|default:0 }}">
|
<input type="hidden" name="id" value="{{ object.id|default:0 }}">
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col s12">
|
<div class="col s12">
|
||||||
<div class="button-group right">
|
<div class="button-group right">
|
||||||
{% if edit %}
|
|
||||||
{# <input type="submit" class="btn" value="Save">#}
|
|
||||||
<button type="button" class="btn" onclick="updateAsset()">Save</button>
|
|
||||||
{% else %}
|
|
||||||
<a href="{% url 'asset_update' object.pk %}" class="btn">Edit</a>
|
|
||||||
{% endif %}
|
|
||||||
{% if object %}
|
|
||||||
<a class="waves-effect waves-light btn modal-trigger" href="#confirm_delete_modal">Delete</a>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="panel">
|
|
||||||
<div class="panel-heading">
|
|
||||||
Asset Details
|
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
<dl class="dl-horizontal">
|
|
||||||
{% if edit %}
|
{% if edit %}
|
||||||
<div class="row">
|
{# <input type="submit" class="btn" value="Save">#}
|
||||||
<div class="input-field col s12">
|
<button type="button" class="btn" onclick="updateAsset()">Save</button>
|
||||||
{% if object.asset_id %}
|
<a class="waves-effect waves-light btn"
|
||||||
{% render_field form.asset_id|attr:'readonly'|add_class:'disabled_input' value=object.asset_id %}
|
href="{% url 'asset_duplicate' object.pk %}">Duplicate</a>
|
||||||
{% else %}
|
{% elif duplicate %}
|
||||||
{% render_field form.asset_id %}
|
<button type="button" class="btn" onclick="updateAsset()">Create Duplicate</button>
|
||||||
{% endif %}
|
<a href="{% url 'index' %}" class="btn">Cancel</a>
|
||||||
<label for="{{ form.asset_id.id_for_label }}" class="bold-text">Asset ID</label>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="input-field col s12">
|
|
||||||
{% render_field form.description value=object.description %}
|
|
||||||
<label for="{{ form.description.id_for_label }}" class="bold-text">Description</label>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="input-field col s12">
|
|
||||||
<select name="{{ form.category.name }}" id="{{ form.category.id_for_label }}" required>
|
|
||||||
{% for id, choice in form.category.field.choices %}
|
|
||||||
<option value="{{ id }}" {% if object.category.id == id %}selected{% endif %}>{{ choice }}</option>
|
|
||||||
{% endfor %}
|
|
||||||
</select>
|
|
||||||
<label for="{{ form.category.id_for_label }}" class="bold-text">Category</label>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="input-field col s12">
|
|
||||||
<select name="{{ form.status.name }}" id="{{ form.status.id_for_label }}" required>
|
|
||||||
{% for id, choice in form.status.field.choices %}
|
|
||||||
<option value="{{ id }}" {% if object.status.id == id %}selected{% endif %}>{{ choice }}</option>
|
|
||||||
{% endfor %}
|
|
||||||
</select>
|
|
||||||
<label for="{{ form.status.id_for_label }}" class="bold-text">Status</label>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="input-field col s12">
|
|
||||||
{% render_field form.serial_number value=object.serial_number %}
|
|
||||||
<label for="{{ form.serial_number.id_for_label }}">Serial Number</label>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="input-field col s12">
|
|
||||||
{% render_field form.comments|add_class:'materialize-textarea' %}
|
|
||||||
<label for="{{ form.comments.id_for_label }}">Comments</label>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
{% else %}
|
{% else %}
|
||||||
<dt>Asset ID</dt>
|
<a href="{% url 'asset_update' object.pk %}" class="btn">Edit</a>
|
||||||
<dd>{{ object.asset_id }}</dd>
|
<a class="waves-effect waves-light btn"
|
||||||
|
href="{% url 'asset_duplicate' object.pk %}">Duplicate</a>
|
||||||
<dt>Description</dt>
|
|
||||||
<dd>{{ object.description }}</dd>
|
|
||||||
|
|
||||||
<dt>Category</dt>
|
|
||||||
<dd>{{ object.category }}</dd>
|
|
||||||
|
|
||||||
<dt>Status</dt>
|
|
||||||
<dd>{{ object.status }}</dd>
|
|
||||||
|
|
||||||
<dt>Serial Number</dt>
|
|
||||||
<dd>{{ object.serial_number|default:'-' }}</dd>
|
|
||||||
|
|
||||||
<dt>Comments</dt>
|
|
||||||
<dd>{{ object.comments|default:'-'|linebreaksbr }}</dd>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</dl>
|
{% if object and not duplicate %}
|
||||||
|
<a class="waves-effect waves-light btn modal-trigger" href="#confirm_delete_modal">Delete</a>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="panel">
|
|
||||||
<div class="panel-heading">
|
|
||||||
Purchase Details
|
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
<dl class="dl-horizontal">
|
|
||||||
{% if edit %}
|
|
||||||
<div class="row">
|
|
||||||
<div class="input-field col s12">
|
|
||||||
<select name="{{ form.purchased_from.name }}" id="{{ form.purchased_from.id_for_label }}">
|
|
||||||
{% for id, choice in form.purchased_from.field.choices %}
|
|
||||||
<option value="{{ id }}" {% if object.purchased_from.id == id %}selected{% endif %}>{{ choice }}</option>
|
|
||||||
{% endfor %}
|
|
||||||
</select>
|
|
||||||
<label for="{{ form.purchased_from.id_for_label }}">Purchased From</label>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="input-field col s12">
|
|
||||||
{% render_field form.purchase_price value=object.purchase_price %}
|
|
||||||
<label for="{{ form.purchase_price.id_for_label }}">Purchase Price</label>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="input-field col s12">
|
|
||||||
{% render_field form.salvage_value value=object.salvage_value %}
|
|
||||||
<label for="{{ form.salvage_value.id_for_label }}">Salvage Value</label>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="input-field col s12">
|
|
||||||
{% render_field form.date_acquired|add_class:'datepicker' value=object.date_acquired|date %}
|
|
||||||
<label for="{{ form.date_acquired.id_for_label }}" class="bold-text">Date Acquired</label>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="input-field col s12">
|
|
||||||
{% render_field form.date_sold|add_class:'datepicker' value=object.date_sold|date %}
|
|
||||||
<label for="{{ form.date_sold.id_for_label }}">Date Sold</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% else %}
|
|
||||||
<dt>Purchased From</dt>
|
|
||||||
<dd>{{ object.purchased_from|default_if_none:'-' }}</dd>
|
|
||||||
|
|
||||||
<dt>Purchase Price</dt>
|
|
||||||
<dd>£{{ object.purchase_price|default_if_none:'-' }}</dd>
|
|
||||||
|
|
||||||
<dt>Salvage Value</dt>
|
|
||||||
<dd>£{{ object.salvage_value|default_if_none:'-' }}</dd>
|
|
||||||
|
|
||||||
<dt>Date Acquired</dt>
|
|
||||||
<dd>{{ object.date_acquired|default_if_none:'-' }}</dd>
|
|
||||||
|
|
||||||
<dt>Date Sold</dt>
|
|
||||||
<dd>{{ object.date_sold|default_if_none:'-' }}</dd>
|
|
||||||
{% endif %}
|
|
||||||
</dl>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{% if object.is_cable %}
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="panel">
|
<div class="panel">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
Cable Details
|
Asset Details
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
<dl class="dl-horizontal">
|
<dl class="dl-horizontal">
|
||||||
<dt>Length</dt>
|
{% if edit or duplicate %}
|
||||||
<dd>{{ object.length }}m</dd>
|
<div class="row">
|
||||||
|
<div class="input-field col s12">
|
||||||
|
{% if duplicate %}
|
||||||
|
{% render_field form.asset_id value=object.asset_id %}
|
||||||
|
{% elif object.asset_id %}
|
||||||
|
{% render_field form.asset_id|attr:'readonly'|add_class:'disabled_input' value=object.asset_id %}
|
||||||
|
{% else %}
|
||||||
|
{% render_field form.asset_id %}
|
||||||
|
{% endif %}
|
||||||
|
<label for="{{ form.asset_id.id_for_label }}" class="bold-text">Asset ID</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
<dt>Type</dt>
|
<div class="input-field col s12">
|
||||||
<dd>TODO</dd>
|
{% render_field form.description value=object.description %}
|
||||||
|
<label for="{{ form.description.id_for_label }}"
|
||||||
|
class="bold-text">Description</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
<dt>Required CSA</dt>
|
<div class="input-field col s12">
|
||||||
<dd>TODO</dd>
|
<select name="{{ form.category.name }}" id="{{ form.category.id_for_label }}"
|
||||||
|
required>
|
||||||
|
{% for id, choice in form.category.field.choices %}
|
||||||
|
<option value="{{ id }}"
|
||||||
|
{% if object.category.id == id %}selected{% endif %}>{{ choice }}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
<label for="{{ form.category.id_for_label }}" class="bold-text">Category</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="input-field col s12">
|
||||||
|
<select name="{{ form.status.name }}" id="{{ form.status.id_for_label }}" required>
|
||||||
|
{% for id, choice in form.status.field.choices %}
|
||||||
|
<option value="{{ id }}"
|
||||||
|
{% if object.status.id == id %}selected{% endif %}>{{ choice }}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
<label for="{{ form.status.id_for_label }}" class="bold-text">Status</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="input-field col s12">
|
||||||
|
{% render_field form.serial_number value=object.serial_number %}
|
||||||
|
<label for="{{ form.serial_number.id_for_label }}">Serial Number</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="input-field col s12">
|
||||||
|
{% render_field form.comments|add_class:'materialize-textarea' %}
|
||||||
|
<label for="{{ form.comments.id_for_label }}">Comments</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
{% else %}
|
||||||
|
<dt>Asset ID</dt>
|
||||||
|
<dd>{{ object.asset_id }}</dd>
|
||||||
|
|
||||||
|
<dt>Description</dt>
|
||||||
|
<dd>{{ object.description }}</dd>
|
||||||
|
|
||||||
|
<dt>Category</dt>
|
||||||
|
<dd>{{ object.category }}</dd>
|
||||||
|
|
||||||
|
<dt>Status</dt>
|
||||||
|
<dd>{{ object.status }}</dd>
|
||||||
|
|
||||||
|
<dt>Serial Number</dt>
|
||||||
|
<dd>{{ object.serial_number|default:'-' }}</dd>
|
||||||
|
|
||||||
|
<dt>Comments</dt>
|
||||||
|
<dd>{{ object.comments|default:'-'|linebreaksbr }}</dd>
|
||||||
|
{% endif %}
|
||||||
</dl>
|
</dl>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="panel">
|
<div class="panel">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
Collection Details
|
Purchase Details
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
<dl class="dl-horizontal">
|
<dl class="dl-horizontal">
|
||||||
{% if edit %}
|
{% if edit or duplicate %}
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
<div class="input-field col s12">
|
||||||
|
<select name="{{ form.purchased_from.name }}"
|
||||||
|
id="{{ form.purchased_from.id_for_label }}">
|
||||||
|
{% for id, choice in form.purchased_from.field.choices %}
|
||||||
|
<option value="{{ id }}"
|
||||||
|
{% if object.purchased_from.id == id %}selected{% endif %}>{{ choice }}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
<label for="{{ form.purchased_from.id_for_label }}">Purchased From</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="input-field col s10">
|
<div class="input-field col s12">
|
||||||
<input type="hidden" name="{{ form.parent.html_name }}" id="hidden_parent_id" value="{{ object.parent.id }}">
|
{% render_field form.purchase_price value=object.purchase_price %}
|
||||||
<input type="text" id="parent_id" value="{{ object.parent|default:'' }}" disabled="">
|
<label for="{{ form.purchase_price.id_for_label }}">Purchase Price</label>
|
||||||
<label for="parent_id">Parent</label>
|
</div>
|
||||||
</div>
|
|
||||||
<div class="col s2">
|
|
||||||
<button type="button" class="btn btn-flat" onclick="clearParent()">
|
|
||||||
<i class="material-icons">clear</i>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div class="input-field col s10">
|
|
||||||
<input type="text" id="parent_search">
|
|
||||||
<label for="parent_search">Search for asset</label>
|
|
||||||
{# {% render_field form.parent value=object.parent %}#}
|
|
||||||
</div>
|
|
||||||
<div class="col s2">
|
|
||||||
<button type="button" class="btn btn-flat" onclick="formAssetSearch()">
|
|
||||||
<i class="material-icons">search</i>
|
|
||||||
</button>
|
|
||||||
<br>
|
|
||||||
</div>
|
|
||||||
<div class="col s12" id="formAssetSearchResult">
|
|
||||||
<!--Placeholder for search results-->
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% else %}
|
|
||||||
<dt>Parent</dt>
|
|
||||||
<dd>
|
|
||||||
{% if object.parent %}
|
|
||||||
<a href="{% url 'asset_detail' object.parent.pk %}">
|
|
||||||
{{ object.parent.asset_id }} - {{ object.parent.description }}
|
|
||||||
</a>
|
|
||||||
{% else %}
|
|
||||||
<span>-</span>
|
|
||||||
{% endif %}
|
|
||||||
</dd>
|
|
||||||
|
|
||||||
<dt>Children</dt>
|
<div class="input-field col s12">
|
||||||
{% if object.asset_parent.all %}
|
{% render_field form.salvage_value value=object.salvage_value %}
|
||||||
{% for child in object.asset_parent.all %}
|
<label for="{{ form.salvage_value.id_for_label }}">Salvage Value</label>
|
||||||
<dd>
|
</div>
|
||||||
<a href="{% url 'asset_detail' child.pk %}" >
|
|
||||||
{{ child.asset_id }} - {{ child.description }}
|
<div class="input-field col s12">
|
||||||
</a>
|
{% render_field form.date_acquired|add_class:'datepicker' value=object.date_acquired|date %}
|
||||||
</dd>
|
<label for="{{ form.date_acquired.id_for_label }}" class="bold-text">Date
|
||||||
{% endfor %}
|
Acquired</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="input-field col s12">
|
||||||
|
{% render_field form.date_sold|add_class:'datepicker' value=object.date_sold|date %}
|
||||||
|
<label for="{{ form.date_sold.id_for_label }}">Date Sold</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
<dd><span>-</span></dd>
|
<dt>Purchased From</dt>
|
||||||
|
<dd>{{ object.purchased_from|default_if_none:'-' }}</dd>
|
||||||
|
|
||||||
|
<dt>Purchase Price</dt>
|
||||||
|
<dd>£{{ object.purchase_price|default_if_none:'-' }}</dd>
|
||||||
|
|
||||||
|
<dt>Salvage Value</dt>
|
||||||
|
<dd>£{{ object.salvage_value|default_if_none:'-' }}</dd>
|
||||||
|
|
||||||
|
<dt>Date Acquired</dt>
|
||||||
|
<dd>{{ object.date_acquired|default_if_none:'-' }}</dd>
|
||||||
|
|
||||||
|
<dt>Date Sold</dt>
|
||||||
|
<dd>{{ object.date_sold|default_if_none:'-' }}</dd>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
</dl>
|
||||||
</dl>
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% if object.is_cable %}
|
||||||
|
<div class="row">
|
||||||
|
<div class="panel">
|
||||||
|
<div class="panel-heading">
|
||||||
|
Cable Details
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
<dl class="dl-horizontal">
|
||||||
|
<dt>Length</dt>
|
||||||
|
<dd>{{ object.length }}m</dd>
|
||||||
|
|
||||||
|
<dt>Type</dt>
|
||||||
|
<dd>TODO</dd>
|
||||||
|
|
||||||
|
<dt>Required CSA</dt>
|
||||||
|
<dd>TODO</dd>
|
||||||
|
</dl>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="panel">
|
||||||
|
<div class="panel-heading">
|
||||||
|
Collection Details
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
<dl class="dl-horizontal">
|
||||||
|
{% if edit or duplicate %}
|
||||||
|
<div class="row">
|
||||||
|
|
||||||
|
<div class="input-field col s10">
|
||||||
|
<input type="hidden" name="{{ form.parent.html_name }}" id="hidden_parent_id"
|
||||||
|
value="{{ object.parent.id }}">
|
||||||
|
<input type="text" id="parent_id" value="{{ object.parent|default:'' }}"
|
||||||
|
disabled="">
|
||||||
|
<label for="parent_id">Parent</label>
|
||||||
|
</div>
|
||||||
|
<div class="col s2">
|
||||||
|
<button type="button" class="btn btn-flat" onclick="clearParent()">
|
||||||
|
<i class="material-icons">clear</i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="input-field col s10">
|
||||||
|
<input type="text" id="parent_search">
|
||||||
|
<label for="parent_search">Search for asset</label>
|
||||||
|
{# {% render_field form.parent value=object.parent %}#}
|
||||||
|
</div>
|
||||||
|
<div class="col s2">
|
||||||
|
<button type="button" class="btn btn-flat" onclick="formAssetSearch()">
|
||||||
|
<i class="material-icons">search</i>
|
||||||
|
</button>
|
||||||
|
<br>
|
||||||
|
</div>
|
||||||
|
<div class="col s12" id="formAssetSearchResult">
|
||||||
|
<!--Placeholder for search results-->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% else %}
|
||||||
|
<dt>Parent</dt>
|
||||||
|
<dd>
|
||||||
|
{% if object.parent %}
|
||||||
|
<a href="{% url 'asset_detail' object.parent.pk %}">
|
||||||
|
{{ object.parent.asset_id }} - {{ object.parent.description }}
|
||||||
|
</a>
|
||||||
|
{% else %}
|
||||||
|
<span>-</span>
|
||||||
|
{% endif %}
|
||||||
|
</dd>
|
||||||
|
|
||||||
|
<dt>Children</dt>
|
||||||
|
{% if object.asset_parent.all %}
|
||||||
|
{% for child in object.asset_parent.all %}
|
||||||
|
<dd>
|
||||||
|
<a href="{% url 'asset_detail' child.pk %}">
|
||||||
|
{{ child.asset_id }} - {{ child.description }}
|
||||||
|
</a>
|
||||||
|
</dd>
|
||||||
|
{% endfor %}
|
||||||
|
{% else %}
|
||||||
|
<dd><span>-</span></dd>
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
</dl>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
{% include 'confirm_delete.html' with object=object %}
|
{% include 'confirm_delete.html' with object=object %}
|
||||||
@@ -267,14 +287,14 @@
|
|||||||
|
|
||||||
{% block script %}
|
{% block script %}
|
||||||
|
|
||||||
{# <script>#}
|
{# <script>#}
|
||||||
{# $('#asset_update_form').on('submit', function(event){#}
|
{# $('#asset_update_form').on('submit', function(event){#}
|
||||||
{#console.log($('#asset_update_form').serialize());#}
|
{#console.log($('#asset_update_form').serialize());#}
|
||||||
{# event.preventDefault();#}
|
{# event.preventDefault();#}
|
||||||
{# updateAsset();#}
|
{# updateAsset();#}
|
||||||
{# return false;#}
|
{# return false;#}
|
||||||
{# });#}
|
{# });#}
|
||||||
{# </script>#}
|
{# </script>#}
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
function clearParent() {
|
function clearParent() {
|
||||||
@@ -285,7 +305,7 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
$(document).ready(function() {
|
$(document).ready(function () {
|
||||||
{% if edit %}
|
{% if edit %}
|
||||||
var comments_id = '#{{ form.comments.id_for_label }}';
|
var comments_id = '#{{ form.comments.id_for_label }}';
|
||||||
$(comments_id).val('{{ object.comments|linebreaksn }}');
|
$(comments_id).val('{{ object.comments|linebreaksn }}');
|
||||||
|
|||||||
1
urls.py
1
urls.py
@@ -12,6 +12,7 @@ urlpatterns = [
|
|||||||
path('asset/<int:pk>/', views.AssetDetail.as_view(), name='asset_detail'),
|
path('asset/<int:pk>/', views.AssetDetail.as_view(), name='asset_detail'),
|
||||||
path('asset/create/', views.AssetEdit.as_view(), name='asset_create'),
|
path('asset/create/', views.AssetEdit.as_view(), name='asset_create'),
|
||||||
path('asset/<int:pk>/edit/', views.AssetEdit.as_view(), name='asset_update'),
|
path('asset/<int:pk>/edit/', views.AssetEdit.as_view(), name='asset_update'),
|
||||||
|
path('asset/<int:pk>/duplicate/', views.AssetDuplicate.as_view(), name='asset_duplicate'),
|
||||||
path('asset/delete/', views.asset_delete, name='ajax_asset_delete'),
|
path('asset/delete/', views.asset_delete, name='ajax_asset_delete'),
|
||||||
path('asset/filter/', views.asset_filter, name='ajax_asset_filter'),
|
path('asset/filter/', views.asset_filter, name='ajax_asset_filter'),
|
||||||
path('asset/update/', views.asset_update, name='ajax_asset_update'),
|
path('asset/update/', views.asset_update, name='ajax_asset_update'),
|
||||||
|
|||||||
15
views.py
15
views.py
@@ -65,6 +65,21 @@ class AssetEdit(LoginRequiredMixin, generic.TemplateView):
|
|||||||
return context
|
return context
|
||||||
|
|
||||||
|
|
||||||
|
class AssetDuplicate(LoginRequiredMixin, generic.TemplateView):
|
||||||
|
template_name = 'asset_update.html'
|
||||||
|
|
||||||
|
def get_context_data(self, **kwargs):
|
||||||
|
context = super(AssetDuplicate, self).get_context_data(**kwargs)
|
||||||
|
if self.kwargs:
|
||||||
|
context['object'] = get_object_or_404(models.Asset, pk=self.kwargs['pk'])
|
||||||
|
context['object'].pk = None
|
||||||
|
context['form'] = forms.AssetForm
|
||||||
|
# context['asset_names'] = models.Asset.objects.values_list('asset_id', 'description').order_by('-date_acquired')[]
|
||||||
|
context['duplicate'] = True
|
||||||
|
|
||||||
|
return context
|
||||||
|
|
||||||
|
|
||||||
@login_required()
|
@login_required()
|
||||||
def asset_update(request):
|
def asset_update(request):
|
||||||
context = dict()
|
context = dict()
|
||||||
|
|||||||
Reference in New Issue
Block a user