Створення JSON структури каталогів для використання віджетом дерева Webix

Я працюю над проектом, використовуючи Webix і Python/Flask, і я натикаюся на цегляну стіну, відтворюючи віджет перегляду дерева. Моя проблема полягає в правильному створенні JSON, необхідного для віджета. Я намагаюся створити структуру каталогів для даного прикладу:

Структура:

.
├── dirone
│   └── file
├── dirthree
│   ├── somedir
│   │   └── anotherfile
│   └── somefile
├── dirtwo
└── somefile

Бажаний результат:

[
    {
        "value": "dirone",
        "path": "dirone",
        "type": "folder",
        "children": [
            {
                "value": "file",
                "path": "dirone/file",
                "type": "file"
            }
        ]
    },
    {
        "value": "dirtwo",
        "path": "dirtwo",
        "type": "folder",
        "children": []
    },
    {
        "value": "dirthree",
        "path": "dirthree",
        "type": "folder",
        "children": [
            {
                "value": "somefile",
                "path": "dirthree/somefile",
                "type": "file"
            },
            {
                "value": "somedire",
                "path": "dirone/file",
                "type": "folder",
                "children": [
                    {
                        "value": "anotherfile",
                        "path": "dirthree/somedir/anotherfile",
                        "type": "file"
                    }
                ]
            }
        ]
    },
    {
        "value": "somefile",
        "path": "somefile",
        "type": "file"
    }
]

Останні дві години я б’юся об це головою, намагаючись отримати метод, який може це відобразити. Чи є у кого-небудь метод, який генерує структуру? Будь-яка допомога буде дуже вдячна!


person user1777667    schedule 19.03.2015    source джерело


Відповіді (2)


Насправді це не рішення, але віджети Webix можна налаштувати на використання json з іншою структурою або, у регістрі чи дереві, завантажувати звичайний список записів даних і створювати деревоподібну структуру, групуючи дані за певним параметром

Перевірте, наприклад, http://docs.webix.com/samples/17_datatree/01_loading/07_load_group.html

person Aquatic    schedule 20.03.2015
comment
Круто, стане в нагоді. Я намагаюся відійти від PyQt; все ще намагаюся відчути деякі фреймворки віджетів js. - person user1777667; 21.03.2015

Я думаю, що я досяг того, що мені потрібно, без os.walk(), але я все ще роблю це за допомогою рекурсивної функції (boo):

def pathTree(path,id=0):
    id += 1
        tree = {'value': os.path.basename(path)}
        tree['path'] = path
    tree['id'] = id
        if os.path.isdir(path):
            tree['type'] = "folder"
            tree['data'] = [pathTree(os.path.join(path,x),id) for x in os.listdir(path)]
    else:
            tree['type'] = "file"
    return(tree)

Єдине, чого я справді хочу зараз (хоча насправді ще не бенефіціар), це щоб він записував глибину рівня/iter.

Дякуємо за пропозиції!

person user1777667    schedule 20.03.2015