X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/dbeb3844d762fabcf63bf7c9c0cc512f505f890d..eb5e067336c457058b5e67bf5835b778ec100019:/python/disorder.py.in diff --git a/python/disorder.py.in b/python/disorder.py.in index 8fe7d21..3cc300c 100644 --- a/python/disorder.py.in +++ b/python/disorder.py.in @@ -1,5 +1,5 @@ # -# Copyright (C) 2004, 2005, 2007 Richard Kettlewell +# Copyright (C) 2004, 2005, 2007, 2008 Richard Kettlewell # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -62,8 +62,8 @@ _userconf = True # various regexps we'll use _ws = re.compile(r"^[ \t\n\r]+") -_squote = re.compile("'(([^\\\\']|\\\\[\\\\\"'n])+)'") -_dquote = re.compile("\"(([^\\\\\"]|\\\\[\\\\\"'n])+)\"") +_squote = re.compile("'(([^\\\\']|\\\\[\\\\\"'n])*)'") +_dquote = re.compile("\"(([^\\\\\"]|\\\\[\\\\\"'n])*)\"") _unquoted = re.compile("[^\"' \\t\\n\\r][^ \t\n\r]*") _response = re.compile("([0-9]{3}) ?(.*)") @@ -479,15 +479,12 @@ class client: """ self._simple("reconfigure") - def rescan(self, pattern): + def rescan(self, *flags): """Rescan one or more collections. - Arguments: - pattern -- glob pattern matching collections to rescan. - Only trusted users can perform this operation. """ - self._simple("rescan", pattern) + self._simple("rescan", *flags) def version(self): """Return the server's version number.""" @@ -886,6 +883,30 @@ class client: """Confirm a user registration""" res, details = self._simple("confirm", confirmation) + def schedule_list(self): + """Get a list of scheduled events """ + self._simple("schedule-list") + return self._body() + + def schedule_del(self, event): + """Delete a scheduled event""" + self._simple("schedule-del", event) + + def schedule_get(self, event): + """Get the details for an event as a dict (returns None if event not found)""" + res, details = self._simple("schedule-get", event) + if res == 555: + return None + d = {} + for line in self._body(): + bits = _split(line) + d[bits[0]] = bits[1] + return d + + def schedule_add(self, when, priority, action, *rest): + """Add a scheduled event""" + self._simple("schedule-add", str(when), priority, action, *rest) + ######################################################################## # I/O infrastructure @@ -1100,6 +1121,8 @@ class monitor: elif keyword == 'scratched': if len(bits) == 2: return self.scratched(bits[0], bits[1]) + elif keyword == 'rescanned': + return self.rescanned() return self.invalid(line) def completed(self, track): @@ -1179,6 +1202,10 @@ class monitor: line -- line that could not be understood""" return True + def rescanned(self): + """Called when a rescan completes""" + return True + # Local Variables: # mode:python # py-indent-offset:2