Mercurial > hg > Feedworm
view backend/sqlalchemy/Preferences.py @ 155:a05719a6175e
move common functionality into an abstract backend class, have both backends inherit from it. Implement enough of the couchdb backend that reading feeds (and marking feed entries as read) is possible
author | Dirk Olmes <dirk@xanthippe.ping.de> |
---|---|
date | Sat, 27 Aug 2011 08:52:03 +0200 |
parents | e830fa1cc7a2 |
children | bb3c851b18b1 |
line wrap: on
line source
from Preference import Preference DAYS_TO_KEEP_FEED_ENTRIES = "DAYS_TO_KEEP_FEED_ENTRIES" HIDE_READ_ENTRIES = "HIDE_READ_FEED_ENTRIES" PROXY_HOST = "PROXY_HOST" PROXY_PORT = "PROXY_PORT" SHOW_ONLY_UNREAD_FEEDS = "SHOW_ONLY_UNREAD_FEEDS" START_MAXIMIZED = "START_MAXIMIZED" def str2bool(string): return string.lower() in ["yes", "true", "t", "1"] def bool2str(bool): if bool: return "True" else: return "False" class Preferences(object): def __init__(self, session): self.session = session self.cache = {} def _cachedPreference(self, key, defaultValue=None, addIfMissing=True): if self.cache.has_key(key): return self.cache[key] else: pref = Preference.forKey(key, self.session) if pref is not None: self.cache[key] = pref elif pref is None and addIfMissing: pref = Preference(key, str(defaultValue)) self.session.add(pref) self.cache[key] = pref return pref def commit(self): self.session.commit() def rollback(self): self.session.rollback() def startMaximized(self): pref = self._cachedPreference(START_MAXIMIZED, False) return str2bool(pref.value) def setStartMaximized(self, flag): pref = self._cachedPreference(START_MAXIMIZED) pref.value = bool2str(flag) def hideReadFeedEntries(self): pref = self._cachedPreference(HIDE_READ_ENTRIES, False) return str2bool(pref.value) def setHideReadFeedEntries(self, flag): pref = self._cachedPreference(HIDE_READ_ENTRIES) pref.value = bool2str(flag) def showOnlyUnreadFeeds(self): pref = self._cachedPreference(SHOW_ONLY_UNREAD_FEEDS, False) return str2bool(pref.value) def setShowOnlyUnreadFeeds(self, flag): pref = self._cachedPreference(SHOW_ONLY_UNREAD_FEEDS) pref.value = bool2str(flag) def proxyHost(self): pref = self._cachedPreference(PROXY_HOST) return pref.value def setProxyHost(self, hostname): if hostname is None: pref = self._cachedPreference(PROXY_HOST, addIfMissing=False) if pref is not None: self.session.delete(pref) del(self.cache[PROXY_HOST]) else: pref = self._cachedPreference(PROXY_HOST) pref.value = str(hostname) def proxyPort(self): pref = self._cachedPreference(PROXY_PORT, 3128) return int(pref.value) def setProxyPort(self, port): if port is None: pref = self._cachedPreference(PROXY_PORT, addIfMissing=False) if pref is not None: self.session.delete(pref) del(self.cache[PROXY_PORT]) else: pref = self._cachedPreference(PROXY_PORT) pref.value = str(port) def isProxyConfigured(self): pref = self._cachedPreference(PROXY_HOST, addIfMissing=False) return pref is not None def daysToKeepFeedEntries(self): pref = self._cachedPreference(DAYS_TO_KEEP_FEED_ENTRIES, 90, addIfMissing=True) return int(pref.value) def setDaysToKeepFeedEntries(self, dayString): pref = self._cachedPreference(DAYS_TO_KEEP_FEED_ENTRIES) pref.value = dayString