NetBox plugin: folder-tree prefix browser and user-defined Catalogs for organizing any NetBox object type into hierarchical folders.
Project description
NetBox FolderView
A NetBox plugin with two independent features:
- Prefix Tree — a collapsible folder-tree view of IP prefixes, similar to SolarWinds IPAM or phpIPAM
- Catalogs — user-defined hierarchical folder structures for organizing any NetBox object type
Compatible NetBox Versions
| Plugin Version | NetBox Version |
|---|---|
| 0.1.x | 4.5.x+ |
| 0.2.x | 4.5.x+ |
Note: This plugin relies on internal NetBox APIs. Compatibility with versions below 4.5.0 is not guaranteed.
Features
Prefix Tree
- Two-pane tree view — prefix hierarchy on the left, IP addresses on the right
- Lazy loading — child prefixes and IP addresses are fetched on demand
- Filter-aware tree — apply any NetBox prefix filter and the tree reorganizes automatically
- Saved filters — the saved filter dropdown from the standard Prefixes view is available in the tree header
- Column configuration — configurable per-user, persisted via NetBox's native
UserConfigmechanism - Respects NetBox RBAC — all queries are restricted to the authenticated user's object-level permissions
Catalogs
- Any object type — create catalogs for Devices, Prefixes, VLANs, Circuits, VMs, and any other NetBox type that has a registered filterset
- Hierarchical folders — nest folders inside folders to any depth
- Static folders — manually curate which objects belong in each folder
- Dynamic folders — reference a NetBox Saved Filter; membership is resolved at runtime, always current
- Duplicate control — optionally prevent an object from appearing in more than one static folder within a catalog
- Two-pane catalog view — folder tree on the left, filtered object table on the right with native NetBox columns, filters, and search
- Bulk operations — add, remove, and move objects across folders in bulk
- Respects NetBox RBAC — object queries are restricted to the user's existing NetBox permissions; Catalog and Folder access is governed by standard NetBox object-level permissions
Installation
1. Install the package
From PyPI:
pip install netbox-folderview
From source (development):
git clone https://github.com/averyhabbott/netbox-folderview.git
cd netbox-folderview
pip install -e .
2. Add to NetBox configuration
In your NetBox configuration.py:
PLUGINS = [
'netbox_folderview',
]
PLUGINS_CONFIG = {
'netbox_folderview': {},
}
3. Run migrations
python manage.py migrate
4. Restart NetBox
sudo systemctl restart netbox netbox-rq
Permissions
FolderView uses NetBox's standard object-level permissions system. No special configuration is required for the Prefix Tree — it respects existing prefix permissions automatically.
For Catalogs, two object types appear in NetBox's permission picker: Catalog and Folder. Users need view permission on both to see a catalog and its contents. Granting only one is not sufficient.
Recommended setup
Create a single permission entry covering both object types:
- In NetBox, go to Admin → Permissions → Add Permission
- Set a name (e.g. "View all catalogs")
- Under Object Types, select both netbox_folderview | catalog and netbox_folderview | folder
- Set Actions to
view(addadd,change,deleteas needed) - Leave Constraints empty to grant access to all catalogs, or scope them (see below)
- Assign the permission to the appropriate users or groups
Scoping access to specific catalogs
To give a user access to only certain catalogs, use constraints on separate permission entries:
Catalog permission — constrains which catalogs the user can see:
{"name": "My Devices Catalog"}
Folder permission — must be scoped to match:
{"catalog__name": "My Devices Catalog"}
Without the matching Folder constraint, the user can see the catalog in the nav but none of its folders will load.
Object permissions in the right pane
Objects displayed inside a folder are always filtered by the user's existing NetBox permissions for that object type. FolderView does not grant access to objects — it only organizes them. A user without view permission on Devices will see an empty folder even if devices are in it.
How to Use
Using the Prefix Tree
Navigate to FolderView → Prefix Tree in the left-hand nav.
- Left pane — collapsible prefix hierarchy. Click the chevron to expand/collapse. Single-click a prefix to load its IPs on the right. Double-click to navigate to the NetBox detail page.
- Right pane — IP addresses within the selected prefix. Double-click any row to navigate to its detail page.
- Filtering — use the quick search, saved filter dropdown, or the Filters tab for the full NetBox prefix filter panel.
- Column configuration — click Configure in either pane to choose which columns are shown; preferences are saved per-user.
Using Catalogs
Navigate to FolderView → Manage Catalogs to create and manage catalogs, or click directly on a catalog name in the nav to open it.
Creating a catalog
- Click + Add on the Manage Catalogs page
- Choose a name and Object Type (the type of objects this catalog will organize)
- Set Allow Duplicates — when disabled, each object may only appear in one static folder within this catalog
- Set Default: Show Nested Objects — controls whether new folders in this catalog show objects from all descendant folders by default
Creating folders
Within a catalog, click + Add Folder to create a folder:
- Parent Folder — leave blank for a root-level folder, or select a parent to nest it
- Folder Type — Static (manual) or Dynamic (filter-driven)
- Show Nested Objects — when enabled, the folder displays objects from all descendant folders recursively
- Saved Filter — required for dynamic folders; only shared filters matching the catalog's object type are shown
Dynamic folders cannot be parents of static folders.
Adding objects (static folders)
Click Add Objects in the right pane when a static folder is selected. This opens a full NetBox-native list view for the catalog's object type, with all standard filters and search. Select objects and click Add to Folder.
Moving and removing objects
Per-row and bulk actions are available in the right pane when a static folder is selected:
- Remove / Remove Selected — deletes the folder membership; the object itself is unaffected
- Move / Move Selected — moves objects to another static folder within the same catalog atomically
Finding duplicate objects
If a catalog has Allow Duplicates disabled, use the Find Duplicate Objects action (available in the action dropdown on the Manage Catalogs page) to see any objects that appear in more than one static folder.
Development
git clone https://github.com/averyhabbott/netbox-folderview.git
cd netbox-folderview
pip install -e .
# Add to configuration.py, run migrate, restart NetBox
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file netbox_folderview-0.2.0.tar.gz.
File metadata
- Download URL: netbox_folderview-0.2.0.tar.gz
- Upload date:
- Size: 26.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
61bdd4e11dddf517417cc57057b8771344e50a5d7535149fd977935f53ca20eb
|
|
| MD5 |
03fc66864d62e4e80bd2cdebcd169947
|
|
| BLAKE2b-256 |
ad192c22e7fba4a74c54eb0dec044f48674c40962b2b14402f0a22cb2eda3f00
|
File details
Details for the file netbox_folderview-0.2.0-py3-none-any.whl.
File metadata
- Download URL: netbox_folderview-0.2.0-py3-none-any.whl
- Upload date:
- Size: 31.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5c435d981c318431e3143ba60d4b80fc19e612fa19b329564e233e186caee620
|
|
| MD5 |
982de878858495ba7d19c4f3aa7ce971
|
|
| BLAKE2b-256 |
96dd3bd7bd95bf21ea776cc2b9984c119363478534e9183971bb19b8c032df99
|