updated models to add paid plan complexity
This commit is contained in:
@@ -22,9 +22,9 @@ class RowerInline(admin.StackedInline):
|
||||
|
||||
fieldsets = (
|
||||
('Billing Details',
|
||||
{'fields':('street_address','city','postal_code','country',)}),
|
||||
{'fields':('street_address','city','postal_code','country','paymentprocessor','customer_id')}),
|
||||
('Rower Plan',
|
||||
{'fields':('rowerplan','paymenttype','planexpires','teamplanexpires','clubsize','protrialexpires','plantrialexpires',)}),
|
||||
{'fields':('paidplan','rowerplan','paymenttype','planexpires','teamplanexpires','clubsize','protrialexpires','plantrialexpires',)}),
|
||||
('Rower Settings',
|
||||
{'fields':
|
||||
('gdproptin','gdproptindate','weightcategory','sex','adaptiveclass','birthdate','getemailnotifications',
|
||||
@@ -124,7 +124,7 @@ class VirtualRaceResultAdmin(admin.ModelAdmin):
|
||||
search_fields = ['race__name','username']
|
||||
|
||||
class PaidPlanAdmin(admin.ModelAdmin):
|
||||
list_display = ('name','shortname','price','paymenttype')
|
||||
list_display = ('name','shortname','price','paymenttype','paymentprocessor','clubsize')
|
||||
|
||||
admin.site.unregister(User)
|
||||
admin.site.register(User,UserAdmin)
|
||||
|
||||
@@ -42,11 +42,11 @@ def get_client_token(rower):
|
||||
def get_plans_costs():
|
||||
plans = gateway.plan.all()
|
||||
|
||||
localplans = PaidPlan.object.all()
|
||||
localplans = PaidPlan.object.filter(paymentprocessor='braintree')
|
||||
|
||||
for plan in localplans:
|
||||
for btplan in btplans:
|
||||
if int(btplan.id) == plan.braintree_id:
|
||||
if int(btplan.id) == plan.external_id:
|
||||
plan.price = float(x)
|
||||
plan.save()
|
||||
|
||||
|
||||
@@ -550,14 +550,36 @@ paymenttypes = (
|
||||
('recurring','recurring')
|
||||
)
|
||||
|
||||
paymentprocessors = (
|
||||
('paypal','PayPal'),
|
||||
('braintree','BrainTree')
|
||||
)
|
||||
|
||||
class PaidPlan(models.Model):
|
||||
shortname = models.CharField(max_length=50,choices=plans)
|
||||
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)
|
||||
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)
|
||||
|
||||
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
|
||||
class Rower(models.Model):
|
||||
adaptivetypes = mytypes.adaptivetypes
|
||||
@@ -599,12 +621,33 @@ class Rower(models.Model):
|
||||
street_address = 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)
|
||||
|
||||
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)
|
||||
gdproptindate = models.DateTimeField(blank=True,null=True)
|
||||
|
||||
# customer data
|
||||
customer_id = models.IntegerField(default=None,null=True,blank=True)
|
||||
|
||||
# Heart Rate Zone data
|
||||
max = models.IntegerField(default=192,verbose_name="Max Heart Rate")
|
||||
@@ -729,20 +772,6 @@ class Rower(models.Model):
|
||||
getimportantemails = models.BooleanField(default=True,
|
||||
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 = 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