Compare commits

..

No commits in common. "3ec11cf092cfaba70bbe3b8194bf35ebae275e25" and "39b64aeb716b41eb915f6969e761658c06d13d3f" have entirely different histories.

4 changed files with 47 additions and 81 deletions

View File

@ -53,7 +53,7 @@ class AutoCompleteWidget(widgets.Input):
'name_field_name': self.name_field_name,
'prepend': self.prepend,
'name': display_name,
}
}
return context
class AutocompleteForeingKeyField(forms.UUIDField):
@ -72,7 +72,7 @@ class AutocompleteForeingKeyField(forms.UUIDField):
prepend)
self.foreign_model = foreign_model
def clean(self, value):
try:
pre_cleaned_uuid = super().clean(value)
@ -113,8 +113,41 @@ class AddSubStorageForm(ChangeStorageForm):
class DeleteStockForm(forms.Form):
stock_uuid = forms.UUIDField()
class EditStockBaseForm(forms.Form):
class EditWatermarkForm(forms.Form):
stock_uuid = forms.UUIDField()
watermark_active = forms.BooleanField(required=False) #If it is false, the webbrowser won't send it at all. Therefore we have to set it to required=False
watermark = forms.IntegerField(min_value=0)
def clean(self):
cleaned_data = super().clean()
id = cleaned_data.get("stock_uuid")
if not id:
raise ValidationError("No stock UUID given")
stock = None
try:
stock = parts_models.Stock.objects.get(id=id)
except:
raise ValidationError("Stock with uuid %s does not exist" % (id))
cleaned_data['stock'] = stock
return cleaned_data
def save(self):
stock = self.cleaned_data['stock']
active = self.cleaned_data['watermark_active']
watermark = self.cleaned_data['watermark']
if not active:
watermark = -1
stock.watermark = watermark
stock.save()
class EditStockAmountForm(forms.Form):
stock_uuid = forms.UUIDField()
amount = forms.IntegerField(min_value=0)
def clean(self):
cleaned_data = super().clean()
@ -132,40 +165,12 @@ class EditStockBaseForm(forms.Form):
return cleaned_data
class EditWatermarkForm(EditStockBaseForm):
watermark_active = forms.BooleanField(required=False) #If it is false, the webbrowser won't send it at all. Therefore we have to set it to required=False
watermark = forms.IntegerField(min_value=0)
def save(self):
stock = self.cleaned_data['stock']
active = self.cleaned_data['watermark_active']
watermark = self.cleaned_data['watermark']
if not active:
watermark = -1
stock.watermark = watermark
stock.save()
class EditLotForm(EditStockBaseForm):
lot = forms.IntegerField(min_value=0)
def save(self):
stock = self.cleaned_data['stock']
lot = self.cleaned_data['lot']
stock.lot = lot
stock.save()
class EditStockAmountForm(EditStockBaseForm):
amount = forms.IntegerField(min_value=0)
def save(self, increase: bool):
stock = self.cleaned_data['stock']
amount = self.cleaned_data['amount']
if not increase:
amount = -amount
amount = -amount
return stock.atomic_increment(amount)
@ -190,7 +195,7 @@ class AddStockForm(forms.Form):
cleaned_data['component'] = component
return cleaned_data
def save(self, storage):
component = self.cleaned_data.get('component')
amount = self.cleaned_data.get('amount')
@ -249,7 +254,7 @@ class DistributorNumberDeleteForm(forms.Form):
class ComponentParameterDeleteForm(forms.Form):
param_num = forms.UUIDField(required=True)
model = parts_models.ComponentParameter
def clean_param_num(self):
my_uuid = self.cleaned_data['param_num']
try:
@ -318,7 +323,7 @@ class ComponentParameterCreateForm(forms.Form):
if not ptype:
raise ValidationError('No valid parameter type selected')
if not value:
raise ValidationError('No valid parameter value')
@ -330,7 +335,7 @@ class ComponentParameterCreateForm(forms.Form):
data['number_value'] = number
else:
pass
def save(self, component):
param_type = self.cleaned_data['parameter_type']
if param_type.parameter_type == 'F':
@ -359,6 +364,6 @@ class QrSearchForm(forms.Form):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
qr_search = forms.CharField(label='qr_search', validators=[my_qr_validator])

View File

