Beispiel #1
0
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)
Beispiel #2
0
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
Beispiel #3
0
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