Changeset - 3fe83d14667f
[Not reviewed]
0 3 1
Ben Sturmfels (bsturmfels) - 18 days ago 2024-09-30 07:40:29
ben@sturm.com.au
Add annual renew
4 files changed with 57 insertions and 15 deletions:
0 comments (0 inline, 0 general)
conservancy/supporters/migrations/0003_remove_sustainerorder_monthly_recurring_and_more.py
Show inline comments
 
new file 100644
 
# Generated by Django 4.2.11 on 2024-09-30 03:33
 

	
 
from django.db import migrations, models
 

	
 

	
 
class Migration(migrations.Migration):
 

	
 
    dependencies = [
 
        ('supporters', '0002_sustainerorder_monthly_recurring_and_more'),
 
    ]
 

	
 
    operations = [
 
        migrations.RemoveField(
 
            model_name='sustainerorder',
 
            name='monthly_recurring',
 
        ),
 
        migrations.AddField(
 
            model_name='sustainerorder',
 
            name='recurring',
 
            field=models.CharField(default='', max_length=10),
 
            preserve_default=False,
 
        ),
 
        migrations.AlterField(
 
            model_name='sustainerorder',
 
            name='acknowledge_publicly',
 
            field=models.BooleanField(default=True),
 
        ),
 
        migrations.AlterField(
 
            model_name='sustainerorder',
 
            name='add_to_mailing_list',
 
            field=models.BooleanField(default=True),
 
        ),
 
    ]
conservancy/supporters/models.py
Show inline comments
...
 
@@ -21,2 +21,7 @@ class Supporter(models.Model):
 
class SustainerOrder(models.Model):
 
    RENEW_CHOICES = [
 
        ('', 'None'),
 
        ('month', 'Monthly'),
 
        ('year', 'Annual'),
 
    ]
 
    TSHIRT_CHOICES = [
...
 
@@ -65,6 +70,6 @@ class SustainerOrder(models.Model):
 
        ])
 
    monthly_recurring = models.BooleanField(default=False)
 
    recurring = models.CharField(max_length=10)
 
    paid_time = models.DateTimeField(null=True, blank=True)
 
    acknowledge_publicly = models.BooleanField(default=False)
 
    add_to_mailing_list = models.BooleanField(default=False)
 
    acknowledge_publicly = models.BooleanField(default=True)
 
    add_to_mailing_list = models.BooleanField(default=True)
 
    tshirt_size = models.CharField(max_length=50, choices=TSHIRT_CHOICES)
conservancy/supporters/templates/supporters/sustainers_stripe2.html
Show inline comments
...
 
@@ -37,13 +37,17 @@
 
      <div class="mb2"><label>
 
        <label class="mr1"><input type="radio" name="recurring" value="once" x-model="recurring"> Once</label>
 
        <label><input type="radio" name="recurring" value="monthly" x-model="recurring"> Monthly</label>
 
        <label class="mr1"><input type="radio" name="recurring" value="" x-model="recurring"> Once</label>
 
        <label class="mr1"><input type="radio" name="recurring" value="month" x-model="recurring"> Monthly</label>
 
        <label><input type="radio" name="recurring" value="year" x-model="recurring"> Annual</label>
 
      </label></div>
 
      <div class="mb2" x-show="recurring === 'once'"><label>Amount
 
      <div class="mb2" x-show="recurring === ''"><label>Amount
 
        <span class="db mt1">$ {{ form.amount }}</span>
 
      </label></div>
 
      <div class="mb2" x-show="recurring === 'monthly'"><label>Amount
 
      <div class="mb2" x-show="recurring === 'month'"><label>Amount
 
          <span class="db mt1">$ {{ form.amount_monthly }}</span>
 
        </label></div>
 
      <div class="mv3"><label class="lh-title"><input type="checkbox"> Acknowledge me on the public <a href="">list of sustainers</a></label></div>
 
      <div class="mv3"><label class="lh-title"><input type="checkbox"> Add me to the low-traffic <a href="https://lists.sfconservancy.org/pipermail/announce/">announcements</a> email list</label></div>
 
      </label></div>
 
      <div class="mb2" x-show="recurring === 'year'"><label>Amount
 
          <span class="db mt1">$ {{ form.amount }}</span>
 
      </label></div>
 
      <div class="mv3"><label class="lh-title">{{ form.acknowledge_publicly }} Acknowledge me on the public <a href="">list of sustainers</a></label></div>
 
      <div class="mv3"><label class="lh-title">{{ form.add_to_mailing_list }} Add me to the low-traffic <a href="https://lists.sfconservancy.org/pipermail/announce/">announcements</a> email list</label></div>
 
      <div class="mv3">
conservancy/supporters/views.py
Show inline comments
...
 
@@ -47,3 +47,3 @@ def sponsors(request):
 

	
 
def create_checkout_session(reference_id, email: str, amount: int, recurring: bool, base_url: str):
 
def create_checkout_session(reference_id, email: str, amount: int, recurring: str, base_url: str):
 
    # https://docs.stripe.com/payments/accept-a-payment
...
 
@@ -60,3 +60,3 @@ def create_checkout_session(reference_id, email: str, amount: int, recurring: bo
 
                        # https://docs.stripe.com/products-prices/pricing-models#variable-pricing
 
                        'recurring': {'interval': 'month'} if recurring else None,
 
                        'recurring': {'interval': recurring} if recurring else None,
 
                    },
...
 
@@ -84,8 +84,8 @@ def sustainers_stripe2(request):
 
            order = form.save(commit=False)
 
            if form.data['recurring'] == 'monthly':
 
            order.recurring = form.data['recurring']
 
            if order.recurring == 'month':
 
                order.amount = form.cleaned_data['amount_monthly']
 
                order.monthly_recurring = True
 
            order.save()
 
            base_url = f'{request.scheme}://{request.get_host()}'
 
            stripe_checkout_url = create_checkout_session(order.id, order.email, order.amount, order.monthly_recurring, base_url)
 
            stripe_checkout_url = create_checkout_session(order.id, order.email, order.amount, order.recurring, base_url)
 
            return redirect(stripe_checkout_url)
0 comments (0 inline, 0 general)