Esempio n. 1
0
    def update(self):
        try:
            update = getattr(self.model, model_fn(self, 'update'))
        except AttributeError:
            e = InvalidOperation('KCHAPI0003E', {'resource':
                                                 get_class_name(self)})
            raise cherrypy.HTTPError(405, e.message)

        params = parse_request()
        validate_params(params, self, 'update')

        if self.update_params is not None:
            invalids = [v for v in params.keys() if
                        v not in self.update_params]
            if invalids:
                msg_args = {'params': ", ".join(invalids),
                            'resource': get_class_name(self)}
                e = InvalidOperation('KCHAPI0004E', msg_args)
                raise cherrypy.HTTPError(405, e.message)

        args = list(self.model_args) + [params]
        ident = update(*args)
        self._redirect(ident)

        return self.get()
Esempio n. 2
0
    def update(self):
        try:
            update = getattr(self.model, model_fn(self, 'update'))
        except AttributeError:
            e = InvalidOperation('KCHAPI0003E',
                                 {'resource': get_class_name(self)})
            raise cherrypy.HTTPError(405, e.message)

        params = parse_request()
        validate_params(params, self, 'update')

        if self.update_params is not None:
            invalids = [
                v for v in params.keys() if v not in self.update_params
            ]
            if invalids:
                msg_args = {
                    'params': ", ".join(invalids),
                    'resource': get_class_name(self)
                }
                e = InvalidOperation('KCHAPI0004E', msg_args)
                raise cherrypy.HTTPError(405, e.message)

        args = list(self.model_args) + [params]
        ident = update(*args)
        self._redirect(ident)

        return self.get()
Esempio n. 3
0
 def get(self, filter_params):
     res_list = []
     try:
         get_list = getattr(self.model, model_fn(self, 'get_list'))
         res_list = get_list(*self.model_args)
     except AttributeError:
         pass
     return kimchi.template.render(get_class_name(self), res_list)
Esempio n. 4
0
 def get(self, filter_params):
     res_list = []
     try:
         get_list = getattr(self.model, model_fn(self, 'get_list'))
         res_list = get_list(*self.model_args)
     except AttributeError:
         pass
     return kimchi.template.render(get_class_name(self), res_list)
Esempio n. 5
0
 def delete(self):
     try:
         fn = getattr(self.model, model_fn(self, 'delete'))
         fn(*self.model_args)
         cherrypy.response.status = 204
     except AttributeError:
         error = "Delete is not allowed for %s" % get_class_name(self)
         raise cherrypy.HTTPError(405, error)
     except OperationFailed, msg:
         raise cherrypy.HTTPError(500, "Operation Failed: '%s'" % msg)
Esempio n. 6
0
 def delete(self):
     try:
         fn = getattr(self.model, model_fn(self, 'delete'))
         fn(*self.model_args)
         cherrypy.response.status = 204
     except AttributeError:
         e = InvalidOperation('KCHAPI0002E', {'resource':
                                              get_class_name(self)})
         raise cherrypy.HTTPError(405, e.message)
     except OperationFailed, e:
         raise cherrypy.HTTPError(500, e.message)
Esempio n. 7
0
 def delete(self):
     try:
         fn = getattr(self.model, model_fn(self, 'delete'))
         fn(*self.model_args)
         cherrypy.response.status = 204
     except AttributeError:
         e = InvalidOperation('KCHAPI0002E',
                              {'resource': get_class_name(self)})
         raise cherrypy.HTTPError(405, e.message)
     except OperationFailed, e:
         raise cherrypy.HTTPError(500, e.message)
Esempio n. 8
0
    def create(self, *args):
        try:
            create = getattr(self.model, model_fn(self, 'create'))
        except AttributeError:
            error = 'Create is not allowed for %s' % get_class_name(self)
            raise cherrypy.HTTPError(405, error)

        params = parse_request()
        args = self.model_args + [params]
        task = create(*args)
        cherrypy.response.status = 202
        return kimchi.template.render("Task", task)
Esempio n. 9
0
    def create(self, params, *args):
        try:
            create = getattr(self.model, model_fn(self, 'create'))
        except AttributeError:
            e = InvalidOperation('KCHAPI0005E', {'resource':
                                                 get_class_name(self)})
            raise cherrypy.HTTPError(405, e.message)

        validate_params(params, self, 'create')
        args = self.model_args + [params]
        task = create(*args)
        cherrypy.response.status = 202
        return kimchi.template.render("Task", task)
Esempio n. 10
0
    def create(self, params, *args):
        try:
            create = getattr(self.model, model_fn(self, 'create'))
        except AttributeError:
            e = InvalidOperation('KCHAPI0005E',
                                 {'resource': get_class_name(self)})
            raise cherrypy.HTTPError(405, e.message)

        validate_params(params, self, 'create')
        args = self.model_args + [params]
        task = create(*args)
        cherrypy.response.status = 202
        return kimchi.template.render("Task", task)
