Example #1
0
    def export_to_file(self,
                       aChunkSize=0,
                       filename=None,
                       target_mime=None,
                       target_extension=None,
                       ignore_conversion_problems=False,
                       directory=None):

        if self._payload[self._idx['size']] == 0:
            return None

        if filename is None:
            filename = self.get_useful_filename(make_unique=True,
                                                directory=directory)

        success = gmPG2.bytea2file(data_query={
            'cmd':
            u'SELECT substring(data from %(start)s for %(size)s) FROM blobs.doc_obj WHERE pk=%(pk)s',
            'args': {
                'pk': self.pk_obj
            }
        },
                                   filename=filename,
                                   chunk_size=aChunkSize,
                                   data_size=self._payload[self._idx['size']])

        if not success:
            return None

        if target_mime is None:
            return filename

        if target_extension is None:
            target_extension = gmMimeLib.guess_ext_by_mimetype(
                mimetype=target_mime)

        target_path, name = os.path.split(filename)
        name, tmp = os.path.splitext(name)
        target_fname = gmTools.get_unique_filename(prefix='%s-converted-' %
                                                   name,
                                                   suffix=target_extension)
        _log.debug('attempting conversion: [%s] -> [<%s>:%s]', filename,
                   target_mime, target_fname)
        if gmMimeLib.convert_file(filename=filename,
                                  target_mime=target_mime,
                                  target_filename=target_fname):
            return target_fname

        _log.warning('conversion failed')
        if not ignore_conversion_problems:
            return None

        _log.warning(
            'programmed to ignore conversion problems, hoping receiver can handle [%s]',
            filename)
        return filename
Example #2
0
	def save_to_file(self, aChunkSize=0, filename=None, target_mime=None, target_extension=None, ignore_conversion_problems=False, directory=None, adjust_extension=False, conn=None):

		if self._payload[self._idx['size']] == 0:
			return None

		if filename is None:
			filename = self.get_useful_filename(make_unique = True, directory = directory)

		success = gmPG2.bytea2file (
			data_query = {
				'cmd': 'SELECT substring(data from %(start)s for %(size)s) FROM blobs.doc_obj WHERE pk=%(pk)s',
				'args': {'pk': self.pk_obj}
			},
			filename = filename,
			chunk_size = aChunkSize,
			data_size = self._payload[self._idx['size']],
			conn = conn
		)
		if not success:
			return None

		if target_mime is None:
			if filename.endswith('.dat'):
				if adjust_extension:
					return gmMimeLib.adjust_extension_by_mimetype(filename)
			return filename

		if target_extension is None:
			target_extension = gmMimeLib.guess_ext_by_mimetype(mimetype = target_mime)

		target_path, name = os.path.split(filename)
		name, tmp = os.path.splitext(name)
		target_fname = gmTools.get_unique_filename (
			prefix = '%s-conv-' % name,
			suffix = target_extension
		)
		_log.debug('attempting conversion: [%s] -> [<%s>:%s]', filename, target_mime, target_fname)
		if gmMimeLib.convert_file (
			filename = filename,
			target_mime = target_mime,
			target_filename = target_fname
		):
			return target_fname

		_log.warning('conversion failed')
		if not ignore_conversion_problems:
			return None

		if filename.endswith('.dat'):
			if adjust_extension:
				filename = gmMimeLib.adjust_extension_by_mimetype(filename)
		_log.warning('programmed to ignore conversion problems, hoping receiver can handle [%s]', filename)
		return filename
Example #3
0
    def save_to_file(self,
                     aChunkSize=0,
                     target_mime=None,
                     target_extension=None,
                     ignore_conversion_problems=False):

        if self._payload[self._idx['is_textual']]:
            return None

        if self._payload[self._idx['data_size']] == 0:
            return None

        filename = gmTools.get_unique_filename(prefix='gm-data_snippet-')
        success = gmPG2.bytea2file(data_query={
            'cmd':
            'SELECT substring(binary_data from %(start)s for %(size)s) FROM ref.keyword_expansion WHERE pk = %(pk)s',
            'args': {
                'pk': self.pk_obj
            }
        },
                                   filename=filename,
                                   chunk_size=aChunkSize,
                                   data_size=self._payload[
                                       self._idx['data_size']])

        if not success:
            return None

        if target_mime is None:
            return filename

        if target_extension is None:
            target_extension = gmMimeLib.guess_ext_by_mimetype(
                mimetype=target_mime)

        target_fname = gmTools.get_unique_filename(
            prefix='gm-data_snippet-converted-', suffix=target_extension)
        _log.debug('attempting conversion: [%s] -> [<%s>:%s]', filename,
                   target_mime, target_fname)
        if gmMimeLib.convert_file(filename=filename,
                                  target_mime=target_mime,
                                  target_filename=target_fname):
            return target_fname

        _log.warning('conversion failed')
        if not ignore_conversion_problems:
            return None

        _log.warning(
            'programmed to ignore conversion problems, hoping receiver can handle [%s]',
            filename)
        return filename
