Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -28,23 +28,24 @@ frappe.ui.form.on('DFP External Storage', {
}
})

frappe.db.get_list(
'DFP External Storage by Folder',
{fields: ['name','folder']}
).then(data => {
if (data && data.length) {
let folders_name_not_assigned = data
.filter(d => d.name != frm.doc.name ? d : null)
.map(d => d.folder)
frm.set_query('folders', function () {
return {
filters: {
is_folder: 1,
name: ['not in', folders_name_not_assigned],
},
}
})

// Fix: Query parent DocType instead of child table to get assigned folders
// Child DocTypes (istable=1) cannot be queried directly via frappe.db.get_list
frappe.call({
method: 'dfp_external_storage.dfp_external_storage.doctype.dfp_external_storage.dfp_external_storage.get_assigned_folders',
args: {
exclude_storage: frm.doc.name || ''
},
callback: function(r) {
if (r.message && r.message.length) {
frm.set_query('folders', function () {
return {
filters: {
is_folder: 1,
name: ['not in', r.message],
},
}
})
}
}
})

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -755,3 +755,27 @@ def file(name:str, file:str):
return Response(**response_values)

raise frappe.PageDoesNotExistError()


@frappe.whitelist()
def get_assigned_folders(exclude_storage=None):
"""
Get list of folders already assigned to any DFP External Storage.
This is used to filter out already assigned folders when selecting folders for a storage.

Args:
exclude_storage: Optional storage name to exclude from the query

Returns:
List of folder names that are already assigned to other storages
"""
filters = {}
if exclude_storage:
filters["parent"] = ["!=", exclude_storage]

assigned_folders = frappe.get_all(
"DFP External Storage by Folder",
filters=filters,
pluck="folder"
)
return assigned_folders