def StartDownload(self): self.updateWidget.removeButton.setEnabled(False) self.updateWidget.updateButton.setEnabled(False) self.setData(2, Qt.DisplayRole, QVariant("")) serverFiles = orngServerFiles.ServerFiles(access_code=self.master.accessCode if self.master.accessCode else None) pb = ItemProgressBar(self.treeWidget()) pb.setRange(0, 100) pb.setTextVisible(False) self.task = AsyncCall(threadPool=QThreadPool.globalInstance()) if not getattr(self.master, "_sum_progressBar", None): self.master._sum_progressBar = OWGUI.ProgressBar(self.master,0) self.master._sum_progressBar.in_progress = 0 master_pb = self.master._sum_progressBar master_pb.iter += 100 master_pb.in_progress += 1 self._progressBarRedirect = ProgressBarRedirect(QThread.currentThread(), master_pb) # QObject.connect(self.thread, SIGNAL("advance()"), lambda :(pb.setValue(pb.value()+1), master_pb.advance())) QObject.connect(self.task, SIGNAL("advance()"), pb.advance, Qt.QueuedConnection) QObject.connect(self.task, SIGNAL("advance()"), self._progressBarRedirect.advance, Qt.QueuedConnection) QObject.connect(self.task, SIGNAL("finished(QString)"), self.EndDownload, Qt.QueuedConnection) self.treeWidget().setItemWidget(self, 2, pb) pb.show() self.task.apply_async(orngServerFiles.download, args=(self.domain, self.filename, serverFiles), kwargs=dict(callback=self.task.emitAdvance))
def UpdateFilesList(self): self.retryButton.hide() # self.progressBarInit() pb = OWGUI.ProgressBar(self, 3) self.filesView.clear() # self.tagsWidget.clear() self.allTags = set() allTitles = set() self.updateItems = [] if self.accessCode: self.serverFiles = orngServerFiles.ServerFiles( access_code=self.accessCode) self.error(0) try: domains = self.serverFiles.listdomains( ) if self.domains is None else self.domains pb.advance() serverInfo = dict([(dom, self.serverFiles.allinfo(dom)) for dom in domains]) pb.advance() except IOError, ex: self.error( 0, "Could not connect to server! Press the Retry button to try again." ) self.retryButton.show() domains = orngServerFiles.listdomains( ) if self.domains is None else self.domains pb.advance() serverInfo = {} pb.advance()
def files_report(): import orngServerFiles as sf sf = sf.ServerFiles() html = [] for domain in sf.listdomains(): if domain not in ["demo", "demo2", "test", "gad"]: allinfo = sf.allinfo(domain) html += ["<h2>%s</h2>" % domain, "<table><tr><th>Title</th><th>Date</th><th>Filename</th></tr>"] + \ ["<tr><td>%s</td><td>%s</td><td>%s</td></tr>" % (info["title"], info["datetime"], file) \ for file, info in allinfo.items()] + \ ["</table>"] return "\n".join(html)
def __init__(self, parent=None, signalManager=None, name="Databases update", wantCloseButton=False, searchString="", showAll=True, domains=None, accessCode=""): OWWidget.__init__(self, parent, signalManager, name) self.searchString = searchString self.accessCode = accessCode self.showAll = showAll self.domains = domains self.serverFiles = orngServerFiles.ServerFiles() box = OWGUI.widgetBox(self.mainArea, orientation="horizontal") import OWGUIEx self.lineEditFilter = OWGUIEx.lineEditHint(box, self, "searchString", "Filter", caseSensitive=False, delimiters=" ", matchAnywhere=True, listUpdateCallback=self.SearchUpdate, callbackOnType=True, callback=self.SearchUpdate) box = OWGUI.widgetBox(self.mainArea, "Files") self.filesView = QTreeWidget(self) self.filesView.setHeaderLabels(["Options", "Title", "Size"]) self.filesView.setRootIsDecorated(False) self.filesView.setSelectionMode(QAbstractItemView.NoSelection) self.filesView.setSortingEnabled(True) self.filesView.setItemDelegate(UpdateItemDelegate(self.filesView)) self.connect(self.filesView.model(), SIGNAL("layoutChanged()"), self.SearchUpdate) box.layout().addWidget(self.filesView) box = OWGUI.widgetBox(self.mainArea, orientation="horizontal") OWGUI.button(box, self, "Update all local files", callback=self.UpdateAll, tooltip="Update all updatable files") OWGUI.button(box, self, "Download filtered", callback=self.DownloadFiltered, tooltip="Download all filtered files shown") OWGUI.rubber(box) OWGUI.lineEdit(box, self, "accessCode", "Access Code", orientation="horizontal", callback=self.RetrieveFilesList) self.retryButton = OWGUI.button(box, self, "Retry", callback=self.RetrieveFilesList) self.retryButton.hide() box = OWGUI.widgetBox(self.mainArea, orientation="horizontal") OWGUI.rubber(box) if wantCloseButton: OWGUI.button(box, self, "Close", callback=self.accept, tooltip="Close") ## statusBar = QStatusBar() self.infoLabel = QLabel() self.infoLabel.setAlignment(Qt.AlignCenter) ## statusBar.addWidget(self.infoLabel) ## self.mainArea.layout().addWidget(statusBar) self.mainArea.layout().addWidget(self.infoLabel) self.infoLabel.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) self.updateItems = [] self.allTags = [] self.resize(800, 600) # QTimer.singleShot(50, self.UpdateFilesList) QTimer.singleShot(50, self.RetrieveFilesList)
##!interval=7 ##[email protected] import obiPPI, orngServerFiles import os, sys, shutil, urllib2, tarfile from getopt import getopt opt = dict(getopt(sys.argv[1:], "u:p:", ["user="******"password="******"-u", opt.get("--user", "username")) password = opt.get("-p", opt.get("--password", "password")) serverFiles = orngServerFiles.ServerFiles(username, password) try: os.mkdir(orngServerFiles.localpath("PPI")) except OSError: pass obiPPI.MIPS.download() try: serverFiles.create_domain("PPI") except Exception, ex: print ex filename = orngServerFiles.localpath("PPI", "mppi.gz") serverFiles.upload("PPI", "allppis.xml", filename, "MIPS Protein interactions", tags=[
def RetrieveFilesList(self): self.serverFiles = orngServerFiles.ServerFiles(access_code=self.accessCode) self.pb = ProgressBar(self, 3) self.async_retrieve = createTask(retrieveFilesList, (self.serverFiles, self.domains, self.pb.advance), onResult=self.SetFilesList, onError=self.HandleError) self.setEnabled(False)
results[-1][2] = parts[1].strip("\t ") ontology.close() output = file('mesh-ontology.dat', 'w') for i in results: print i[0] + "\t" output.write(i[0] + "\t") g = len(i[1]) for k in i[1]: g -= 1 if (g > 0): output.write(k + ";") else: output.write(k + "\t" + i[2] + "\n") output.close() print "Ontology downloaded." ordinary = orngServerFiles.ServerFiles() authenticated = orngServerFiles.ServerFiles(username, password) authenticated.upload('MeSH', 'mesh-ontology.dat', 'mesh-ontology.dat', title="MeSH ontology", tags=['MeSH', 'ontology', 'orngMeSH']) #authenticated.upload('MeSH', 'cid-annotation.dat', 'cid-annotation.dat', title="Annotation for chemicals (CIDs)", tags =['CID','MeSH','orngMeSH','annotation']) authenticated.unprotect('MeSH', 'mesh-ontology.dat') os.remove('mesh-ontology.dat') print "Ontology uploaded to server."
import orngServerFiles reload(orngServerFiles) domain = "demo" # remove the domain from the local repository if domain in orngServerFiles.listdomains(): orngServerFiles.remove_domain(domain, force=True) # download all the files for this domain from the server server = orngServerFiles.ServerFiles() for filename in server.listfiles(domain): orngServerFiles.download(domain, filename, verbose=False) # make sure that both file lists are the same files_on_server = server.listfiles(domain) print "Domain: %s" % domain intersection = set(files_on_server).intersection(set(orngServerFiles.listfiles(domain))) if len(intersection) == len(files_on_server): print "Same number of files on server and local repository." else: print "Directories on server and local repository are different."