Esempio n. 11
0
 def _get_resources(self, flag_filter):
     try:
         get_list = getattr(self.model, model_fn(self, 'get_list'))
         idents = get_list(*self.model_args, **flag_filter)
         res_list = []
         for ident in idents:
             # internal text, get_list changes ident to unicode for sorted
             args = self.resource_args + [ident]
             res = self.resource(self.model, *args)
             res.lookup()
             res_list.append(res)
         return res_list
     except AttributeError:
         return []
Esempio n. 12
0
 def wrapper(*args, **kwargs):
     validate_method(('POST'))
     try:
         model_args = list(self.model_args)
         if action_args is not None:
             model_args.extend(parse_request()[key]
                               for key in action_args)
         fn = getattr(self.model, model_fn(self, action_name))
         fn(*model_args)
         uri_params = tuple(self.model_args)
         raise internal_redirect(self.uri_fmt % uri_params)
     except MissingParameter, param:
         error = "Missing parameter: '%s'" % param
         raise cherrypy.HTTPError(400, error)
Esempio n. 13
0
 def _get_resources(self, flag_filter):
     try:
         get_list = getattr(self.model, model_fn(self, 'get_list'))
         idents = get_list(*self.model_args, **flag_filter)
         res_list = []
         for ident in idents:
             # internal text, get_list changes ident to unicode for sorted
             args = self.resource_args + [ident]
             res = self.resource(self.model, *args)
             res.lookup()
             res_list.append(res)
         return res_list
     except AttributeError:
         return []
Esempio n. 14
0
    def update(self, *args, **kargs):
        try:
            update = getattr(self.model, model_fn(self, 'update'))
        except AttributeError:
            e = InvalidOperation('KCHAPI0003E', {'resource':
                                                 get_class_name(self)})
            raise cherrypy.HTTPError(405, e.message)

        params = parse_request()
        validate_params(params, self, 'update')

        args = list(self.model_args) + [params]
        ident = update(*args)
        self._redirect(ident)

        return self.get()
Esempio n. 15
0
    def create(self, *args):
        try:
            create = getattr(self.model, model_fn(self, 'create'))
        except AttributeError:
            error = 'Create is not allowed for %s' % get_class_name(self)
            raise cherrypy.HTTPError(405, error)

        params = parse_request()
        validate_params(params, self, 'create')
        args = self.model_args + [params]
        name = create(*args)
        cherrypy.response.status = 201
        args = self.resource_args + [name]
        res = self.resource(self.model, *args)

        return res.get()
Esempio n. 16
0
    def create(self, params, *args):
        try:
            create = getattr(self.model, model_fn(self, 'create'))
        except AttributeError:
            e = InvalidOperation('KCHAPI0005E', {'resource':
                                                 get_class_name(self)})
            raise cherrypy.HTTPError(405, e.message)

        validate_params(params, self, 'create')
        args = self.model_args + [params]
        name = create(*args)
        cherrypy.response.status = 201
        args = self.resource_args + [name]
        res = self.resource(self.model, *args)

        return res.get()
Esempio n. 17
0
    def update(self, *args, **kargs):
        try:
            update = getattr(self.model, model_fn(self, 'update'))
        except AttributeError:
            e = InvalidOperation('KCHAPI0003E',
                                 {'resource': get_class_name(self)})
            raise cherrypy.HTTPError(405, e.message)

        params = parse_request()
        validate_params(params, self, 'update')

        args = list(self.model_args) + [params]
        ident = update(*args)
        self._redirect(ident)

        return self.get()
Esempio n. 18
0
    def create(self, params, *args):
        try:
            create = getattr(self.model, model_fn(self, 'create'))
        except AttributeError:
            e = InvalidOperation('KCHAPI0005E',
                                 {'resource': get_class_name(self)})
            raise cherrypy.HTTPError(405, e.message)

        validate_params(params, self, 'create')
        args = self.model_args + [params]
        name = create(*args)
        cherrypy.response.status = 201
        args = self.resource_args + [name]
        res = self.resource(self.model, *args)

        return res.get()
Esempio n. 19
0
        def wrapper(*args, **kwargs):
            validate_method(('POST'), self.role_key, self.admin_methods)
            try:
                self.lookup()
                if not self.is_authorized():
                    raise UnauthorizedError('KCHAPI0009E')

                model_args = list(self.model_args)
                if action_args is not None:
                    request = parse_request()
                    model_args.extend(request[key] for key in action_args)

                action_fn = getattr(self.model, model_fn(self, action_name))
                action_result = action_fn(*model_args)
                return render_fn(self, action_result)
            except MissingParameter, e:
                raise cherrypy.HTTPError(400, e.message)
