def openPDF(self, message=None, paths=None, openedDocument=None): path = None if self.xml: if openedDocument: self.pdf = openedDocument self.frame.enableMenuItems(closePDF=True) self.preparePageBitmap() else: if paths: for p in paths: if os.path.exists(p): path = p break if not path: prof = profile.current() retvalue = self.frame.selectFile(message='Select a PDF file', wildcard='PDF files (*.pdf)|*.pdf;*.PDF|All files (*)|*', directory=prof.get("lastPdfDirectory", "")) if retvalue: prof["lastPdfDirectory"] = retvalue[0] prof.save() path = os.path.sep.join(retvalue) if path: try: self.pdf = self.runTask('Opening PDF document...', readpdf.Pdf, (path,)) except Exception as e: self.frame.errorDialog("Error while reading file %s:\n%s" \ % (path, e)) else: self.frame.enableMenuItems(closePDF=True) self.preparePageBitmap() else: self.frame.errorDialog("Open first an XML file")
def _downloadFile(url, filename): path = profile.current().directory + os.path.sep + 'netfiles' if not os.path.isdir(path): os.mkdir(path) path += os.path.sep + filename if os.path.exists(path): handler = IfModifiedSinceHandler(os.path.getmtime(path)) netfile = urllib2.build_opener(handler).open(url) else: netfile = urllib2.urlopen(url) if netfile.code != 304: with open(path, 'wb') as locfile: locfile.write(netfile.read()) return path
def openNet(self, message): prof = profile.current() if "username" not in prof: if username is None: return if not re.match(r"[a-zA-Z0-9_]+", username): self.frame.errorDialog("Invalid username") return prof["username"] = username prof.save() try: currentDocuments = network.getCurrentDocuments() availableDocuments = network.getAvailableDocuments() except Exception as e: self.frame.errorDialog("Cannot get list of network documents: %s" % (e,)) return choosenDocument = self.frame.selectNetworkDocument(currentDocuments, availableDocuments) if choosenDocument: if self.xml: if not self.closeXML(): return try: setStatusResult = network.setDocumentStatus(choosenDocument, "locked") except Exception as e: self.frame.errorDialog("Cannot set document status: %s" % (e,)) return if setStatusResult: try: self.openXML( openedDocument=self.runTask("Opening XML document...", network.getXML, (choosenDocument,)) ) except Exception as e: self.frame.errorDialog("Cannot get network document: %s" % (e,)) return try: self.openPDF( openedDocument=self.runTask("Opening PDF document...", network.getPDF, (choosenDocument,)) ) except Exception as e: self.frame.errorDialog("Cannot get a PDF file from the server: %s" % (e,)) self.networkDocumentId = choosenDocument self.frame.SetTitle(config.WINDOW_TITLE + " - network document: " + choosenDocument) else: self.frame.errorDialog("File is locked by other user")
def openNet(self, message): prof = profile.current() if 'username' not in prof: if username is None: return if not re.match(r'[a-zA-Z0-9_]+', username): self.frame.errorDialog('Invalid username') return prof['username'] = username prof.save() try: currentDocuments = network.getCurrentDocuments() availableDocuments = network.getAvailableDocuments() except Exception as e: self.frame.errorDialog("Cannot get list of network documents: %s" % (e,)) return choosenDocument = self.frame.selectNetworkDocument(currentDocuments, availableDocuments) if choosenDocument: if self.xml: if not self.closeXML(): return try: setStatusResult = network.setDocumentStatus(choosenDocument, 'locked') except Exception as e: self.frame.errorDialog("Cannot set document status: %s" % (e,)) return if setStatusResult: try: self.openXML(openedDocument=self.runTask('Opening XML document...', network.getXML, (choosenDocument,))) except Exception as e: self.frame.errorDialog("Cannot get network document: %s" % (e,)) return try: self.openPDF(openedDocument=self.runTask('Opening PDF document...', network.getPDF, (choosenDocument,))) except Exception as e: self.frame.errorDialog("Cannot get a PDF file from the server: %s" \ % (e,)) self.networkDocumentId = choosenDocument self.frame.SetTitle(config.WINDOW_TITLE + " - network document: " + choosenDocument) else: self.frame.errorDialog("File is locked by other user")
def openXML(self, message=None, openedDocument=None): # TODO: trochę tu posprzątać. Osobno wczytywanie pliku z dysku, osobno inicjowanie # już wczytanego dokumentu. if openedDocument: # network document if self.xml: if not self.closeXML(): return self.xml = openedDocument self.frame.enableMenuItems(sendNet=True) self.pdf = None path = None else: prof = profile.current() retvalue = self.frame.selectFile(message='Select an XML (Trueviz) file', wildcard='XML files (*.cermstr)|*.cermstr;*.CXML|XML files (*.xml)|*.xml;*.XML|All files (*)|*', directory=prof.get("lastXmlDirectory", "")) if retvalue: if self.xml: if not self.closeXML(): return prof["lastXmlDirectory"] = retvalue[0] prof.save() path = os.path.sep.join(retvalue) self.frame.SetTitle(config.WINDOW_TITLE + " - " + retvalue[1]) self.pdf = None try: self.xml = self.runTask('Opening XML document...', trueviz.load, (path,)) if not self.xml: self.xml = None raise Exception('Document is empty') return except Exception as e: sys.excepthook(*sys.exc_info()) self.frame.errorDialog("Error while reading file %s:\n%s" % \ (path, e)) return self.frame.enableMenuItems(saveAs=True) else: return if self.xml: self.pageCount = len(self.xml) self.setPage(0) self.frame.enableMenuItems(openPDF=True, closeXML=True) if path: # and open the PDF file filebasere = re.match(r'(.*\.)(cermstr|xml)', retvalue[1], re.IGNORECASE) if filebasere: filebase = filebasere.groups()[0] pathbase1 = os.path.sep.join((retvalue[0], filebase)) pathbase2 = os.path.sep.join((prof.get("lastPdfDirectory", ""), filebase)) paths = (pathbase1 + 'pdf', pathbase1 + 'PDF', pathbase2 + 'pdf', pathbase2 + 'PDF') self.openPDF(paths=paths) else: self.openPDF()
def openXML(self, message=None, openedDocument=None): # TODO: trochę tu posprzątać. Osobno wczytywanie pliku z dysku, osobno inicjowanie # już wczytanego dokumentu. if openedDocument: # network document if self.xml: if not self.closeXML(): return self.xml = openedDocument self.frame.enableMenuItems(sendNet=True) self.pdf = None path = None else: prof = profile.current() retvalue = self.frame.selectFile(message='Select an XML (Trueviz) file', wildcard='XML files (*.xml)|*.xml;*.XML|All files (*)|*', directory=prof.get("lastXmlDirectory", "")) if retvalue: if self.xml: if not self.closeXML(): return prof["lastXmlDirectory"] = retvalue[0] prof.save() path = os.path.sep.join(retvalue) self.frame.SetTitle(config.WINDOW_TITLE + " - " + retvalue[1]) self.pdf = None try: self.xml = self.runTask('Opening XML document...', trueviz.load, (path,)) if not self.xml: self.xml = None raise Exception('Document is empty') return except Exception as e: sys.excepthook(*sys.exc_info()) self.frame.errorDialog("Error while reading file %s:\n%s" % \ (path, e)) return self.frame.enableMenuItems(saveAs=True) else: return if self.xml: self.pageCount = len(self.xml) self.setPage(0) self.frame.enableMenuItems(openPDF=True, closeXML=True) if path: # and open the PDF file filebasere = re.match(r'(.*\.)[xX][mM][lL]', retvalue[1]) if filebasere: filebase = filebasere.groups()[0] pathbase1 = os.path.sep.join((retvalue[0], filebase)) pathbase2 = os.path.sep.join((prof.get("lastPdfDirectory", ""), filebase)) paths = (pathbase1 + 'pdf', pathbase1 + 'PDF', pathbase2 + 'pdf', pathbase2 + 'PDF') self.openPDF(paths=paths) else: self.openPDF()
def url(suffix, *args): return str( 'http://%s/%s/%s' % (config.NETWORK_ADDRESS, profile.current()['username'], suffix % args))
def url(suffix, *args): return str('http://%s/%s/%s' % (config.NETWORK_ADDRESS, profile.current()['username'], suffix % args))