Esempio n. 1
0
    def post(self, version, status_slug):
        if not self.valid_version(version):
            self.error(404, "API Version %s not supported" % version)
            return

        status = Status.get_by_slug(status_slug)

        if not status:
            self.error(404, "No status with the slug %s found" % status_slug)
            return

        name = self.request.get('name', default_value=None)
        image_slug = self.request.get('image', default_value=None)
        image = None
        default = self.request.get('default', default_value=None)
        description = self.request.get('description', default_value=None)

        if image_slug is not None:
            image = Image.get_by_slug(image_slug)

            if image is None:
                self.error(
                    400, "An Image with the "
                    "slug %s doesn't exist" % image_slug)
                return

            status.image = image.path

        if description is not None:
            status.description = description

        if default is not None and default in ["false", "true"]:

            # Reset default status
            if default == "true":
                for stat in Status.all().filter("default", True):
                    stat.default = False
                    stat.put()

            status.default = default == "true"

        if name is not None:
            status.name = name

        if description or name or image or default:
            status.put()
            invalidate_cache()

        self.json(status.rest(self.base_url(version)))
Esempio n. 2
0
    def post(self, version, status_slug):
        if not self.valid_version(version):
            self.error(404, "API Version %s not supported" % version)
            return

        status = Status.get_by_slug(status_slug)

        if not status:
            self.error(404, "No status with the slug %s found" % status_slug)
            return

        name = self.request.get('name', default_value=None)
        image_slug = self.request.get('image', default_value=None)
        image = None
        default = self.request.get('default', default_value=None)
        description = self.request.get('description', default_value=None)

        if image_slug is not None:
            image = Image.get_by_slug(image_slug)

            if image is None:
                self.error(400, "An Image with the "
                           "slug %s doesn't exist" % image_slug)
                return

            status.image = image.path

        if description is not None:
            status.description = description

        if default is not None and default in ["false", "true"]:

            # Reset default status
            if default == "true":
                for stat in Status.all().filter("default", True):
                    stat.default = False
                    stat.put()

            status.default = default == "true"

        if name is not None:
            status.name = name

        if description or name or image or default:
            status.put()
            invalidate_cache()

        self.json(status.rest(self.base_url(version)))
Esempio n. 3
0
    def post(self, version):
        if not self.valid_version(version):
            self.error(404, "API Version %s not supported" % version)
            return

        name = self.request.get('name', default_value=None)
        description = self.request.get('description', default_value=None)
        image_slug = self.request.get('image', default_value=None)
        default = self.request.get('default', default_value="false")

        if default not in ["true", "false"]:
            self.error(400, "Default must be true or false")
            return

        if not name or not description or not image_slug:
            self.error(400, "Bad Data")
            return

        slug = slugify.slugify(name)
        status = Status.get_by_slug(slug)
        image = Image.get_by_slug(image_slug)

        if status is not None:
            self.error(400, "A Status with the slug %s already exists" % slug)
            return

        if image is None:
            msg = "An Image with the slug %s doesn't exist" % image_slug
            self.error(400, msg)
            return

        # Reset default status
        if default == "true":
            for stat in Status.all().filter("default", True):
                stat.default = False
                stat.put()

        default = default == "true"
        status = Status(name=name,
                        slug=slug,
                        description=description,
                        image=image.path,
                        default=default)
        status.put()
        invalidate_cache()

        self.response.set_status(201)
        self.json(status.rest(self.base_url(version)))
Esempio n. 4
0
    def post(self, version):
        if not self.valid_version(version):
            self.error(404, "API Version %s not supported" % version)
            return

        name = self.request.get('name', default_value=None)
        description = self.request.get('description', default_value=None)
        image_slug = self.request.get('image', default_value=None)
        default = self.request.get('default', default_value="false")

        if default not in ["true", "false"]:
            self.error(400, "Default must be true or false")
            return

        if not name or not description or not image_slug:
            self.error(400, "Bad Data")
            return

        slug = slugify.slugify(name)
        status = Status.get_by_slug(slug)
        image = Image.get_by_slug(image_slug)

        if status is not None:
            self.error(400, "A Status with the slug %s already exists" % slug)
            return

        if image is None:
            msg = "An Image with the slug %s doesn't exist" % image_slug
            self.error(400, msg)
            return

        # Reset default status
        if default == "true":
            for stat in Status.all().filter("default", True):
                stat.default = False
                stat.put()

        default = default == "true"
        status = Status(name=name, slug=slug, description=description,
                        image=image.path, default=default)
        status.put()
        invalidate_cache()

        self.response.set_status(201)
        self.json(status.rest(self.base_url(version)))