updated models to add paid plan complexity
This commit is contained in:
@@ -22,9 +22,9 @@ class RowerInline(admin.StackedInline):
|
|||||||
|
|
||||||
fieldsets = (
|
fieldsets = (
|
||||||
('Billing Details',
|
('Billing Details',
|
||||||
{'fields':('street_address','city','postal_code','country',)}),
|
{'fields':('street_address','city','postal_code','country','paymentprocessor','customer_id')}),
|
||||||
('Rower Plan',
|
('Rower Plan',
|
||||||
{'fields':('rowerplan','paymenttype','planexpires','teamplanexpires','clubsize','protrialexpires','plantrialexpires',)}),
|
{'fields':('paidplan','rowerplan','paymenttype','planexpires','teamplanexpires','clubsize','protrialexpires','plantrialexpires',)}),
|
||||||
('Rower Settings',
|
('Rower Settings',
|
||||||
{'fields':
|
{'fields':
|
||||||
('gdproptin','gdproptindate','weightcategory','sex','adaptiveclass','birthdate','getemailnotifications',
|
('gdproptin','gdproptindate','weightcategory','sex','adaptiveclass','birthdate','getemailnotifications',
|
||||||
@@ -124,7 +124,7 @@ class VirtualRaceResultAdmin(admin.ModelAdmin):
|
|||||||
search_fields = ['race__name','username']
|
search_fields = ['race__name','username']
|
||||||
|
|
||||||
class PaidPlanAdmin(admin.ModelAdmin):
|
class PaidPlanAdmin(admin.ModelAdmin):
|
||||||
list_display = ('name','shortname','price','paymenttype')
|
list_display = ('name','shortname','price','paymenttype','paymentprocessor','clubsize')
|
||||||
|
|
||||||
admin.site.unregister(User)
|
admin.site.unregister(User)
|
||||||
admin.site.register(User,UserAdmin)
|
admin.site.register(User,UserAdmin)
|
||||||
|
|||||||
@@ -42,11 +42,11 @@ def get_client_token(rower):
|
|||||||
def get_plans_costs():
|
def get_plans_costs():
|
||||||
plans = gateway.plan.all()
|
plans = gateway.plan.all()
|
||||||
|
|
||||||
localplans = PaidPlan.object.all()
|
localplans = PaidPlan.object.filter(paymentprocessor='braintree')
|
||||||
|
|
||||||
for plan in localplans:
|
for plan in localplans:
|
||||||
for btplan in btplans:
|
for btplan in btplans:
|
||||||
if int(btplan.id) == plan.braintree_id:
|
if int(btplan.id) == plan.external_id:
|
||||||
plan.price = float(x)
|
plan.price = float(x)
|
||||||
plan.save()
|
plan.save()
|
||||||
|
|
||||||
|
|||||||
@@ -550,14 +550,36 @@ paymenttypes = (
|
|||||||
('recurring','recurring')
|
('recurring','recurring')
|
||||||
)
|
)
|
||||||
|
|
||||||
|
paymentprocessors = (
|
||||||
|
('paypal','PayPal'),
|
||||||
|
('braintree','BrainTree')
|
||||||
|
)
|
||||||
|
|
||||||
class PaidPlan(models.Model):
|
class PaidPlan(models.Model):
|
||||||
shortname = models.CharField(max_length=50,choices=plans)
|
shortname = models.CharField(max_length=50,choices=plans)
|
||||||
name = models.CharField(max_length=200)
|
name = models.CharField(max_length=200)
|
||||||
braintree_id = models.IntegerField(blank=True,null=True,default=None)
|
external_id = models.IntegerField(blank=True,null=True,default=None)
|
||||||
price = models.FloatField(blank=True,null=True,default=None)
|
price = models.FloatField(blank=True,null=True,default=None)
|
||||||
paymenttype = models.CharField(max_length=50,choices=paymenttypes)
|
paymentprocessor = models.CharField(
|
||||||
|
max_length=50,choices=paymentprocessors,default='braintree')
|
||||||
|
paymenttype = models.CharField(
|
||||||
|
default='single',max_length=30,
|
||||||
|
verbose_name='Payment Type',
|
||||||
|
choices=paymenttypes,
|
||||||
|
)
|
||||||
|
|
||||||
clubsize = models.IntegerField(default=0)
|
clubsize = models.IntegerField(default=0)
|
||||||
|
|
||||||
|
def __unicode__(self):
|
||||||
|
return '{name} - {shortname} at {price} EURO ({paymenttype} payment) / {paymentprocessor}'.format(
|
||||||
|
name = self.name,
|
||||||
|
shortname = self.shortname,
|
||||||
|
price = self.price,
|
||||||
|
paymenttype = self.paymenttype,
|
||||||
|
paymentprocessor = self.paymentprocessor,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
# Extension of User with rowing specific data
|
# Extension of User with rowing specific data
|
||||||
class Rower(models.Model):
|
class Rower(models.Model):
|
||||||
adaptivetypes = mytypes.adaptivetypes
|
adaptivetypes = mytypes.adaptivetypes
|
||||||
@@ -599,12 +621,33 @@ class Rower(models.Model):
|
|||||||
street_address = models.CharField(default='',blank=True,null=True,max_length=200)
|
street_address = models.CharField(default='',blank=True,null=True,max_length=200)
|
||||||
city = models.CharField(default='',blank=True,null=True,max_length=200)
|
city = models.CharField(default='',blank=True,null=True,max_length=200)
|
||||||
postal_code = models.CharField(default='',blank=True,null=True,max_length=200)
|
postal_code = models.CharField(default='',blank=True,null=True,max_length=200)
|
||||||
|
|
||||||
|
customer_id = models.CharField(default=None,null=True,blank=True,max_length=200)
|
||||||
|
|
||||||
|
rowerplan = models.CharField(default='basic',max_length=30,
|
||||||
|
choices=plans)
|
||||||
|
paymenttype = models.CharField(
|
||||||
|
default='single',max_length=30,
|
||||||
|
verbose_name='Payment Type',
|
||||||
|
choices=paymenttypes,
|
||||||
|
)
|
||||||
|
paymentprocessor = models.CharField(max_length=50,
|
||||||
|
choices=paymentprocessors,
|
||||||
|
default='braintree')
|
||||||
|
|
||||||
|
paidplan = models.ForeignKey(PaidPlan,null=True,default=None)
|
||||||
|
|
||||||
|
planexpires = models.DateField(default=timezone.now)
|
||||||
|
teamplanexpires = models.DateField(default=timezone.now)
|
||||||
|
clubsize = models.IntegerField(default=0)
|
||||||
|
protrialexpires = models.DateField(blank=True,null=True)
|
||||||
|
plantrialexpires = models.DateField(blank=True,null=True)
|
||||||
|
|
||||||
|
|
||||||
|
# Privacy Data
|
||||||
gdproptin = models.BooleanField(default=False)
|
gdproptin = models.BooleanField(default=False)
|
||||||
gdproptindate = models.DateTimeField(blank=True,null=True)
|
gdproptindate = models.DateTimeField(blank=True,null=True)
|
||||||
|
|
||||||
# customer data
|
|
||||||
customer_id = models.IntegerField(default=None,null=True,blank=True)
|
|
||||||
|
|
||||||
# Heart Rate Zone data
|
# Heart Rate Zone data
|
||||||
max = models.IntegerField(default=192,verbose_name="Max Heart Rate")
|
max = models.IntegerField(default=192,verbose_name="Max Heart Rate")
|
||||||
@@ -729,20 +772,6 @@ class Rower(models.Model):
|
|||||||
getimportantemails = models.BooleanField(default=True,
|
getimportantemails = models.BooleanField(default=True,
|
||||||
verbose_name='Get Important Emails')
|
verbose_name='Get Important Emails')
|
||||||
|
|
||||||
rowerplan = models.CharField(default='basic',max_length=30,
|
|
||||||
choices=plans)
|
|
||||||
paymenttype = models.CharField(
|
|
||||||
default='single',max_length=30,
|
|
||||||
verbose_name='Payment Type',
|
|
||||||
choices=paymenttypes,
|
|
||||||
)
|
|
||||||
|
|
||||||
planexpires = models.DateField(default=timezone.now)
|
|
||||||
teamplanexpires = models.DateField(default=timezone.now)
|
|
||||||
clubsize = models.IntegerField(default=0)
|
|
||||||
protrialexpires = models.DateField(blank=True,null=True)
|
|
||||||
plantrialexpires = models.DateField(blank=True,null=True)
|
|
||||||
|
|
||||||
|
|
||||||
# Friends/Team
|
# Friends/Team
|
||||||
friends = models.ManyToManyField("self",blank=True)
|
friends = models.ManyToManyField("self",blank=True)
|
||||||
|
|||||||
30
rowers/payments.py
Normal file
30
rowers/payments.py
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
from rowers.models import Rower,PaidPlan
|
||||||
|
|
||||||
|
# run once - copies plans to paypal
|
||||||
|
def planstopaypal():
|
||||||
|
plans = PaidPlan.objects.all()
|
||||||
|
|
||||||
|
for plan in plans:
|
||||||
|
plan.pk = None
|
||||||
|
plan.paymentprocessor = 'paypal'
|
||||||
|
plan.external_id = None
|
||||||
|
plan.save()
|
||||||
|
|
||||||
|
def setrowerplans():
|
||||||
|
rowers = Rower.objects.all()
|
||||||
|
|
||||||
|
for r in rowers:
|
||||||
|
if r.rowerplan != 'basic':
|
||||||
|
paidplans = PaidPlan.objects.filter(
|
||||||
|
shortname = r.rowerplan,
|
||||||
|
paymenttype = r.paymenttype,
|
||||||
|
clubsize = r.clubsize)
|
||||||
|
|
||||||
|
if paidplans:
|
||||||
|
r.paidplan = paidplans[0]
|
||||||
|
r.paymenttype = 'paypal'
|
||||||
|
r.save()
|
||||||
|
else:
|
||||||
|
print 'Could not set plan for ',r
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user