Exemplo n.º 1
0
    def post(self):
	next = None
	bookmark = self.request.get('subscription_key')

	q = Subscription.all().order('__key__').filter('status =', Subscription.verified)
	if bookmark:
	    q.filter('__key__ >', db.Key(bookmark))
	subscription = q.get()

	## 0. done if there are no more subscriptions
	if not subscription:
	    return

	## 1. otherwise, process this subscription via its settings:
	listing_key = self.request.get('listing_key')
	listing = Listing.get(listing_key)
	settings = subscription.settings
	if settings.email and settings.notify_listing_defs:
	    items = [i.defindex for i in listing.items()]
	    for defindex in items:
		if defindex in settings.notify_listing_defs:
		    ## no name, that would mean yet another datastore read...
		    send(settings.email, listing.url())
		    break

	## 2.  add another item to the queue:
	queue_tool.notify_listing(subscription_key=subscription.key(),
				  listing_key=listing_key)
Exemplo n.º 2
0
    def encode_builtin(self, settings=False, complete=False, subscription=True):
	""" Encode this instance using only built-in types. """
	id64 = self.id64()
	res = {
	    'id64' : id64,
	    'rating' : self.get_rating(),
	    'custom_name' : self.custom_name,
	}
	for key in self.dynamic_properties():
	    res[key] = getattr(self, key)
	if settings:
	    psettings = PlayerSettings.get_by_id64(id64)
	    psettings = psettings.encode_builtin(complete) if psettings else {}
	else:
	    psettings = {}
	res['settings'] = psettings
	if subscription:
	    psub = Subscription.get_by_id64(id64)
	    psub = psub.encode_builtin() if psub else {}
	else:
	    psub = {}
	res['subscription'] = psub
	res['message_count'] = PlayerMessage.count_for_user(id64)
	return res
Exemplo n.º 3
0
    def is_subscriber_id64(cls, id64):
	psub = Subscription.get_by_id64(id64)
	return psub.is_subscriber() if psub else False