Beispiel #1
0
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
Beispiel #2
0
 def __init__(self, settingsModel = None):
     self.cacheLocation = 'cache'
     if settingsModel:
         self.settings = settingsModel
     else:
         self.settings = Settings()
     # { webPage : diff }
     self.diff = {}