Add refresh subscription button to admin backend
This commit is contained in:
parent
f45af116f6
commit
22cd6c2397
|
@ -7,16 +7,10 @@ from mhackspace.subscriptions.payments import select_provider
|
|||
from mhackspace.users.models import Membership, User
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = 'Update user subscriptions'
|
||||
|
||||
def handle(self, *args, **options):
|
||||
def update_subscriptions(provider_name):
|
||||
provider = select_provider('gocardless')
|
||||
|
||||
self.stdout.write(
|
||||
self.style.NOTICE(
|
||||
'== Gocardless subscriptions =='))
|
||||
|
||||
Membership.objects.all().delete()
|
||||
subscriptions = []
|
||||
|
||||
|
@ -30,7 +24,43 @@ class Command(BaseCommand):
|
|||
except User.DoesNotExist:
|
||||
user_model = None
|
||||
|
||||
self.stdout.write(sub.get('status'))
|
||||
subscriptions.append(
|
||||
Membership(
|
||||
user=user_model,
|
||||
email=sub.get('email'),
|
||||
reference=sub.get('reference'),
|
||||
payment=10.00,
|
||||
date= sub.get('start_date'),
|
||||
# date=timezone.now(),
|
||||
status=Membership.lookup_status(name=sub.get('status'))
|
||||
)
|
||||
)
|
||||
yield model_to_dict(subscriptions[-1])
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = 'Update user subscriptions'
|
||||
|
||||
def handle(self, *args, **options):
|
||||
provider_name = 'gocardless'
|
||||
self.stdout.write(
|
||||
self.style.NOTICE(
|
||||
'== %s subscriptions ==' % provider_name.capitalize()))
|
||||
|
||||
provider = select_provider('gocardless')
|
||||
Membership.objects.all().delete()
|
||||
subscriptions = []
|
||||
|
||||
group = Group.objects.get(name='members')
|
||||
|
||||
for sub in provider.fetch_subscriptions():
|
||||
try:
|
||||
user_model = User.objects.get(email=sub.get('email'))
|
||||
if sub.get('status') == 'active':
|
||||
user_model.groups.add(group)
|
||||
except User.DoesNotExist:
|
||||
user_model = None
|
||||
|
||||
subscriptions.append(
|
||||
Membership(
|
||||
user=user_model,
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
{% extends "admin/change_list.html" %}
|
||||
{% block object-tools-items %}
|
||||
<li>
|
||||
<a href="refresh/payments/" class="grp-state-focus addlink">Refresh Subscriptions</a>
|
||||
</li>
|
||||
{{ block.super }}
|
||||
{% endblock %}
|
|
@ -6,13 +6,19 @@ from django import forms
|
|||
from django.contrib import admin
|
||||
from django.contrib.auth.admin import UserAdmin as AuthUserAdmin
|
||||
from django.contrib.auth.forms import UserChangeForm, UserCreationForm
|
||||
from django.http import HttpResponseRedirect
|
||||
from django.urls import reverse
|
||||
from django.conf.urls import url
|
||||
from .models import User, Membership, MEMBERSHIP_STATUS_CHOICES
|
||||
|
||||
from mhackspace.subscriptions.management.commands.refresh_subscriptions import update_subscriptions
|
||||
|
||||
|
||||
class MyUserChangeForm(UserChangeForm):
|
||||
class Meta(UserChangeForm.Meta):
|
||||
model = User
|
||||
|
||||
|
||||
class MyUserCreationForm(UserCreationForm):
|
||||
error_message = UserCreationForm.error_messages.update({
|
||||
'duplicate_username': 'This username has already been taken.'
|
||||
|
@ -40,6 +46,20 @@ class MyUserAdmin(AuthUserAdmin):
|
|||
list_display = ('username', 'name', 'is_superuser')
|
||||
search_fields = ['name']
|
||||
|
||||
def get_urls(self):
|
||||
urls = super(MyUserAdmin, self).get_urls()
|
||||
my_urls = [
|
||||
url(r'^refresh/payments/$', self.admin_site.admin_view(self.refresh_payments))
|
||||
]
|
||||
return my_urls + urls
|
||||
|
||||
def refresh_payments(self, request):
|
||||
for user in update_subscriptions(provider_name='gocardless'):
|
||||
continue
|
||||
self.message_user(request, 'Successfully imported refresh users payment status')
|
||||
return HttpResponseRedirect(reverse('admin:feeds_article_changelist'))
|
||||
|
||||
|
||||
@admin.register(Membership)
|
||||
class MembershipAdmin(ModelAdmin):
|
||||
list_display = ('user', 'payment', 'date', 'status')
|
||||
|
|
Loading…
Reference in New Issue