#############################################################
# Amplee offers a way to create the structure of your APP
# store via a configuration file.
#
# Settings defined here will be interpreted by amplee and 
# will result into a store and its children being created.
#
# The present file describe all the different options
# you can use for amplee 0.5.x 
# Most of the time you won't need all of them.
#
# Most keys that require a path ask for an absolute one. If
# you prefer relatives, then set them all relative and pass
# the base path to the loader method. 
#
# For each parameter that has a default value, this page
# displays it as the value for each key.
#
#############################################################

#############################################################
# Storage configuration
#############################################################
## File system storage
[fs_storage]
# Absolute path to the root directory used for this storage 
base_path = 

# Shall we use thread locking?
enable_lock = False

# How to encode path elements
encoding = utf-8



## Subversion storage
[svn_storage]
# You can create a repo via: svnadmin create /absolute/path/to/repo
# Absolute URI to the main subversion repo
repository_uri = file:///... or http://...

# Working copy absolute path of the repository
working_copy_path =
username = None
password = None



## ZODB storage
[zodb_storage]
# 'filestorage' or 'clientstorage'
fs_type = 

# Like the file-system storage requires a top-level directory
# the ZODB one requires a top level node
# name of the top-level node for this store
top_level_node_name = 

# Absolute path to the fs db if you use File Storage
fs_path = 

# Address of the ZEO server if you use Client Storage
# hostname, port
address = 



## dejavu storage
[dejavu_storage]
# http://projects.amor.org/docs/dejavu/storage.html
# Type of database to use
db_type = 

# Next you need to use the configuration keys
# defined in http://projects.amor.org/docs/dejavu/storage.html
# for each storage type
...

# By default the loader uses lower keys but some of the
# config keys of dejavu must be capitalized, to enable this
# simply set the following value to True
capitalize = True
encoding = ISO-8859-1



## Amazon S3 storage
[s3_storage]
# Your public access key
access_key =

# Your private key
private_key =

# Prefix used internally by amplee for each bucket it will
# create on the S3 server
# Make sure this is unique as you can to avoid conflict
bucket_unique_prefix = 

encoding = utf-8

# Character sperator between the collection name and each
# bucket in this collection
separator = _

# If you don't want to provide the keys via the config file
# you can set this parameter to a callable that will be
# applied by amplee to load the keys from a file.
# The callable must return a tuple of the (public, private) keys.
# Ex: module:somepackage/somemodule,callable:lookup_keys
aws_key_lookup = None

# The previous callable takes one single parameter which is the 
# path of the file containing the keys
aws_file_path = None



## Tarfile storage
[tar_storage]
# Absolute path to the root directory used for this storage 
base_path = 

# Which compression to use: gz, bz2 or None
compression = gz

# How to encode path elements
encoding = utf-8

#############################################################
# Store configuration
#############################################################
# [store]
# Should we use thread locking on the store, 0 if not
enable_lock = True

# Which storage type to use for member and media resources
# for example: fs_storage
# Both can be different. If media_storage is not set it will
# use the same storage as member_storage.
member_storage = 
media_storage = 

# Comma separated list of section names matching workspaces
workspaces = 

# If you want memcache proxying sypport just uncomment
# the following line and set the list of servers
# separated by a comma
# member_storage_memcached = 127.0.0.1:11211
# media_storage_memcached = 192.168.1.46:4678

#############################################################
# Service configuration
#############################################################
[service]
# XML attributes to set at the app:service document level
# For example: base,http://localhost:8080/;lang,en-US
xml_attrs = 

# URI or path to an XSLT resource that will be inserted
# to the app:service document via a processing instruction
xslt_path = None

# This is an optional parameter that needs to be set when
# your application uses amplee.pastify
path_info = 

#############################################################
# Workspaces configuration
#############################################################
[ws0]
# Internal name used by amplee to identify given workspace
# this should be unique and usually ASCII only
name =

# Title used within the APP service document
title =

# XML attributes to set at the app:workspace document level
# For example: base,http://localhost:8080/;lang,en-US
xml_attrs = 

# Comma separated list of section names of collections
# attached to this workspace
collections = 



#############################################################
# Collections configuration
#############################################################
[col0]
# Internal unique name to identify the collection
name =

# Public title of this collection
title =

# Absolute or relative base URI used by the atom:content
# element when dealing with out of line content as well
# as with links different from rel="edit" or rel="edit-media"
base_uri = 

# Absolute or relative base URI used by the rel="edit" link
# of members
base_edit_uri = 

# Absolute or relative base URI used by the rel="edit-media" 
# link of media members
# If not provided it defaults to base_edit_uri
base_media_edit_uri = None

# Comma separated list of media-types that this collection
# can handle
accept_media_types = 

# It may happen that your apllication can handle more 
# media-types on edition (eg PUT requests) than it advertize
# with the app:accept element. In that case you simply
# set the following to a comma separated list of additional
# media-types. That way amplee will not reject requests
# with those content-types on PUT requests
editable_media_types = None

# Default member resource media-type
member_media_type = application/atom+xml;type=entry

# Member resource default extension
member_media_extension = atom

# If True indicates that this collection will be the 
# most favorite within the workspace and will therefore
# appear first in the XML representation of the workspace
favorite = False

# Comma separated list of terms that will be mapped to
# atom:category elements.
categories = 

# Set to True to push amplee to reject all members that do
# not have at least one of the categories listed above 
fixed_categories = False

# By setting this value to True you inform amplee
# it should deny all POST requests while allowing the other
# requests type. 
read_only = False

# semi-comma seperated list of tuples for attributes belonging to
# the xml namespace, for example:
# base,http://host/;lang,en
xml_attrs = 

# Should the internal of each collection be activated?
enable_cache = True

# Should the collection members be reloaded at startup?
reload_members = False

# Amplee holds tow feeds for each collection, the collection feed
# and the public feed. The latter is constructed from the former
# The following is a callable that takes a MemberResource parameter
# and must return a bridge.Element instance of the entry as it should
# be inserted into the public feed. Basically this callable
# should transform a member resource into a more publicly faced entry.
# Ex: module:somepackage/somemodule,callable:make_public
public_feed_entry_processor = None

# In addition this should be a callable that takes a bridge.Document instance
# and returns it transformed accordingly. This is interesting if you want to
# insert some extra elements into the public feed when it is generated by amplee.
public_feed_post_processor = None

# URI or path to an XSLT resource that will be inserted as a processing instruction
# into the public feed
public_feed_xslt_path = None

# Same as above but for the collection feed
collection_feed_xslt_path

# This is an optional parameter that needs to be set when
# your application uses amplee.pastify
path_info = 

# Media-type handlers for this collection
handlers = 



#############################################################
# Handlers configuration
#############################################################
[hd0]
# Media-type 
media_type = 

# Name of the class handler
handler_class = 

# Absolute path to the module containing the handler class
# (without the .py)
handler_module = 

# Absolute dotted path to the class member
# Built-in member classes can be shortcut as follow:
# member_class = builtin:name_of_builtin_module
# eg: builtin:atom or somepackage/somemodule
member_class = 

# Absolute path to the module holding the member class
# (without the .py)
member_module = 

# The name of member type section as explained below
member_type = 



#############################################################
# Member type configuration
#############################################################
[mt0]
# A member type is simply a way to pass objects (can be 
# simple values like int, string or even Python callables)
# to the member class when it is instanciated by amplee
# The pairs in this section will be passed to the 
# amplee.handler.MemberType.params instance and will
# therefore be available in your handlers.