Membership table improvements
This commit is contained in:
parent
47aa81fb1d
commit
a4f629885d
|
@ -31,6 +31,8 @@ def create_or_update_membership(user, signup_details, complete=False):
|
|||
member.email = signup_details.get('email')
|
||||
member.reference = signup_details.get('reference')
|
||||
member.payment = signup_details.get('amount')
|
||||
member.payment_date = signup_details.get('last_payment')
|
||||
member.join_date = start_date
|
||||
member.date = start_date
|
||||
|
||||
member.save()
|
||||
|
|
|
@ -56,11 +56,12 @@ class Command(BaseCommand):
|
|||
signup_details=sub,
|
||||
complete=True)
|
||||
|
||||
message = '\t{prefix}{date} - {reference} - {payment} - {status} - {email}'.format(**{
|
||||
message = '\t{prefix}{date} - {reference} - {payment} - {last_payment} - {status} - {email} '.format(**{
|
||||
'prefix': prefix,
|
||||
'date': sub.get('start_date'),
|
||||
'reference': sub.get('reference'),
|
||||
'payment': sub.get('amount'),
|
||||
'last_payment': sub.get('last_payment'),
|
||||
'status': sub.get('status'),
|
||||
'email': sub.get('email')
|
||||
})
|
||||
|
|
|
@ -51,14 +51,16 @@ class gocardless_provider:
|
|||
# for paying_member in self.client.mandates.list().records:
|
||||
for paying_member in self.client.subscriptions.list().records:
|
||||
mandate = self.client.mandates.get(paying_member.links.mandate)
|
||||
user = self.client.customers.get(mandate.links.customer)
|
||||
|
||||
customer = self.client.customers.get(mandate.links.customer)
|
||||
# TODO get the last couple of months not all time payments
|
||||
payments = self.client.payments.list(params={"customer": customer.id}).records
|
||||
# gocardless does not have a reference so we use the id instead
|
||||
yield {
|
||||
'status': paying_member.status,
|
||||
'email': user.email,
|
||||
'email': customer.email,
|
||||
'start_date': paying_member.created_at,
|
||||
'reference': paying_member.id,
|
||||
'last_payment': payments[0].charge_date,
|
||||
'amount': paying_member.amount * 0.01}
|
||||
|
||||
def get_redirect_url(self):
|
||||
|
|
|
@ -25,9 +25,9 @@
|
|||
|
||||
{% if membership %}
|
||||
<h3>Membership status</h3>
|
||||
<p>Member since {{membership.date}}</p>
|
||||
<p>Member since {{membership.join_date}}</p>
|
||||
<p>Membership Status: {{ membership.get_status }}</p>
|
||||
<p>Last Payment: {{membership.date}}</p>
|
||||
<p>Last Payment: {{membership.payment_date}}</p>
|
||||
<p>Amount: £{{membership.payment}}</p>
|
||||
{% else %}
|
||||
You are not currently a member consider signing up.
|
||||
|
|
|
@ -50,7 +50,7 @@ class MyUserAdmin(AuthUserAdmin):
|
|||
|
||||
@admin.register(Membership)
|
||||
class MembershipAdmin(ModelAdmin):
|
||||
list_display = ('user_id', 'email', 'payment', 'date', 'status')
|
||||
list_display = ('user_id', 'join_date','email', 'payment', 'payment_date', 'status')
|
||||
list_filter = ('status',)
|
||||
|
||||
def get_urls(self):
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
# Generated by Django 2.1.1 on 2018-10-11 07:52
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.utils.timezone
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('users', '0010_membership_over_18'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='membership',
|
||||
name='join_date',
|
||||
field=models.DateTimeField(default=django.utils.timezone.now),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='membership',
|
||||
name='payment_date',
|
||||
field=models.DateTimeField(default=None),
|
||||
),
|
||||
]
|
|
@ -5,6 +5,7 @@ from django.conf import settings
|
|||
from django.contrib.auth.models import AbstractUser
|
||||
from django.urls import reverse
|
||||
from django.db import models
|
||||
from django.utils import timezone
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from stdimage.models import StdImageField
|
||||
from django.db.models.signals import post_save
|
||||
|
@ -85,6 +86,11 @@ class Membership(models.Model):
|
|||
on_delete=models.CASCADE,
|
||||
)
|
||||
payment = models.DecimalField(max_digits=6, decimal_places=2, default=0.0)
|
||||
payment_date = models.DateTimeField(default=None)
|
||||
join_date = models.DateTimeField(default=timezone.now)
|
||||
|
||||
|
||||
# date not specific enough
|
||||
date = models.DateTimeField()
|
||||
reference = models.CharField(max_length=255)
|
||||
status = models.PositiveSmallIntegerField(
|
||||
|
|
Loading…
Reference in New Issue