def all(web, args=None): """ Flash get all gallery data for a given user. /gallery/all/uid web return if successful: {uid:"uid",rooms:n,items:n,content:{vgkey:{},..},vgs:{vg:..}} """ if args: uid = args[0] else: uid = web.get_param('uid') u = helper.query_user_by_key(uid) if not u: web.fail('User not found') return sg = SuiGallery.get_by_user(uid) give = 0 if not sg: sg = SuiGallery(key_name=uid) vgids = None else: if (datetime.utcnow() - sg.lastime).days >= 1: give = 1 sg.save() vgids = sg.get_unique_item_ids() if vgids: vgs = SuiGoods.load_by_ids(vgids) ves = [ '"%s":{"name":"%s","v":%d,"note":"%s","bk":%s}' % (vk, vg.name, vg.version, vg.note or '', vg.book) for vk, vg in vgs.items() ] else: ves = [] r = '{"uid":"%s","name":"%s","rooms":%d,"items":%d,"content":%s,"vgs":{%s},"give":%d}' % ( uid, u.name, sg.rooms, sg.items, sg.content or {}, ','.join(ves), give) web.succeed(r)
def save_exchange(buyer, tstamp, fee, data): """ Save a new SuiExchange entity if not saved yet, key_name is method_order_number. @param data : {'item_id':'sup1','quantity':1,'price':10,'order_number':'2343-3422','currency':'GBP','method':'GC'} @exception : db error """ m = data['method'] on = data['order_number'] keyname = '%s_%s' % (m, on) exe = SuiExchange.get_by_key_name(keyname) if isinstance(buyer, basestring): ukey = buyer buyer = helper.query_user_by_key(ukey) else: ukey = buyer.key().name() if exe is None: exe = SuiExchange(key_name=keyname, user=ukey, xtime=tstamp) q = int(data['quantity']) pkg = data['item_id'] exe.points = q * gPackages[pkg.lower()]['pts'] exe.quantity = q exe.price = float(data['price']) exe.orderef = '%s' % on exe.currency = data['currency'] exe.method = data['method'] exe.buyerid = '%s' % data['buyer'] exe.package = pkg exe.fee = 1.0 * (fee or 1) taskqueue.add(url='/task/log', params={ 'usr': ukey, 'act': 'bought %s,%s+%s' % (pkg, buyer.points, exe.points), 'dt': str(datetime.utcnow()) }) try: exe.put() buyer.points += exe.points buyer.save() logging.debug('SuiExchange saved, %s, %s' % (m, on)) taskqueue.add(url='/task/dau', params={ 'usr': buyer.key().name(), 'act': 'pay', 'par': pkg, 'qty': str(q) }) except Exception, e: logging.exception('SuiExchange.put() failed:%s' % e) helper.send_email('Suinova test payment failure notification', str(e)) raise
def save_exchange(buyer,tstamp,fee,data): """ Save a new SuiExchange entity if not saved yet, key_name is method_order_number. @param data : {'item_id':'sup1','quantity':1,'price':10,'order_number':'2343-3422','currency':'GBP','method':'GC'} @exception : db error """ m = data['method'] on = data['order_number'] keyname = '%s_%s' % (m, on) exe = SuiExchange.get_by_key_name(keyname) if isinstance(buyer,basestring): ukey = buyer buyer = helper.query_user_by_key(ukey) else: ukey = buyer.key().name() if exe is None: exe = SuiExchange(key_name=keyname,user=ukey,xtime=tstamp) q = int(data['quantity']) pkg = data['item_id'] exe.points = q * gPackages[pkg.lower()]['pts'] exe.quantity = q exe.price = float(data['price']) exe.orderef = '%s'%on exe.currency = data['currency'] exe.method = data['method'] exe.buyerid = '%s'%data['buyer'] exe.package = pkg exe.fee = 1.0 * (fee or 1) taskqueue.add(url='/task/log',params={'usr':ukey,'act':'bought %s,%s+%s'%(pkg,buyer.points,exe.points),'dt':str(datetime.utcnow())}) try: exe.put() buyer.points += exe.points buyer.save() logging.debug('SuiExchange saved, %s, %s' % (m, on)) taskqueue.add(url='/task/dau',params={'usr':buyer.key().name(),'act':'pay','par':pkg,'qty':str(q)}) except Exception,e: logging.exception('SuiExchange.put() failed:%s'%e) helper.send_email('Suinova test payment failure notification',str(e)) raise