mirror of
https://github.com/nottinghamtec/PyRIGS.git
synced 2026-01-17 13:32:15 +00:00
Cables can now be created.
This commit is contained in:
@@ -5,21 +5,25 @@ from assets import models
|
|||||||
|
|
||||||
|
|
||||||
class AssetForm(forms.ModelForm):
|
class AssetForm(forms.ModelForm):
|
||||||
class Meta:
|
|
||||||
model = models.Asset
|
|
||||||
fields = '__all__'
|
|
||||||
|
|
||||||
def clean_date_sold(self):
|
def clean_date_sold(self):
|
||||||
if self.cleaned_data["date_sold"] and self.cleaned_data["date_acquired"] > self.cleaned_data["date_sold"]:
|
if self.cleaned_data["date_sold"] and self.cleaned_data["date_acquired"] > self.cleaned_data["date_sold"]:
|
||||||
raise ValidationError("Cannot sell an item before it is acquired")
|
raise ValidationError("Cannot sell an item before it is acquired")
|
||||||
return self.cleaned_data["date_sold"]
|
return self.cleaned_data["date_sold"]
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = models.Asset
|
||||||
|
fields = '__all__'
|
||||||
|
widgets = {
|
||||||
|
'is_cable' : forms.CheckboxInput()
|
||||||
|
}
|
||||||
|
|
||||||
class CableForm(AssetForm):
|
class CableForm(AssetForm):
|
||||||
class Meta:
|
class Meta(AssetForm.Meta):
|
||||||
model = models.Cable
|
model = models.Cable
|
||||||
fields = '__all__'
|
|
||||||
|
|
||||||
class SupplierForm(forms.ModelForm):
|
class SupplierForm(forms.Form):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.Supplier
|
model = models.Supplier
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ class Command(BaseCommand):
|
|||||||
self.create_statuses()
|
self.create_statuses()
|
||||||
self.create_suppliers()
|
self.create_suppliers()
|
||||||
self.create_assets()
|
self.create_assets()
|
||||||
|
self.create_connectors()
|
||||||
|
|
||||||
def create_categories(self):
|
def create_categories(self):
|
||||||
categories = ['Case', 'Video', 'General', 'Sound', 'Lighting', 'Rigging']
|
categories = ['Case', 'Video', 'General', 'Sound', 'Lighting', 'Rigging']
|
||||||
@@ -60,3 +61,14 @@ class Command(BaseCommand):
|
|||||||
asset.purchased_from = random.choice(suppliers)
|
asset.purchased_from = random.choice(suppliers)
|
||||||
|
|
||||||
asset.save()
|
asset.save()
|
||||||
|
|
||||||
|
def create_connectors(self):
|
||||||
|
connectors = [
|
||||||
|
{ "description":"13A UK", "current_rating":13, "voltage_rating":230, "num_pins":3 },
|
||||||
|
{ "description":"16A", "current_rating":16, "voltage_rating":230, "num_pins":3 },
|
||||||
|
{ "description":"32/3", "current_rating":32, "voltage_rating":400, "num_pins":5 },
|
||||||
|
{ "description":"Socapex", "current_rating":23, "voltage_rating":600, "num_pins":19 },
|
||||||
|
]
|
||||||
|
for connector in connectors:
|
||||||
|
conn = models.Connector.objects.create(**connector)
|
||||||
|
conn.save()
|
||||||
@@ -21,7 +21,7 @@ class Command(BaseCommand):
|
|||||||
self.delete_objects(models.AssetCategory)
|
self.delete_objects(models.AssetCategory)
|
||||||
self.delete_objects(models.AssetStatus)
|
self.delete_objects(models.AssetStatus)
|
||||||
self.delete_objects(models.Supplier)
|
self.delete_objects(models.Supplier)
|
||||||
self.delete_objects(models.Collection)
|
self.delete_objects(models.Connector)
|
||||||
self.delete_objects(models.Asset)
|
self.delete_objects(models.Asset)
|
||||||
|
|
||||||
def delete_objects(self, model):
|
def delete_objects(self, model):
|
||||||
|
|||||||
@@ -58,7 +58,7 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
{% render_field form.is_cable|attr:'onchange=checkIfCableHidden()' value=object.is_cable %} <label for="{{ form.is_cable.id_for_label }}">Cable?</label>
|
{% render_field form.is_cable|attr:'onchange=checkIfCableHidden()' %} <label for="{{ form.is_cable.id_for_label }}">Cable?</label>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="{{ form.status.id_for_label }}" >Status</label>
|
<label for="{{ form.status.id_for_label }}" >Status</label>
|
||||||
<select class="form-control" name="{{ form.status.name }}" id="{{ form.status.id_for_label }}" required>
|
<select class="form-control" name="{{ form.status.name }}" id="{{ form.status.id_for_label }}" required>
|
||||||
@@ -146,8 +146,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="{{ cable_form.plug.id_for_label }}">Plug</label>
|
<label for="{{ form.plug.id_for_label }}">Plug</label>
|
||||||
<select name="{{ cable_form.plug.name }}" id="{{ cable_form.plug.id_for_label }}" class="form-control">
|
<select name="{{ form.plug.name }}" id="{{ form.plug.id_for_label }}" class="form-control">
|
||||||
<option value="None">
|
<option value="None">
|
||||||
{% for connector in connectors %}
|
{% for connector in connectors %}
|
||||||
<option value="{{ connector.pk }}">
|
<option value="{{ connector.pk }}">
|
||||||
@@ -157,8 +157,8 @@
|
|||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="{{ cable_form.socket.id_for_label }}">Socket</label>
|
<label for="{{ form.socket.id_for_label }}">Socket</label>
|
||||||
<select name="{{ cable_form.socket.name }}" id="{{ cable_form.socket.id_for_label }}" class="form-control">
|
<select name="{{ form.socket.name }}" id="{{ form.socket.id_for_label }}" class="form-control">
|
||||||
<option value="None">
|
<option value="None">
|
||||||
{% for connector in connectors %}
|
{% for connector in connectors %}
|
||||||
<option value="{{ connector.pk }}">
|
<option value="{{ connector.pk }}">
|
||||||
@@ -168,22 +168,22 @@
|
|||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="{{ cable_form.length.id_for_label }}">Length</label>
|
<label for="{{ form.length.id_for_label }}">Length</label>
|
||||||
{% render_field cable_form.length|add_class:'form-control' %}
|
{% render_field form.length|add_class:'form-control' %}
|
||||||
<span class="input-group-addon">{{ cable_form.length.help_text }}</span>
|
<span class="input-group-addon">{{ form.length.help_text }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="{{ cable_form.csa.id_for_label }}">Cross Sectional Area</label>
|
<label for="{{ form.csa.id_for_label }}">Cross Sectional Area</label>
|
||||||
{% render_field cable_form.csa|add_class:'form-control' value=object.csa %}
|
{% render_field form.csa|add_class:'form-control' value=object.csa %}
|
||||||
<span class="input-group-addon">{{ cable_form.csa.help_text }}</span>
|
<span class="input-group-addon">{{ form.csa.help_text }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="{{ cable_form.circuits.id_for_label }}">Circuits</label>
|
<label for="{{ form.circuits.id_for_label }}">Circuits</label>
|
||||||
{% render_field cable_form.circuits|add_class:'form-control' value=object.circuits %}
|
{% render_field form.circuits|add_class:'form-control' value=object.circuits %}
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="{{ cable_form.cores.id_for_label }}">Cores</label>
|
<label for="{{ form.cores.id_for_label }}">Cores</label>
|
||||||
{% render_field cable_form.cores|add_class:'form-control' value=object.cores %}
|
{% render_field form.cores|add_class:'form-control' value=object.cores %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -216,7 +216,7 @@
|
|||||||
{% block js%}
|
{% block js%}
|
||||||
<script>
|
<script>
|
||||||
function checkIfCableHidden() {
|
function checkIfCableHidden() {
|
||||||
if(document.getElementById("id_category").value == "3" && document.getElementById("id_is_cable").checked) { //TODO: CHANGE THIS IN PRODUCTION
|
if(document.getElementById("id_category").value == "33" && document.getElementById("id_is_cable").checked) { //TODO: CHANGE THIS IN PRODUCTION
|
||||||
document.getElementById("cable-table").hidden = false;
|
document.getElementById("cable-table").hidden = false;
|
||||||
} else {
|
} else {
|
||||||
document.getElementById("cable-table").hidden = true;
|
document.getElementById("cable-table").hidden = true;
|
||||||
|
|||||||
@@ -13,12 +13,6 @@ from dateutil import parser
|
|||||||
import simplejson as json
|
import simplejson as json
|
||||||
from assets import models, forms
|
from assets import models, forms
|
||||||
|
|
||||||
class CableFormMixin:
|
|
||||||
def get_context_data(self, **kwargs):
|
|
||||||
context = super().get_context_data(**kwargs)
|
|
||||||
context["cable_form"] = forms.CableForm()
|
|
||||||
return context
|
|
||||||
|
|
||||||
class AssetList(LoginRequiredMixin, generic.ListView):
|
class AssetList(LoginRequiredMixin, generic.ListView):
|
||||||
model = models.Asset
|
model = models.Asset
|
||||||
template_name = 'asset_list.html'
|
template_name = 'asset_list.html'
|
||||||
@@ -64,7 +58,7 @@ class AssetSearch(AssetList):
|
|||||||
|
|
||||||
return JsonResponse(result, safe=False)
|
return JsonResponse(result, safe=False)
|
||||||
|
|
||||||
class AssetDetail(LoginRequiredMixin, CableFormMixin, generic.DetailView):
|
class AssetDetail(LoginRequiredMixin, generic.DetailView):
|
||||||
model = models.Asset
|
model = models.Asset
|
||||||
template_name = 'asset_update.html'
|
template_name = 'asset_update.html'
|
||||||
|
|
||||||
@@ -74,27 +68,29 @@ class AssetDetail(LoginRequiredMixin, CableFormMixin, generic.DetailView):
|
|||||||
# template_name = 'asset_update.html'
|
# template_name = 'asset_update.html'
|
||||||
# # success_url = reverse_lazy('asset_list')
|
# # success_url = reverse_lazy('asset_list')
|
||||||
|
|
||||||
class AssetEdit(LoginRequiredMixin, CableFormMixin, generic.UpdateView):
|
class AssetEdit(LoginRequiredMixin, generic.UpdateView):
|
||||||
template_name = 'asset_update.html'
|
template_name = 'asset_update.html'
|
||||||
model = models.Asset
|
model = models.Asset
|
||||||
form_class = forms.AssetForm
|
|
||||||
|
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
context = super(AssetEdit, self).get_context_data(**kwargs)
|
context = super().get_context_data(**kwargs)
|
||||||
context['form'] = forms.AssetForm
|
context['form'] = forms.AssetForm
|
||||||
# context['asset_names'] = models.Asset.objects.values_list('asset_id', 'description').order_by('-date_acquired')[]
|
|
||||||
|
|
||||||
context['edit'] = True
|
context['edit'] = True
|
||||||
|
|
||||||
return context
|
return context
|
||||||
|
|
||||||
|
def get_form_class(self):
|
||||||
|
if self.object.is_cable:
|
||||||
|
return forms.CableForm
|
||||||
|
return forms.AssetForm
|
||||||
|
|
||||||
def form_invalid(self, form):
|
def form_invalid(self, form):
|
||||||
return super().form_invalid(form)
|
return super().form_invalid(form)
|
||||||
|
|
||||||
def get_success_url(self):
|
def get_success_url(self):
|
||||||
return reverse("asset_detail", kwargs={"pk":self.object.id})
|
return reverse("asset_detail", kwargs={"pk":self.object.id})
|
||||||
|
|
||||||
class AssetCreate(LoginRequiredMixin, CableFormMixin, generic.CreateView):
|
class AssetCreate(LoginRequiredMixin, generic.CreateView):
|
||||||
template_name = 'asset_create.html'
|
template_name = 'asset_create.html'
|
||||||
model = models.Asset
|
model = models.Asset
|
||||||
form_class = forms.AssetForm
|
form_class = forms.AssetForm
|
||||||
@@ -106,6 +102,14 @@ class AssetCreate(LoginRequiredMixin, CableFormMixin, generic.CreateView):
|
|||||||
context["connectors"] = models.Connector.objects.all()
|
context["connectors"] = models.Connector.objects.all()
|
||||||
return context
|
return context
|
||||||
|
|
||||||
|
def get_form_class(self):
|
||||||
|
if self.request.method == "POST":
|
||||||
|
if 'is_cable' in self.request.POST:
|
||||||
|
return forms.CableForm
|
||||||
|
return forms.AssetForm
|
||||||
|
else:
|
||||||
|
return forms.CableForm #For GET, so that all form fields can be placed
|
||||||
|
|
||||||
def get_success_url(self):
|
def get_success_url(self):
|
||||||
return reverse("asset_detail", kwargs={"pk":self.object.id})
|
return reverse("asset_detail", kwargs={"pk":self.object.id})
|
||||||
|
|
||||||
@@ -116,16 +120,14 @@ class DuplicateMixin:
|
|||||||
return self.render_to_response(self.get_context_data())
|
return self.render_to_response(self.get_context_data())
|
||||||
|
|
||||||
class AssetDuplicate(DuplicateMixin, AssetCreate):
|
class AssetDuplicate(DuplicateMixin, AssetCreate):
|
||||||
template_name = 'asset_create.html'
|
|
||||||
model = models.Asset
|
model = models.Asset
|
||||||
form_class = forms.AssetForm
|
|
||||||
|
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
context = super(AssetCreate, self).get_context_data(**kwargs)
|
context = super().get_context_data(**kwargs)
|
||||||
context["create"] = None
|
context["create"] = None
|
||||||
context["duplicate"] = True
|
context["duplicate"] = True
|
||||||
context['previous_asset_id'] = self.get_object().asset_id
|
context['previous_asset_id'] = self.get_object().asset_id
|
||||||
context["previous_asset_pk"] = pk = self.kwargs.get(self.pk_url_kwarg)
|
context["previous_asset_pk"] = self.kwargs.get(self.pk_url_kwarg)
|
||||||
return context
|
return context
|
||||||
|
|
||||||
@login_required()
|
@login_required()
|
||||||
|
|||||||
Reference in New Issue
Block a user