Пример #1
0
                def on_delete(self, context):
                    on_handle(context)
                    on_delete_cb(context)

                    context.session.delete(
                        self.rest_get_model(context)).commit()
                    return cv.create_json('success')
Пример #2
0
    def on_post(self, context):
        '''
		Upload a plugin.
		'''
        # TODO: Authz.
        request, session = context[:2]

        zip_file = ZipFile(BytesIO(request.data))
        try:
            meta_json = cv.deserialize_json(
                zip_file.open('.canvas/meta.json').read())
            name, description = meta_json['name'], meta_json['description']
            repo_url = meta_json['repo_url']
            dependencies = meta_json['dependencies']
        except KeyError:
            raise cv.BadRequest('Invalid plugin package (bad meta info)')

        plugin = Plugin(name, description, repo_url)
        session.save(plugin)
        for dependency_name in dependencies:
            dependency = session.query(Plugin,
                                       Plugin.name == dependency_name,
                                       one=True)
            if not dependency:
                raise cv.UnprocessableEntity('Invalid dependency "%s"' %
                                             dependency_name)
            session.save(PluginDependency(plugin, dependency))
        session.commit()

        return cv.create_json('success', {'created_id': plugin.id})
Пример #3
0
                def on_put(self, context):
                    on_handle(context)
                    on_update(context)

                    resource = self.rest_get_model(context)
                    request_to_update(resource, context.request)
                    context.session.commit()

                    return cv.create_json('success')
Пример #4
0
    def on_get(self, context):
        if not context.user.is_admin and not context.user.id == context.route.id:
            raise cv.Unauthorized(
                "You don't have access to that user's information")

        user = User.get(context.route.id, context.session)
        if not user:
            raise cv.NotFound(context.route)

        return cv.create_json('success', user)
Пример #5
0
    def on_post(self, context):
        request, session = context[:2]

        user = session.query(User,
                             User.email == request[('email', str)],
                             one=True)
        if not user or not user.check_password(request[('password', str)]):
            raise cv.ValidationErrors(summary='Incorrect username or password')

        authorize(user, context)
        return cv.create_json('success')
Пример #6
0
                def on_put(self, context):
                    on_handle(context)
                    on_create(context)

                    instance = request_to_model(model_cls, context.request)
                    context.session.save(instance).commit()

                    return cv.create_json(
                        'success', {
                            'created_id':
                            model_cls.__table__.primary_key.value_on(instance)
                        })
Пример #7
0
    def on_get(self, context):
        query = True
        for key, value in context.query.items():
            if not hasattr(User, key):
                raise cv.ValidationErrors({key: 'Invalid key'})
            column = getattr(User, key)
            value = column.cast(value)
            query = (column == value) & query

        users = context.session.query(User, query)

        return cv.create_json('success', cv.dictize(users))
Пример #8
0
                def on_get(self, context):
                    on_handle(context)
                    on_query(context)

                    target, condition, order, offset, count = query_to_query(
                        model_cls, context.query, default_query)
                    result = context.session.query(target,
                                                   condition,
                                                   order=order,
                                                   offset=offset,
                                                   count=count)

                    return cv.create_json('success', cv.dictize(result))
Пример #9
0
    def on_get(self, context):
        '''
		Retrieve a list of plugins.
		'''
        query, session = context[:2]

        condition = True
        if 's' in query:
            condition = Plugin.name.matches(
                query.s) | Plugin.description.matches(query.s)
        plugins = session.query(Plugin, condition)

        return cv.create_json('success', cv.dictize(plugins))
Пример #10
0
    def on_put(self, context):
        request, session = context[:2]

        user = User()
        for key, value in context.request.items():
            if key not in User.__table__.columns:
                raise cv.ValidationErrors({key: 'Invalid key.'})

            if key == 'password':
                user.set_password(value)
            else:
                setattr(user, key, value)

        session.save(user).commit()
        if not context.user:
            authorize(user, context)

        return cv.create_json('success', {'created_id': user.id})
Пример #11
0
    def on_put(self, context):
        if not context.user.is_admin and not context.user.id == context.route.id:
            raise cv.Unauthorized(
                "You don't have permission to edit that user's information")

        user = User.get(context.route.id, context.session)
        _edit_approver(user, context)

        for key, value in context.request.items():
            if not hasattr(User, key):
                raise cv.ValidationErrors({key: 'Invalid key'})
            column = getattr(User, key)
            value = column.cast(value)

            setattr(user, key, value)

        context.session.commit()

        return cv.create_json('success')
Пример #12
0
 def on_get(self, context):
     on_handle(context)
     on_retrieve(context)
     #	TODO: Variants.
     return cv.create_json(
         'success', cv.dictize(self.rest_get_model(context)))
Пример #13
0
	def on_get(self, context):
		breakfasts = context.session.query(Breakfast)
		return cv.create_json('success', cv.dictize(breakfasts))
Пример #14
0
	def on_put(self, context):
		request, cookie, session = context[:3]
		session.save(Breakfast(request.name)).commit()
		return cv.create_json('success')
Пример #15
0
    def on_delete(self, context):
        flush_auth(context)

        return cv.create_json('success')