Check if transaction is for valid training first
This commit is contained in:
parent
47006aa753
commit
52b6896cab
|
@ -185,7 +185,7 @@ def create_member_training_tx(data, member, training):
|
||||||
user=user,
|
user=user,
|
||||||
)
|
)
|
||||||
|
|
||||||
def check_training(data, member, training_id, amount):
|
def check_training(data, training_id, amount):
|
||||||
trainings = models.Training.objects
|
trainings = models.Training.objects
|
||||||
|
|
||||||
if not trainings.filter(id=training_id).exists():
|
if not trainings.filter(id=training_id).exists():
|
||||||
|
@ -208,10 +208,10 @@ def check_training(data, member, training_id, amount):
|
||||||
if not training.user:
|
if not training.user:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
if training.user.member != member:
|
member = training.user.member
|
||||||
return False
|
|
||||||
|
|
||||||
training.attendance_status = 'confirmed'
|
training.attendance_status = 'confirmed'
|
||||||
|
training.paid_date = datetime.date.today()
|
||||||
training.save()
|
training.save()
|
||||||
|
|
||||||
print('Amount valid for training cost, id:', training.id)
|
print('Amount valid for training cost, id:', training.id)
|
||||||
|
@ -260,6 +260,21 @@ def process_paypal_ipn(data):
|
||||||
update_ipn(ipn, 'Duplicate')
|
update_ipn(ipn, 'Duplicate')
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
try:
|
||||||
|
custom_json = json.loads(data['custom'])
|
||||||
|
except (KeyError, ValueError):
|
||||||
|
custom_json = False
|
||||||
|
|
||||||
|
if custom_json and 'training' in custom_json:
|
||||||
|
tx = check_training(data, custom_json['training'], amount)
|
||||||
|
if tx:
|
||||||
|
print('Training matched, adding hint and returning')
|
||||||
|
hints.objects.update_or_create(
|
||||||
|
account=data['payer_id'],
|
||||||
|
defaults=dict(member_id=tx.member_id),
|
||||||
|
)
|
||||||
|
return tx
|
||||||
|
|
||||||
if not hints.filter(account=data['payer_id']).exists():
|
if not hints.filter(account=data['payer_id']).exists():
|
||||||
print('Unable to associate with member, reporting')
|
print('Unable to associate with member, reporting')
|
||||||
update_ipn(ipn, 'Accepted, Unmatched Member')
|
update_ipn(ipn, 'Accepted, Unmatched Member')
|
||||||
|
@ -279,15 +294,6 @@ def process_paypal_ipn(data):
|
||||||
update_ipn(ipn, 'Accepted, Member Dues')
|
update_ipn(ipn, 'Accepted, Member Dues')
|
||||||
return create_member_dues_tx(data, member, num_months)
|
return create_member_dues_tx(data, member, num_months)
|
||||||
|
|
||||||
try:
|
|
||||||
custom_json = json.loads(data['custom'])
|
|
||||||
except (KeyError, ValueError):
|
|
||||||
custom_json = False
|
|
||||||
|
|
||||||
if custom_json and 'training' in custom_json:
|
|
||||||
tx = check_training(data, member, custom_json['training'], amount)
|
|
||||||
if tx: return tx
|
|
||||||
|
|
||||||
print('Unable to find a reason for payment, reporting')
|
print('Unable to find a reason for payment, reporting')
|
||||||
update_ipn(ipn, 'Accepted, Unmatched Purchase')
|
update_ipn(ipn, 'Accepted, Unmatched Purchase')
|
||||||
return create_unmatched_purchase_tx(data, member)
|
return create_unmatched_purchase_tx(data, member)
|
||||||
|
|
|
@ -196,6 +196,7 @@ class TrainingViewSet(Base, Retrieve, Create, Update):
|
||||||
|
|
||||||
# TODO: turn these into @actions
|
# TODO: turn these into @actions
|
||||||
# TODO: check if full
|
# TODO: check if full
|
||||||
|
# TODO: if already paid, skip to confirmed
|
||||||
def perform_create(self, serializer):
|
def perform_create(self, serializer):
|
||||||
session_id = self.request.data['session']
|
session_id = self.request.data['session']
|
||||||
status = self.request.data['attendance_status']
|
status = self.request.data['attendance_status']
|
||||||
|
|
Loading…
Reference in New Issue
Block a user