1.1 --- a/imiptools/__init__.py Sun Aug 02 19:36:44 2015 +0200
1.2 +++ b/imiptools/__init__.py Tue Aug 04 19:59:05 2015 +0200
1.3 @@ -56,6 +56,7 @@
1.4 self.lmtp_socket = None
1.5 self.store_dir = None
1.6 self.publishing_dir = None
1.7 + self.preferences_dir = None
1.8 self.debug = False
1.9
1.10 def get_store(self):
1.11 @@ -77,6 +78,7 @@
1.12 messenger = self.messenger
1.13 store = self.get_store()
1.14 publisher = self.get_publisher()
1.15 + preferences_dir = self.preferences_dir
1.16
1.17 # Handle messages with iTIP parts.
1.18 # Typically, the details of recipients are of interest in handling
1.19 @@ -85,13 +87,13 @@
1.20 if not outgoing_only:
1.21 original_recipients = original_recipients or get_addresses(get_all_values(msg, "To") or [])
1.22 for recipient in original_recipients:
1.23 - Recipient(get_uri(recipient), messenger, store, publisher, self.handlers, self.debug).process(msg, senders, outgoing_only)
1.24 + Recipient(get_uri(recipient), messenger, store, publisher, preferences_dir, self.handlers, self.debug).process(msg, senders, outgoing_only)
1.25
1.26 # However, outgoing messages do not usually presume anything about the
1.27 # eventual recipients.
1.28
1.29 else:
1.30 - Recipient(None, messenger, store, publisher, self.handlers, self.debug).process(msg, senders, outgoing_only)
1.31 + Recipient(None, messenger, store, publisher, preferences_dir, self.handlers, self.debug).process(msg, senders, outgoing_only)
1.32
1.33 def process_args(self, args, stream):
1.34
1.35 @@ -108,6 +110,7 @@
1.36 lmtp = []
1.37 store_dir = []
1.38 publishing_dir = []
1.39 + preferences_dir = []
1.40 outgoing_only = False
1.41
1.42 l = []
1.43 @@ -144,6 +147,11 @@
1.44 elif arg == "-P":
1.45 l = publishing_dir
1.46
1.47 + # Switch to getting the preferences directory.
1.48 +
1.49 + elif arg == "-p":
1.50 + l = preferences_dir
1.51 +
1.52 # Ignore debugging options.
1.53
1.54 elif arg == "-d":
1.55 @@ -154,6 +162,7 @@
1.56 self.messenger = Messenger(lmtp_socket=lmtp and lmtp[0] or None, sender=senders and senders[0] or None)
1.57 self.store_dir = store_dir and store_dir[0] or None
1.58 self.publishing_dir = publishing_dir and publishing_dir[0] or None
1.59 + self.preferences_dir = preferences_dir and preferences_dir[0] or None
1.60 self.process(stream, original_recipients, outgoing_only)
1.61
1.62 def __call__(self):
1.63 @@ -191,14 +200,14 @@
1.64
1.65 "A processor acting as a client on behalf of a recipient."
1.66
1.67 - def __init__(self, user, messenger, store, publisher, handlers, debug):
1.68 + def __init__(self, user, messenger, store, publisher, preferences_dir, handlers, debug):
1.69
1.70 """
1.71 Initialise the recipient with the given 'user' identity, 'messenger',
1.72 - 'store', 'publisher' and 'debug' status.
1.73 + 'store', 'publisher', 'preferences_dir', 'handlers' and 'debug' status.
1.74 """
1.75
1.76 - Client.__init__(self, user, messenger, store, publisher)
1.77 + Client.__init__(self, user, messenger, store, publisher, preferences_dir)
1.78 self.handlers = handlers
1.79 self.debug = debug
1.80
1.81 @@ -213,7 +222,8 @@
1.82 """
1.83
1.84 handlers = dict([(name, cls(senders, self.user and get_address(self.user),
1.85 - self.messenger, self.store, self.publisher))
1.86 + self.messenger, self.store, self.publisher,
1.87 + self.preferences_dir))
1.88 for name, cls in self.handlers])
1.89 handled = False
1.90
2.1 --- a/imiptools/client.py Sun Aug 02 19:36:44 2015 +0200
2.2 +++ b/imiptools/client.py Tue Aug 04 19:59:05 2015 +0200
2.3 @@ -37,7 +37,7 @@
2.4
2.5 default_window_size = 100
2.6
2.7 - def __init__(self, user, messenger=None, store=None, publisher=None):
2.8 + def __init__(self, user, messenger=None, store=None, publisher=None, preferences_dir=None):
2.9 self.user = user
2.10 self.messenger = messenger
2.11 self.store = store or imip_store.FileStore()
2.12 @@ -47,11 +47,12 @@
2.13 except OSError:
2.14 self.publisher = None
2.15
2.16 + self.preferences_dir = preferences_dir
2.17 self.preferences = None
2.18
2.19 def get_preferences(self):
2.20 if not self.preferences and self.user:
2.21 - self.preferences = Preferences(self.user)
2.22 + self.preferences = Preferences(self.user, self.preferences_dir)
2.23 return self.preferences
2.24
2.25 def get_tzid(self):
2.26 @@ -208,8 +209,8 @@
2.27
2.28 "A client maintaining a specific object."
2.29
2.30 - def __init__(self, obj, user, messenger=None, store=None, publisher=None):
2.31 - Client.__init__(self, user, messenger, store, publisher)
2.32 + def __init__(self, obj, user, messenger=None, store=None, publisher=None, preferences_dir=None):
2.33 + Client.__init__(self, user, messenger, store, publisher, preferences_dir)
2.34 self.set_object(obj)
2.35
2.36 def set_object(self, obj):
3.1 --- a/imiptools/handlers/__init__.py Sun Aug 02 19:36:44 2015 +0200
3.2 +++ b/imiptools/handlers/__init__.py Tue Aug 04 19:59:05 2015 +0200
3.3 @@ -43,7 +43,7 @@
3.4 "General handler support."
3.5
3.6 def __init__(self, senders=None, recipient=None, messenger=None, store=None,
3.7 - publisher=None):
3.8 + publisher=None, preferences_dir=None):
3.9
3.10 """
3.11 Initialise the handler with any specifically indicated 'senders' and
3.12 @@ -56,7 +56,7 @@
3.13 default store and publisher objects.
3.14 """
3.15
3.16 - ClientForObject.__init__(self, None, recipient and get_uri(recipient), messenger, store, publisher)
3.17 + ClientForObject.__init__(self, None, recipient and get_uri(recipient), messenger, store, publisher, preferences_dir)
3.18
3.19 self.senders = senders and set(map(get_address, senders))
3.20 self.recipient = recipient and get_address(recipient)
4.1 --- a/imiptools/profile.py Sun Aug 02 19:36:44 2015 +0200
4.2 +++ b/imiptools/profile.py Tue Aug 04 19:59:05 2015 +0200
4.3 @@ -28,8 +28,8 @@
4.4
4.5 "A simple preferences file manager."
4.6
4.7 - def __init__(self, user, store_dir=PREFERENCES_DIR):
4.8 - FileBase.__init__(self, store_dir)
4.9 + def __init__(self, user, store_dir=None):
4.10 + FileBase.__init__(self, store_dir or PREFERENCES_DIR)
4.11 self.user = user
4.12
4.13 def get(self, name, default=None):