Releases: CESNET/cesnet_service_path_plugin
v6.2.5: Merge branch 'fix-map' into 'main'
fix: responsive tab map sizing and fit-to-bounds on initial load
- Replace fixed 600px height on tab map with a dynamic CSS variable
(--tab-map-height, 75vh default, 400px min) that recalculates on
window resize and Bootstrap tab activation via shown.bs.tab - Call map.invalidateSize() on each resize to keep Leaflet in sync
- Fit initial map view to object bounds (fitBounds) instead of a
fixed zoom level; falls back to default CZ center when no objects - Fix site tab showing wrong zoom: bounds were computed from all
network objects instead of the site's own segments; now passes
a separate site-filtered dataset to _network_map_context for
bounds calculation while keeping full data for client-side filtering - Bump version to 6.2.5
v6.2.4
Remove fiona from utils_gis, replace with pyogrio (trans-dependency of geopandas)
Add test for gis utils
Test with base image netboxcommunity/netbox:v4.6.0
Replace libgdal34/libgeos-c1t64/libproj25 system packages with libgdal38
(Ubuntu 26.04 renamed GDAL; shapely/pyproj ship bundled native libs)
Remove fiona, geopandas, shapely, pyproj, rtree, psycopg2-binary from
plugin_requirements.txt — fiona replaced by pyogrio (geopandas transitive
dep), others are either unused or installed separately in the Dockerfile
Remove geocoder and python-slugify (unused)
v6.2.3
[6.2.3] - 2026-05-11
Changed
- Compatibility — NetBox 4.6 support: Raised
max_versionto4.6.99after successful
testing against NetBox 4.6.x. Plugin version 6.2.x is now supported on both NetBox 4.5.4+
and NetBox 4.6.x.
Compatibility
| cesnet_service_path_plugin | NetBox |
|---|---|
| 6.2.x | 4.5.4 – 4.6.x |
| 6.1.x | 4.5.4+ |
| 6.0.x | 4.5.0 – 4.5.3 |
version 6.2.2
[6.2.2] - 2026-05-07
Added
- Segment Map — Interactive path editor: Authorised users can now draw and edit a segment's
geographic path directly on the single-segment map view without uploading a file.- Click-to-draw: Click on the map to place vertices one by one, building up a LineString path.
- Drag to move: Drag any existing vertex to reposition it; the polyline rubber-bands in real time.
- Click line to insert: Click anywhere on the drawn polyline to insert a new vertex at that
exact position. The new vertex immediately enters drag mode for precise placement. - Right-click to delete: Right-click any vertex to remove it from the path.
- Last vertex highlight: The most recently placed vertex is rendered with a distinct solid fill
so the path end is always obvious. - Undo: Step back through the edit history one action at a time.
- Clear: Remove all vertices and start fresh without leaving edit mode.
- Delete Path: Delete the stored geometry for the segment entirely (with confirmation).
- Proximity warnings: If the path start or end is more than 100 m from the respective site
marker, a confirmation dialog is shown before saving. - Multi-segment auto-join: Existing paths stored as MultiLineString (e.g. from file upload)
are automatically joined into a single editable LineString when gaps between segments are ≤ 10 m.
Paths with larger gaps are flagged as "too complex to edit here". - Read-only layer hide: The static GeoJSON path layer is hidden while the editor is active
and restored on cancel, preventing visual overlap during editing. - Permission-gated: Edit controls are only shown to users with
change_segmentpermission.
- Segment Map — Context-sensitive map button: The button on the segment detail page now adapts
to four states based on path data availability and user permissions (View / View+Edit / Draw /
hidden). View-only users with no stored path data but positioned sites still get a "View on Map"
link to see the fallback straight line. - Segment list — Path length column: The
path_length_kmvalue is now shown as a sortable
column in the segment list table. - Segment filter — Has Editable Path: New filter
has_editable_pathlimits results to segments
whose path geometry is a single LineString (i.e. directly editable in the map editor). Segments
with disconnected multi-segment paths are excluded. - Segment API — Direct geometry write:
PATCH /api/.../segments/{id}/now accepts a
path_geometryJSON field ({"type": "LineString", "coordinates": [...]}) to save a path from
the map editor without a file upload.path_source_formatis set to"manual"automatically.
POST(create) also supportspath_geometrywith the same behaviour.
Fixed
- Segment serializer —
create()missing manual geometry handling: Creating a segment via
POSTwith apath_geometryfield did not setpath_source_format = "manual". Fixed to match
theupdate()behaviour.
Compatibility
| cesnet_service_path_plugin | NetBox |
|---|---|
| 6.2.x | 4.5.4+ |
| 6.1.x | 4.5.4+ |
| 6.0.x | 4.5.0 – 4.5.3 |
v6.2.1: Merge branch 'feature_map_edit_mode' into 'main'
feat(network-map): edit mode — create/move sites, segments, circuits
- Add edit mode toggle: place unpositioned sites, create sites/segments/
circuits, and move segment/circuit endpoints via inline map forms - Confirmation dialog before any endpoint replacement is persisted
- Viewport-fixed map layout with independently scrollable right panel
- Sites rendered in dedicated Leaflet pane (z-index 450) above connections
- Rollback DELETE on orphaned circuit when termination creation fails
- Fix highlight cleared immediately on object click (stopPropagation)
- Fix objects unclickable after edit mode exit (missing stopPropagation
in read-mode handler rewiring) - Update CHANGELOG [6.2.1] and README Network Map section
version 6.2.0
Full Changelog: v6.1.1...v6.2.0
version 6.1.1
[6.1.1] - 2026-03-19
Fixed
- Added
referrerPolicy: 'strict-origin-when-cross-origin'to all Leaflet tile layer configurations
(OpenStreetMap, Humanitarian OSM, CartoDB Positron, CartoDB Dark Matter, OpenTopoMap) to prevent
map tile loading issues in environments with strict referrer policies.
Compatibility
| cesnet_service_path_plugin | NetBox |
|---|---|
| 6.1.x | 4.5.4+ |
| 6.0.x | 4.5.0 – 4.5.3 |
v6.1.0
⚠️ Requires NetBox >= 4.5.4. Use v6.0.x for NetBox 4.5.0–4.5.3.
Breaking Changes
-
Minimum NetBox version raised to 4.5.4.
UsesStrFilterLookupfrom strawberry-graphql-django >= 0.79.0, which ships
with NetBox 4.5.4. Starting the plugin on NetBox 4.5.0–4.5.3 will raise anImportError. -
GraphQL CharField filter types changed.
All string filter fields migrated fromFilterLookup[str]→StrFilterLookup[str]
to eliminateDuplicatedTypeNameschema errors introduced in strawberry-graphql-django 0.79.0.
GraphQL clients relying on type introspection may need updating.
Fixed
- GraphQL
@fieldresolver methods now correctly declareInfotype annotations,
resolving startup errors on NetBox 4.5.4+ with stricter strawberry-django introspection.
Compatibility
| cesnet_service_path_plugin | NetBox |
|---|---|
| 6.1.0+ | 4.5.4+ |
| 6.0.x | 4.5.0 – 4.5.3 |
Full Changelog: 6.0.1...v6.1.0
v6.0.1
Release Notes - v6.0.1
Fixed
- Database Schema Migration: Fixed primary key handling for segment data models
- Updated
DarkFiberSegmentData,EthernetServiceSegmentData, andOpticalSpectrumSegmentDatato use auto-generatedidprimary key instead ofsegment_id - Implemented custom database migration (0037) with proper SQL handling to safely transition primary keys
- Added UNIQUE constraints on
segment_idto maintain OneToOneField relationships
- Updated
Changed
- Modified segment foreign key relationships to remove
primary_key=Trueconstraint across all segment data models - This change improves database flexibility and follows Django ORM best practices
Technical Details
- Migration:
0037_darkfibersegmentdata_id_and_more.pyhandles the schema transformation with backward compatibility - Updated models:
cesnet_service_path_plugin/models/dark_fiber_data.pycesnet_service_path_plugin/models/ethernet_service_data.pycesnet_service_path_plugin/models/optical_spectrum_data.py
Full Changelog: v6.0.0...6.0.1
v6.0.0
Changelog - Version 6.0.0
Breaking Changes
- NetBox 4.5.0 Required: Minimum NetBox version is now 4.5.0
- Data Model Migration: Replaced JSON-based
type_specific_datafield with dedicated relational models for better data integrity
New Features
- Segment Type-Specific Models: Introduced three new data models:
- DarkFiberSegmentData
- OpticalSpectrumSegmentData
- EthernetServiceSegmentData
- Enhanced API Support: Full REST API, GraphQL, and web forms for all new models
- Improved Data Validation: Relational models provide better data validation and integrity
Improvements
- Updated to use NetBox's native
dcim.choicesfor InterfaceType and ConnectorType - Added comprehensive integration tests (24 tests)
- Enhanced segment serializer with
type_specific_technicalscomputed field - Better exception handling for OneToOne relationships
Removals
- Removed legacy JSONField validation logic (~400 lines of code)
- Removed backward compatibility tests for old JSON handling
Migration Notes
- Database migration (0034) automatically converts existing JSON data to new relational models
- See documentation for details on the new
pathdataattribute structure
Full Changelog: v5.4.0...v6.0.0