]> kaliko git repositories - mpd-sima.git/blobdiff - sima/utils/utils.py
Tags plugin configuration check and test
[mpd-sima.git] / sima / utils / utils.py
index 475a54859305d2dbbff604546a6333b05c97eac6..429b0f9befcce12e7283a5414d155474383afc76 100644 (file)
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 #
-# Copyright (c) 2010, 2011, 2013 Jack Kaliko <kaliko@azylum.org>
+# Copyright (c) 2010, 2011, 2013, 2014, 2015, 2020 kaliko <kaliko@azylum.org>
 #
 #  This file is part of sima
 #
 """
 # pylint: disable=C0111
 
+import logging
 import traceback
 import sys
 
 from argparse import ArgumentError, Action
 from base64 import b64decode as push
 from codecs import getencoder
-from datetime import datetime, timedelta
+from datetime import datetime
 from os import environ, access, getcwd, W_OK, R_OK
 from os.path import dirname, isabs, join, normpath, exists, isdir, isfile
 from time import sleep
@@ -69,8 +70,7 @@ def normalize_path(path):
 
 def exception_log():
     """Log unknown exceptions"""
-    import logging
-    log = logging.getLogger('sima')
+    log = logging.getLogger(__name__)
     log.error('Unhandled Exception!!!')
     log.error(''.join(traceback.format_exc()))
     log.info('Please report the previous message'
@@ -79,20 +79,6 @@ def exception_log():
     log.info('Quiting now!')
     sys.exit(1)
 
-def purge_cache(obj, age=4):
-    """purge old entries in http client cache
-    """
-    now = datetime.utcnow()
-    if now.hour == obj.timestamp.hour:
-        return
-    obj.timestamp = datetime.utcnow()
-    cache = obj.cache
-    delta = timedelta(hours=age)
-    for url in list(cache.keys()):
-        timestamp = cache.get(url).created()
-        if now - timestamp > delta:
-            cache.pop(url)
-
 
 class SigHup(Exception):
     """SIGHUP raises this Exception"""
@@ -127,9 +113,11 @@ class Wfile(FileAction):
     """Is file writable
     """
     def checks(self):
+        if isdir(self._file):
+            self.parser.error('need a file not a directory: {}'.format(self._file))
         if not exists(self._dir):
             #raise ArgumentError(self, '"{0}" does not exist'.format(self._dir))
-            self.parser.error('file does not exist: {0}'.format(self._dir))
+            self.parser.error('directory does not exist: {0}'.format(self._dir))
         if not exists(self._file):
             # Is parent directory writable then
             if not access(self._dir, W_OK):
@@ -177,24 +165,11 @@ class Throttle:
             return result
         return wrapper
 
-class Cache:
-    """Plain cache object"""
-    def __init__(self, elem, last=None):
-        self.elem = elem
-        self.requestdate = last
-        if not last:
-            self.requestdate = datetime.utcnow()
-
-    def created(self):
-        return self.requestdate
-
-    def get(self):
-        return self.elem
-
+class MPDSimaException(Exception):
+    pass
 
 # http client exceptions (for webservices)
-
-class WSError(Exception):
+class WSError(MPDSimaException):
     pass
 
 class WSNotFound(WSError):
@@ -206,6 +181,8 @@ class WSTimeout(WSError):
 class WSHTTPError(WSError):
     pass
 
+class PluginException(MPDSimaException):
+    pass
 
 # VIM MODLINE
 # vim: ai ts=4 sw=4 sts=4 expandtab