keepluggable.web.pyramid.resources module

keepluggable resources (for Pyramid traversal).

Usually an application will store its files in a single S3 bucket, but there will be a need to namespace the files. This namespace will depend on the parent resources in the URL. Thus, subclasses must provide (as class variables or instance variables or properties):

  • namespace: A name for a namespace name that will contain files, such that a bucket will contain multiple namespaces.

Here is an example implementation that simply returns an integer:

@reify
def namespace(self):
    return self.__parent__.model_instance.id

You can have keepluggable integrated in your Pyramid application multiple times, each time with different settings (expressed in a different configuration section). For instance, you could have a [keepluggable avatars] INI section for users’ images and also a [keepluggable homes] INI section that would store a photo for each address of these users. Each configuration section captures a completely separate integration of keepluggable into your app.

Therefore, subclasses of this resource must provide:

  • keepluggable_name: The suffix of the INI section (the part after “keepluggable “).

Resources must also provide __name__ and __parent__. You can read more about this in the Pyramid docs.

class keepluggable.web.pyramid.resources.BaseFileResource[source]

Bases: keepluggable.web.pyramid.resources.BaseResource

Pyramid traversal resource representing a specific file.

Here is an example resource using this as a base class:

class FileResource(BaseFileResource):
    # This resource is governed by INI section "[keepluggable_file]":
    keepluggable_name = "file"

    @reify
    def namespace(self):
        return parent(self).id
class keepluggable.web.pyramid.resources.BaseFilesResource[source]

Bases: keepluggable.web.pyramid.resources.BaseResource

Base for a Pyramid traversal resource representing a file store.

class keepluggable.web.pyramid.resources.BaseResource[source]

Bases: object

action
orchestrator

Return the Orchestrator instance relevant to this resource.