Add a lot of stuff.. Can't remember

This commit is contained in:
2021-11-10 19:38:39 +01:00
parent 7eb2652433
commit e2aba765d4
6 changed files with 213 additions and 18 deletions

View File

@@ -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()

View File

@@ -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