@ -213,16 +213,6 @@ class StockViewDetail(LoginRequiredMixin, BaseTemplateMixin, DetailView):
context = self.get_context_data(**kwargs)
return self.render_to_response(context)
def handle_update_lot(self, request, **kwargs):
edit_form = EditLotForm(data=request.POST)
if edit_form.is_valid():
edit_form.save()
else:
pass # Todo: Handle error
context = self.get_context_data(**kwargs)
return self.render_to_response(context)
def handle_amount_change_post(self, request, increase, **kwargs):
edit_form = EditStockAmountForm(data=request.POST)
if edit_form.is_valid():
@ -262,8 +252,6 @@ class StockViewDetail(LoginRequiredMixin, BaseTemplateMixin, DetailView):
return self.handle_del_stock_post(request, **kwargs)
elif 'submit-edit-watermark' in request.POST:
return self.handle_update_watermark(request, **kwargs)
elif 'submit-edit-lot' in request.POST:
return self.handle_update_lot(request, **kwargs)
elif 'submit-amount-reduce' in request.POST:
return self.handle_amount_change_post(request, False, **kwargs)
elif 'submit-amount-increase' in request.POST:

View File

@ -39,7 +39,7 @@ needs following context:
<form method="post">
{% csrf_token %}
<input type="hidden" name="stock_uuid" value="{{stock.id}}">
<div class="input-group mb-3">
<div class="input-group mb-3">
<div class="input-group-text">
<input type="checkbox" class="form-check-input mt-0" name="watermark_active" id="ch-stk-watermark-act-{{stock.id}}" {% if stock.watermark >= 0 %}checked{%endif%}>
</div>
@ -47,16 +47,7 @@ needs following context:
<input type="submit" class="btn btn-primary" name="submit-edit-watermark" value="Update Watermark">
</div>
</form>
<form method="post">
{% csrf_token %}
<input type="hidden" name="stock_uuid" value="{{stock.id}}">
<div class="input-group mb-3">
<input type="text" name="lot" id="ch-stk-lot-{{stock.id}}" class="form-control" value="{{stock.lot}}" required>
<input type="submit" class="btn btn-primary" name="submit-edit-lot" value="Update Lot">
</div>
</form>
</div>
</div>
</div>
</div>
</div>

View File

@ -21,28 +21,13 @@
{% qr_from_text object.get_qr_code size="m" image_format="svg" %}
</div>
<div class="row">
<h4>{{storage.name}}
{% if storage.verbose_name %}
<small>
({{storage.verbose_name}})
</small>
{% endif %}
{% if storage.is_template %}
<small>
(template)
</small>
{% endif %}
</h4>
<h4>{{storage.name}}{% if storage.verbose_name %}<small> ({{storage.verbose_name}})</small>{% endif %}</h4>
</div>
<div class="row">
{% if object.parent_storage %}
<h1>Sub-Storages <a class="btn btn-secondary" href="{% url 'parts-stocks-detail' uuid=object.parent_storage.id %}">Parent Storage</a>
{% else %}
<h1>Sub-Storages <a class="btn btn-secondary" href="{% url 'parts-stocks-detail' uuid=object.parent_storage.id %}">Parent Storage</a> {% else %}
<h1>Sub-Storages <a class="btn btn-secondary" href="{% url 'parts-stocks'%}">Stock Overview</a>
{% endif %}
{% if storage.template %}
<a class="btn btn-secondary" href="{% url 'parts-stocks-detail' uuid=storage.template.id %}">Template</a>
{% endif %}
<button type="button" class="btn btn-danger" data-bs-toggle="modal" data-bs-target="#delete-storage-modal">Delete</button>
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#add-sub-modal"><i class="bi bi-plus-circle"></i></button>
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#change-modal"><i class="bi bi-pencil-square"></i></button>
@ -51,7 +36,7 @@
{% for storage in storages %}
<a href="{% url 'parts-stocks-detail' uuid=storage.id %}" class="text-decoration-none">
<li class="list-group-item list-group-item-action justify-content-between align-items-center d-flex">
<div>
<div>
<h5>{{storage.name}}{% if storage.verbose_name %}<small> ({{storage.verbose_name}})</small>{% endif %}</h5>
Responsible: {{ storage.responsible }}
</div>
@ -99,9 +84,6 @@
<span class="text-secondary"><br>Lot: {{stock.lot}}</span>
{% endif %}
</div>
<div class="flex-grow-2 ms-3 d-none d-lg-block">
{% qr_from_text stock.get_qr_code size="6" image_format="svg" %}
</div>
<div class="ms-3">
Amount: {{stock.amount}}
{% if stock.watermark >= 0 %}
@ -133,7 +115,7 @@
{% with add_storage_form as form %}
{% include 'parts/modals/add-substorage-modal.html' %}
{% endwith %}
<!-- Modal to change current storage-->
<!-- Modal to change current storag-->
{% with change_storage_form as form %}
{% include 'parts/modals/change-storage-modal.html' %}
{% endwith %}