Esempio n. 1
0
    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})