Skip to content

Releases: CESNET/cesnet_service_path_plugin

v6.2.5: Merge branch 'fix-map' into 'main'

01 Jun 13:34

Choose a tag to compare

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

12 May 07:14

Choose a tag to compare

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

11 May 10:25

Choose a tag to compare

[6.2.3] - 2026-05-11

Changed

  • Compatibility — NetBox 4.6 support: Raised max_version to 4.6.99 after 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

11 May 07:13

Choose a tag to compare

[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_segment permission.
  • 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_km value is now shown as a sortable
    column in the segment list table.
  • Segment filter — Has Editable Path: New filter has_editable_path limits 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_geometry JSON field ({"type": "LineString", "coordinates": [...]}) to save a path from
    the map editor without a file upload. path_source_format is set to "manual" automatically.
    POST (create) also supports path_geometry with the same behaviour.

Fixed

  • Segment serializer — create() missing manual geometry handling: Creating a segment via
    POST with a path_geometry field did not set path_source_format = "manual". Fixed to match
    the update() 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'

05 May 16:56

Choose a tag to compare

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

27 Apr 12:25

Choose a tag to compare

Full Changelog: v6.1.1...v6.2.0

version 6.1.1

19 Mar 11:48

Choose a tag to compare

[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

09 Mar 10:57

Choose a tag to compare

⚠️ 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.
    Uses StrFilterLookup from 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 an ImportError.

  • GraphQL CharField filter types changed.
    All string filter fields migrated from FilterLookup[str]StrFilterLookup[str]
    to eliminate DuplicatedTypeName schema errors introduced in strawberry-graphql-django 0.79.0.
    GraphQL clients relying on type introspection may need updating.

Fixed

  • GraphQL @field resolver methods now correctly declare Info type 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

17 Feb 09:27

Choose a tag to compare

Release Notes - v6.0.1

Fixed

  • Database Schema Migration: Fixed primary key handling for segment data models
    • Updated DarkFiberSegmentData, EthernetServiceSegmentData, and OpticalSpectrumSegmentData to use auto-generated id primary key instead of segment_id
    • Implemented custom database migration (0037) with proper SQL handling to safely transition primary keys
    • Added UNIQUE constraints on segment_id to maintain OneToOneField relationships

Changed

  • Modified segment foreign key relationships to remove primary_key=True constraint across all segment data models
  • This change improves database flexibility and follows Django ORM best practices

Technical Details

  • Migration: 0037_darkfibersegmentdata_id_and_more.py handles the schema transformation with backward compatibility
  • Updated models:
    • cesnet_service_path_plugin/models/dark_fiber_data.py
    • cesnet_service_path_plugin/models/ethernet_service_data.py
    • cesnet_service_path_plugin/models/optical_spectrum_data.py

Full Changelog: v6.0.0...6.0.1

v6.0.0

21 Jan 12:59

Choose a tag to compare

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_data field 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.choices for InterfaceType and ConnectorType
  • Added comprehensive integration tests (24 tests)
  • Enhanced segment serializer with type_specific_technicals computed 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 pathdata attribute structure

Full Changelog: v5.4.0...v6.0.0