Support older versions of pyxdg
authorWade Berrier <wberrier@gmail.com>
Sat, 26 Jan 2013 03:43:10 +0000 (20:43 -0700)
committerWade Berrier <wberrier@gmail.com>
Tue, 5 Feb 2013 04:09:29 +0000 (21:09 -0700)
save_cache_path was added in 0.21
See: https://bugs.freedesktop.org/show_bug.cgi?id=26458

Fall back to ~/.cache and make sure the directory exists
(that's what save_cache_path does)

mutt_ldap.py

index d3430826bdcb0dd29dd35d39e03d9c652adc5bc3..c63c04e5e73abde5507ebc3b01c8580a5a4561fd 100755 (executable)
@@ -26,6 +26,7 @@ import json as _json
 import locale as _locale
 import logging as _logging
 import os.path as _os_path
+import os as _os
 import pickle as _pickle
 import sys as _sys
 import time as _time
@@ -108,11 +109,16 @@ class Config (_configparser.SafeConfigParser):
 
     def _get_cache_path(self):
         "Get the cache file path"
-        if _xdg_basedirectory:
+
+        # Some versions of pyxdg don't have save_cache_path (0.20 and older)
+        # See: https://bugs.freedesktop.org/show_bug.cgi?id=26458
+        if _xdg_basedirectory and 'save_cache_path' in dir(_xdg_basedirectory):
             path = _xdg_basedirectory.save_cache_path('')
         else:
             self._log_xdg_import_error()
             path = _os_path.expanduser(_os_path.join('~', '.cache'))
+            if not _os_path.isdir(path):
+                _os.makedirs(path)
         return _os_path.join(path, 'mutt-ldap.json')
 
     def _log_xdg_import_error(self):