diff --git a/src/memberdb/approve.py b/src/memberdb/approve.py index 59fe2bc7e46c0d685cd2ecc30309b7474ebbc09f..50ca2ad2c826a13813cc091cfe2bff20c6fdd4b5 100644 --- a/src/memberdb/approve.py +++ b/src/memberdb/approve.py @@ -32,6 +32,7 @@ class MembershipApprovalForm(MyModelForm): # override the model membership_type field so we display all the options with prices self.fields['membership_type'].choices = get_membership_choices() + self.fields['payment_confirm'].initial = (self.instance.date_paid is not None) def clean(self): """ @@ -50,9 +51,13 @@ class MembershipApprovalForm(MyModelForm): data['date_approved'] = now if (data['payment_confirm'] == True): - if (data['payment_method'] == ''): - self.add_error('payment_method', 'Please select a payment method') - data['date_paid'] = now + if data['payment_method'] == self.instance.payment_method and data['payment_confirm'] == (self.instance.date_paid is not None): + # check if the payment was already made, preserve the date_paid + data['date_paid'] = self.instance.date_paid + else: + if (data['payment_method'] == ''): + self.add_error('payment_method', 'Please select a payment method') + data['date_paid'] = now else: data['date_paid'] = None diff --git a/src/memberdb/models.py b/src/memberdb/models.py index f4bcea338a17f96b31e7bdc918a39d4d28bab5b5..b8cb469caed55544aa75c28e40c3fd0aad0aeffc 100644 --- a/src/memberdb/models.py +++ b/src/memberdb/models.py @@ -109,6 +109,7 @@ def make_pending_membership(member): # otherwise update the existing membership and mark as pending latest.approved = False + latest.date_approved = None latest.date_submitted = timezone.now() return latest