def profile(): # Generate a list, myBootablesIdsWithPledgeOptions, of Bootable project ID's that have # PledgeOptions attached to them and so are launchable. myPledgeOptions=db((db.PledgeOptions.bootable_id == db.Bootables.id) & \ (db.Bootables.user_id == auth.user.id)).select() myBootablesIdsWithPledgeOptions = [] for pledgeOption in myPledgeOptions: myBootablesIdsWithPledgeOptions.append(pledgeOption.Bootables.id) myPledgeOptionsAndRewards = db( (db.BootablesWithTotalPledged.id == db.RewardsForEachPledgeOption.bootable_id) & \ (db.Pledges.user_id == auth.user.id) & \ (db.BootablesWithTotalPledged.state == db.States.id) & \ (db.RewardsForEachPledgeOption.pledgeOption_id == db.Pledges.pledge_id)).select() myPledgeOptionsAndRewards = notNone(myPledgeOptionsAndRewards) myBootables = db( (db.BootablesWithTotalPledged.category==db.Categories.id) & \ (db.BootablesWithTotalPledged.user_id == auth.user.id) & \ (db.BootablesWithTotalPledged.state == db.States.id)).select() myBootables = notNone(myBootables) return dict( numberOfPledges=getNumberOfPledges(), totalPledged=getAmountPledged(), myBootablesIdsWithPledgeOptions=myBootablesIdsWithPledgeOptions, myPledgeOptionsAndRewards=myPledgeOptionsAndRewards, myBootables=myBootables)
def profile(): # Generate a list, myBootablesIdsWithPledgeOptions, of Bootable project ID's that have # PledgeOptions attached to them and so are launchable. myPledgeOptions=db((db.PledgeOptions.bootable_id == db.Bootables.id) & \ (db.Bootables.user_id == auth.user.id)).select() myBootablesIdsWithPledgeOptions = [] for pledgeOption in myPledgeOptions: myBootablesIdsWithPledgeOptions.append(pledgeOption.Bootables.id) myPledgeOptionsAndRewards = db( (db.BootablesWithTotalPledged.id == db.RewardsForEachPledgeOption.bootable_id) & \ (db.Pledges.user_id == auth.user.id) & \ (db.BootablesWithTotalPledged.state == db.States.id) & \ (db.RewardsForEachPledgeOption.pledgeOption_id == db.Pledges.pledge_id)).select() myPledgeOptionsAndRewards=notNone(myPledgeOptionsAndRewards) myBootables = db( (db.BootablesWithTotalPledged.category==db.Categories.id) & \ (db.BootablesWithTotalPledged.user_id == auth.user.id) & \ (db.BootablesWithTotalPledged.state == db.States.id)).select() myBootables=notNone(myBootables) return dict( numberOfPledges=getNumberOfPledges(), totalPledged=getAmountPledged(), myBootablesIdsWithPledgeOptions=myBootablesIdsWithPledgeOptions, myPledgeOptionsAndRewards=myPledgeOptionsAndRewards, myBootables=myBootables)
def index(): newestFiveBootables = db(db.BootablesWithTotalPledged.state == 0).select(orderby=~db.BootablesWithTotalPledged.dateCreated)[0:5] newestFiveBootables.compact = False newestFiveBootables = notNone(newestFiveBootables) closestFiveToFunded = db( (db.BootablesWithTotalPledged.state == 0) & \ ((db.BootablesWithTotalPledged.percentageComplete < 100) | (db.BootablesWithTotalPledged.percentageComplete == None))).select(orderby=~db.BootablesWithTotalPledged.percentageComplete)[0:5] closestFiveToFunded.compact = False closestFiveToFunded = notNone(closestFiveToFunded) return dict(newestFiveBootables=newestFiveBootables, closestFiveToFunded=closestFiveToFunded)
def view(): bootable = db((db.BootablesWithTotalPledged.category==db.Categories.id) & \ (db.BootablesWithTotalPledged.id == request.args(0))).select() bootable=notNone(bootable) bootable=notNone(bootable).first() possiblePledgeOptions = db( (db.PledgeOptions.bootable_id==request.args(0))).select() processedPossiblePledges = [] for possiblePledgeOption in possiblePledgeOptions: pledgeWithRewards = db( (db.PledgeRewardPairs.pledgeOption_id==possiblePledgeOption.id) & \ (db.PledgeRewardPairs.reward_id==db.Rewards.id)).select() rewards=[] for row in pledgeWithRewards: rewards.append(row.Rewards.reward) processedPossiblePledges.append({ 'pledgeOption_id':possiblePledgeOption.id, 'price':possiblePledgeOption.price, 'pledgeTitle':possiblePledgeOption.pledgeTitle, 'rewards':rewards }) usersAndPledges = db((db.Bootables.id==db.PledgeOptions.bootable_id) & \ (db.Bootables.id == request.args(0)) & \ (db.Pledges.user_id == db.auth_user.id) & \ (db.Pledges.pledge_id == db.PledgeOptions.id)).select() userIsLoggedIn = False if (auth.user != None): userIsLoggedIn=True pledgesFromThisUserForThisBootable=None if (userIsLoggedIn): pledgesFromThisUserForThisBootableQuery = db((db.Bootables.id==db.PledgeOptions.bootable_id) & \ (db.Bootables.id == request.args(0)) & \ (db.Pledges.user_id == db.auth_user.id) & \ (db.Pledges.user_id == auth.user.id) & \ (db.Pledges.pledge_id == db.PledgeOptions.id)).select() if (len(pledgesFromThisUserForThisBootableQuery)>0): pledgesFromThisUserForThisBootable = pledgesFromThisUserForThisBootableQuery[0] return dict( bootable=bootable, processedPossiblePledges=processedPossiblePledges, usersAndPledges=usersAndPledges, userIsLoggedIn=userIsLoggedIn, pledgesFromThisUserForThisBootable=pledgesFromThisUserForThisBootable, )
def search(): searchTerm="%"+request.vars.searchTerm+"%" # TODO - add search for shortDescription as well, these items should be lower priority though. Sort by date created. bootables = db( (db.BootablesWithTotalPledged.state >= 0) & \ (db.BootablesWithTotalPledged.title.like(searchTerm))).select() bootables.compact = False bootables=notNone(bootables) return dict(bootables=bootables)
def category(): bootables = db((db.BootablesWithTotalPledged.category==db.Categories.id) & (db.Categories.category == request.args(0))).select() bootables=notNone(bootables) return dict(bootables=bootables)