]> git.decadent.org.uk Git - dak.git/blobdiff - daklib/holding.py
Holding isn't a queue either, it's a tmpdir
[dak.git] / daklib / holding.py
old mode 100755 (executable)
new mode 100644 (file)
index d77eecd..2f36a69
@@ -28,20 +28,30 @@ Simple singleton class for storing info about Holding directory
 
 import os
 from errno import ENOENT, EEXIST, EACCES
+import shutil
 
-from singleton import Singleton
 from config import Config
 from utils import fubar
 
 ###############################################################################
 
-class Holding(Singleton):
+class Holding(object):
+    __shared_state = {}
+
     def __init__(self, *args, **kwargs):
-        super(Holding, self).__init__(*args, **kwargs)
+        self.__dict__ = self.__shared_state
 
-    def _startup(self):
-        self.in_holding = {}
-        self.holding_dir = Config()["Dir::Queue::Holding"]
+        if not getattr(self, 'initialised', False):
+            self.initialised = True
+
+            self.in_holding = {}
+            self.holding_dir = Config()["Dir::Holding"]
+            # ftptrainees haven't access to holding, use a temp directory instead
+            if not os.access(self.holding_dir, os.W_OK):
+                self.holding_dir = Config()["Dir::TempPath"]
+
+    def chdir_to_holding(self):
+        os.chdir(self.holding_dir)
 
     def copy_to_holding(self, filename):
         base_filename = os.path.basename(filename)
@@ -74,7 +84,7 @@ class Holding(Singleton):
 
         return None
 
-    def clean(self, filename):
+    def clean(self):
         cwd = os.getcwd()
         os.chdir(self.holding_dir)
         for f in self.in_holding.keys():