Ignore:
Timestamp:
04/03/13 13:39:33 (13 months ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Message:

Added 'Last Updated' column to 'OWDatabasesUpdate'

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Orange/OrangeWidgets/OWDatabasesUpdate.py

    r11436 r11437  
    66from datetime import datetime 
    77 
    8 import orngServerFiles 
    9 import orngEnviron 
    10  
     8import Orange 
     9 
     10from Orange.utils import serverfiles, environ 
    1111from Orange.utils.serverfiles import sizeformat as sizeof_fmt 
    1212 
     
    1818 
    1919class ItemProgressBar(QProgressBar): 
    20     """Progress Bar with and advance() slot. 
     20    """Progress Bar with and `advance()` slot. 
    2121    """ 
    2222    @pyqtSignature("advance()") 
     
    4646            QTimer.singleShot(10, self.advance) 
    4747 
    48 _icons_dir = os.path.join(orngEnviron.canvasDir, "icons") 
     48_icons_dir = os.path.join(environ.canvas_install_dir, "icons") 
    4949 
    5050 
     
    5454 
    5555class UpdateOptionsWidget(QWidget): 
     56    """ 
     57    A Widget with download/update/remove options. 
     58    """ 
    5659    def __init__(self, updateCallback, removeCallback, state, *args): 
    5760        QWidget.__init__(self, *args) 
     
    102105            self.updateButton.setEnabled(False) 
    103106            self.removeButton.setEnabled(True) 
     107        else: 
     108            raise ValueError("Invalid state %r" % state) 
    104109 
    105110 
     
    112117    def __init__(self, master, treeWidget, domain, filename, infoLocal, 
    113118                 infoServer, *args): 
     119        dateServer = dateLocal = None 
     120        if infoServer: 
     121            dateServer = datetime.strptime( 
     122                infoServer["datetime"].split(".")[0], "%Y-%m-%d %H:%M:%S" 
     123            ) 
     124        if infoLocal: 
     125            dateLocal = datetime.strptime( 
     126                infoLocal["datetime"].split(".")[0], "%Y-%m-%d %H:%M:%S" 
     127            ) 
    114128        if not infoLocal: 
    115129            self.state = 2 
     
    117131            self.state = 3 
    118132        else: 
    119             dateServer = datetime.strptime( 
    120                 infoServer["datetime"].split(".")[0], "%Y-%m-%d %H:%M:%S" 
    121             ) 
    122             dateLocal = datetime.strptime( 
    123                 infoLocal["datetime"].split(".")[0], "%Y-%m-%d %H:%M:%S") 
    124133            self.state = 0 if dateLocal >= dateServer else 1 
    125134 
     
    138147 
    139148        QTreeWidgetItem.__init__(self, treeWidget, ["", title, size]) 
     149        if dateServer is not None: 
     150            self.setData(3, Qt.DisplayRole, 
     151                         dateServer.date().isoformat()) 
     152 
    140153        self.updateWidget = UpdateOptionsWidget( 
    141154            self.StartDownload, self.Remove, self.state, treeWidget 
     
    160173                                           ", ".join(self.tags)) 
    161174        if self.state != 2: 
    162             tooltip += "\nFile: %s" % \ 
    163                         orngServerFiles.localpath(self.domain, self.filename) 
     175            tooltip += ("\nFile: %s" % 
     176                        serverfiles.localpath(self.domain, self.filename)) 
    164177        for i in range(1, 5): 
    165178            self.setToolTip(i, tooltip) 
     
    169182        self.updateWidget.updateButton.setEnabled(False) 
    170183        self.setData(2, Qt.DisplayRole, QVariant("")) 
    171         serverFiles = orngServerFiles.ServerFiles( 
     184        serverFiles = serverfiles.ServerFiles( 
    172185            access_code=self.master.accessCode if self.master.accessCode 
    173186            else None 
     
    203216        pb.show() 
    204217 
    205         self.task.apply_async(orngServerFiles.download, 
     218        self.task.apply_async(serverfiles.download, 
    206219                              args=(self.domain, self.filename, serverFiles), 
    207220                              kwargs=dict(callback=self.task.emitAdvance)) 
     
    231244 
    232245    def Remove(self): 
    233         orngServerFiles.remove(self.domain, self.filename) 
     246        serverfiles.remove(self.domain, self.filename) 
    234247        self.state = 2 
    235248        self.updateWidget.SetState(self.state) 
     
    277290        self.showAll = showAll 
    278291        self.domains = domains 
    279         self.serverFiles = orngServerFiles.ServerFiles() 
     292        self.serverFiles = serverfiles.ServerFiles() 
    280293        box = OWGUI.widgetBox(self.mainArea, orientation="horizontal") 
    281294 
     
    291304        box = OWGUI.widgetBox(self.mainArea, "Files") 
    292305        self.filesView = QTreeWidget(self) 
    293         self.filesView.setHeaderLabels(["Options", "Title", "Size"]) 
     306        self.filesView.setHeaderLabels(["Options", "Title", "Size", 
     307                                        "Last Updated"]) 
    294308        self.filesView.setRootIsDecorated(False) 
    295309        self.filesView.setSelectionMode(QAbstractItemView.NoSelection) 
     
    336350 
    337351    def RetrieveFilesList(self): 
    338         self.serverFiles = orngServerFiles.ServerFiles(access_code=self.accessCode) 
     352        self.serverFiles = serverfiles.ServerFiles(access_code=self.accessCode) 
    339353        self.pb = ProgressBar(self, 3) 
    340354        self.async_retrieve = createTask(retrieveFilesList, 
     
    348362    def SetFilesList(self, serverInfo): 
    349363        self.setEnabled(True) 
    350         domains = serverInfo.keys() or orngServerFiles.listdomains() 
    351         localInfo = dict([(dom, orngServerFiles.allinfo(dom)) 
     364        domains = serverInfo.keys() or serverfiles.listdomains() 
     365        localInfo = dict([(dom, serverfiles.allinfo(dom)) 
    352366                          for dom in domains]) 
    353367        items = [] 
     
    375389            self.updateItems.append(UpdateTreeWidgetItem(self, *item)) 
    376390        self.pb.advance() 
    377         self.filesView.resizeColumnToContents(0) 
    378         self.filesView.resizeColumnToContents(1) 
    379         self.filesView.resizeColumnToContents(2) 
     391        for column in range(4): 
     392            whint = self.filesView.sizeHintForColumn(column) 
     393            width = min(whint, 400) 
     394            self.filesView.setColumnWidth(column, width) 
     395 
    380396        self.lineEditFilter.setItems([hint for hint in sorted(self.allTags) 
    381397                                      if not hint.startswith("#")]) 
Note: See TracChangeset for help on using the changeset viewer.