def unsms_command(self, message=None): """Unsubscribe the user from a service""" plist = message.body.split(' ') if len(plist)==2: user = message.sender.split('/')[0] service_name = plist[1] service = Service.all().filter('name = ', service_name).get() if service: subscription = Subscription.all().filter('address =', user).filter('service = ', service).get() if subscription: mobile = Mobile.all().filter('subscription = ', subscription).get() if mobile: message.reply("Unsubscribed user %s from backup mobile %s for service %s" % (user, mobile.number,service_name)) mobile.delete() else: message.reply("No backup mobile for user %s on %s service" % (user,service_name)) else: message.reply("User %s is not subscribed to service %s" % (user, service.name)) else: message.reply("Sorry, I couldn't find a service called " "%s" % service_name) else: message.reply("Usege: unsms SERVICE +6112345678")
def unsub_command(self, message=None): """Unsubscribe the user from a service""" user = message.sender.split('/')[0] plist = message.body.split(' ' ) service_name = plist[1] if len(plist)>2: type = "sms" user = plist[2] else: type = "xmpp" service = Service.all().filter('name = ', service_name).get() if service: subscription = Subscription.all().filter('address =', user).filter('service = ', service).filter('type =', type).get() if subscription: subscription.delete() if type == "xmpp": mobile = Mobile.all().filter('subscription = ', subscription).get() if mobile: mobile.delete() message.reply("Unsubscribed %s from service %s" % (user, service.name)) else: message.reply("user %s is not subscribed to service %s" % (user, service.name)) else: message.reply("Sorry, I couldn't find a service called " "%s" % service_name)
def sms_command(self, message=None): """Subscribe the user to a offline SMS""" plist = message.body.split(' ') if len(plist)==3: user = message.sender.split('/')[0] service_name = plist[1] number = plist[2] service = Service.all().filter('name = ', service_name).get() if service: subscription = Subscription.all().filter('address =', user).filter('service = ', service).get() if subscription: mobile = Mobile.all().filter('number =', number).get() if mobile: message.reply("user %s is already registered backup mobile %s for service %s" % (user, mobile.number,service_name)) else: mobile = Mobile(number=number, subscription = subscription) mobile.put() message.reply("Subscribed user %s to backup mobile %s for service %s" % (user, number,service_name)) else: message.reply("Sorry, I couldn't find a subscription on %s for %s" % (service_name,user)) else: message.reply("Sorry, I couldn't find a service called " "%s" % service_name) else: message.reply("Usage: sms SERVICE +61412345678")
def post(self, version, service_slug): if not self.valid_version(version): self.error(404, "API Version %s not supported" % version) return status_slug = self.request.get("status", default_value=None) message = self.request.get("message", default_value=None) informational = self.request.get("informational", default_value=None) if not message: self.error(400, "Event message is required") return service = Service.get_by_slug(service_slug) if not service: self.error(404, "Service %s not found" % service_slug) return last_event = service.current_event() if last_event: old_status = last_event.status if not status_slug: if last_event: status = old_status else: status = Status.get_default() else: status = Status.get_by_slug(status_slug) if not status: self.error(404, "Status %s not found" % status_slug) return e = Event(status=status, service=service, message=message) e.informational = informational and informational == "true" e.put() # Queue up a task that calls the Twitter API to make a tweet. if self.request.get('tweet'): logging.info('Attempting to post a tweet for the latest event via async GAE task queue.') taskqueue.add(url='/admin/tweet', params={'service_name': service.name, 'status_name': status.name, 'message': message}) # Queue up tasks for notifing subscribers via XMPP if service.subscriptions: for subscription in service.subscriptions.filter("type =","xmpp"): mobile = Mobile.all().filter('subscription = ', subscription).get() if mobile: mobile_number = mobile.number else: mobile_number = False params={'address': subscription.address, 'service': service.key(), 'oldstatus': old_status.key(), 'number': mobile_number} logging.info("Adding deferred task: %s %s" % ( subscription.type, params)) taskqueue.add(url='/notify/' + subscription.type, params=params) else: logging.info("No subscriptions for %s" % service.name) invalidate_cache() self.json(e.rest(self.base_url(version)))