Exemplo n.º 1
0
    def remove_dirs(self, root):
        """Удаление элементов, у которых размер не совпадает с фильтром"""

        for row in reversed(range(root.rowCount())):
            child = root.child(row, 1)
            filter_size = self.ui.line_edit_filter.text()
            if not check_filter_size_eval(filter_size, directory_sizes.get_bytes(child.data(Qt.UserRole + 1))):
                root.removeRow(child.row())
            else:
                self.remove_dirs(root.child(row, 0))
Exemplo n.º 2
0
def check_filter_size_eval(pattern, size):
    """Функция выполнит проверку по шаблону pattern и вернет результат: True или False.

    :type pattern: шаблон фильтра размера, например: '{size} >= %1GB% and {size} <= %3GB%'
    :type size: размер в байтах, который будет подставляться в {size} pattern. Целое число.
    """

    # logger.debug('Pattern: %s.', pattern)
    # logger.debug('Size: %s.', size)

    for match in set(re.findall('%.+?%', pattern)):
        byte_size = directory_sizes.get_bytes(match[1:-1])
        pattern = pattern.replace(match, str(byte_size))

    source = pattern.format(size=size)
    # logger.debug('After replace. Source eval: %s.', source)

    result = eval(source)
    # logger.debug('Result eval: %s.', result)

    return result