Ejemplo n.º 1
0
def renew_membership(request, club_name):
    """new club memberships and renewals"""

    user = request.user
    up = user.get_profile()
    club = Club.objects.get(safe_name=club_name)

    try:
        m = Membership.objects.get(user_prof=up, club=club, paid=True)
        m.price = club.renew_cost

    except Membership.DoesNotExist:
        #create new membership
        m = Membership()
        m.club = club
        m.user_prof = up
        m.price = club.new_member_cost

        m.start = datetime.date.today()
        m.valid_thru = m.start + datetime.timedelta(days=365)

    #create an order
    order = Order()
    order.user_prof = up
    order.save()
    m.order = order
    m.save()

    redirect_target = request.build_absolute_uri(
        reverse('club_detail', kwargs={'club_name': club_name}))

    # What you want the button to do.
    paypal_dict = {
        "business": club.paypal_email,
        #'business': '*****@*****.**',
        "amount": order.calc_total_price(),
        "item_name": 'Membership for %s ' % club.name,
        "invoice": order.pk,
        "notify_url": request.build_absolute_uri(reverse('paypal-ipn')),
        "return_url": redirect_target,
        "cancel_return": redirect_target,
    }
    paypal_form = PayPalPaymentsForm(initial=paypal_dict)

    context = {
        'paypal_form': paypal_form.render(),
        'price': paypal_dict['amount'],
        'club': club,
        'order': order,
        'items': [i.as_leaf_model().cart_name() for i in order.items.all()]
    }

    return render_to_response('registration/start_pay.html',
                              context,
                              context_instance=RequestContext(request))
    def test_total_price(self):
        self.o = Order()
        self.o.user_prof = self.user.get_profile()
        self.o.save()

        item1 = Registration()
        item1.number = 11
        item1.race_class = self.race_class
        item1.pax_class = None
        item1.event = self.e
        item1.price = "40.00"
        item1.order = self.o
        item1.club = self.c
        item1.save()

        item2 = Membership()
        item2.user_prof = self.user.get_profile()
        item2.club = self.c
        item2.num = 1
        item2.start = datetime.date.today() - datetime.timedelta(days=300)
        item2.valid_thru = datetime.date.today() + datetime.timedelta(days=1)
        item2.price = "60.00"
        item2.order = self.o
        item2.save()

        self.o.calc_total_price()
        self.assertEqual(self.o.total_price, "100.00")

        club = Club()
        club.name = "test-test"
        club.save()

        c = Coupon()
        c.discount_amount = "10.00"
        c.permanent = True
        c.code = "aaa"
        c.expires = datetime.date.today() + datetime.timedelta(days=1)
        c.club = club
        c.save()

        self.o.coupon = c
        self.o.calc_total_price()
        self.assertEqual(self.o.total_price, '90.00')
    def test_total_price(self): 
        self.o = Order()
        self.o.user_prof = self.user.get_profile()
        self.o.save()        
        
        item1 = Registration()
        item1.number = 11
        item1.race_class = self.race_class
        item1.pax_class = None
        item1.event = self.e
        item1.price = "40.00"
        item1.order = self.o
        item1.club = self.c
        item1.save()
        
        item2 = Membership()
        item2.user_prof = self.user.get_profile()
        item2.club = self.c
        item2.num = 1
        item2.start = datetime.date.today() - datetime.timedelta(days=300)
        item2.valid_thru = datetime.date.today()+datetime.timedelta(days=1)
        item2.price = "60.00"
        item2.order = self.o
        item2.save()
        
        self.o.calc_total_price()
        self.assertEqual(self.o.total_price, "100.00")

        club = Club()
        club.name ="test-test"
        club.save()
        
        c = Coupon()
        c.discount_amount = "10.00"
        c.permanent = True
        c.code = "aaa"
        c.expires = datetime.date.today() + datetime.timedelta(days=1)
        c.club = club
        c.save()
        
        self.o.coupon = c
        self.o.calc_total_price()
        self.assertEqual(self.o.total_price, '90.00')