コード例 #1
0
ファイル: server.py プロジェクト: ostlerc/webpy
    def PATCH(self, ID):
        thermostat = Thermostat.find(int(ID))
        if thermostat is None:
            raise web.notfound()

        # parse and validate patch input data
        try:
            fields = json.loads(web.data())
        except ValueError:
            raise BadRequest("invalid JSON")

        if not isinstance(fields, dict):
            raise BadRequest("invalid JSON")

        # validate all keys are correct before mutating
        for field in fields:
            if not isinstance(field, basestring):
                raise BadRequest("invalid JSON")
            if not hasattr(thermostat, field) or field in ["temperature", "ID"]:
                raise UnprocessableEntity("invalid field {}".format(field))

        try:
            for field in fields:
                setattr(thermostat, field, fields[field])
        except TypeError:
            raise UnprocessableEntity("invalid type for field {}".format(field))
        except ValueError:
            raise UnprocessableEntity("invalid value for field {}".format(field))

        return ""
コード例 #2
0
ファイル: server.py プロジェクト: ostlerc/webpy
    def GET(self, ID):
        params = web.input(fields=None)
        try:
            thermostat = Thermostat.find(int(ID))
            if thermostat is None:
                raise web.notfound()

            return json.dumps(thermostat, default=lambda o: o.json(params.fields), indent=4)
        except KeyError as e:
            raise UnprocessableEntity("invalid field {}".format(e))