1.1 --- a/imiptools/stores/database/common.py Sat Jun 04 17:16:36 2016 +0200
1.2 +++ b/imiptools/stores/database/common.py Sat Jun 04 18:42:53 2016 +0200
1.3 @@ -439,12 +439,13 @@
1.4 cls = cls or FreeBusyDatabaseCollection
1.5 return cls(self.cursor, table, ["store_user"], [user], mutable, self.paramstyle)
1.6
1.7 - def get_freebusy_for_other(self, user, other, mutable=False):
1.8 + def get_freebusy_for_other(self, user, other, mutable=False, cls=None):
1.9
1.10 "For the given 'user', get free/busy details for the 'other' user."
1.11
1.12 table = "freebusy_other"
1.13 - return FreeBusyDatabaseCollection(self.cursor, table, ["store_user", "other"], [user, other], mutable, self.paramstyle)
1.14 + cls = cls or FreeBusyDatabaseCollection
1.15 + return cls(self.cursor, table, ["store_user", "other"], [user, other], mutable, self.paramstyle)
1.16
1.17 def set_freebusy(self, user, freebusy, name=None, cls=None):
1.18
1.19 @@ -459,14 +460,15 @@
1.20
1.21 return True
1.22
1.23 - def set_freebusy_for_other(self, user, freebusy, other):
1.24 + def set_freebusy_for_other(self, user, freebusy, other, cls=None):
1.25
1.26 "For the given 'user', set 'freebusy' details for the 'other' user."
1.27
1.28 table = "freebusy_other"
1.29 + cls = cls or FreeBusyDatabaseCollection
1.30
1.31 - if not isinstance(freebusy, FreeBusyDatabaseCollection) or freebusy.table_name != table:
1.32 - fbc = FreeBusyDatabaseCollection(self.cursor, table, ["store_user", "other"], [user, other], True, self.paramstyle)
1.33 + if not isinstance(freebusy, cls) or freebusy.table_name != table:
1.34 + fbc = cls(self.cursor, table, ["store_user", "other"], [user, other], True, self.paramstyle)
1.35 fbc += freebusy
1.36
1.37 return True
1.38 @@ -812,7 +814,7 @@
1.39 self.cursor.execute(query, values)
1.40 return True
1.41
1.42 -class DatabaseJournal(DatabaseStoreBase, JournalBase):
1.43 +class DatabaseJournal(DatabaseStore, JournalBase):
1.44
1.45 "A journal system to support quotas."
1.46
1.47 @@ -976,46 +978,6 @@
1.48
1.49 return True
1.50
1.51 - # Free/busy period access for users within quota groups.
1.52 -
1.53 - def get_freebusy_users(self, quota):
1.54 -
1.55 - """
1.56 - Return a list of users whose free/busy details are retained for the
1.57 - given 'quota'.
1.58 - """
1.59 -
1.60 - columns = ["quota"]
1.61 - values = [quota]
1.62 -
1.63 - query, values = self.get_query(
1.64 - "select distinct store_user from user_freebusy :condition",
1.65 - columns, values)
1.66 -
1.67 - self.cursor.execute(query, values)
1.68 - return [r[0] for r in self.cursor.fetchall()]
1.69 -
1.70 - def get_freebusy(self, quota, user, mutable=False, cls=None):
1.71 -
1.72 - "Get free/busy details for the given 'quota' and 'user'."
1.73 -
1.74 - table = "user_freebusy"
1.75 - cls = cls or FreeBusyDatabaseCollection
1.76 - return cls(self.cursor, table, ["quota", "store_user"], [quota, user], mutable, self.paramstyle)
1.77 -
1.78 - def set_freebusy(self, quota, user, freebusy, cls=None):
1.79 -
1.80 - "For the given 'quota' and 'user', set 'freebusy' details."
1.81 -
1.82 - table = "user_freebusy"
1.83 - cls = cls or FreeBusyDatabaseCollection
1.84 -
1.85 - if not isinstance(freebusy, cls) or freebusy.table_name != table:
1.86 - fbc = cls(self.cursor, table, ["quota", "store_user"], [quota, user], True, self.paramstyle)
1.87 - fbc += freebusy
1.88 -
1.89 - return True
1.90 -
1.91 # Journal entry methods.
1.92
1.93 def get_entries(self, quota, group, mutable=False):
1.94 @@ -1025,8 +987,7 @@
1.95 'group'.
1.96 """
1.97
1.98 - table = "quota_freebusy"
1.99 - return FreeBusyGroupDatabaseCollection(self.cursor, table, ["quota", "user_group"], [quota, group], mutable, self.paramstyle)
1.100 + return self.get_freebusy_for_other(quota, group, mutable, cls=FreeBusyGroupDatabaseCollection)
1.101
1.102 def set_entries(self, quota, group, entries):
1.103
1.104 @@ -1035,12 +996,6 @@
1.105 'entries'.
1.106 """
1.107
1.108 - table = "quota_freebusy"
1.109 -
1.110 - if not isinstance(entries, FreeBusyGroupDatabaseCollection) or entries.table_name != table:
1.111 - fbc = FreeBusyGroupDatabaseCollection(self.cursor, table, ["quota", "user_group"], [quota, group], True, self.paramstyle)
1.112 - fbc += entries
1.113 -
1.114 - return True
1.115 + return self.set_freebusy_for_other(quota, entries, group, cls=FreeBusyGroupDatabaseCollection)
1.116
1.117 # vim: tabstop=4 expandtab shiftwidth=4