Ejemplo n.º 1
0
 def export_to_raft_capture(self):
     # TODO: consider implementing a tasklet if this is the entire DB being exported
     filename = 'RaftExport-%s' % int(time.time())
     file = QFileDialog.getSaveFileName(None, "Save to file", filename, "XML File (*.xml);;XZ XML File (*.xml.xz)")
     if file:
         adapter = ParseAdapter()
         # TODO: refactor
         filename = str(file)
         while '.xml.xml' in filename:
             filename = filename.replace('.xml.xml', '.xml')
         if filename.endswith('.xml.xz'):
             while '.xml.xz.xml.xz' in filename:
                 filename = filename.replace('.xml.xz.xml.xz', '.xml.xz')
             fh = lzma.LZMAFile(filename, 'w')
         elif filename.endswith('.xml'):
             filename = filename.replace('.xml.xml', '.xml')
             fh = open(filename, 'wb')
         else:
             raise Exception('unhandled file type: %s' % (filename))
         Data = self.framework.getDB()
         cursor = Data.allocate_thread_cursor()
         try:
             fh.write(b'<raft version="1.0">\n')
             for index in self.treeViewSelectionModel.selectedRows():
                 Id = interface.index_to_id(self.dataModel, index)
                 if Id:
                     capture = RaftDbCapture()
                     capture.populate_by_id(self.framework, Data, cursor, Id)
                     fh.write(adapter.format_as_xml(capture).encode('utf-8'))
             fh.write(b'</raft>')
             fh.close()
         finally:
             cursor.close()
             Data.release_thread_cursor(cursor)
             Data, cursor = None, None
Ejemplo n.º 2
0
 def export_to_raft_capture(self):
     # TODO: consider implementing a tasklet if this is the entire DB being exported
     filename = 'RaftExport-%s' % int(time.time())
     file = QFileDialog.getSaveFileName(
         None, "Save to file", filename,
         "XML File (*.xml);;XZ XML File (*.xml.xz)")
     if file:
         adapter = ParseAdapter()
         # TODO: refactor
         filename = str(file)
         while '.xml.xml' in filename:
             filename = filename.replace('.xml.xml', '.xml')
         if filename.endswith('.xml.xz'):
             while '.xml.xz.xml.xz' in filename:
                 filename = filename.replace('.xml.xz.xml.xz', '.xml.xz')
             fh = lzma.LZMAFile(filename, 'w')
         elif filename.endswith('.xml'):
             filename = filename.replace('.xml.xml', '.xml')
             fh = open(filename, 'wb')
         else:
             raise Exception('unhandled file type: %s' % (filename))
         Data = self.framework.getDB()
         cursor = Data.allocate_thread_cursor()
         try:
             fh.write(b'<raft version="1.0">\n')
             for index in self.treeViewSelectionModel.selectedRows():
                 Id = interface.index_to_id(self.dataModel, index)
                 if Id:
                     capture = RaftDbCapture()
                     capture.populate_by_id(self.framework, Data, cursor,
                                            Id)
                     fh.write(
                         adapter.format_as_xml(capture).encode('utf-8'))
             fh.write(b'</raft>')
             fh.close()
         finally:
             cursor.close()
             Data.release_thread_cursor(cursor)
             Data, cursor = None, None