mirror of
https://github.com/nottinghamtec/PyRIGS.git
synced 2026-01-17 05:22:16 +00:00
55 lines
1.9 KiB
Python
55 lines
1.9 KiB
Python
from django import forms
|
|
|
|
from assets import models
|
|
from django.db.models import Q
|
|
|
|
|
|
class AssetForm(forms.ModelForm):
|
|
related_models = {
|
|
'asset': models.Asset,
|
|
'supplier': models.Supplier
|
|
}
|
|
|
|
class Meta:
|
|
model = models.Asset
|
|
fields = '__all__'
|
|
exclude = ['asset_id_prefix', 'asset_id_number', 'last_audited_at', 'last_audited_by']
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super().__init__(*args, **kwargs)
|
|
self.fields['date_sold'].widget.format = '%Y-%m-%d'
|
|
self.fields['date_acquired'].widget.format = '%Y-%m-%d'
|
|
|
|
|
|
class AssetAuditForm(AssetForm):
|
|
class Meta(AssetForm.Meta):
|
|
# Prevents assets losing existing data that isn't included in the audit form
|
|
exclude = ['asset_id_prefix', 'asset_id_number', 'last_audited_at', 'last_audited_by',
|
|
'parent', 'purchased_from', 'purchase_price', 'comments']
|
|
|
|
|
|
class AssetSearchForm(forms.Form):
|
|
query = forms.CharField(required=False)
|
|
category = forms.ModelMultipleChoiceField(models.AssetCategory.objects.all(), required=False)
|
|
status = forms.ModelMultipleChoiceField(models.AssetStatus.objects.all(), required=False)
|
|
|
|
|
|
class SupplierForm(forms.ModelForm):
|
|
class Meta:
|
|
model = models.Supplier
|
|
fields = '__all__'
|
|
|
|
|
|
class CableTypeForm(forms.ModelForm):
|
|
class Meta:
|
|
model = models.CableType
|
|
fields = '__all__'
|
|
|
|
def clean(self):
|
|
form_data = self.cleaned_data
|
|
queryset = models.CableType.objects.filter(Q(plug=form_data['plug']) & Q(socket=form_data['socket']) & Q(circuits=form_data['circuits']) & Q(cores=form_data['cores']))
|
|
# Being identical to itself shouldn't count...
|
|
if queryset.exists() and self.instance.pk != queryset[0].pk:
|
|
raise forms.ValidationError("A cable type that exactly matches this one already exists, please use that instead.", code="notunique")
|
|
return form_data
|