Custom date picker field

- Prevents picker from being "required" by the form
This commit is contained in:
Oliver Walters 2021-01-02 21:50:10 +11:00
parent 03276629c2
commit 2b57ffeb08
2 changed files with 35 additions and 7 deletions

View File

@ -5,10 +5,13 @@ from __future__ import unicode_literals
from .validators import allowable_url_schemes
from django.utils.translation import ugettext as _
from django.forms.fields import URLField as FormURLField
from django.db import models as models
from django.core import validators
from django import forms
from decimal import Decimal
import InvenTree.helpers
@ -31,6 +34,32 @@ class InvenTreeURLField(models.URLField):
})
class InvenTreeDatePickerFormField(forms.DateField):
"""
Custom date-picker field
"""
def __init__(self, **kwargs):
help_text = kwargs.get('help_text', _('Enter date'))
required = kwargs.get('required', False)
initial = kwargs.get('initial', None)
widget = forms.DateInput(
attrs={
'type': 'date',
}
)
forms.DateField.__init__(
self,
required=required,
initial=initial,
help_text=help_text,
widget=widget
)
def round_decimal(value, places):
"""
Round value to the specified number of places.

View File

@ -10,6 +10,7 @@ from django import forms
from InvenTree.forms import HelperForm
from InvenTree.fields import RoundingDecimalFormField
from InvenTree.fields import InvenTreeDatePickerFormField
from .models import Build, BuildItem, BuildOrderAttachment
@ -26,18 +27,16 @@ class EditBuildForm(HelperForm):
'batch': 'fa-layer-group',
'serial-numbers': 'fa-hashtag',
'location': 'fa-map-marker-alt',
'target_date': 'fa-calendar-alt',
}
field_placeholder = {
'reference': _('Build Order reference')
'reference': _('Build Order reference'),
'target_date': _('Order target date'),
}
# TODO: Make this a more "presentable" date picker
# TODO: Currently does not render super nicely with crispy forms
target_date = forms.DateField(
widget=forms.DateInput(
attrs={'type': 'date'}
)
target_date = InvenTreeDatePickerFormField(
help_text=_('Target date for build completion. Build will be overdue after this date.')
)
class Meta: