X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/dbeb3844d762fabcf63bf7c9c0cc512f505f890d..d42e98caaaf4f07c8d1252236f03eb68b8be4619:/python/disorder.py.in diff --git a/python/disorder.py.in b/python/disorder.py.in index 8fe7d21..e873e49 100644 --- a/python/disorder.py.in +++ b/python/disorder.py.in @@ -1,20 +1,18 @@ # -# 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 +# 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 -# the Free Software Foundation; either version 2 of the License, or +# the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA +# along with this program. If not, see . # """Python support for DisOrder @@ -62,8 +60,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 +477,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 +881,34 @@ 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) + + def adopt(self, id): + """Adopt a randomly picked track""" + self._simple("adopt", id) + ######################################################################## # I/O infrastructure @@ -1100,6 +1123,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 +1204,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