Further improve stuff nad add model fro print jobs

This commit is contained in:
Mario Hüttel 2022-01-01 13:52:52 +01:00
parent 38bca5caf9
commit c4a26f8a98
5 changed files with 56 additions and 7 deletions

View File

@ -16,10 +16,12 @@ class AutoCompleteWidget(widgets.Input):
def get_context(self, name, value, attrs): def get_context(self, name, value, attrs):
context = super().get_context(name, value, attrs) context = super().get_context(name, value, attrs)
if value is not None:
try: try:
instance = self.foreign_model.objects.get(id=uuid.UUID(value)) instance = self.foreign_model.objects.get(id=uuid.UUID(value))
except Exception as ex: except Exception as ex:
print(ex) instance = None
else:
instance = None instance = None
image = None image = None

View File

@ -0,0 +1,34 @@
# Generated by Django 3.2.5 on 2022-01-01 12:50
from django.conf import settings
import django.core.validators
from django.db import migrations, models
import django.db.models.deletion
import uuid
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('parts', '0007_stock_lot'),
]
operations = [
migrations.AlterField(
model_name='stock',
name='lot',
field=models.CharField(blank=True, default='', max_length=255),
preserve_default=False,
),
migrations.CreateModel(
name='QrPrintJob',
fields=[
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True)),
('qrdata', models.CharField(blank=True, max_length=256)),
('text', models.TextField(blank=True, max_length=512)),
('print_count', models.PositiveIntegerField(default=1, validators=[django.core.validators.MinValueValidator(0), django.core.validators.MaxValueValidator(32)])),
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
),
]

View File

@ -5,6 +5,7 @@ from django.contrib.auth.models import User as AuthUser
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django.core.validators import RegexValidator from django.core.validators import RegexValidator
from django.dispatch import receiver from django.dispatch import receiver
from django.core.validators import MinValueValidator, MaxValueValidator
import os import os
import uuid import uuid
@ -227,7 +228,7 @@ class Stock(models.Model):
storage = models.ForeignKey(Storage, on_delete=models.PROTECT, blank=True, null=True) storage = models.ForeignKey(Storage, on_delete=models.PROTECT, blank=True, null=True)
amount = models.PositiveIntegerField() amount = models.PositiveIntegerField()
watermark = models.IntegerField() # negative is no watermark watermark = models.IntegerField() # negative is no watermark
lot = models.CharField(max_length=255, null=True, blank=True) lot = models.CharField(max_length=255, null=False, blank=True)
def atomic_increment(self, increment): def atomic_increment(self, increment):
if self.amount + increment < 0: if self.amount + increment < 0:
@ -266,6 +267,18 @@ class DistributorNum(models.Model):
def __str__(self): def __str__(self):
return self.component.name + '@' + self.distributor.name + ': ' + self.distributor_part_number return self.component.name + '@' + self.distributor.name + ': ' + self.distributor_part_number
class QrPrintJob(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False, unique=True)
user = models.ForeignKey(AuthUser, on_delete=models.CASCADE, null=False, blank=False)
qrdata = models.CharField(max_length=256, blank=True, null=False)
text = models.TextField(max_length=512, blank=True, null=False)
print_count = models.PositiveIntegerField(default=1, validators=[MinValueValidator(0), MaxValueValidator(32)])
def clean(self):
super().clean()
if self.qrdata == '' and self.text == '':
raise ValidationError('Either QR Data or text must be set')
# These functions ensure that the uploaded images are deleted if the model is deleted or the image file is changed. # These functions ensure that the uploaded images are deleted if the model is deleted or the image file is changed.
@receiver(models.signals.post_delete, sender=Component) @receiver(models.signals.post_delete, sender=Component)
@receiver(models.signals.post_delete, sender=Distributor) @receiver(models.signals.post_delete, sender=Distributor)

View File

@ -119,7 +119,7 @@
</div> </div>
</div> </div>
</div> </div>
<form action="" method="post"> <form action="" method="post" enctype="multipart/form-data">
{% csrf_token %} {% csrf_token %}
{{comp_form|crispy}} {{comp_form|crispy}}
<input type="submit" name="submit-edit-component" value="Submit"> <input type="submit" name="submit-edit-component" value="Submit">

View File

@ -1,5 +1,5 @@
<div class="dropdown"> <div class="dropdown">
<input autocomplete="off" id="{{widget.attrs.id}}-search-input" data-ac-url="{{custom.search_url}}" data-bs-toggle="dropdown" class="form-control{% if widget.errors %} is-invalid{% endif %}" type="text" placeholder="Search..."> <input autocomplete="off" id="{{widget.attrs.id}}" data-ac-url="{{custom.search_url}}" data-bs-toggle="dropdown" type="text" placeholder="Search..." class="{{widget.attrs.class}}">
<ul id="{{widget.attrs.id}}-ac-ul" class="dropdown-menu"> <ul id="{{widget.attrs.id}}-ac-ul" class="dropdown-menu">
</ul> </ul>
<div class="d-flex align-items-center" id="{{widget.attrs.id}}-dflex-container"> <div class="d-flex align-items-center" id="{{widget.attrs.id}}-dflex-container">