Changeset 7799:d0da39367de4 in orange


Ignore:
Timestamp:
04/02/11 15:56:11 (3 years ago)
Author:
matija <matija.polajnar@…>
Branch:
default
Convert:
b5fa4b1057c8599b01ded3643fe75cc3547ce273
Message:

Fix error, when Canvas incorrectly complained it could not reload the repository.

Location:
orange
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeCanvas/orngCanvas.pyw

    r7798 r7799  
    701701                    #TODO: # Should show some progress (and enable cancellation) 
    702702                    try: 
    703                         if r.refreshData(force=False): 
     703                        if r.refreshData(force=True): 
    704704                            anyDone = True 
    705705                        else: 
  • orange/orngAddOns.py

    r6988 r7799  
    696696     
    697697    def refreshData(self, force=False, firstLoad=False, interval=3600*24): 
    698         if force or (self.lastRefreshUTC < time.time() - interval):             
     698        if force or (self.lastRefreshUTC < time.time() - interval): 
    699699            self.lastRefreshUTC = time.time() 
    700700            self.hasWebScript = False 
     
    718718                                    print "Ignoring node nr. %d in repository '%s' because of an error: %s" % (i+1, self.name, e) 
    719719                        self.hasWebScript = True 
    720                         return 
     720                        return True 
    721721                    except Exception, e: 
    722722                        print "Warning: a problem occurred using server-side script on repository '%s': %s.\nAll add-ons need to be downloaded for their metadata to be extracted!" % (self.name, e) 
     
    791791class OrangeDefaultAddOnRepository(OrangeAddOnRepository): 
    792792    def __init__(self, **args): 
    793         OrangeAddOnRepository.__init__(self, "Default Orange Repository (www.ailab.si)", "http://www.ailab.si/orange/add-ons", force=True, **args) 
     793        OrangeAddOnRepository.__init__(self, "Default Orange Repository (orange.biolab.si)", "http://orange.biolab.si/add-ons/", force=True, **args) 
    794794         
    795795    def clone(self, new=None): 
     
    823823availableRepositories = None 
    824824             
    825 def loadRepositories(): 
     825def loadRepositories(refresh=True): 
    826826    listFileName = repositoryListFileName() 
    827827    global availableRepositories 
     
    836836            print "Unable to load repository list! Error: %s" % e 
    837837    try: 
    838         updateDefaultRepositories() 
     838        updateDefaultRepositories(loadList=refresh) 
    839839    except Exception, e: 
    840840        print "Unable to refresh default repositories: %s" % (e) 
    841     for r in availableRepositories: 
    842         #TODO: # Should show some progress (and enable cancellation) 
    843         try: 
    844             r.refreshData(force=False) 
    845         except Exception, e: 
    846             print "Unable to refresh repository %s! Error: %s" % (r.name, e) 
     841 
     842    if refresh: 
     843        for r in availableRepositories: 
     844            #TODO: # Should show some progress (and enable cancellation) 
     845            try: 
     846                r.refreshData(force=False) 
     847            except Exception, e: 
     848                print "Unable to refresh repository %s! Error: %s" % (r.name, e) 
    847849    saveRepositories() 
    848850 
     
    857859     
    858860 
    859 def updateDefaultRepositories(): 
     861def updateDefaultRepositories(loadList=True): 
    860862    global availableRepositories 
    861863    default = [OrangeDefaultAddOnRepository(load=False)] 
    862      
    863     for drepo in default: 
    864         exists = False 
    865         for repo in availableRepositories: 
    866             if drepo.url == repo.url and drepo.name == repo.name: 
    867                 exists = True 
    868                 break 
    869         if not exists: 
    870             availableRepositories.append(drepo) 
    871             drepo.refreshData(firstLoad=True) 
     864    defaultKeys = [(repo.url, repo.name) for repo in default] 
     865    existingKeys = [(repo.url, repo.name) for repo in availableRepositories] 
     866     
     867    for i, key in enumerate(defaultKeys): 
     868        if key not in existingKeys: 
     869            availableRepositories.append(default[i]) 
     870            if loadList: 
     871                default[i].refreshData(firstLoad=True) 
     872     
     873    to_remove = [] 
     874    for i, key in enumerate(existingKeys): 
     875        if isinstance(availableRepositories[i], OrangeDefaultAddOnRepository) and \ 
     876           key not in defaultKeys: 
     877            to_remove.append(availableRepositories[i]) 
     878    for tr in to_remove: 
     879        availableRepositories.remove(tr) 
    872880     
    873881     
     
    10471055addAddOnDirectoriesToPath() 
    10481056 
    1049 loadRepositories() 
     1057loadRepositories(refresh=False) 
Note: See TracChangeset for help on using the changeset viewer.