# HG changeset patch # User Paul Boddie # Date 1427303737 -3600 # Node ID 8ef96b8e11f4c41bcd6810aed996b0d82ab95a52 # Parent 8b3780a07bf382426537a54a5b6769d36e97162c Moved client base class functionality into the client utilities module. diff -r 8b3780a07bf3 -r 8ef96b8e11f4 imip_manager.py --- a/imip_manager.py Wed Mar 25 18:05:44 2015 +0100 +++ b/imip_manager.py Wed Mar 25 18:15:37 2015 +0100 @@ -31,15 +31,14 @@ sys.path.append(LIBRARY_PATH) -from imiptools.client import update_attendees +from imiptools.client import Client, update_attendees from imiptools.data import get_address, get_uri, get_window_end, make_freebusy, \ Object, to_part, \ uri_dict, uri_item, uri_items, uri_values from imiptools.dates import format_datetime, format_time, to_date, get_datetime, \ - get_datetime_item, get_default_timezone, \ - get_end_of_day, get_period_item, get_start_of_day, \ - get_start_of_next_day, get_timestamp, ends_on_same_day, \ - to_timezone + get_datetime_item, get_end_of_day, get_period_item, \ + get_start_of_day, get_start_of_next_day, get_timestamp, \ + ends_on_same_day, to_timezone from imiptools.handlers import Handler from imiptools.mail import Messenger from imiptools.period import add_day_start_points, add_empty_days, add_slots, \ @@ -47,39 +46,11 @@ get_scale, have_conflict, get_slots, get_spans, \ partition_by_day, remove_period, remove_affected_period, \ update_freebusy -from imiptools.profile import Preferences from imipweb.env import CGIEnvironment import imip_store import markup -class Common: - - "Common handler and manager methods." - - def __init__(self, user): - self.user = user - self.preferences = None - - def get_preferences(self): - if not self.preferences: - self.preferences = Preferences(self.user) - return self.preferences - - def get_tzid(self): - prefs = self.get_preferences() - return prefs.get("TZID") or get_default_timezone() - - def get_window_size(self): - prefs = self.get_preferences() - try: - return int(prefs.get("window_size")) - except (TypeError, ValueError): - return 100 - - def get_window_end(self): - return get_window_end(self.get_tzid(), self.get_window_size()) - -class ManagerHandler(Common, Handler): +class ManagerHandler(Client, Handler): """ A content handler for use by the manager, as opposed to operating within the @@ -88,7 +59,7 @@ def __init__(self, obj, user, messenger): Handler.__init__(self, messenger=messenger) - Common.__init__(self, user) + Client.__init__(self, user) self.set_object(obj) @@ -119,10 +90,7 @@ # Bundle free/busy information if appropriate. - preferences = Preferences(self.user) - - if preferences.get("freebusy_sharing") == "share" and \ - preferences.get("freebusy_bundling") == "always": + if self.is_sharing() and self.is_bundling(): # Invent a unique identifier. @@ -229,7 +197,7 @@ return True -class Manager(Common): +class Manager(Client): "A simple manager application." @@ -239,7 +207,7 @@ self.env = CGIEnvironment(self.encoding) user = self.env.get_user() - Common.__init__(self, user and get_uri(user) or None) + Client.__init__(self, user and get_uri(user) or None) self.locale = None self.requests = None diff -r 8b3780a07bf3 -r 8ef96b8e11f4 imiptools/client.py --- a/imiptools/client.py Wed Mar 25 18:05:44 2015 +0100 +++ b/imiptools/client.py Wed Mar 25 18:15:37 2015 +0100 @@ -19,7 +19,9 @@ this program. If not, see . """ -from imiptools.data import uri_items +from imiptools.data import get_window_end, uri_items +from imiptools.dates import get_default_timezone +from imiptools.profile import Preferences def update_attendees(obj, added, removed): @@ -54,4 +56,37 @@ return to_cancel +class Client: + + "Common handler and manager methods." + + def __init__(self, user): + self.user = user + self.preferences = None + + def get_preferences(self): + if not self.preferences: + self.preferences = Preferences(self.user) + return self.preferences + + def get_tzid(self): + prefs = self.get_preferences() + return prefs.get("TZID") or get_default_timezone() + + def get_window_size(self): + prefs = self.get_preferences() + try: + return int(prefs.get("window_size")) + except (TypeError, ValueError): + return 100 + + def get_window_end(self): + return get_window_end(self.get_tzid(), self.get_window_size()) + + def is_sharing(self): + return self.get_preferences().get("freebusy_sharing") == "share" + + def is_bundling(self): + return self.get_preferences().get("freebusy_bundling") == "always" + # vim: tabstop=4 expandtab shiftwidth=4