class UpdateCheckerModel: '''Maintains the update model. checks for and caches updates recieved from the server''' def __init__(self, settingsModel = None): self.cacheLocation = 'cache' if settingsModel: self.settings = settingsModel else: self.settings = Settings() # { webPage : diff } self.diff = {} def checkForUpdates(self, forced): from time import time if debug.verbose: print('DEBUG: Check for updates') oldDiff = self.diff self.diff = {} server = xmlrpclib.Server(self.settings.serverAddress) webPages = self.settings.getWebPages(); webPagesToCheck = [ webPage for webPage in webPages if options.NOTIFICATION_TYPE_CLIENT in self.settings.webPages[webPage].getNotificationTypes() ] for webPage in webPagesToCheck: if debug.verbose: print('DEBUG: last seen = ' + str(webPages[webPage].getLastSeenTimestamp(options.NOTIFICATION_TYPE_CLIENT))) lastSeen = webPages[webPage].getLastSeenTimestamp(options.NOTIFICATION_TYPE_CLIENT) frequency = webPages[webPage].getFrequency() if debug.verbose: print('DEBUG: frequency: ' + str(frequency)) if lastSeen != None: # only check if we havent checked it for a while # finout out from user's options how much delay if (int(time()) - int(lastSeen)) < options.getDelayForFrequency(frequency): continue webPages[webPage].setLastSeenTimestamp(options.NOTIFICATION_TYPE_CLIENT, time()) if debug.verbose: print('DEBUG: Checking ' + str(webPage)) diff = server.getNewDiff(self.settings.username, webPage) if diff == None or diff == '': continue if debug.verbose: print('DEBUG: diff from server \n' + diff) self.diff[webPage] = diff updatedWebPages = [ webPage for webPage in self.diff] # keep the older entries, but replace the newer entries newDiff = self.diff self.diff = oldDiff for webPage in newDiff: self.diff[webPage] = newDiff[webPage] if debug.verbose: print('DEBUG: Done checking for updates') return updatedWebPages
def __init__(self, settingsModel = None): self.cacheLocation = 'cache' if settingsModel: self.settings = settingsModel else: self.settings = Settings() # { webPage : diff } self.diff = {}