main
Satur@it-depot.ru 2025-03-05 10:41:12 +03:00
parent e26ffa1953
commit 30ae8b76b6
2 changed files with 68 additions and 39 deletions

8
app.py
View File

@ -40,7 +40,7 @@ CREATE TABLE IF NOT EXISTS installs (
""") """)
conn.commit() conn.commit()
# Проверяем/создаем папку "Несортированные" # Проверяем/создаем папку "Несортированные" и получаем её ID
cursor.execute("SELECT id FROM folders WHERE name = 'Несортированные'") cursor.execute("SELECT id FROM folders WHERE name = 'Несортированные'")
unsorted_folder = cursor.fetchone() unsorted_folder = cursor.fetchone()
if not unsorted_folder: if not unsorted_folder:
@ -98,6 +98,12 @@ def update_folder(folder_id: int, folder: FolderUpdate):
@app.delete("/api/folders/{folder_id}") @app.delete("/api/folders/{folder_id}")
def delete_folder(folder_id: int): def delete_folder(folder_id: int):
# Проверяем, не является ли папка "Несортированные"
cursor.execute("SELECT name FROM folders WHERE id = ?", (folder_id,))
folder_name = cursor.fetchone()
if folder_name and folder_name[0] == 'Несортированные':
raise HTTPException(status_code=403, detail="Папка 'Несортированные' не может быть удалена")
cursor.execute("DELETE FROM folders WHERE id = ?", (folder_id,)) cursor.execute("DELETE FROM folders WHERE id = ?", (folder_id,))
conn.commit() conn.commit()
if cursor.rowcount == 0: if cursor.rowcount == 0:

View File

@ -92,6 +92,12 @@
}; };
$(document).ready(function () { $(document).ready(function () {
// Получаем ID папки "Несортированные" перед инициализацией дерева
$.getJSON(`${API_URL}/folders`, function (folders) {
const unsortedFolder = folders.find(f => f.name === 'Несортированные');
const unsortedFolderId = unsortedFolder ? unsortedFolder.id : null;
// Инициализация дерева папок
$('#folder-tree').jstree({ $('#folder-tree').jstree({
'core': { 'core': {
'data': function (node, cb) { 'data': function (node, cb) {
@ -116,6 +122,18 @@
loadInstalls(selectedFolderId); loadInstalls(selectedFolderId);
}); });
// Автоматически выбираем "Несортированные" при загрузке
if (unsortedFolderId) {
setTimeout(() => {
$('#folder-tree').jstree('select_node', unsortedFolderId);
loadInstalls(unsortedFolderId);
}, 100); // Небольшая задержка, чтобы дерево инициализировалось
} else {
loadInstalls(null);
$('#folder-tree').jstree('select_node', 'root');
}
// Drag-and-drop для записей
$('#installs-list').on('dragstart', '.install-item', function (e) { $('#installs-list').on('dragstart', '.install-item', function (e) {
e.originalEvent.dataTransfer.setData('text/plain', $(this).data('id')); e.originalEvent.dataTransfer.setData('text/plain', $(this).data('id'));
}); });
@ -131,9 +149,7 @@
moveInstallToFolder(installId, targetFolderId); moveInstallToFolder(installId, targetFolderId);
} }
}); });
});
loadInstalls(null);
$('#folder-tree').jstree('select_node', 'root');
}); });
function loadInstalls(folderId) { function loadInstalls(folderId) {
@ -249,6 +265,13 @@
}); });
$('#folder-tree').jstree(true).refresh(); $('#folder-tree').jstree(true).refresh();
loadInstalls(selectedFolderId); loadInstalls(selectedFolderId);
},
error: function (xhr, status, error) {
if (xhr.status === 403) {
alert("Нельзя удалить папку 'Несортированные'.");
} else {
console.error("Ошибка удаления:", status, error);
}
} }
}); });
} }