Membership table improvements

This commit is contained in:
Oliver Marks 2018-10-11 07:49:18 +01:00
parent 47aa81fb1d
commit a4f629885d
7 changed files with 42 additions and 7 deletions

View File

@ -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()

View File

@ -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')
})

View File

@ -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):

View File

@ -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: &pound;{{membership.payment}}</p>
{% else %}
You are not currently a member consider signing up.

View File

@ -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):

View File

@ -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),
),
]

View File

@ -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(