示例#1
0
    def update(self):
        try:
            self.res['errors'] = dict()

            try:
                id_ = int(self.request.params['id'])
            except KeyError:
                raise NoResultFound('Missing id')

            image = Image.get(self.session, id_)
            valid = False

            if 'name' in self.request.params:
                valid = True
                name = self.request.params['name']
                if name != image.name:

                    self.log.debug("Updating name of image %d to %s", id_, name)
                    if len(name) < 1:
                        raise TypeError("Il nome non può essere vuoto")

                    image.name = name

            if 'file' in self.request.POST:
                self.log.debug("Updating file for image %s", image)
                valid = True
                image.source = self.request.POST['file'].file

            if not valid:
                raise KeyError('required')

        except KeyError as e:
            self.log.debug('Missing required params in request')
            self.res['success'] = False
            self.res['errors']['name'] = "Missing value"
            self.res['errors']['file'] = "Missing value"

        except NoResultFound as e:
            self.log.debug('Cannot found image or ID missing in params')
            self.res['success'] = False
            self.res['errors']['id'] = 'Image not found'

        except TypeError as e:
            self.log.exception('Invalid name %s' % (self.request.params['name']))
            self.res['success'] = False
            self.res['errors']['name'] = str(e)

        except Exception as e:
            self.res['errors']['file'] = str(e)
            self.handle_exception(e, "update")

        else:
            self.log.debug("Updating ok, committing")
            self.session.commit()
            del self.res["errors"]
            self.res['success'] = True
            self.proxy.invalidate(url=image.url)

        finally:
            return self.res
示例#2
0
    def remove(self):
        try:
            id_ = int(self.request.params['id'])
            image = Image.get(self.session, id_)
            image.delete()

        except Exception as e:
            self.handle_exception(e)

        else:
            self.session.commit()
            self.res['success'] = True
            self.proxy.invalidate(url=image.url)

        finally:
            return self.res