have you tried putting some logging in cart_callback to see if it actually 
gets called?  are there JS errors in the browser (check the error 
console)?  have you used the developer tools (now built in to both FF and 
chrome) to inspect the HTML, and check the HTTP traffic between client and 
server?

if you can find some more info about the error you are having we'll have 
more to help us guide you!

good luck,

cfh

On Monday, November 12, 2012 8:58:11 PM UTC-8, Ton Dong wrote:
>
> Hi all,
>
> I am a newbie in web design. I followed the instructions in the video 
> "Build an online store with web2py" at http://vimeo.com/20768689
> I don't know why I can not add any items to cart. Please help me to show 
> where I was wrong. Thank you a lot.
>
> ~ Ton Dong
> The code:
>
> - Model: hmw.py
> # coding: utf8
> db.define_table(
> 'product',
>   Field('nameproduct', 'string',notnull=True,unique=True, length=30),
>   Field('price', 'double'),
>   Field('desciption', 'text'),
>   Field('image','upload'),
>   Field('sortable','integer'),
>   auth.signature,
>   format = '%(nameproduct)s',
>   singular = 'product',
>   plural = 'products',
>   )
> db.define_table(
>  'sale',
>   Field('invoice'),
>   Field('creditcard'),
>   Field('buyer',db.auth_user),
>   Field('product',db.product),
>   Field('quantity','integer'),
>   Field('price', 'double'),
>   Field('shipped', 'boolean', default=False),
>   auth.signature,
>   )
>
> - Conntroller:
> def index():
>     session.cart = session.cart 
>     products = db(db.product).select(orderby=db.product.sortable)
>     return locals()
>      
> def user():
>     return dict(form=auth())
>
> def download():
>     return response.download(request,db)
> def call():
>     session.forget()
>     return service()
> @auth.requires_login()
> def cart():
>     return dict(cart=session.cart)
>
> @auth.requires_login()
> def pay():
>     import uuid
>     invoice = str(uuid.uuid4())
>     total = sum(db.product(id).price*qty for id, qty in 
> session.cart.items())
>     form = SQLFORM.factory(Field('creditcard',default='000000000000000'),
>                            Field('expiration', default='12/2015'),
>                            Field('cvv', default='111'),
>                            
> Field('total','double',default=total,writable=False))
>     if form.accepts(request,session):
>       if process(form.vars.creditcard, form.vars.expiration, total, 
> form.vars.cvv,0.0,'invoice'):  
>         for key, value in sesssion.cart.items():
>             db.sale.insert(invoice=invoice,
>                             buyer=auth.user.id,
>                             product=key,
>                             quantity = value,
>                             price = db.product(key).price,
>                             creditcard = form.vars.creditcard)
>         session.cart.clear()
>         session.flash = 'Thanks for your order'   
>         redirect(URL('index'))
>     return dict(cart=session.cart, form=form)
>
> def cart_callback():
>     id = int(request.vars.id)
>     if request.vars.action == 'add':
>         session.cart[id] = int(session.cart.get(id,0))+1
>     if request.vars.action == 'sub':
>         session.cart[id] = max(0,session.cart.get(id,0)-1)    
>         return str(session.cart[id])
>
> - index.html
>
> {{extend 'layout.html'}}
> {{for p in products:}}
>     <div>
>         <h5> {{=p.nameproduct}} - ${{=p.price}} </h5>
>         <br>
>         <img width="200px"
>         src="{{=URL 
> <http://127.0.0.1:8000/examples/global/vars/URL>('download', args=p.image)}}" 
> />
>         <br>
>         <span id='item{{=p.id}}'>{{=session 
> <http://127.0.0.1:8000/examples/global/vars/session>.cart.get(p.id,0)}}</span>
>  in cart
>         <button onclick='ajax('{{=URL 
> <http://127.0.0.1:8000/examples/global/vars/URL>('cart_callback', 
> vars=dict(id=p.id,action='add'))}}',[],'item{{=p.id}}')'>add </button>
>           
>     </div>
> {{pass}}
>
>
>
>  
>

-- 



Reply via email to