- Introduces the Script model to represent individual Python classes within a ScriptModule file
- Automatically migrates jobs & event rules
---------
Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>
* Introduce RelatedObjectCountField
* Introduce get_annotations_for_serializer() and enable dynamic annotations
* Add RelatedObjectCountFields to serializers; remove static annotations from querysets
* Remove annotations cleanup logic from BriefModeMixin
* Annotate type for RelatedObjectCountField
* Remove redundant field on TagSerializer
* Add missing reverse relationship for power feeds to rack
* Refactor RelatedObjectCountField to take a single relationship name
* Fixes#14755: ValueError in web UI after REST API accepts invalid custom-field choice-set data
* PR Comments Addressed
* Set max_length=2 on extra_choices items; remove custom validation logic
* Move test for invalid choices to CustomFieldChoiceSetTest
* Omit unused imports
---------
Co-authored-by: julio.oliveira <julio.oliveira@alertmedia.com>
Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>
* adds standardized list API for scripts and reports #13037
* adds standardized list API for scripts and reports #13037
* adds standardized list API for scripts and reports #13037
* adds module name to the display #13037
* adds custom field on webhook model #11936
* adds tags on webhook model #11936
* Remove extraneous import; revert change to NetBoxModelForm (no longer needed)
---------
Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>
* Initial work on custom field choice sets
* Rename choices to extra_choices (prep for #12194)
* Remove CustomField.choices
* Add & update tests
* Clean up table columns
* Add order_alphanetically boolean for choice sets
* Introduce ArrayColumn for choice lists
* Show dependent custom fields on choice set view
* Update custom fields documentation
* Introduce ArrayWidget for more convenient editing of choices
* Incorporate PR feedback
* Misc cleanup
* Initial work on predefined choices for custom fields
* Misc cleanup
* Add IATA airport codes
* #13241: Add support for custom field choice labels
* Restore ArrayColumn
* Misc cleanup
* Change extra_choices back to a nested ArrayField to preserve choice ordering
* Hack to bypass GraphQL API test utility absent support for nested ArrayFields
* Initial work on #11541
* Merge migrations
* Limit tags by object type during assignment
* Add tests for object type validation
* Fix form field parameters
* 12794 change User ref to get_user_model
* 12794 call get_user_model once in tests
* 12794 call get_user_model once in tests
* 12794 use settings.AUTH_USER_MODEL for FK reference
* Replace masonry with gridstack
* Initial work on dashboard widgets
* Implement function to save dashboard layout
* Define a default dashboard
* Clean up widgets
* Implement widget configuration views & forms
* Permit merging dict value with existing dict in user config
* Add widget deletion view
* Enable HTMX for widget configuration
* Implement view to add dashboard widgets
* ObjectCountsWidget: Identify models by app_label & name
* Add color customization to dashboard widgets
* Introduce Dashboard model to store user dashboard layout & config
* Clean up utility functions
* Remove hard-coded API URL
* Use fixed grid cell height
* Add modal close button
* Clean up dashboard views
* Rebuild JS
* WIP
* Add config_template field to Device
* Pre-fetch referenced templates
* Correct up_to_date callable
* Add config_template FK to Device
* Update & merge migrations
* Add config_template FK to Platform
* Add tagging support for ConfigTemplate
* Catch exceptions when rendering device templates in UI
* Refactor ConfigTemplate.render()
* Add support for returning plain text content
* Add ConfigTemplate model documentation
* Add feature documentation for config rendering
* Add interval to JobResult
* Accept a recurrence interval when executing scripts & reports
* Cleaned up jobs list display
* Schedule next job only if a reference start time can be determined
* Improve validation for scheduled jobs
* Initial work on new search backend
* Clean up search backends
* Return only the most relevant result per object
* Clear any pre-existing cached entries on cache()
* #6003: Implement global search functionality for custom field values
* Tweak field weights & document guidance
* Extend search() to accept a lookup type
* Move get_registry() out of SearchBackend
* Enforce object permissions when returning search results
* Add indexers for remaining models
* Avoid calling remove() on non-cacheable objects
* Use new search backend by default
* Extend search backend to filter by object type
* Clean up search view form
* Enable specifying lookup logic
* Add indexes for value field
* Remove object type selector from search bar
* Introduce SearchTable and enable HTMX for results
* Enable pagination
* Remove legacy search backend
* Cleanup
* Use a UUID for CachedValue primary key
* Refactoring search methods
* Define max search results limit
* Extend reindex command to support specifying particular models
* Add clear() and size to SearchBackend
* Optimize bulk caching performance
* Highlight matched portion of field value
* Performance improvements for reindexing
* Started on search tests
* Cleanup & docs
* Documentation updates
* Clean up SearchIndex
* Flatten search registry to register by app_label.model_name
* Clean up search backend classes
* Clean up RestrictedGenericForeignKey and RestrictedPrefetch
* Resolve migrations conflict
* 10348 add decimal custom field
* 10348 fix tests
* 10348 add documentation
* Rearrange custom fields to be ordered consistently
* Rename number_field to integer_field for clarity
* Clean up validation logic
* Apply suggested changes from PR
* Store decimal custom field values natively
* Fix filter test
* Update custom field model migrations to use new encoder
Co-authored-by: jeremystretch <jstretch@ns1.com>