Releases: CESNET/cesnet_service_path_plugin
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
v5.4.0
This major release introduces a comprehensive Contract Information Management System, replacing the previous SegmentFinancialInfo model. It adds support for contract versioning (amendments/renewals), many-to-many relationships between contracts and segments, and enhanced financial tracking.
🚀 New Features
Contract Information Management
- Complete Replacement: Replaced
SegmentFinancialInfowith a robustContractInfomodel. - Versioning System: Implemented a linear version chain (linked list) to track contract history.
- Support for New, Amendment, and Renewal contract types.
- Automatic version numbering (v1, v2, v3...).
- Ability to clone contracts to create amendments while preserving immutable fields like currency.
- Visual timeline in the UI showing the evolution of a contract.
- Many-to-Many Relationships: A single contract can now cover multiple network segments, and a segment can have multiple contracts.
Enhanced Financial Tracking
- Flexible Recurring Charges: Support for configurable billing periods (Monthly, Quarterly, Semi-Annually, Annually).
- Commitment Tracking: Automatic calculation of commitment end dates based on the start date and number of billing periods.
- Multi-Currency Support: Currency is now immutable per contract chain to ensure financial consistency.
- Calculated Fields: Automatic calculation of Total Recurring Cost and Total Contract Value.
UI & Visualization
- New Views: Dedicated list and detail views for Contracts.
- Visual Indicators: Color-coded badges for contract status and date proximity (Green/Orange/Red).
- Interactive Tooltips: Hover details showing exact dates and days remaining for commitments.
- Segment Integration: Segment detail views now display all associated active contracts in a dedicated panel.
API & GraphQL
- New REST Endpoint:
/api/plugins/cesnet-service-path-plugin/contract-info/ - GraphQL Support: Full support for querying contract versions, relationships, and computed financial fields.
- Advanced Filtering: Filter contracts by active status, version, currency, and date ranges.
💥 Breaking Changes
- Removed Model: The
SegmentFinancialInfomodel and table have been removed. - API Removal: The
/api/plugins/cesnet-service-path-plugin/segment-financial-info/endpoint has been removed. - Permissions: New permissions (
view_contractinfo,add_contractinfo, etc.) replace the old financial info permissions.
🔄 Migration & Upgrade
- Database Migration: Migration
0033automatically converts existingSegmentFinancialInfodata toContractInfo.- Preserves all charges, notes, and dates.
- Converts "Monthly Charge" to "Recurring Charge" (Monthly).
- Converts "Commitment Months" to "Number of Recurring Charges".
- Upgrade Steps:
- Backup your database.
- Install the update:
pip install --upgrade cesnet_service_path_plugin - Run migrations:
python manage.py migrate cesnet_service_path_plugin - Update API clients to use the new
/contract-info/endpoint. - Review and assign new user permissions.
🐛 Bug Fixes
- Improved decimal handling in financial calculations.
- Enhanced date validation logic for contract periods.
- Fixed M2M relationship serialization in API responses.
Full Changelog: v5.3.0...v5.4.0
v5.3.0
Release Notes for CESNET Service Path Plugin v5.3.0
[5.3.0] - 2025-11-19
Added
- Ownership Type Attribute:
- Introduced
ownership_typesupport at various levels:- Database migration adds
ownership_typeto segments. - New constants for ownership type labels and colors (backend and frontend).
- New "Ownership Type" color scheme added to the Segments Map.
- Database migration adds
- Optimized Segments Map rendering during color scheme changes.
- Introduced
Changed
- Enhanced UI and UX for the Segment Map:
- Popups and detail panels now display ownership type badges alongside status badges.
- Map legend incorporates ownership type information.
- Improved color scheme switching with
updateSegmentColors()for faster UI updates. - Corrected map-status color duplication for "Planned" entry.
- Refined fallback line logic for segments with missing path data.
- Enhanced badge styling consistency with Bootstrap themes.
Fixed
- UI inconsistencies in map popups involving:
- Missing or duplicate status badges.
- Label formatting issues.
- Ownership fields were added to:
- Multiple API outputs.
- Segment-related templates.
Removed
- Deprecated legacy static color configurations in
map_status_colors.html.
Full Changelog: v5.2.2...v5.3.0
v5.2.2
Release v5.2.2
This release introduces an improved topology visualization layout that is now adaptive and scalable, especially for more complex service paths.
What's Changed
- Improved Topology Visualization: The layout algorithm for topology visualization has been enhanced to be adaptive. It now dynamically adjusts the spacing of nodes based on the complexity of the service path, such as the number of sites and circuits. This results in a clearer and more organized visualization for complex topologies.
Full Changelog: v5.2.1...v5.2.2
v5.2.1
[5.2.1] - 2025-11-07
Added
-
Topology Visualization: Interactive network topology visualization using Cytoscape.js
- Visual representation of segment connections and circuit terminations
- Multi-topology support for service paths with multiple segments
- Automatic topology generation for both segments and service paths
- Clean NetBox Blue styled visualization with gradients and shadows
- Interactive topology viewer with hover tooltips showing node details
- Topology visualization integrated into segment and service path detail views
- Topology visualization added to circuit detail pages showing related segments/service paths
- Toggle between multiple topologies when segment belongs to multiple service paths
-
Commitment End Date Tracking: Enhanced financial commitment monitoring
- Automatic calculation of commitment end date based on install date and commitment period
- Color-coded commitment status indicators:
- Red: More than 30 days until end
- Orange: Within 30 days of end
- Green: Commitment period has ended
- Gray: No commitment period set
- Interactive tooltips showing days remaining until commitment end
- Visual feedback for commitment periods that have ended
- Commitment end date displayed in segment detail view with badge styling
- GraphQL API support for commitment end dates with ISO format
Changed
-
Circuit Extensions Refactoring: Improved code organization
- Renamed
CircuitKomoraSegmentExtensiontoCircuitSegmentExtensionfor better naming consistency - Enhanced circuit detail view with topology visualization support
- Better separation of concerns in template content extensions
- Circuit pages now show topology visualizations for associated segments
- Renamed
-
Currency Field Enhancement: Made charge_currency field required
- Removed default currency value to ensure explicit currency selection
- Migration
0031updates currency field constraints - Currency must now be explicitly set when creating financial information
- Prevents accidental use of default currency when not intended
-
Table Improvements: Enhanced data presentation
- Circuit column in SegmentCircuitMappingTable now orders by CID instead of name
- Improved ordering logic for better data organization and searchability
-
Version Update: Updated to version 5.2.1 in
pyproject.toml
Fixed
- Added missing
python-dateutildependency topyproject.tomlfor date calculations - Improved commitment end date calculation with proper timezone handling using
django.utils.timezone - Enhanced tooltip rendering with proper Bootstrap integration
- Fixed tooltip data attributes for proper display of commitment information
Technical Details
- New utility module
utils_topology.pywithTopologyBuilderclass for generating network graphs - Cytoscape.js (v3.28.1) integration for advanced graph visualization
- Reusable topology visualization templates
- Support for multiple topologies on single page with tab switching functionality
- Topology data stored as JSON and rendered client-side for performance
- Color-coding system for commitment status based on time remaining (30-day threshold)
- New GraphQL field resolver for
commitment_end_datewith ISO format output - Template extensions now check for service path membership to generate appropriate topologies
Migration Notes
- Migration 0031: Updates
charge_currencyfield to remove default value - requires explicit currency selection - New Dependencies: Added
python-dateutilforrelativedeltacalculations in commitment period tracking - Template Updates: New topology visualization templates require Cytoscape.js CDN (included automatically)
- API Changes: GraphQL API now includes
commitment_end_datefield inSegmentFinancialInfoType
Upgrade Instructions
- Run migrations:
python manage.py migrate cesnet_service_path_plugin - Install new dependency:
pip install python-dateutil(or upgrade plugin package) - Update existing financial records to set currency explicitly if using default
- Refresh browser cache to load new topology visualization assets
Full Changelog: 5.2.0...v5.2.1