# HG changeset patch # User Paul Boddie # Date 1438711145 -7200 # Node ID 513387edfb5e9f21ad2c2ba3d5ee7cab9bd533fb # Parent d938f5c114d6af4c7ed36947f7ac0e2a555a9e86 Added overriding of the preferences directory for testing purposes. diff -r d938f5c114d6 -r 513387edfb5e imiptools/__init__.py --- a/imiptools/__init__.py Sun Aug 02 19:36:44 2015 +0200 +++ b/imiptools/__init__.py Tue Aug 04 19:59:05 2015 +0200 @@ -56,6 +56,7 @@ self.lmtp_socket = None self.store_dir = None self.publishing_dir = None + self.preferences_dir = None self.debug = False def get_store(self): @@ -77,6 +78,7 @@ messenger = self.messenger store = self.get_store() publisher = self.get_publisher() + preferences_dir = self.preferences_dir # Handle messages with iTIP parts. # Typically, the details of recipients are of interest in handling @@ -85,13 +87,13 @@ if not outgoing_only: original_recipients = original_recipients or get_addresses(get_all_values(msg, "To") or []) for recipient in original_recipients: - Recipient(get_uri(recipient), messenger, store, publisher, self.handlers, self.debug).process(msg, senders, outgoing_only) + Recipient(get_uri(recipient), messenger, store, publisher, preferences_dir, self.handlers, self.debug).process(msg, senders, outgoing_only) # However, outgoing messages do not usually presume anything about the # eventual recipients. else: - Recipient(None, messenger, store, publisher, self.handlers, self.debug).process(msg, senders, outgoing_only) + Recipient(None, messenger, store, publisher, preferences_dir, self.handlers, self.debug).process(msg, senders, outgoing_only) def process_args(self, args, stream): @@ -108,6 +110,7 @@ lmtp = [] store_dir = [] publishing_dir = [] + preferences_dir = [] outgoing_only = False l = [] @@ -144,6 +147,11 @@ elif arg == "-P": l = publishing_dir + # Switch to getting the preferences directory. + + elif arg == "-p": + l = preferences_dir + # Ignore debugging options. elif arg == "-d": @@ -154,6 +162,7 @@ self.messenger = Messenger(lmtp_socket=lmtp and lmtp[0] or None, sender=senders and senders[0] or None) self.store_dir = store_dir and store_dir[0] or None self.publishing_dir = publishing_dir and publishing_dir[0] or None + self.preferences_dir = preferences_dir and preferences_dir[0] or None self.process(stream, original_recipients, outgoing_only) def __call__(self): @@ -191,14 +200,14 @@ "A processor acting as a client on behalf of a recipient." - def __init__(self, user, messenger, store, publisher, handlers, debug): + def __init__(self, user, messenger, store, publisher, preferences_dir, handlers, debug): """ Initialise the recipient with the given 'user' identity, 'messenger', - 'store', 'publisher' and 'debug' status. + 'store', 'publisher', 'preferences_dir', 'handlers' and 'debug' status. """ - Client.__init__(self, user, messenger, store, publisher) + Client.__init__(self, user, messenger, store, publisher, preferences_dir) self.handlers = handlers self.debug = debug @@ -213,7 +222,8 @@ """ handlers = dict([(name, cls(senders, self.user and get_address(self.user), - self.messenger, self.store, self.publisher)) + self.messenger, self.store, self.publisher, + self.preferences_dir)) for name, cls in self.handlers]) handled = False diff -r d938f5c114d6 -r 513387edfb5e imiptools/client.py --- a/imiptools/client.py Sun Aug 02 19:36:44 2015 +0200 +++ b/imiptools/client.py Tue Aug 04 19:59:05 2015 +0200 @@ -37,7 +37,7 @@ default_window_size = 100 - def __init__(self, user, messenger=None, store=None, publisher=None): + def __init__(self, user, messenger=None, store=None, publisher=None, preferences_dir=None): self.user = user self.messenger = messenger self.store = store or imip_store.FileStore() @@ -47,11 +47,12 @@ except OSError: self.publisher = None + self.preferences_dir = preferences_dir self.preferences = None def get_preferences(self): if not self.preferences and self.user: - self.preferences = Preferences(self.user) + self.preferences = Preferences(self.user, self.preferences_dir) return self.preferences def get_tzid(self): @@ -208,8 +209,8 @@ "A client maintaining a specific object." - def __init__(self, obj, user, messenger=None, store=None, publisher=None): - Client.__init__(self, user, messenger, store, publisher) + def __init__(self, obj, user, messenger=None, store=None, publisher=None, preferences_dir=None): + Client.__init__(self, user, messenger, store, publisher, preferences_dir) self.set_object(obj) def set_object(self, obj): diff -r d938f5c114d6 -r 513387edfb5e imiptools/handlers/__init__.py --- a/imiptools/handlers/__init__.py Sun Aug 02 19:36:44 2015 +0200 +++ b/imiptools/handlers/__init__.py Tue Aug 04 19:59:05 2015 +0200 @@ -43,7 +43,7 @@ "General handler support." def __init__(self, senders=None, recipient=None, messenger=None, store=None, - publisher=None): + publisher=None, preferences_dir=None): """ Initialise the handler with any specifically indicated 'senders' and @@ -56,7 +56,7 @@ default store and publisher objects. """ - ClientForObject.__init__(self, None, recipient and get_uri(recipient), messenger, store, publisher) + ClientForObject.__init__(self, None, recipient and get_uri(recipient), messenger, store, publisher, preferences_dir) self.senders = senders and set(map(get_address, senders)) self.recipient = recipient and get_address(recipient) diff -r d938f5c114d6 -r 513387edfb5e imiptools/profile.py --- a/imiptools/profile.py Sun Aug 02 19:36:44 2015 +0200 +++ b/imiptools/profile.py Tue Aug 04 19:59:05 2015 +0200 @@ -28,8 +28,8 @@ "A simple preferences file manager." - def __init__(self, user, store_dir=PREFERENCES_DIR): - FileBase.__init__(self, store_dir) + def __init__(self, user, store_dir=None): + FileBase.__init__(self, store_dir or PREFERENCES_DIR) self.user = user def get(self, name, default=None):