예제 #1
0
class DocsView(views.HalResourceWithEmbeddedView):
    resource: Docs
    options_for_get = MethodOptions(
        GetEmbeddedSchema,
        schemas.DocsSchema,
        permission='docs.get',
    )
    options_for_post = MethodOptions(
        schemas.CreateDocSchema,
        schemas.DocSchema,
        permission='docs.edit',
    )

    def get_embedded(self, params):
        docs = [
            self.resource.get_doc_by_model(model)
            for model in self.resource.models.values()
        ]
        return views.list_to_embedded_resources(
            self.request,
            params,
            docs,
            parent=self.resource,
            embedded_name='docs',
        )
예제 #2
0
class DocsView(views.HalResourceWithEmbeddedView):
    options_for_get = MethodOptions(GetEmbeddedSchema,
                                    DocsSchema,
                                    permission='docs.get')
    options_for_post = MethodOptions(CreateDocSchema,
                                     DocSchema,
                                     permission='docs.edit')
예제 #3
0
class DocView(views.HalResourceView):
    resource: Doc
    options_for_get = MethodOptions(None,
                                    schemas.DocSchema,
                                    permission='docs.get')
    options_for_patch = MethodOptions(
        schemas.PatchDocSchema,
        schemas.DocSchema,
        permission='docs.edit',
    )
    options_for_delete = MethodOptions(None, None, permission='docs.edit')

    def as_dict(self):
        return asdict(self.resource.model)
예제 #4
0
class UserView(views.HalResourceView):
    resource: User
    options_for_get = MethodOptions(None,
                                    schemas.UserSchema,
                                    permission='users.get')
    options_for_patch = MethodOptions(
        schemas.PatchUserSchema,
        schemas.UserSchema,
        permission='users.edit',
    )
    options_for_delete = MethodOptions(None, None, permission='users.edit')

    def as_dict(self):
        res = asdict(self.resource.model)
        res['created'] = res['created'].isoformat()
        return res
예제 #5
0
class UsersView(views.HalResourceWithEmbeddedView):
    resource: Users
    options_for_get = MethodOptions(GetEmbeddedSchema, schemas.UsersSchema,
                                    'users.get')
    options_for_post = MethodOptions(schemas.CreateUserSchema,
                                     schemas.UserSchema, 'users.edit')

    def get_embedded(self, params: dict):
        users = [
            User(model, parent=self.resource)
            for model in UserModel.get_models(self.request.registry)
        ]
        return list_to_embedded_resources(
            self.request,
            params,
            users,
            parent=self.resource,
            embedded_name='users',
        )
예제 #6
0
class UserView(views.HalResourceView):
    resource: User
    options_for_get = MethodOptions(None,
                                    schemas.UserSchema,
                                    permission='users.get')

    def as_dict(self):
        return {
            'name': self.resource.__name__,
        }
예제 #7
0
파일: root.py 프로젝트: Cykooz/restfw
class StorageRoot(Root):

    __acl__ = [
        (Allow, Everyone, 'root.get'),
        (Allow, 'admin', ALL_PERMISSIONS),
        # Deny all other permissions for all principals
        DENY_ALL
    ]

    options_for_get = MethodOptions(None, None, 'root.get')
예제 #8
0
class UsersView(views.HalResourceWithEmbeddedView):
    resource: Users
    options_for_get = MethodOptions(GetEmbeddedSchema,
                                    schemas.UsersSchema,
                                    permission='users.get')
    options_for_post = MethodOptions(schemas.CreateUserSchema,
                                     schemas.UserSchema,
                                     permission='users.edit')

    def get_embedded(self, params):
        users = [
            self.resource.get_user_by_model(model)
            for model in self.resource.models.values()
        ]
        return views.list_to_embedded_resources(
            self.request,
            params,
            resources=users,
            parent=self.resource,
            embedded_name='users',
        )
예제 #9
0
class ApiInfoView(views.HalResourceView):
    resource: ApiInfo
    options_for_get = MethodOptions(None,
                                    None,
                                    permission='rest_admin.api_info.get')

    def as_dict(self):
        registry = self.request.registry
        title = registry.settings.get('restfw_admin.title', 'Admin UI')
        root_url = registry.settings.get('restfw_admin.root_url', '')
        if not root_url:
            root_url = self.request.resource_url(self.request.root)
        model = ApiInfoModel(
            root_url=root_url.rstrip('/'),
            title=title,
            resources=self.resource.get_resources_info(self.request),
        )
        return dataclasses.asdict(model)
예제 #10
0
class AdminChoicesView(views.HalResourceWithEmbeddedView):
    resource: AdminChoices
    options_for_get = MethodOptions(
        schemas.GetAdminChoicesSchema,
        schemas.AdminChoicesSchema,
        permission='admin_choices.get',
    )

    def get_embedded(self, params):
        group = params.get('group')
        choice_ids = params.get('id')
        choices = list(
            self.resource.get_choices(self.request.registry, group,
                                      choice_ids))
        return views.list_to_embedded_resources(
            self.request,
            params,
            choices,
            parent=self.resource,
            embedded_name='choices',
        )
예제 #11
0
class DocView(views.HalResourceView):
    options_for_get = MethodOptions(None, DocSchema, permission='docs.get')
    options_for_delete = MethodOptions(None, None, permission='docs.edit')