Skip to content

Commit

Permalink
Merge pull request #25 from cruse1977/master
Browse files Browse the repository at this point in the history
NetBox 4.x Full PR
  • Loading branch information
cruse1977 authored Jun 7, 2024
2 parents d411dc4 + 45ed6fa commit c3019fb
Show file tree
Hide file tree
Showing 15 changed files with 277 additions and 50 deletions.
169 changes: 162 additions & 7 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,162 @@
.vscode/
.vscode/settings.json
.idea
*.pyc
venv
build/**
netbox_floorplan.egg-info/**
*.py[cod]

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
.pybuilder/
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pyenv
# For a library or package, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# .python-version

# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock

# poetry
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
#poetry.lock

# pdm
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
#pdm.lock
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
# in version control.
# https://pdm.fming.dev/#use-with-ide
.pdm.toml

# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
__pypackages__/

# Celery stuff
celerybeat-schedule
celerybeat.pid

# SageMath parsed files
*.sage.py

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Pyre type checker
.pyre/

# pytype static type analyzer
.pytype/

# Cython debug symbols
cython_debug/

# PyCharm
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/
21 changes: 15 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

<img src="https://github.com/netboxlabs/netbox-floorplan-plugin/workflows/tests/badge.svg" alt="Tests"/>

Forked from https://github.com/tbotnz/netbox_floorplan
Originally Forked from https://github.com/tbotnz/netbox_floorplan

## Demo
![demo](/media/demo.gif)
Expand All @@ -15,30 +15,39 @@ A netbox plugin providing floorplan mapping capability for locations and sites
- floorplan object mapped to sites or locations and click through rack/devices
- keyboard controls supported
- export to svg
- NOTE: Background Images have been disabled.

## Compatibility

| | |
| NetBox Version | Plugin Version |
|-------------|-----------|
| NetBox 3.5 | >= 0.3.2 |
| NetBox 3.6 | >= 0.3.2 |
| 3.5 | >= 0.3.2 |
| 3.6 | >= 0.3.2 |
| >4.0.2 | 0.4.0 |

## Installing

The plugin is available as a Python package in pypi and can be installed with pip


```
pip install netbox-floorplan-plugin
sudo pip install netbox-floorplan-plugin
```
Enable the plugin in /opt/netbox/netbox/netbox/configuration.py:
```
PLUGINS = ['netbox_floorplan']
```
Enable Migrations:
```
cd /opt/netbox
sudo ./venv/bin/python3 netbox/manage.py makemigrations netbox_floorplan_plugin
sudo ./venv/bin/python3 netbox/manage.py migrate
```

Restart NetBox and add `netbox-floorplan-plugin` to your local_requirements.txt

See [NetBox Documentation](https://docs.netbox.dev/en/stable/plugins/#installing-plugins) for details


## Mentions

Forked from https://github.com/tbotnz/netbox_floorplan
Expand Down
8 changes: 5 additions & 3 deletions netbox_floorplan/__init__.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
from extras.plugins import PluginConfig
from netbox.plugins import PluginConfig


class FloorplanConfig(PluginConfig):

name = "netbox_floorplan"
verbose_name = "Netbox Floorplan"
description = ""
version = "0.3.6"
version = "0.4.0"
base_url = "floorplan"
min_version = "3.4.1"
min_version = "4.0.2"
max_version = "4.0.99"


config = FloorplanConfig
9 changes: 0 additions & 9 deletions netbox_floorplan/admin.py
Original file line number Diff line number Diff line change
@@ -1,9 +0,0 @@
from django.contrib import admin
from .models import Floorplan


@admin.register(Floorplan)
class FloorplanAdmin(admin.ModelAdmin):
list_display = (
"pk",
)
19 changes: 19 additions & 0 deletions netbox_floorplan/navigation.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
"""
Define the plugin menu buttons & the plugin navigation bar enteries.
"""

from netbox.plugins import PluginMenuItem


#
# Define plugin menu buttons
#
menu_buttons = (
PluginMenuItem(
link="plugins:netbox_floorplan:floorplan_list",
link_text="Floorplans",
),
)


menu_items = menu_buttons
1 change: 1 addition & 0 deletions netbox_floorplan/static/netbox_floorplan/floorplan/edit.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// start initial ----------------------------------------------------------------------------- !


import {
resize_canvas,
export_svg,
Expand Down
1 change: 1 addition & 0 deletions netbox_floorplan/tables.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@


class FloorplanTable(NetBoxTable):

class Meta(NetBoxTable.Meta):
model = Floorplan
fields = ('pk', 'site', 'location',
Expand Down
37 changes: 37 additions & 0 deletions netbox_floorplan/templates/netbox_floorplan/floorplan.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
{% extends 'generic/object.html' %}
{% load render_table from django_tables2 %}



{% block content %}
<div class="row mb-3">
<div class="col col-md-6">
<div class="card">
<h5 class="card-header">Fabric</h5>
<div class="card-body">
<div class="card-body">
{% render_table table 'inc/table.html' %}
</div>
</div>
</div>
</div>
</div>
<div class="col col-md-6">
<div class="card">
<h5 class="card-header">Free Fabric Ports</h5>
<div class="card-body">
<table class="table table-hover attr-table">
<tr><th>Host</th><th>Free Ports</th></tr>
{% for host, obj in object.get_free_leaf_port_count.items %}
<tr>
<td><a href="{{ host.get_absolute_url }}">{{ host }}</a></td>
<td>{{ obj }}</td>
</tr>
{% endfor %}
</table>
</div>
</div>
</div>
</div>

{% endblock content %}
Loading

0 comments on commit c3019fb

Please sign in to comment.