X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=daklib%2Fholding.py;h=6c9ce570a863319bde2e3bef679ddcbe264f94eb;hb=55513d80673e99884067b8820ca1a0b3e9aeeeef;hp=0c472d120f6b07b256cfc1af065aca7a753526dd;hpb=1c35448b880358d020e81339657e3435fdda9434;p=dak.git diff --git a/daklib/holding.py b/daklib/holding.py old mode 100755 new mode 100644 index 0c472d12..6c9ce570 --- a/daklib/holding.py +++ b/daklib/holding.py @@ -30,28 +30,37 @@ 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) dest = os.path.join(self.holding_dir, base_filename) try: - fd = os.open(dest, os.O_RDWR | os.O_CREAT | os.O_EXCL, 0640) + fd = os.open(dest, os.O_RDWR | os.O_CREAT | os.O_EXCL, 0o640) os.close(fd) - except OSError, e: + except OSError as e: # Shouldn't happen, but will if, for example, someone lists a # file twice in the .changes. if e.errno == EEXIST: @@ -59,7 +68,7 @@ class Holding(Singleton): try: shutil.copy(filename, dest) - except IOError, e: + except IOError as e: # In either case (ENOENT or EACCES) we want to remove the # O_CREAT | O_EXCLed ghost file, so add the file to the list # of 'in holding' even if it's not the real file.