Releases: CESNET/cesnet_service_path_plugin
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
v5.2.0
CESNET Service Path Plugin – Release Notes for v5.2.0
Highlights
v5.2.0 introduces a major new feature: Financial Information Management for segments, multi-currency support, API/UI enhancements, improved permission controls, and better plugin configuration. This release also includes documentation and dependency updates, streamlines segment/provider fields, and adds robust integration tests.
✨ Added
Financial Information Management
- New SegmentFinancialInfo model: Track segment costs, monthly charges, non-recurring charges, and commitment periods.
- Multi-currency support: Configurable currency list and default currency (CZK, EUR, USD, etc.).
- Automatic cost calculations: Total commitment cost, total cost including setup.
- Permission-based access: Financial info only visible to users with view permission.
- Integrated with UI & REST API: Financial info shown on segment detail pages and included in API responses.
- Dedicated API endpoint:
/api/plugins/cesnet-service-path-plugin/segment-financial-info/ - GraphQL support: Query segment financial info with permission checks.
Plugin Configuration and Metadata
- Configurable currency list: Specify available currencies and default in plugin settings.
- Example configuration in README.
- Added
netbox-plugin.yaml: Official plugin registry metadata and compatibility matrix.
UI/UX
- Financial info card on segment detail: Permission-aware display and quick add/edit/delete actions.
- "Generate Circuit" button: One-click creation of circuits from segment data, auto-filled form fields.
- Quick action buttons: Add/Import shortcuts for segments, paths, mappings, circuits.
Development & Testing
- Integration tests: For financial info API and type-specific segment data.
- Sample
.envfor tests. - Python requirement updated to >=3.10.
🔄 Changed
Segment Model: Location Fields Now Optional
- location_a & location_b are now optional for segments.
- You can create segments without specifying these locations.
- If provided, locations must belong to their respective sites.
- API, forms, and documentation updated to reflect this change.
API, Serialization & Permissions
- Segment serializer: Now includes
financial_infofield, with permission-aware inclusion. - Improved error handling: Detailed logging, better file upload error separation.
- Cleaner code: Removed unused fields (
provider_segment_name,provider_segment_contract). - Permission system: Fine-grained control for add/change/delete/view of financial info.
UI & Documentation
- README: Expanded with financial info details, installation/config, Docker instructions.
- File path references corrected: Configuration files and plugin paths.
- Compatibility badge: NetBox 4.4 support highlighted.
- Bulk operations: Bulk edit/import/delete for segments and mappings.
Development Dependencies
- Unpinned dev dependencies: More flexibility for pip, black, pytest, etc.
- License classifier: Now Apache 2.0.
⚙️ Technical Details
- Financial info uses one-to-one relation with Segment.
- Currency choices loaded from plugin config.
- Financial data is optional per segment.
- API serializers use method fields for conditional inclusion.
- Redirect-based views for better UX.
🚨 Migration Notes
- New model:
SegmentFinancialInfotable created. - Permissions: Four new Django permissions for financial info.
- Configuration: Optionally add currency config to plugin settings.
- API change: Segment API includes
financial_info(null if missing or no permission). - location_a/location_b: These fields are now optional in the database and API.
🧹 Removed/Deprecated
- Removed
provider_segment_contractandprovider_segment_namefields from Segment. - API examples, documentation, and GraphQL types updated to reflect removal.
📚 Documentation & Examples
- Step-by-step installation, Docker setup, currency config, and troubleshooting guides updated.
- API and GraphQL usage examples for segments with financial info.
- Segment creation API:
- Required fields:
name,status,provider,site_a,site_b - Optional:
location_a,location_b
- Required fields:
🧪 Testing
- New integration tests for:
- Creating, updating, deleting, and viewing segment financial info via API.
- Verifying financial info appears in segment API responses.
- Segment type-specific data validation and migration between types.
📝 Contributors
Special thanks to all contributors and testers for feedback and code reviews.
For a detailed changelog and migration instructions, see CHANGELOG.md and the expanded README.md.
v5.1.2
Release Notes – v5.1.2
Changes Since v5.1.1
-
Template Update:
The HTML templatesegment_edit.htmlhas been revised:- The block previously named
titlenow usesheadfor improved HTML structure and extension compatibility. - The stylesheet and JavaScript for the segment form are now included inside the
headblock. - Ensures proper extension of parent templates with
{{ block.super }}at the correct place.
- The block previously named
-
Version Bump:
- The project version in
pyproject.tomlupdated from5.1.1to5.1.2.
- The project version in
Summary
This release improves the template structure for editing segments, ensuring styles and scripts load correctly and enhancing maintainability for further customizations.
Full Changelog: v5.1.1...v5.1.2
v5.1.1
Release Notes for CESNET Service Path Plugin v5.1.1 (from v5.0.4)
Highlights
🚀 Major Features
-
Segment Type System
- Segments now support explicit types: Dark Fiber, Optical Spectrum, Ethernet Service.
- New
segment_typefield and dynamic, type-specific technical data stored as JSON. - Dynamic form fields and validation for each segment type.
- Smart numeric filtering with operators (>, <, >=, <=, ranges).
- GraphQL API supports type-specific data filtering (
has_type_specific_data).
-
Enhanced Map Visualization
- Map coloring and legend based on segment type, status, or provider.
- Multiple background map layers (OpenStreetMap, satellite, topographic, CartoDB).
- Improved overlapping segment visualization and selection.
-
Advanced Filtering System
- Smart numeric filters for technical fields.
- Type-specific filters (fiber type, connector type, modulation format, etc.).
- Boolean parsing and improved search for segment type and technical fields.
🛠 Improvements
- Segment form preserves type-specific field values when changing type.
- Updated segment table to display segment type.
- API serializers and GraphQL types now include segment type and type-specific data.
- Unified segment serializers, removed redundancy.
🐞 Bug Fixes
- Fixed form rendering for type-specific fields.
- Improved value preservation when editing segment types.
- Resolved edge cases in smart numeric filtering.
- Enhanced JSON serialization for Decimal types.
- Fixed dynamic field visibility issues.
⚡ Technical/Documentation
- New CSS/JS for dynamic segment form fields.
- Documentation updates with sample maps and GraphQL examples (
docs/graphQL_examples.md). - Added Apache 2.0 license badge.
- Updated
pyproject.tomlwith repository info. - Migration: New fields added to Segment model (
segment_type,type_specific_data).
Migration Notes
- 🗄 Database migration required: New fields for segment type and type-specific data.
⚠️ Existing installations will have default values for new fields.- No breaking changes expected for core APIs, but segment editing and filtering are now much richer.
For Developers
- New model:
models/segment_types.pywith choices and schemas for validation. - New template, CSS, and JS for dynamic form rendering.
- GraphQL API expanded for segment type and advanced filtering.
- Example queries and mutation samples in
docs/graphQL_examples.md.
Full Changelog
See CHANGELOG.md for detailed changes.
Upgrade Recommendation:
Run migrations after upgrading. Review segment forms and filtering options for new features.
Release Versions:
- v5.1.0 (2025-09-23): Segment type system, advanced filtering, improved map visualization.
- v5.0.3 (2025-08-29): Critical bugfix for saving tags (many-to-many).
- v5.0.2 (2025-08-21): Documentation and licensing improvements.
Compatibility:
NetBox 4.4+ (see README for compatibility matrix).
Full Changelog: v5.0.4...v5.1.1
v5.0.4
Changes Made
Added v5.0.4 Release Notes (2025-09-12)
- Enhanced Map Visualization: Documents the major improvements to segment map display including:
- Dual color schemes (status-based and provider-based color coding)
- Enhanced overlay segment selection with improved click algorithm
- Better visual differentiation for overlapping segments
- API Improvements: Covers streamlined segment serialization changes:
- Consolidation of SegmentListSerializer functionality into SegmentSerializer
- Enhanced support for path file uploads
- Improved API response consistency and performance
- Bug Fixes: Documents map interaction improvements and rendering performance optimizations
Added v5.0.3 Release Notes (2025-08-29)
- Forms Fix: Documents the important SegmentForm fix that added save_m2m() call to properly save tags
- Resolves tag persistence issues in segment creation and editing
Full Changelog: v5.0.3...v5.0.4
5.0.3
Added
-
Geographic Path Visualization: Complete interactive map system with Leaflet
- Multiple tile layer support (OpenStreetMap, satellite, topographic, CartoDB variants)
- Individual segment map views with path geometry display
- Comprehensive segments map view with filtering support
- Overlapping segment detection and selection interface
- Status-based color coding for visual segment identification
-
Path Data Management: Full support for geographic path data
- KML, KMZ, and GeoJSON file format support
- Enhanced KMZ processing with multi-layer extraction
- Automatic 3D to 2D coordinate conversion
- Path geometry validation and error reporting
- Automatic path length calculation using projected coordinates
- Path data export as GeoJSON files
-
Advanced Map Features:
- Interactive controls (pan, zoom, fit-to-bounds)
- Fallback visualization with straight lines when path data unavailable
- Site markers for segment endpoints
- Detailed segment information panels
- Path data availability indicators
- Responsive map controls and layer switching
-
Enhanced Data Model:
path_geometryfield for storing MultiLineString geometriespath_length_kmfield with automatic calculationpath_source_formatfield tracking data originpath_notesfield for additional metadata- Geographic helper methods for coordinate handling
-
UI/UX Improvements:
- Template extensions for Circuits, Providers, Sites, Locations, and Tenants
- Custom table columns showing path data availability
- Date status indicators with visual progress bars
- Enhanced filtering including geographic data availability
- Improved navigation with map view integration
-
API Enhancements:
- Separate serializers for list and detail views (performance optimization)
- Geographic data endpoints for map visualization
- GeoJSON export capabilities
- Path bounds and coordinate data in API responses
- Enhanced filtering on geographic fields
-
GraphQL Support:
- Complete GraphQL schema with geographic field support
- Custom scalar types for path bounds and coordinates
- Lazy-loaded relationship fields for performance
- Geographic data queries and filtering
Changed
- Breaking: Upgraded to Django 5.2.3 with GeoDjango support
- Breaking: Added PostGIS dependency for geographic features
- Breaking: Modified database schema to include geographic fields
- Improved segment form with path data upload capability
- Enhanced segment detail view with geographic information
- Updated table layouts with new path-related columns
- Refactored status choices to use configurable ChoiceSet system
- Improved error handling for geographic data processing
Fixed
- Resolved migration conflicts during table renaming process
- Fixed segment validation to properly handle location-site relationships
- Improved date validation with better error messaging
- Enhanced KMZ file processing for complex archive structures
- Fixed coordinate system handling for accurate length calculations
Technical Details
- Added
geopandas,fiona, andshapelyas core dependencies - Implemented comprehensive GIS utility functions
- Added extensive JavaScript map handling with modular design
- Created reusable template components for map functionality
- Enhanced error handling and logging for geographic operations
- Implemented proper geometric validation and sanitization
Migration Notes
- Database Migration Required: New geographic fields require PostGIS
- Dependency Installation: Geographic libraries (GDAL, GEOS, PROJ) required
- Configuration Updates: May need GeoDjango configuration updates
- Data Migration: Existing installations will have empty path geometry fields
Full Changelog: v4.3.0...v5.0.3