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)
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
def is_subscriber_id64(cls, id64): psub = Subscription.get_by_id64(id64) return psub.is_subscriber() if psub else False