def register(self, **kw): try: secret = request.args.get("secret") url = request.args.get("url") if sha1(secret).hexdigest() == SECRET_HASH and url: s = Setting.all().filter("name =", "update.url").get() if not s is None: s.value = url s.put() else: s = Setting(name="update.url", value=url) s.put() memcache.set(key="update.url", value=serialize_entities(url), time=CACHE_TIME * 24) logging.info("New url recieved: %s" % url) return Response("URL recieved.") except db.Timeout: msg = "\nUrl was not saved. The database timed out." logging.error(msg) return Response(msg, status=500) except CapabilityDisabledError: msg = "\nUrl was not saved. Database could not be written to." logging.error(msg) return Response(msg, status=500) except TransactionFailedError: msg = "\nUrl was not saved. Transaction failed." logging.error(msg) return Response(msg, status=500) except Exception, e: if DEBUG: print_exc() logging.error(str(e)) return Response("\nUrl was not saved. %s." % e, status=500)
def send_update(user_name, user_key): try: url = deserialize_entities(memcache.get("update.url")) if url is None: url = Setting.all().filter("name =", "update.url").get() memcache.set(key="update.url", value=serialize_entities(url), time=CACHE_TIME * 24) result = urlfetch.fetch( url, payload=urlencode([("userkey", user_key), ("product", PRODUCT), ("version", VERSION)]), method=urlfetch.POST, ) if result.status_code == 200: logging.info("Update %s sent to %s" % (VERSION, user_name)) else: logging.error( "Update %s for user %s, %s failed with status_code %d." % (VERSION, user_name, user_key, result.status_code) ) except Exception: if DEBUG: print_exc() logging.error("Update %s for user %s, %s failed." % (VERSION, user_name, user_key))