diff --git a/src/memberdb/register.py b/src/memberdb/register.py index d48ed6f40a65bf1e66237dcc42eee4f0fdfa740f..e2f648d80c7b5aa7b3dd6cf25e22290497d6a536 100644 --- a/src/memberdb/register.py +++ b/src/memberdb/register.py @@ -28,7 +28,7 @@ class RegisterForm(MyModelForm): agree_tnc = forms.BooleanField(label='I agree to the terms & conditions', required=True, help_text=mark_safe( "You agree to abide by the UCC Constitution, rulings of the UCC Committee, UCC and " "UWA’s Network Usage Guidelines and that you will be subscribed to the UCC Mailing List. <br>" - 'Policies can be found <a href="https://www.ucc.asn.au/infobase/policies.ucc">here</a>.')) + '<b>Policies can be found <a href="https://www.ucc.asn.au/infobase/policies.ucc">here</a>.</b>')) membership_type = forms.ChoiceField(label='Select your membership type', required=True, choices=get_membership_choices(is_renew=False)) class Meta: @@ -36,7 +36,7 @@ class RegisterForm(MyModelForm): fields = ['first_name', 'last_name', 'username', 'phone_number', 'is_student', 'is_guild', 'id_number', 'email_address'] error_messages = { 'username': { - 'unique': 'This username is already in use, please pick another one.', + 'unique': 'This username is already taken, please pick another one.', 'invalid': 'Please pick a username with only lowercase letters and numbers' } } @@ -97,8 +97,8 @@ class RegisterView(MyUpdateView): m, ms = form.save() messages.success(self.request, 'Your registration has been submitted.') - # set the member session info - self.request.session['member_id'] = m.id + # don't set the member session info - user can click on the link + #self.request.session['member_id'] = m.id return thanks_view(self.request, m, ms) def thanks_view(request, member, ms): @@ -107,10 +107,10 @@ def thanks_view(request, member, ms): 'member': member, 'ms': ms, 'login_url': reverse('memberdb:login_member', kwargs={'username': member.username, 'member_token': member.login_token}), + 'payment_url': reverse('squarepay:pay_membership', kwargs={'pk': ms.id}), } return render(request, 'thanks.html', context) - class RenewView(LoginRequiredMixin, MyUpdateView): template_name = 'renew.html' form_class = RenewForm @@ -139,19 +139,3 @@ class RenewView(LoginRequiredMixin, MyUpdateView): m, ms = form.save() messages.success(self.request, 'Your membership renewal has been submitted.') return HttpResponseRedirect(reverse("memberdb:home")) - -def create_member_payment(membership, commit=True): - """ creates a MembershipPayment object for the given membership """ - # get the amount from dispense - price = get_item_price(membership.membership_type) - if (price is None or price == 0): - return None - desc = MEMBERSHIP_TYPES[membership.membership_type]['desc'] - payment = MembershipPayment(description=desc, amount=price, membership=membership) - - if (commit): - payment.save() - return payment - -def thanks_page(request, membership): - pass diff --git a/src/squarepay/dispense.py b/src/squarepay/dispense.py index 42b623461e8f51c3f55658829475f4150628ca87..c0ffdfd932f8ae578e47d24de345cfd979f82d16 100644 --- a/src/squarepay/dispense.py +++ b/src/squarepay/dispense.py @@ -12,7 +12,7 @@ from .payments import log DISPENSE_BIN = getattr(settings, 'DISPENSE_BIN', None) if DISPENSE_BIN is None: - log.warning("DISPENSE_BIN is not defined! Lookups for prices will fail!") + log.warning("DISPENSE_BIN is not defined! Lookups for prices will fallback to weird numbers (for testing)!") def run_dispense(*args): if DISPENSE_BIN is None: @@ -35,9 +35,12 @@ def get_item_price(itemid): """ gets the price of the given dispense item in cents """ if (itemid is None or itemid == ""): return None + if DISPENSE_BIN is None: + return 2223 + out = run_dispense('iteminfo', itemid) - if (out is None): - return 123456 + if out is None: + return None s = out.split() # get something like ['pseudo:7', '25.00', 'membership', '(non-student', 'and', 'non-guild)'] if (s[0] != itemid): @@ -45,4 +48,4 @@ def get_item_price(itemid): return None else: # return the price as a number of cents - return int(float(s[0]) * 100) \ No newline at end of file + return int(float(s[0]) * 100) diff --git a/src/squarepay/models.py b/src/squarepay/models.py index 65e5ad1d200646558ea0922a4324322a479a8d4d..d972fa48024e6e1cff49922fdd350ca5ec724ab5 100644 --- a/src/squarepay/models.py +++ b/src/squarepay/models.py @@ -14,8 +14,18 @@ class CardPayment(models.Model): date_created = models.DateTimeField('Date created', auto_now_add=True) date_paid = models.DateTimeField('Date paid (payment captured)', null=True, blank=True) + def set_paid(self): + card_payment.is_paid = True + card_payment.date_paid = timezone.now() + card_payment.save() + class MembershipPayment(CardPayment): """ Link the payment to a specific membership """ membership = models.ForeignKey(Membership, on_delete=models.CASCADE, related_name='payments') + + def set_paid(self): + self.membership.date_paid = timezone.now() + self.membership.payment_method = 'online' + super().set_paid() diff --git a/src/squarepay/payments.py b/src/squarepay/payments.py index f64b6d9b824d94f5de311d1e64595c2163ede11f..2b7bfcad7690151a92b62b43a13c0e7f587dee6b 100644 --- a/src/squarepay/payments.py +++ b/src/squarepay/payments.py @@ -49,14 +49,10 @@ def try_capture_payment(card_payment, nonce): try: api_response = api_inst.charge(loc_id, request_body) - set_paid(card_payment) + card_payment.set_paid() log.info("TransactionApi response without error, charge $%1.2f" % (float(card_payment.amount) / 100.0)) return True except ApiException as e: log.error("Exception while calling TransactionApi::charge: %s" % e) return False -def set_paid(card_payment): - card_payment.is_paid = True - card_payment.date_paid = timezone.now() - card_payment.save()