diff --git a/InvenTree/InvenTree/forms.py b/InvenTree/InvenTree/forms.py index 0fb625fb29..b4509446f6 100644 --- a/InvenTree/InvenTree/forms.py +++ b/InvenTree/InvenTree/forms.py @@ -8,7 +8,7 @@ from __future__ import unicode_literals from django import forms from crispy_forms.helper import FormHelper from crispy_forms.layout import Layout, Field -from crispy_forms.bootstrap import PrependedAppendedText +from crispy_forms.bootstrap import PrependedText, AppendedText, PrependedAppendedText from django.contrib.auth.models import User @@ -16,9 +16,9 @@ class HelperForm(forms.ModelForm): """ Provides simple integration of crispy_forms extension. """ # Custom field decorations can be specified here, per form class - prefix = {} - suffix = {} - placeholder = {} + field_prefix = {} + field_suffix = {} + field_placeholder = {} def __init__(self, *args, **kwargs): super(forms.ModelForm, self).__init__(*args, **kwargs) @@ -37,18 +37,18 @@ class HelperForm(forms.ModelForm): layouts = [] for field in self.fields: - prefix = self.prefix.get(field, None) - suffix = self.suffix.get(field, None) - placeholder = self.placeholder.get(field, '') + prefix = self.field_prefix.get(field, None) + suffix = self.field_suffix.get(field, None) + placeholder = self.field_placeholder.get(field, '') # Look for font-awesome icons if prefix and prefix.startswith('fa-'): - prefix = "".format(fa=prefix) + prefix = r"".format(fa=prefix) if suffix and suffix.startswith('fa-'): - suffix = "".format(fa=suffix) + suffix = r"".format(fa=suffix) - if prefix or suffix or placeholder: + if prefix and suffix: layouts.append( Field( PrependedAppendedText( @@ -60,8 +60,30 @@ class HelperForm(forms.ModelForm): ) ) + elif prefix: + layouts.append( + Field( + PrependedText( + field, + prefix, + placeholder=placeholder + ) + ) + ) + + elif suffix: + layouts.append( + Field( + AppendedText( + field, + suffix, + placeholder=placeholder + ) + ) + ) + else: - layouts.append(Field(field)) + layouts.append(Field(field, placeholder=placeholder)) self.helper.layout = Layout(*layouts) diff --git a/InvenTree/order/forms.py b/InvenTree/order/forms.py index 8496fee501..2887ef8892 100644 --- a/InvenTree/order/forms.py +++ b/InvenTree/order/forms.py @@ -93,12 +93,12 @@ class EditPurchaseOrderForm(HelperForm): def __init__(self, *args, **kwargs): - self.prefix = { + self.field_prefix = { 'reference': 'PO', 'link': 'fa-link', } - self.placeholder = { + self.field_placeholder = { 'reference': _('Enter purchase order number'), } @@ -120,12 +120,12 @@ class EditSalesOrderForm(HelperForm): def __init__(self, *args, **kwargs): - self.prefix = { + self.field_prefix = { 'reference': 'SO', 'link': 'fa-link', } - self.placeholder = { + self.field_placeholder = { 'reference': _('Enter sales order number'), } diff --git a/InvenTree/stock/forms.py b/InvenTree/stock/forms.py index cf04396f54..22c302c859 100644 --- a/InvenTree/stock/forms.py +++ b/InvenTree/stock/forms.py @@ -108,11 +108,11 @@ class SerializeStockForm(HelperForm): else: sn = str(sn) - self.prefix = { + self.field_prefix = { 'serial_numbers': 'fa-hashtag', } - self.placeholder = { + self.field_placeholder = { 'serial_numbers': sn } diff --git a/InvenTree/stock/views.py b/InvenTree/stock/views.py index 13ec701c10..c33af4e15a 100644 --- a/InvenTree/stock/views.py +++ b/InvenTree/stock/views.py @@ -717,7 +717,7 @@ class StockItemEdit(AjaxUpdateView): query = query.filter(part=item.part.id) form.fields['supplier_part'].queryset = query - if not item.part.trackable: + if not item.part.trackable or not item.serialized: form.fields.pop('serial') return form