mirror of
https://github.com/nottinghamtec/PyRIGS.git
synced 2026-01-28 10:52:16 +00:00
FIX #388: Prevent assets losing supplier data on edit
This commit is contained in:
@@ -17,6 +17,7 @@ from django.views.decorators.csrf import csrf_exempt
|
|||||||
|
|
||||||
|
|
||||||
from RIGS import models, forms
|
from RIGS import models, forms
|
||||||
|
from assets import models as asset_models
|
||||||
from functools import reduce
|
from functools import reduce
|
||||||
|
|
||||||
"""
|
"""
|
||||||
@@ -248,6 +249,7 @@ class SecureAPIRequest(generic.View):
|
|||||||
'organisation': models.Organisation,
|
'organisation': models.Organisation,
|
||||||
'profile': models.Profile,
|
'profile': models.Profile,
|
||||||
'event': models.Event,
|
'event': models.Event,
|
||||||
|
'supplier': asset_models.Supplier
|
||||||
}
|
}
|
||||||
|
|
||||||
perms = {
|
perms = {
|
||||||
@@ -256,6 +258,7 @@ class SecureAPIRequest(generic.View):
|
|||||||
'organisation': 'RIGS.view_organisation',
|
'organisation': 'RIGS.view_organisation',
|
||||||
'profile': 'RIGS.view_profile',
|
'profile': 'RIGS.view_profile',
|
||||||
'event': None,
|
'event': None,
|
||||||
|
'supplier': None
|
||||||
}
|
}
|
||||||
|
|
||||||
'''
|
'''
|
||||||
|
|||||||
@@ -4,6 +4,11 @@ from assets import models
|
|||||||
|
|
||||||
|
|
||||||
class AssetForm(forms.ModelForm):
|
class AssetForm(forms.ModelForm):
|
||||||
|
related_models = {
|
||||||
|
'asset': models.Asset,
|
||||||
|
'supplier': models.Supplier
|
||||||
|
}
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.Asset
|
model = models.Asset
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
|
|||||||
@@ -1,8 +1,18 @@
|
|||||||
{% extends 'base_assets.html' %}
|
{% extends 'base_assets.html' %}
|
||||||
{% load widget_tweaks %}
|
{% load widget_tweaks %}
|
||||||
|
{% load static %}
|
||||||
{% load asset_templatetags %}
|
{% load asset_templatetags %}
|
||||||
{% block title %}Asset {{ object.asset_id }}{% endblock %}
|
{% block title %}Asset {{ object.asset_id }}{% endblock %}
|
||||||
|
|
||||||
|
{% block css %}
|
||||||
|
<link rel="stylesheet" href="{% static "css/bootstrap-select.min.css" %}"/>
|
||||||
|
<link rel="stylesheet" href="{% static "css/ajax-bootstrap-select.css" %}"/>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block preload_js %}
|
||||||
|
<script src="{% static "js/bootstrap-select.js" %}"></script>
|
||||||
|
<script src="{% static "js/ajax-bootstrap-select.js" %}"></script>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,18 @@
|
|||||||
{% extends 'base_assets.html' %}
|
{% extends 'base_assets.html' %}
|
||||||
{% load widget_tweaks %}
|
{% load widget_tweaks %}
|
||||||
|
{% load static %}
|
||||||
{% load asset_templatetags %}
|
{% load asset_templatetags %}
|
||||||
{% block title %}Asset {{ object.asset_id }}{% endblock %}
|
{% block title %}Asset {{ object.asset_id }}{% endblock %}
|
||||||
|
|
||||||
|
{% block css %}
|
||||||
|
<link rel="stylesheet" href="{% static "css/bootstrap-select.min.css" %}"/>
|
||||||
|
<link rel="stylesheet" href="{% static "css/ajax-bootstrap-select.css" %}"/>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block preload_js %}
|
||||||
|
<script src="{% static "js/bootstrap-select.js" %}"></script>
|
||||||
|
<script src="{% static "js/ajax-bootstrap-select.js" %}"></script>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
@@ -69,5 +79,6 @@
|
|||||||
}
|
}
|
||||||
checkIfCableHidden();
|
checkIfCableHidden();
|
||||||
</script>
|
</script>
|
||||||
|
<script src="{% static "js/autocompleter.js" %}"></script>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@@ -7,8 +7,12 @@
|
|||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
{% if create or edit or duplicate %}
|
{% if create or edit or duplicate %}
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="{{ form.purchased_from.id_for_label }}">Purchased From</label>
|
<label for="{{ form.purchased_from.id_for_label }}">Supplier</label>
|
||||||
{% include 'partials/supplier_picker.html' %}
|
<select id="{{ form.purchased_from.id_for_label }}" name="{{ form.purchased_from.name }}" class="form-control selectpicker" data-live-search="true" data-sourceurl="{% url 'api_secure' model='supplier' %}">
|
||||||
|
{% if object.purchased_from %}
|
||||||
|
<option value="{{form.purchased_from.value}}" selected="selected" data-update_url="{% url 'supplier_update' form.purchased_from.value %}">{{ object.purchased_from }}</option>
|
||||||
|
{% endif %}
|
||||||
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
|
|||||||
@@ -1,64 +0,0 @@
|
|||||||
<select name="purchased_from" id="supplier_id" class="selectpicker">
|
|
||||||
{% if object.parent%}
|
|
||||||
<option value="{{object.parent.pk}}" selected>{{object.parent.name}}</option>
|
|
||||||
{% endif %}
|
|
||||||
</select>
|
|
||||||
|
|
||||||
{% load static %}
|
|
||||||
{% block css %}
|
|
||||||
<link rel="stylesheet" href="{% static "css/bootstrap-select.min.css" %}"/>
|
|
||||||
<link rel="stylesheet" href="{% static "css/ajax-bootstrap-select.css" %}"/>
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block preload_js %}
|
|
||||||
<script src="{% static "js/bootstrap-select.js" %}"></script>
|
|
||||||
<script src="{% static "js/ajax-bootstrap-select.js" %}"></script>
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block js %}
|
|
||||||
{{ js.super }}
|
|
||||||
<script>
|
|
||||||
$('#supplier_id')
|
|
||||||
.selectpicker({
|
|
||||||
liveSearch: true
|
|
||||||
})
|
|
||||||
.ajaxSelectPicker({
|
|
||||||
ajax: {
|
|
||||||
url: '{% url 'supplier_search_json'%}',
|
|
||||||
type: "get",
|
|
||||||
data: function () {
|
|
||||||
var params = {
|
|
||||||
{% verbatim %}query: '{{{q}}}'{% endverbatim %}
|
|
||||||
};
|
|
||||||
return params;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
locale: {
|
|
||||||
emptyTitle: 'Search for supplier...'
|
|
||||||
},
|
|
||||||
preprocessData: function(data){
|
|
||||||
var suppliers = [];
|
|
||||||
if(data.length){
|
|
||||||
var len = data.length;
|
|
||||||
for(var i = 0; i < len; i++){
|
|
||||||
var curr = data[i];
|
|
||||||
suppliers.push(
|
|
||||||
{
|
|
||||||
'value': curr.id,
|
|
||||||
'text': curr.name,
|
|
||||||
'disabled': false
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
suppliers.push(
|
|
||||||
{
|
|
||||||
'value': null,
|
|
||||||
'text': "(no selection)"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
return suppliers;
|
|
||||||
},
|
|
||||||
preserveSelected: false
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
{% endblock js %}
|
|
||||||
Reference in New Issue
Block a user