def build_update_transaction(cls, owner, profile, listing, bid, item_ids, public_msg, private_msg, currency_val=0): if not profile.owns_all(uid for uid, item in item_ids): raise ValueError('Incorrect ownership.') schema = json_loads(fetch.schema()) bid.message_public = public_msg bid.message_private = private_msg bid.currency_val = currency_val bid.put() item_types = item_type_map(schema) for uid, item in item_ids: uid = str(uid) bid_item = BidItem( parent=bid, uniqueid=uid, defindex=item['defindex'], source=json_dumps(item), item_type_name=item_types[item['defindex']], listing=listing, bid=bid) bid_item.put() key = bid.key() queue_tool.bang_counters({'bid_items':len(item_ids)}, transactional=True) ## we don't re-queue the bid verification because the ## verification script will pick up all of the items when it ## runs. queue_tool.notify_bid({'bid':key, 'update':True}, transactional=True) return key
def build_transaction(cls, owner, profile, listing, item_ids, public_msg, private_msg, currency_val): if not cls.lazy_verify: if not profile.owns_all(uid for uid, item in item_ids): raise ValueError('Incorrect ownership.') schema = json_loads(fetch.schema()) bid = cls(owner=owner, listing=listing, message_private=private_msg, message_public=public_msg, currency_val=currency_val) key = bid.put() item_types = item_type_map(schema) for uid, item in item_ids: uid = str(uid) bid_item = BidItem( parent=bid, uniqueid=uid, defindex=item['defindex'], source=json_dumps(item), item_type_name=item_types[item['defindex']], listing=listing, bid=bid) bid_item.put() queue_tool.bang_counters({'bids':1, 'bid_items':len(item_ids)}, transactional=True) queue_tool.reverify_items({'key':key, 'action':'init', 'type':'bid'}, transactional=True) queue_tool.notify_bid({'bid':key, 'update':False}, transactional=True) return key