diff --git a/mhackspace/subscriptions/helper.py b/mhackspace/subscriptions/helper.py index 5a74b84..5ac8850 100644 --- a/mhackspace/subscriptions/helper.py +++ b/mhackspace/subscriptions/helper.py @@ -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() diff --git a/mhackspace/subscriptions/management/commands/update_membership_status.py b/mhackspace/subscriptions/management/commands/update_membership_status.py index ec41261..0404964 100644 --- a/mhackspace/subscriptions/management/commands/update_membership_status.py +++ b/mhackspace/subscriptions/management/commands/update_membership_status.py @@ -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') }) diff --git a/mhackspace/subscriptions/payments.py b/mhackspace/subscriptions/payments.py index 335e156..b131839 100644 --- a/mhackspace/subscriptions/payments.py +++ b/mhackspace/subscriptions/payments.py @@ -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): diff --git a/mhackspace/templates/users/user_detail.html b/mhackspace/templates/users/user_detail.html index c6c4f70..1a9ed3f 100644 --- a/mhackspace/templates/users/user_detail.html +++ b/mhackspace/templates/users/user_detail.html @@ -25,9 +25,9 @@ {% if membership %}
Member since {{membership.date}}
+Member since {{membership.join_date}}
Membership Status: {{ membership.get_status }}
-Last Payment: {{membership.date}}
+Last Payment: {{membership.payment_date}}
Amount: £{{membership.payment}}
{% else %} You are not currently a member consider signing up. diff --git a/mhackspace/users/admin.py b/mhackspace/users/admin.py index 3d5fe20..33833c4 100644 --- a/mhackspace/users/admin.py +++ b/mhackspace/users/admin.py @@ -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): diff --git a/mhackspace/users/migrations/0011_auto_20181011_0752.py b/mhackspace/users/migrations/0011_auto_20181011_0752.py new file mode 100644 index 0000000..2650507 --- /dev/null +++ b/mhackspace/users/migrations/0011_auto_20181011_0752.py @@ -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), + ), + ] diff --git a/mhackspace/users/models.py b/mhackspace/users/models.py index b4c86d8..cbab539 100644 --- a/mhackspace/users/models.py +++ b/mhackspace/users/models.py @@ -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(