Hello all, I was wondering how to do promotions for products that have a
time limit to it? An example of this would be Valve's Steam, where each
individual game can have a unique promotion which ends after a certain time
is passed. The promotion can be tied to an individual product, to groups of
products, or all products in a site-wide promotion.
I'm thinking that each product would have a python datetime associated that
defines the end of the promotion.
db.define_table('myproducts',
Field('name'),
Field('description'),
Field('original_price'),
Field('promo_price'),
Field('promotion_end', 'datetime', default=None)) #
'promotion_end' should be None if no promotion is active
Then, whenever a product is going to be on sale or something, I can update
that product's promotion_end. A javascript timer would use this date and
countdown from it on the website, so that the user can see how long there
is until the promotion ends for that product. For groups of products, it's
just updating the promotion_end for multiple products. For site-wide, I
would just update the promotion_end for all products.
When a promotion is active, the promo_price will show (probably calculated
dynamically depending on the how large the discount is). When the promotion
is inactive, the original_price will show.
There are a few problems I don't understand how to solve:
- I will probably have to write a script to update the promotion_end for
the products when a promotion is going to happen. Where will this script
live (in the modules folder?) and when/where should it be executed?
- Since the timer is ticking down on the client-side (using a javascript
countdown timer), how will the server know when a promotion has ended so
that it can immediately update the site's html to hide any signs of the
expired promotion? The server will also have to reset to its original price
instead of the promo price and set the promotion_end to None.
For example, when a promotion is active on a product, the html will
display original_price crossed out and display the promo_price in big
letters. When the promo is inactive, the html should show only the
original_price and the countdown timer should not be shown at all.
- In reference to the previous question, if the server needs to keep track
of the time left of a promotion, what happens if an email is to be sent out
24 hours before the promotion ends? This implies that the server needs to
consistently keep track of all active promotions and their respective end
times. Does web2py have some sort of mechanism (maybe some sort of python
thread?) that will actively keep track of this?
I'm not familiar with database design or web2py in-depth, so any help or
ideas would be great.
--
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.