1.1 --- a/imip_manager.py Wed Mar 25 18:05:44 2015 +0100
1.2 +++ b/imip_manager.py Wed Mar 25 18:15:37 2015 +0100
1.3 @@ -31,15 +31,14 @@
1.4
1.5 sys.path.append(LIBRARY_PATH)
1.6
1.7 -from imiptools.client import update_attendees
1.8 +from imiptools.client import Client, update_attendees
1.9 from imiptools.data import get_address, get_uri, get_window_end, make_freebusy, \
1.10 Object, to_part, \
1.11 uri_dict, uri_item, uri_items, uri_values
1.12 from imiptools.dates import format_datetime, format_time, to_date, get_datetime, \
1.13 - get_datetime_item, get_default_timezone, \
1.14 - get_end_of_day, get_period_item, get_start_of_day, \
1.15 - get_start_of_next_day, get_timestamp, ends_on_same_day, \
1.16 - to_timezone
1.17 + get_datetime_item, get_end_of_day, get_period_item, \
1.18 + get_start_of_day, get_start_of_next_day, get_timestamp, \
1.19 + ends_on_same_day, to_timezone
1.20 from imiptools.handlers import Handler
1.21 from imiptools.mail import Messenger
1.22 from imiptools.period import add_day_start_points, add_empty_days, add_slots, \
1.23 @@ -47,39 +46,11 @@
1.24 get_scale, have_conflict, get_slots, get_spans, \
1.25 partition_by_day, remove_period, remove_affected_period, \
1.26 update_freebusy
1.27 -from imiptools.profile import Preferences
1.28 from imipweb.env import CGIEnvironment
1.29 import imip_store
1.30 import markup
1.31
1.32 -class Common:
1.33 -
1.34 - "Common handler and manager methods."
1.35 -
1.36 - def __init__(self, user):
1.37 - self.user = user
1.38 - self.preferences = None
1.39 -
1.40 - def get_preferences(self):
1.41 - if not self.preferences:
1.42 - self.preferences = Preferences(self.user)
1.43 - return self.preferences
1.44 -
1.45 - def get_tzid(self):
1.46 - prefs = self.get_preferences()
1.47 - return prefs.get("TZID") or get_default_timezone()
1.48 -
1.49 - def get_window_size(self):
1.50 - prefs = self.get_preferences()
1.51 - try:
1.52 - return int(prefs.get("window_size"))
1.53 - except (TypeError, ValueError):
1.54 - return 100
1.55 -
1.56 - def get_window_end(self):
1.57 - return get_window_end(self.get_tzid(), self.get_window_size())
1.58 -
1.59 -class ManagerHandler(Common, Handler):
1.60 +class ManagerHandler(Client, Handler):
1.61
1.62 """
1.63 A content handler for use by the manager, as opposed to operating within the
1.64 @@ -88,7 +59,7 @@
1.65
1.66 def __init__(self, obj, user, messenger):
1.67 Handler.__init__(self, messenger=messenger)
1.68 - Common.__init__(self, user)
1.69 + Client.__init__(self, user)
1.70
1.71 self.set_object(obj)
1.72
1.73 @@ -119,10 +90,7 @@
1.74
1.75 # Bundle free/busy information if appropriate.
1.76
1.77 - preferences = Preferences(self.user)
1.78 -
1.79 - if preferences.get("freebusy_sharing") == "share" and \
1.80 - preferences.get("freebusy_bundling") == "always":
1.81 + if self.is_sharing() and self.is_bundling():
1.82
1.83 # Invent a unique identifier.
1.84
1.85 @@ -229,7 +197,7 @@
1.86
1.87 return True
1.88
1.89 -class Manager(Common):
1.90 +class Manager(Client):
1.91
1.92 "A simple manager application."
1.93
1.94 @@ -239,7 +207,7 @@
1.95 self.env = CGIEnvironment(self.encoding)
1.96
1.97 user = self.env.get_user()
1.98 - Common.__init__(self, user and get_uri(user) or None)
1.99 + Client.__init__(self, user and get_uri(user) or None)
1.100
1.101 self.locale = None
1.102 self.requests = None
2.1 --- a/imiptools/client.py Wed Mar 25 18:05:44 2015 +0100
2.2 +++ b/imiptools/client.py Wed Mar 25 18:15:37 2015 +0100
2.3 @@ -19,7 +19,9 @@
2.4 this program. If not, see <http://www.gnu.org/licenses/>.
2.5 """
2.6
2.7 -from imiptools.data import uri_items
2.8 +from imiptools.data import get_window_end, uri_items
2.9 +from imiptools.dates import get_default_timezone
2.10 +from imiptools.profile import Preferences
2.11
2.12 def update_attendees(obj, added, removed):
2.13
2.14 @@ -54,4 +56,37 @@
2.15
2.16 return to_cancel
2.17
2.18 +class Client:
2.19 +
2.20 + "Common handler and manager methods."
2.21 +
2.22 + def __init__(self, user):
2.23 + self.user = user
2.24 + self.preferences = None
2.25 +
2.26 + def get_preferences(self):
2.27 + if not self.preferences:
2.28 + self.preferences = Preferences(self.user)
2.29 + return self.preferences
2.30 +
2.31 + def get_tzid(self):
2.32 + prefs = self.get_preferences()
2.33 + return prefs.get("TZID") or get_default_timezone()
2.34 +
2.35 + def get_window_size(self):
2.36 + prefs = self.get_preferences()
2.37 + try:
2.38 + return int(prefs.get("window_size"))
2.39 + except (TypeError, ValueError):
2.40 + return 100
2.41 +
2.42 + def get_window_end(self):
2.43 + return get_window_end(self.get_tzid(), self.get_window_size())
2.44 +
2.45 + def is_sharing(self):
2.46 + return self.get_preferences().get("freebusy_sharing") == "share"
2.47 +
2.48 + def is_bundling(self):
2.49 + return self.get_preferences().get("freebusy_bundling") == "always"
2.50 +
2.51 # vim: tabstop=4 expandtab shiftwidth=4