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.email = signup_details.get('email')
|
||||||
member.reference = signup_details.get('reference')
|
member.reference = signup_details.get('reference')
|
||||||
member.payment = signup_details.get('amount')
|
member.payment = signup_details.get('amount')
|
||||||
|
member.payment_date = signup_details.get('last_payment')
|
||||||
|
member.join_date = start_date
|
||||||
member.date = start_date
|
member.date = start_date
|
||||||
|
|
||||||
member.save()
|
member.save()
|
||||||
|
|
|
@ -56,11 +56,12 @@ class Command(BaseCommand):
|
||||||
signup_details=sub,
|
signup_details=sub,
|
||||||
complete=True)
|
complete=True)
|
||||||
|
|
||||||
message = '\t{prefix}{date} - {reference} - {payment} - {status} - {email}'.format(**{
|
message = '\t{prefix}{date} - {reference} - {payment} - {last_payment} - {status} - {email} '.format(**{
|
||||||
'prefix': prefix,
|
'prefix': prefix,
|
||||||
'date': sub.get('start_date'),
|
'date': sub.get('start_date'),
|
||||||
'reference': sub.get('reference'),
|
'reference': sub.get('reference'),
|
||||||
'payment': sub.get('amount'),
|
'payment': sub.get('amount'),
|
||||||
|
'last_payment': sub.get('last_payment'),
|
||||||
'status': sub.get('status'),
|
'status': sub.get('status'),
|
||||||
'email': sub.get('email')
|
'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.mandates.list().records:
|
||||||
for paying_member in self.client.subscriptions.list().records:
|
for paying_member in self.client.subscriptions.list().records:
|
||||||
mandate = self.client.mandates.get(paying_member.links.mandate)
|
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
|
# gocardless does not have a reference so we use the id instead
|
||||||
yield {
|
yield {
|
||||||
'status': paying_member.status,
|
'status': paying_member.status,
|
||||||
'email': user.email,
|
'email': customer.email,
|
||||||
'start_date': paying_member.created_at,
|
'start_date': paying_member.created_at,
|
||||||
'reference': paying_member.id,
|
'reference': paying_member.id,
|
||||||
|
'last_payment': payments[0].charge_date,
|
||||||
'amount': paying_member.amount * 0.01}
|
'amount': paying_member.amount * 0.01}
|
||||||
|
|
||||||
def get_redirect_url(self):
|
def get_redirect_url(self):
|
||||||
|
|
|
@ -25,9 +25,9 @@
|
||||||
|
|
||||||
{% if membership %}
|
{% if membership %}
|
||||||
<h3>Membership status</h3>
|
<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>Membership Status: {{ membership.get_status }}</p>
|
||||||
<p>Last Payment: {{membership.date}}</p>
|
<p>Last Payment: {{membership.payment_date}}</p>
|
||||||
<p>Amount: £{{membership.payment}}</p>
|
<p>Amount: £{{membership.payment}}</p>
|
||||||
{% else %}
|
{% else %}
|
||||||
You are not currently a member consider signing up.
|
You are not currently a member consider signing up.
|
||||||
|
|
|
@ -50,7 +50,7 @@ class MyUserAdmin(AuthUserAdmin):
|
||||||
|
|
||||||
@admin.register(Membership)
|
@admin.register(Membership)
|
||||||
class MembershipAdmin(ModelAdmin):
|
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',)
|
list_filter = ('status',)
|
||||||
|
|
||||||
def get_urls(self):
|
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.contrib.auth.models import AbstractUser
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
from django.utils import timezone
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
from stdimage.models import StdImageField
|
from stdimage.models import StdImageField
|
||||||
from django.db.models.signals import post_save
|
from django.db.models.signals import post_save
|
||||||
|
@ -85,6 +86,11 @@ class Membership(models.Model):
|
||||||
on_delete=models.CASCADE,
|
on_delete=models.CASCADE,
|
||||||
)
|
)
|
||||||
payment = models.DecimalField(max_digits=6, decimal_places=2, default=0.0)
|
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()
|
date = models.DateTimeField()
|
||||||
reference = models.CharField(max_length=255)
|
reference = models.CharField(max_length=255)
|
||||||
status = models.PositiveSmallIntegerField(
|
status = models.PositiveSmallIntegerField(
|
||||||
|
|
Loading…
Reference in New Issue