Skip to main content

ZC Buildout recipe for defining a file-storage

Project description

Recipe for setting up a filestorage

This recipe can be used to define a file-storage. It creates a ZConfig file-storage database specification that can be used by other recipes to generate ZConfig configuration files.

This recipe takes an optional path option. If none is given, it creates and uses a subdirectory of the buildout parts directory with the same name as the part.

The recipe records a zconfig option for use by other recipes.

We’ll show a couple of examples, using a dictionary as a simulated buildout object:

>>> import zc.recipe.filestorage
>>> buildout = dict(
...   buildout = {
...      'directory': '/buildout',
...      },
...   db = {
...      'path': 'foo/Main.fs',
...      },
...   )
>>> recipe = zc.recipe.filestorage.Recipe(
...                   buildout, 'db', buildout['db'])
>>> print(buildout['db']['path'])
/buildout/foo/Main.fs
>>> print(buildout['db']['zconfig'], end='')
<zodb>
  <filestorage>
    path /buildout/foo/Main.fs
  </filestorage>
</zodb>
>>> recipe.install()
()
>>> import tempfile
>>> d = tempfile.mkdtemp()
>>> buildout = dict(
...   buildout = {
...      'parts-directory': d,
...      },
...   db = {},
...   )
>>> recipe = zc.recipe.filestorage.Recipe(
...                   buildout, 'db', buildout['db'])
>>> print(buildout['db']['path'])
/tmp/tmpQo0DTB/db/Data.fs
>>> print(buildout['db']['zconfig'], end='')
<zodb>
  <filestorage>
    path /tmp/tmpQo0DTB/db/Data.fs
  </filestorage>
</zodb>
>>> recipe.install()
()
>>> import os
>>> os.listdir(d)
['db']

The update method doesn’t do much, as the database part’s directory already exists, but it is present, so buildout doesn’t complain and doesn’t accidentally run install() again:

>>> recipe.update()

If the storage’s directory is removed, is it re-added by the update method:

>>> os.rmdir(os.path.join(d, 'db'))
>>> os.listdir(d)
[]
>>> recipe.update()
>>> os.listdir(d)
['db']

This is useful in development when the directory containing the database is removed in order to start the database from scratch.

CHANGES

2.0 (2023-02-10)

  • Drop support for Python 2.6, 2.7, 3.2, 3.3, 3.4, 3.5, 3.6.

  • Add support for Python 3.7, 3.8, 3.9, 3.10, 3.11, PyPy3.

1.1.2 (2014-02-21)

  • Fixed: packaging bug that caused ‘pip install zc.recipe.filestorage’ to fail with an error about missing README.txt

1.1.1 (2014-02-16)

  • Fixed: packaging bug that caused a test failure in a test runner that didn’t use buildout to run setup.py.

1.1.0 (2014-02-14)

  • Python 3 compatibility

  • Using Python’s doctest module instead of deprecated zope.testing.doctest.

  • Removed ‘shared-blob-dir’ from blobstorage section.

1.0.0 (2007-11-03)

  • Initial release.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zc.recipe.filestorage-2.0.tar.gz (7.4 kB view hashes)

Uploaded Source

Built Distribution

zc.recipe.filestorage-2.0-py3-none-any.whl (7.8 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page