Add a lot of stuff.. Can't remember
This commit is contained in:
@@ -104,4 +104,99 @@ class AddStockForm(forms.Form):
|
||||
|
||||
new_stock = parts_models.Stock.objects.create(storage=storage, component=component, watermark=watermark, amount=amount)
|
||||
new_stock.save()
|
||||
|
||||
|
||||
class EditComponentForm(forms.Form):
|
||||
name = forms.CharField(required=True)
|
||||
datasheet_link = forms.CharField(max_length=300, required=False)
|
||||
description = forms.CharField(required=False, widget=forms.Textarea)
|
||||
|
||||
# Look up these fields later. Will be autocompleted in UI
|
||||
manufacturer = forms.CharField(required=False)
|
||||
component_type = forms.CharField(required=False, label='Component Type')
|
||||
pref_distri = forms.CharField(required=False, label='Preferred Distributor')
|
||||
package = forms.CharField(required=False)
|
||||
|
||||
image = forms.ImageField(required=False)
|
||||
|
||||
def __init__(self, *args, instance=None, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
self.instance = instance
|
||||
if instance:
|
||||
self.fields['name'].initial = instance.name
|
||||
self.fields['datasheet_link'].initial = instance.datasheet_link
|
||||
if instance.component_type:
|
||||
self.fields['component_type'].initial = instance.component_type.class_name
|
||||
self.fields['description'].initial = instance.description
|
||||
if instance.manufacturer:
|
||||
self.fields['manufacturer'].initial = instance.manufacturer.name
|
||||
if instance.package:
|
||||
self.fields['package'].initial = instance.package.name
|
||||
if instance.pref_distri:
|
||||
self.fields['pref_distri'].initial = instance.pref_distri.name
|
||||
self.fields['image'].initial = instance.image
|
||||
|
||||
def clean_component_type(self):
|
||||
data = self.cleaned_data['component_type'].strip()
|
||||
|
||||
if len(data) == 0:
|
||||
self.cleaned_data['component_type_object'] = None
|
||||
return
|
||||
|
||||
try:
|
||||
self.cleaned_data['component_type_object'] = parts_models.ComponentType.objects.get(class_name=data)
|
||||
except:
|
||||
raise ValidationError('Invalid Component Type')
|
||||
|
||||
def clean_manufacturer(self):
|
||||
data = self.cleaned_data['manufacturer'].strip()
|
||||
|
||||
if len(data) == 0:
|
||||
self.cleaned_data['manufacturer_object'] = None
|
||||
return
|
||||
try:
|
||||
self.cleaned_data['manufacturer_object'] = parts_models.Manufacturer.objects.get(name=data)
|
||||
except:
|
||||
raise ValidationError('Invalid Manufacturer')
|
||||
|
||||
def clean_pref_distri(self):
|
||||
data = self.cleaned_data['pref_distri'].strip()
|
||||
|
||||
if len(data) == 0:
|
||||
self.cleaned_data['pref_distri_object'] = None
|
||||
return
|
||||
try:
|
||||
self.cleaned_data['pref_distri_object'] = parts_models.Distributor.objects.get(name=data)
|
||||
except:
|
||||
raise ValidationError('Invalid Distributor')
|
||||
|
||||
def clean_package(self):
|
||||
data = self.cleaned_data['package'].strip()
|
||||
|
||||
if len(data) == 0:
|
||||
self.cleaned_data['package_object'] = None
|
||||
return
|
||||
try:
|
||||
self.cleaned_data['package_object'] = parts_models.Package.objects.get(name=data)
|
||||
except:
|
||||
raise ValidationError('Invalid Package')
|
||||
|
||||
|
||||
def save(self):
|
||||
if self.instance is None:
|
||||
self.instance = parts_models.Component.objects.create()
|
||||
|
||||
self.instance.name = self.cleaned_data['name']
|
||||
self.instance.datasheet_link = self.cleaned_data['datasheet_link']
|
||||
self.instance.description = self.cleaned_data['description']
|
||||
|
||||
if bool(self.cleaned_data['image']) is False:
|
||||
self.instance.image = None
|
||||
else:
|
||||
self.instance.image = self.cleaned_data['image']
|
||||
|
||||
self.instance.manufacturer = self.cleaned_data['manufacturer_object']
|
||||
self.instance.pref_distri = self.cleaned_data['pref_distri_object']
|
||||
self.instance.package = self.cleaned_data['package_object']
|
||||
self.instance.component_type = self.cleaned_data['component_type_object']
|
||||
self.instance.save()
|
||||
|
@@ -15,7 +15,7 @@ from .models import Storage, Stock, Component, Distributor, Manufacturer, Packag
|
||||
from .qr_parser import QrCodeValidator
|
||||
from django.core.paginator import Paginator
|
||||
from django.core.exceptions import ValidationError
|
||||
from .forms import MyTestForm, AddSubStorageForm, DeleteStockForm, EditWatermarkForm, EditStockAmountForm, AddStockForm
|
||||
from .forms import MyTestForm, AddSubStorageForm, DeleteStockForm, EditWatermarkForm, EditStockAmountForm, AddStockForm, EditComponentForm
|
||||
from django.db.models import Q
|
||||
from django.db.models.functions import Lower
|
||||
import uuid
|
||||
@@ -233,6 +233,10 @@ class StockViewDetail(LoginRequiredMixin, BaseTemplateMixin, DetailView):
|
||||
if search is None or search == '':
|
||||
return stocks_in_storage
|
||||
|
||||
if search.startswith('[comp_uuid]'):
|
||||
search = search.replace('[comp_uuid]', '')
|
||||
|
||||
|
||||
# Check if the searhc equals a UUID
|
||||
test_uuid = None
|
||||
try:
|
||||
@@ -391,11 +395,31 @@ class ComponentDetailView(LoginRequiredMixin, BaseTemplateMixin, DetailView):
|
||||
self.base_title = 'Component / '+self.object.name
|
||||
context = super().get_context_data(**kwargs)
|
||||
context['component'] = self.object
|
||||
|
||||
|
||||
|
||||
context['edit_form'] = EditComponentForm(instance=self.object)
|
||||
return context
|
||||
|
||||
def handle_submit_edit_post(self, request, **kwargs):
|
||||
form_error = False
|
||||
|
||||
form = EditComponentForm(instance=self.object, data=request.POST, files=request.FILES)
|
||||
if form.is_valid():
|
||||
form.save()
|
||||
else:
|
||||
print("Error")
|
||||
form_error = True
|
||||
|
||||
context = self.get_context_data(**kwargs)
|
||||
if form_error:
|
||||
context['edit_form'] = form
|
||||
return self.render_to_response(context)
|
||||
|
||||
def post(self, request, *args, **kwargs):
|
||||
self.object = self.get_object()
|
||||
if 'submit-edit-comp' in request.POST:
|
||||
return self.handle_submit_edit_post(request, **kwargs)
|
||||
|
||||
super().post(request, *args, **kwargs)
|
||||
|
||||
class PackageDetailView(LoginRequiredMixin, BaseTemplateMixin, DetailView):
|
||||
template_name = 'parts/packages-detail.html'
|
||||
model = Package
|
||||
|
Reference in New Issue
Block a user