Example #4
0
    def export_to_file(
        self,
        aChunkSize=0,
        filename=None,
        target_mime=None,
        target_extension=None,
        ignore_conversion_problems=False,
        directory=None,
    ):

        if self._payload[self._idx["size"]] == 0:
            return None

        if filename is None:
            filename = self.get_useful_filename(make_unique=True, directory=directory)

        success = gmPG2.bytea2file(
            data_query={
                "cmd": u"SELECT substring(data from %(start)s for %(size)s) FROM blobs.doc_obj WHERE pk=%(pk)s",
                "args": {"pk": self.pk_obj},
            },
            filename=filename,
            chunk_size=aChunkSize,
            data_size=self._payload[self._idx["size"]],
        )

        if not success:
            return None

        if target_mime is None:
            return filename

        if target_extension is None:
            target_extension = gmMimeLib.guess_ext_by_mimetype(mimetype=target_mime)

        target_path, name = os.path.split(filename)
        name, tmp = os.path.splitext(name)
        target_fname = gmTools.get_unique_filename(prefix="%s-converted-" % name, suffix=target_extension)
        _log.debug("attempting conversion: [%s] -> [<%s>:%s]", filename, target_mime, target_fname)
        if gmMimeLib.convert_file(filename=filename, target_mime=target_mime, target_filename=target_fname):
            return target_fname

        _log.warning("conversion failed")
        if not ignore_conversion_problems:
            return None

        _log.warning("programmed to ignore conversion problems, hoping receiver can handle [%s]", filename)
        return filename
Example #5
0
	def export_to_file(self, aChunkSize=0, target_mime=None, target_extension=None, ignore_conversion_problems=False):

		if self._payload[self._idx['is_textual']]:
			return None

		if self._payload[self._idx['data_size']] == 0:
			return None

		filename = gmTools.get_unique_filename(prefix = 'gm-data_snippet-')
		success = gmPG2.bytea2file (
			data_query = {
				'cmd': u'SELECT substring(binary_data from %(start)s for %(size)s) FROM ref.keyword_expansion WHERE pk = %(pk)s',
				'args': {'pk': self.pk_obj}
			},
			filename = filename,
			chunk_size = aChunkSize,
			data_size = self._payload[self._idx['data_size']]
		)

		if not success:
			return None

		if target_mime is None:
			return filename

		if target_extension is None:
			target_extension = gmMimeLib.guess_ext_by_mimetype(mimetype = target_mime)

		target_fname = gmTools.get_unique_filename (
			prefix = 'gm-data_snippet-converted-',
			suffix = target_extension
		)
		_log.debug('attempting conversion: [%s] -> [<%s>:%s]', filename, target_mime, target_fname)
		if gmMimeLib.convert_file (
			filename = filename,
			target_mime = target_mime,
			target_filename = target_fname
		):
			return target_fname

		_log.warning('conversion failed')
		if not ignore_conversion_problems:
			return None

		_log.warning('programmed to ignore conversion problems, hoping receiver can handle [%s]', filename)
		return filename
Example #6
0
	def save_to_file(self, aChunkSize=0, filename=None, target_mime=None, target_extension=None, ignore_conversion_problems=False, directory=None, adjust_extension=False, conn=None):

		if filename is None:
			filename = self.get_useful_filename(make_unique = True, directory = directory)

		filename = self.__download_to_file(filename = filename)
		if filename is None:
			return None

		if target_mime is None:
			if filename.endswith('.dat'):
				if adjust_extension:
					return gmMimeLib.adjust_extension_by_mimetype(filename)
			return filename

		if target_extension is None:
			target_extension = gmMimeLib.guess_ext_by_mimetype(mimetype = target_mime)

		target_path, name = os.path.split(filename)
		name, tmp = os.path.splitext(name)
		target_fname = gmTools.get_unique_filename (
			prefix = '%s-conv-' % name,
			suffix = target_extension
		)
		_log.debug('attempting conversion: [%s] -> [<%s>:%s]', filename, target_mime, target_fname)
		converted_fname = gmMimeLib.convert_file (
			filename = filename,
			target_mime = target_mime,
			target_filename = target_fname
		)
		if converted_fname is not None:
			return converted_fname

		_log.warning('conversion failed')
		if not ignore_conversion_problems:
			return None

		if filename.endswith('.dat'):
			if adjust_extension:
				filename = gmMimeLib.adjust_extension_by_mimetype(filename)
		_log.warning('programmed to ignore conversion problems, hoping receiver can handle [%s]', filename)
		return filename
Example #7
0
def check_mimetypes_in_archive():
	mimetypes = {}
	cmd = 'SELECT pk FROM blobs.doc_med'
	doc_pks, idx = gmPG2.run_ro_queries(queries = [{'cmd': cmd}])
	print('Detecting mimetypes in document archive ...')
	doc_idx = 0
	part_count = 0
	for pk_row in doc_pks:
		doc_idx += 1
		print('\n#%s - document %s of %s: ' % (pk_row['pk'], doc_idx, len(doc_pks)), end = '')
		doc = cDocument(aPK_obj = pk_row['pk'])
		for part in doc.parts:
			part_count += 1
			print('#%s:%s bytes, ' % (part['pk_obj'], part['size']), end = '')
			part_fname = part.save_to_file()
			mimetype = gmMimeLib.guess_mimetype(part_fname)
			try:
				mimetypes[mimetype]['count'] += 1
			except KeyError:
				mimetypes[mimetype] = {
					'count': 1,
					'viewer': gmMimeLib.get_viewer_cmd(mimetype),
					'editor': gmMimeLib.get_editor_cmd(mimetype),
					'extension': gmMimeLib.guess_ext_by_mimetype(mimetype)
				}
	print('')
	print('')
	print('Number of documents :', len(doc_pks))
	print('Number of parts     :', part_count)
	print('Number of mime types:', len(mimetypes))
	for mimetype in mimetypes:
		print('')
		print('<%s>' % mimetype)
		print(' Extension:', mimetypes[mimetype]['extension'])
		print(' Use count:', mimetypes[mimetype]['count'])
		print('    Viewer:', mimetypes[mimetype]['viewer'])
		print('    Editor:', mimetypes[mimetype]['editor'])
	return 0