def post(self): errors = list() post = self.request.POST if "namespace" in post: namespace_name = post["namespace"].lower() query = db.GqlQuery("SELECT * FROM Namespace WHERE name = :1", namespace_name) namespace = query.get() if not namespace: errors.append("Namespace: not found") else: namespace_owner = namespace.owner if "auth_key" in post: auth_key = post["auth_key"] if namespace: if auth_key != namespace.auth_key: errors.append("AuthKey: not authorised") else: errors.append("AuthKey: not specified") else: errors.append("Namespace: not specified") if "name" in post: name = str(post["name"].lower()) name = name[:100] if len(name) < 4: errors.append("Name: too short") else: errors.append("Name: not specified") if "level" in post: level = post["level"] if level not in ["debug", "info", "warn", "error", "fatal"]: level = "info" level_int = level_string_to_number(level) else: errors.append("Level: not specified") if "body" in post: body = str(post["body"]) if len(body) < 1: errors.append("Body: too short") else: errors.append("Body: not specified") success = (len(errors) == 0) message_key = None if success: message = Message(namespace=namespace, namespace_owner=namespace_owner, name=name, level=level_int, auth_key=auth_key, body=body) message.put() message_key = str(message.key()) memcache.set("message_latest_%s" % (namespace_owner), {"key": message_key, "namespace": namespace.name, "name": message.name, "level": message.level_string().upper(), "body": message.body, "created": message.created.strftime("%Y-%m-%d %H:%M:%S")}) self.generate("rest/message_create.xml", {"success": success, "errors": errors, "key": message_key})