Esempio n. 20
0
 def wrapper(*args, **kwargs):
     validate_method(('POST'))
     try:
         model_args = list(self.model_args)
         if action_args is not None:
             request = parse_request()
             model_args.extend(request[key] for key in action_args)
         fn = getattr(self.model, model_fn(self, action_name))
         ident = fn(*model_args)
         self._redirect(ident)
         uri_params = []
         for arg in self.model_args:
             if arg is None:
                 arg = ''
             uri_params.append(
                 urllib2.quote(arg.encode('utf-8'), safe=""))
         raise internal_redirect(self.uri_fmt % tuple(uri_params))
     except MissingParameter, e:
         raise cherrypy.HTTPError(400, e.message)
Esempio n. 21
0
 def wrapper(*args, **kwargs):
     validate_method(('POST'))
     try:
         model_args = list(self.model_args)
         if action_args is not None:
             request = parse_request()
             model_args.extend(request[key] for key in action_args)
         fn = getattr(self.model, model_fn(self, action_name))
         ident = fn(*model_args)
         self._redirect(ident)
         uri_params = []
         for arg in self.model_args:
             if arg is None:
                 arg = ''
             uri_params.append(urllib2.quote(arg.encode('utf-8'),
                               safe=""))
         raise internal_redirect(self.uri_fmt % tuple(uri_params))
     except MissingParameter, e:
         raise cherrypy.HTTPError(400, e.message)
Esempio n. 22
0
    def create(self, params, *args):
        try:
            create = getattr(self.model, model_fn(self, 'create'))
        except AttributeError:
            error = 'Create is not allowed for %s' % get_class_name(self)
            raise cherrypy.HTTPError(405, error)

        validate_params(params, self, 'create')
        args = self.model_args + [params]
        name = create(*args)
        args = self.resource_args + [name]
        res = self.resource(self.model, *args)
        resp = res.get()

        if 'task_id' in res.data:
            cherrypy.response.status = 202
        else:
            cherrypy.response.status = 201

        return resp
Esempio n. 23
0
        def wrapper(*args, **kwargs):
            validate_method(('POST'), self.role_key, self.admin_methods)
            try:
                self.lookup()
                if not self.is_authorized():
                    raise UnauthorizedError('KCHAPI0009E')

                model_args = list(self.model_args)
                if action_args is not None:
                    request = parse_request()
                    model_args.extend(request[key] for key in action_args)

                action_fn = getattr(self.model, model_fn(self, action_name))
                action_result = action_fn(*model_args)
                if destructive is False or \
                    ('persistent' in self.info.keys() and
                     self.info['persistent'] is True):
                    return render_fn(self, action_result)
            except MissingParameter, e:
                raise cherrypy.HTTPError(400, e.message)
Esempio n. 24
0
    def create(self, params, *args):
        try:
            create = getattr(self.model, model_fn(self, 'create'))
        except AttributeError:
            error = 'Create is not allowed for %s' % get_class_name(self)
            raise cherrypy.HTTPError(405, error)

        validate_params(params, self, 'create')
        args = self.model_args + [params]
        name = create(*args)
        args = self.resource_args + [name]
        res = self.resource(self.model, *args)
        resp = res.get()

        if 'task_id' in res.data:
            cherrypy.response.status = 202
        else:
            cherrypy.response.status = 201

        return resp
Esempio n. 25
0
    def update(self):
        try:
            update = getattr(self.model, model_fn(self, 'update'))
        except AttributeError:
            error = "%s does not implement update method"
            raise cherrypy.HTTPError(405, error % get_class_name(self))

        params = parse_request()
        validate_params(params, self, 'update')

        if self.update_params is not None:
            invalids = [v for v in params.keys() if
                        v not in self.update_params]
            if invalids:
                error = "%s are not allowed to be updated" % invalids
                raise cherrypy.HTTPError(405, error)

        ident = update(self.ident, params)
        if ident != self.ident:
            uri_params = list(self.model_args[:-1])
            uri_params += [urllib2.quote(ident.encode('utf8'))]
            raise cherrypy.HTTPRedirect(self.uri_fmt % tuple(uri_params), 303)

        return self.get()
Esempio n. 26
0
 def get(self, filter_params):
     res_list = []
     get_list = getattr(self.model, model_fn(self, 'get_list'))
     res_list = get_list(*self.model_args, **filter_params)
     return kimchi.template.render(get_class_name(self), res_list)
Esempio n. 27
0
 def lookup(self):
     try:
         lookup = getattr(self.model, model_fn(self, 'lookup'))
         self.info = lookup(*self.model_args)
     except AttributeError:
         self.info = {}
Esempio n. 28
0
 def lookup(self):
     try:
         lookup = getattr(self.model, model_fn(self, 'lookup'))
         self.info = lookup(*self.model_args)
     except AttributeError:
         self.info = {}