Releases: CESNET/cesnet_service_path_plugin
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