def unmute_command(self, message=None): subscriber_mail = self.user_mail(message.sender) logging.info('muting user: %s' % subscriber_mail) im_from = db.IM('xmpp', message.sender) mutedSubscription = Subscription.gql('WHERE subscriber_mail = :1 and active = True and mute = True', subscriber_mail).fetch(100) if mutedSubscription is not None: for ms in mutedSubscription: ms.mute=False ms.put() message.reply('Subscriptions unmuted.')
def unsubscribe_command(self, message=None): im_from = db.IM('xmpp', message.sender) subscriber_mail = self.user_mail(message.sender) logging.info('unscribing user: %s' %message.sender) subscribers = Subscription.gql('WHERE subscriber_mail = :1 and active = True' , subscriber_mail).fetch(100) if not subscribers or len(subscribers) == 0: message.reply('Heh! It seems like you don\'t have any active subscriptions') return for s in subscribers: s.active = False s.put() message.reply('All your subscriptions have been canceled')
def post(self): feed = feedparser.parse(self.request.body) # delete json feed cache logging.info('deleting json cache info') memcache_key='feed_json_cache' memcache.delete(memcache_key) #root = ElementTree.fromstring(data) logging.info('recieved:callback ' ) subscribers = Subscription.gql('WHERE active = True and mute = False').fetch(100) subscribers_address = [ s.subscriber.address for s in subscribers ] logging.info(' trying to send messages to following addresses %s ' %(','.join(subscribers_address))) for update in feed.entries: logging.info('adding message to broadcast queue %s ' %update) taskqueue.add(queue_name='message-broadcast-queue', url= '/message/broadcast/task', params={'user_id':update.id, 'title':update.title, 'link':update.link, 'domain':update.domain, 'updated': update.updated,'subscribers': simplejson.dumps(subscribers, default=lambda s: {'a':s.subscriber.address, 'd':s.domain})})
def subscribe_command(self, message=None): subscriber_mail = self.user_mail(message.sender) logging.info('subscribing user: %s' % subscriber_mail) im_from = db.IM('xmpp', message.sender) domain = RequestUtils.getDomain(message.arg) if message.arg == 'all': domain = 'all' if not domain: message.reply('You must provide valide domain for subscription. \'%s\' is not valid domain. Make sure that domain starts with http://' %message.arg) return existingSubscription = Subscription.gql('WHERE subscriber_mail = :1 and domain = :2 and active = True', subscriber_mail, domain).get() if existingSubscription is not None: message.reply('You have already subscribed for this domain %s. Remember?' % domain) return subscription = Subscription(subscriber = im_from, subscriber_mail = subscriber_mail, domain = domain, activationDate = datetime.datetime.now(), active = True, mute = False) invite = IMInvite.gql('WHERE jid = :1 ', subscriber_mail) subscription.put() if invite: invite.subscribed = True invite.put() message.reply('Subscription added.')