Beispiel #1
0
    def post(self):
	try:
	    bid = self.body_json()
	    items = bid['items']
	    item_ids = [(i['id'], i) for i in items]
	    if len(item_ids) != len(items):
		raise TypeError('Missing item identifiers.')
	    public_msg = bid['public_msg'][0:400]
	    private_msg = bid['private_msg'][0:400]
            currency_val = float(bid['currency_val'] or 0)
	    if bid.get('update'):
		key = Bid.build_update(
		    item_ids=item_ids,
                    public_msg=public_msg,
                    private_msg=private_msg,
		    listing_id=bid['id'],
                    currency_val=currency_val)
	    else:
		key = Bid.build(
		    item_ids=item_ids,
                    public_msg=public_msg,
                    private_msg=private_msg,
		    listing_id=bid['id'],
                    currency_val=currency_val
                    )
	except (Exception, ), exc:
            raise
	    error('add bid: %s', exc)
	    self.error(500)
	    exc = exc.message if hasattr(exc, 'message') else str(exc)
	    result = {'msg':'error', 'description':exc}
Beispiel #2
0
    def post(self):
	try:
	    vs = self.body_json()
	    source, bid, listing, rating, text = \
		    vs['source'], vs['bid'], vs['listing'], int(vs['rating']), vs['text'][0:400]
	    user = users.get_current_user()
	    bid = Bid.get(bid)
	    listing = Listing.get(listing)
	    fb = Feedback.get_by_source(bid, listing, user_steam_id(user))
	    if rating > 100 or rating < -100:
		raise TypeError('Invalid feedback rating')
	    if source == 'lister':
		## lister is adding feedback for bidder; target is bid owner
		target = bid.owner
	    elif source == 'bidder':
		## bidder is adding feedback for lister; target is listing owner
		target = listing.owner
	    else:
		raise TypeError('Invalid feedback source')
	    source = user_steam_id(user)
            if fb:
		#raise TypeError('Feedback exists')
                fb.rating = rating
                fb.comment = text
                fb.put()
            else:
                fb = Feedback.build(bid, listing, source, target, rating, text)
	except (Exception, ), exc:
	    self.error(500)
	    raise
	    exc = exc.message if hasattr(exc, 'message') else str(exc)
	    result = {'msg':'error', 'description':exc}
Beispiel #3
0
    def post(self):
	try:
	    key = self.request.get('bid')
	    warn('notify win: %s', key)
	    bid = Bid.get(key)
	    profile = bid.owner_profile()
	    settings = PlayerSettings.get_by_id64(bid.owner).encode_builtin(complete=True)
	    if settings['email'] and settings['notify-wins']:
		name = getattr(profile, 'personaname', bid.owner)
		send(name, settings['email'], bid.owner, bid.listing.url())
	except (Exception, ), exc:
	    warn('notify win exception: %s', exc)
	    self.response.out.write('WARN')
Beispiel #4
0
    def post(self):
	try:
	    key = self.body_json()['key']
	    bid = Bid.get(key)
	    if not bid:
		self.error(404)
	    elif user_steam_id(users.get_current_user()) != bid.owner:
		self.error(401)
	    else:
		bid.cancel()
	except (Exception, ), exc:
	    self.error(500)
            raise
	    error('cancel bid exception: %s', exc)
Beispiel #5
0
    def get(self):
	try:
	    id64 = self.path_tail()

	    q = Bid.all()
	    q.filter('owner = ', id64)
	    qs = parse_qs(self.request.query_string)
	    #if (user_steam_id(users.get_current_user()) == id64) and 'ext' in qs:
            if not 'ext' in qs:
		q.filter('status = ', 'active')
	    q.order('-created')
	    rs = [r.encode_builtin() for r in q.fetch(limit=100)]
	    self.write_json(rs)
	except (Exception, ), exc:
	    self.error(500)
	    self.write_json({'exception':str(exc)})
Beispiel #6
0
    def post(self):
	try:
	    key = self.request.get('bid')
	    update = self.request.get('update')
	    #warn('notify bid: %s, %s', key, update)
	    bid = Bid.get(key)
	    listing = bid.listing
	    profile = listing.owner_profile()
	    settings = PlayerSettings.get_by_id64(listing.owner).encode_builtin(complete=True)
	    if settings['email'] and settings['notify-bids']:
		name = getattr(profile, 'personaname', listing.owner)
		send(name, settings['email'], listing.owner, listing.url())

	except (Exception, ), exc:
	    warn('notify bid exception: %s', exc)
	    self.response.out.write('WARN')