Skip to content

Commit

Permalink
Update customizations.rst (#981)
Browse files Browse the repository at this point in the history
Add shorcut for multiple directories
  • Loading branch information
garadar authored Jul 16, 2024
1 parent a946153 commit c6021fd
Showing 1 changed file with 47 additions and 0 deletions.
47 changes: 47 additions & 0 deletions source/customizations.rst
Original file line number Diff line number Diff line change
Expand Up @@ -277,6 +277,53 @@ Start by creating the file
- Additionally project scratch directories have a 'title' attribute and will
with in the dropdown with both the title and the path.

The following example adds all directories within the specified base directories to the favorite paths. This approach is ideal when there is no specific directory naming logic to follow. It also appropriately handles Access Control Lists (ACLs). If a directory does not exist, no error is raised, making this configuration easily exportable to different clusters.


.. code-block:: ruby
# /etc/ood/config/apps/dashboard/initializers/ood.rb

Rails.application.config.after_initialize do
OodFilesApp.candidate_favorite_paths.tap do |paths|

# Hash of base paths to check for additional directories with titles
# location => Title
base_paths = {
'/home/share/' => 'Shared home',
'/srv/scratch/shares/' => 'Shared scratch',
'/srv/scratch/groups/' => 'Group scratch',
'/srv/fast/users/' => 'Fast user'
# Add more paths and titles here if needed
}

base_paths.each do |base_path, title|

# Check if the base path exists and is a directory, to avoid error
next unless Dir.exist?(base_path)

# Get all entries in the current base path
Dir.entries(base_path).each do |entry|
# Construct the full path for the current entry
full_path = File.join(base_path, entry)

# Skip if it's not a directory or if it's a special entry like '.' or '..'
next unless File.directory?(full_path) && !['.', '..'].include?(entry)

# Check if the directory is readable and executable
if File.readable?(full_path) && File.executable?(full_path)
# Access the value of the current base_path using the `title` variable
paths << FavoritePath.new(full_path, title: "#{title}: #{File.basename(full_path)}")
end
end
end
end
end

- The variable ``base_paths`` is an hash (``dirname`` => ``Title``) of all directories you want to parse. For the directory ``OSC_test`` in ``/srv/scratch/groups/``; the favorite path will be display as following

|Group scratch OSC_test: /srv/scratch/groups/OSC_test

On each request, the Dashboard will check for the existence of the directories
in ``OodFilesApp.candidate_favorite_paths`` array and whichever directories
exist and the user has access to will appear as links in the Files menu under
Expand Down

0 comments on commit c6021fd

Please sign in to comment.