77from django import forms
88from .models import *
99from django .utils .translation import gettext_lazy as _
10+ from datetime import timedelta
11+ from django .utils import timezone
1012
1113class ItemForm (forms .ModelForm ):
1214 file = forms .FileField (required = False )
@@ -29,6 +31,9 @@ def __init__(self, *args, **kwargs):
2931 else :
3032 self .fields ['value' ].required = True
3133
34+ # Make expiry_date optional
35+ self .fields ['expiry_date' ].required = False
36+
3237 def clean_file (self ):
3338 file = self .cleaned_data .get ('file' )
3439 if file :
@@ -46,6 +51,11 @@ def clean(self):
4651 item_type = cleaned_data .get ('type' )
4752 value_type = cleaned_data .get ('value_type' )
4853 value = cleaned_data .get ('value' )
54+ expiry_date = cleaned_data .get ('expiry_date' )
55+
56+ # Set expiry_date to 50 years in the future if not provided
57+ if not expiry_date :
58+ cleaned_data ['expiry_date' ] = timezone .now () + timedelta (days = 50 * 365 ) # 50 years in the future
4959
5060 if item_type == 'loyaltycard' and value != 0 :
5161 error_msg_value = _ ('Value must be zero for loyalty cards.' )
@@ -60,6 +70,7 @@ def clean(self):
6070 elif item_type != 'loyaltycard' and (value is None or value < 0 ):
6171 error_message_positive = _ ('Value must be positive.' )
6272 raise forms .ValidationError (error_message_positive )
73+
6374 return cleaned_data
6475
6576class TransactionForm (forms .ModelForm ):
0 commit comments