Merge pull request #429 from Unrud/hook

Add hook for storage changes
This commit is contained in:
Guillaume Ayoub 2016-07-30 15:26:17 +02:00 committed by GitHub
commit 62588477f6
3 changed files with 17 additions and 1 deletions

4
config
View File

@ -112,6 +112,10 @@
# Folder for storing local collections, created if not present # Folder for storing local collections, created if not present
#filesystem_folder = ~/.config/radicale/collections #filesystem_folder = ~/.config/radicale/collections
# Command that is run after changes to storage
#hook =
# Example: git add -A && (git diff --cached --quiet || git commit -m "Changes by "%(user)s)
[logging] [logging]

View File

@ -30,10 +30,12 @@ import os
import pprint import pprint
import base64 import base64
import contextlib import contextlib
import shlex
import socket import socket
import socketserver import socketserver
import ssl import ssl
import threading import threading
import subprocess
import wsgiref.simple_server import wsgiref.simple_server
import re import re
import zlib import zlib
@ -348,6 +350,15 @@ class Application:
status, headers, answer = function( status, headers, answer = function(
environ, read_allowed_items, write_allowed_items, environ, read_allowed_items, write_allowed_items,
content, user) content, user)
hook = self.configuration.get("storage", "hook")
if lock_mode == "w" and hook:
self.logger.debug("Running hook")
folder = os.path.expanduser(
self.configuration.get("storage",
"filesystem_folder"))
subprocess.check_call(
hook % {"user": shlex.quote(user or "Anonymous")},
shell=True, cwd=folder)
else: else:
status, headers, answer = NOT_ALLOWED status, headers, answer = NOT_ALLOWED
else: else:

View File

@ -60,7 +60,8 @@ INITIAL_CONFIG = {
"storage": { "storage": {
"type": "multifilesystem", "type": "multifilesystem",
"filesystem_folder": os.path.expanduser( "filesystem_folder": os.path.expanduser(
"~/.config/radicale/collections")}, "~/.config/radicale/collections"),
"hook": ""},
"logging": { "logging": {
"config": "/etc/radicale/logging", "config": "/etc/radicale/logging",
"debug": "False", "debug": "False",