nautobot.apps.views
¶
Utilities for apps to implement UI views.
nautobot.apps.views.AdminRequiredMixin
¶
Bases: AccessMixin
Allows access only to admin users.
nautobot.apps.views.BulkComponentCreateView
¶
Bases: GetReturnURLMixin
, ObjectPermissionRequiredMixin
, View
Add one or more components (e.g. interfaces, console ports, etc.) to a set of Devices or VirtualMachines.
nautobot.apps.views.BulkCreateView
¶
Bases: GetReturnURLMixin
, ObjectPermissionRequiredMixin
, View
Create new objects in bulk.
queryset: Base queryset for the objects being created
form: Form class which provides the pattern
field
model_form: The ModelForm used to create individual objects
pattern_target: Name of the field to be evaluated as a pattern (if any)
template_name: The name of the template
nautobot.apps.views.BulkDeleteView
¶
Bases: GetReturnURLMixin
, ObjectPermissionRequiredMixin
, View
Delete objects in bulk.
queryset: Custom queryset to use when retrieving objects (e.g. to select related objects) filter: FilterSet to apply when deleting by QuerySet table: The table used to display devices being deleted form: The form class used to delete objects in bulk template_name: The name of the template
get_form()
¶
Provide a standard bulk delete form if none has been specified for the view
nautobot.apps.views.BulkEditView
¶
Bases: GetReturnURLMixin
, ObjectPermissionRequiredMixin
, View
Edit objects in bulk.
queryset: Custom queryset to use when retrieving objects (e.g. to select related objects) filter: FilterSet to apply when deleting by QuerySet table: The table used to display devices being edited form: The form class used to edit objects in bulk template_name: The name of the template
extra_post_save_action(obj, form)
¶
Extra actions after a form is saved
nautobot.apps.views.BulkImportView
¶
Bases: GetReturnURLMixin
, ObjectPermissionRequiredMixin
, View
Import objects in bulk (CSV format).
Deprecated - replaced by ImportObjects system Job.
queryset: Base queryset for the model table: The django-tables2 Table used to render the list of imported objects template_name: The name of the template
nautobot.apps.views.BulkRenameView
¶
Bases: GetReturnURLMixin
, ObjectPermissionRequiredMixin
, View
An extendable view for renaming objects in bulk.
get_selected_objects_parents_name(selected_objects)
¶
Return selected_objects parent name.
This method is intended to be overridden by child classes to return the parent name of the selected objects.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
selected_objects |
list[BaseModel]
|
The objects being renamed |
required |
Returns:
Type | Description |
---|---|
str
|
The parent name of the selected objects |
nautobot.apps.views.ComponentCreateView
¶
Bases: GetReturnURLMixin
, ObjectPermissionRequiredMixin
, View
Add one or more components (e.g. interfaces, console ports, etc.) to a Device or VirtualMachine.
nautobot.apps.views.ContentTypePermissionRequiredMixin
¶
Bases: AccessMixin
Similar to Django's built-in PermissionRequiredMixin, but extended to check model-level permission assignments. This is related to ObjectPermissionRequiredMixin, except that is does not enforce object-level permissions, and fits within Nautobot's custom permission enforcement system.
get_required_permission()
¶
Return the specific permission necessary to perform the requested action on an object.
nautobot.apps.views.GenericView
¶
Bases: LoginRequiredMixin
, View
Base class for non-object-related views.
Enforces authentication, which Django's base View does not by default.
nautobot.apps.views.GetReturnURLMixin
¶
Provides logic for determining where a user should be redirected after processing a form.
nautobot.apps.views.NautobotHTMLRenderer
¶
Bases: BrowsableAPIRenderer
Inherited from BrowsableAPIRenderer to do most of the heavy lifting for getting the context needed for templates and template rendering.
construct_table(view, **kwargs)
¶
Helper function to construct and paginate the table for rendering used in the ObjectListView, ObjectBulkUpdateView and ObjectBulkDestroyView.
construct_user_permissions(request, model)
¶
Helper function to gather the user's permissions to add, change, delete and view the model, and then render the action buttons accordingly allowed in the ObjectListView UI.
get_context(data, accepted_media_type, renderer_context)
¶
Override get_context() from BrowsableAPIRenderer to obtain the context data we need to render our templates. context variable contains template context needed to render Nautobot generic templates / circuits templates. Override this function to add additional key/value pair to pass it to your templates.
get_dynamic_filter_form(view, request, *args, filterset_class=None, **kwargs)
¶
Helper function to obtain the filter_form_class, and then initialize and return the filter_form used in the ObjectListView UI.
render(data, accepted_media_type=None, renderer_context=None)
¶
Overrode render() from BrowsableAPIRenderer to set self.template with NautobotViewSet's get_template_name() before it is rendered.
validate_action_buttons(view, request)
¶
Verify actions in self.action_buttons are valid view actions.
nautobot.apps.views.NautobotUIViewSet
¶
Bases: ObjectDetailViewMixin
, ObjectListViewMixin
, ObjectEditViewMixin
, ObjectDestroyViewMixin
, ObjectBulkDestroyViewMixin
, ObjectBulkCreateViewMixin
, ObjectBulkUpdateViewMixin
, ObjectChangeLogViewMixin
, ObjectNotesViewMixin
Nautobot BaseViewSet that is intended for UI use only. It provides default Nautobot functionalities such as
create()
, update()
, partial_update()
, bulk_update()
, destroy()
, bulk_destroy()
, retrieve()
notes()
, changelog()
and list()
actions.
nautobot.apps.views.NautobotViewSetMixin
¶
Bases: GenericViewSet
, AccessMixin
, GetReturnURLMixin
, FormView
NautobotViewSetMixin is an aggregation of various mixins from DRF, Django and Nautobot to acheive the desired behavior pattern for NautobotUIViewSet
check_permissions(request)
¶
Check whether the user has the permissions needed to perform certain actions.
dispatch(request, *args, **kwargs)
¶
Override the default dispatch() method to check permissions first. Used to determine whether the user has permissions to a view and object-level permissions. Using AccessMixin handle_no_permission() to deal with Object-Level permissions and API-Level permissions in one pass.
form_invalid(form)
¶
Handle invalid forms.
form_save(form, **kwargs)
¶
Generic method to save the object from form. Should be overriden by user if customization is needed.
form_valid(form)
¶
Handle valid forms and redirect to success_url.
get_action()
¶
Helper method for retrieving action and if action not set defaulting to action name.
get_extra_context(request, instance=None)
¶
Return any additional context data for the template. request: The current request instance: The object being viewed
get_filter_params(request)
¶
Helper function - take request.GET and discard any parameters that are not used for queryset filtering.
get_form(*args, **kwargs)
¶
Helper function to get form for different views if specified. If not, return instantiated form using form_class.
get_form_class(**kwargs)
¶
Helper function to get form_class for different views.
get_object()
¶
Returns the object the view is displaying. You may want to override this if you need to provide non-standard queryset lookups. Eg if objects are referenced using multiple keyword arguments in the url conf.
get_permissions_for_model(model, actions)
¶
Resolve the named permissions for a given model (or instance) and a list of actions (e.g. view or add).
:param model: A model or instance :param actions: A list of actions to perform on the model
get_queryset()
¶
Get the list of items for this view.
This must be an iterable, and may be a queryset.
Defaults to using self.queryset
.
This method should always be used rather than accessing self.queryset
directly, as self.queryset
gets evaluated only once, and those results
are cached for all subsequent requests.
Override the original get_queryset()
to apply permission specific to the user and action.
get_required_permission()
¶
Obtain the permissions needed to perform certain actions on a model.
nautobot.apps.views.ObjectBulkCreateViewMixin
¶
Bases: NautobotViewSetMixin
UI mixin to bulk create model instances.
Deprecated - use ImportObjects system Job instead.
nautobot.apps.views.ObjectBulkDestroyViewMixin
¶
Bases: NautobotViewSetMixin
, BulkDestroyModelMixin
UI mixin to bulk destroy model instances.
bulk_destroy(request, *args, **kwargs)
¶
Call perform_bulk_destroy(). The function exist to keep the DRF's get/post pattern of {action}/perform_{action}, we will need it when we transition from using forms to serializers in the UI. User should override this function to handle any actions as needed before bulk destroy.
perform_bulk_destroy(request, **kwargs)
¶
request.POST "_delete": Function to render the user selection of objects in a table form/BulkDestroyConfirmationForm via Response that is passed to NautobotHTMLRenderer. request.POST "_confirm": Function to validate the table form/BulkDestroyConfirmationForm and to perform the action of bulk destroy. Render the form with errors if exceptions are raised.
nautobot.apps.views.ObjectBulkUpdateViewMixin
¶
Bases: NautobotViewSetMixin
, BulkUpdateModelMixin
UI mixin to bulk update model instances.
bulk_update(request, *args, **kwargs)
¶
Call perform_bulk_update(). The function exist to keep the DRF's get/post pattern of {action}/perform_{action}, we will need it when we transition from using forms to serializers in the UI. User should override this function to handle any actions as needed before bulk update.
perform_bulk_update(request, **kwargs)
¶
request.POST "_edit": Function to render the user selection of objects in a table form/BulkUpdateForm via Response that is passed to NautobotHTMLRenderer. request.POST "_apply": Function to validate the table form/BulkUpdateForm and to perform the action of bulk update. Render the form with errors if exceptions are raised.
nautobot.apps.views.ObjectChangeLogViewMixin
¶
nautobot.apps.views.ObjectDeleteView
¶
Bases: GetReturnURLMixin
, ObjectPermissionRequiredMixin
, View
Delete a single object.
queryset: The base queryset for the object being deleted template_name: The name of the template
get_object(kwargs)
¶
Retrieve an object based on kwargs
.
nautobot.apps.views.ObjectDestroyViewMixin
¶
Bases: NautobotViewSetMixin
, DestroyModelMixin
UI mixin to destroy a model instance.
destroy(request, *args, **kwargs)
¶
request.GET: render the ObjectDeleteConfirmationForm which is passed to NautobotHTMLRenderer as Response. request.POST: call perform_destroy() which validates the form and perform the action of delete. Override to add more variables to Response
perform_destroy(request, **kwargs)
¶
Function to validate the ObjectDeleteConfirmationForm and to delete the object.
nautobot.apps.views.ObjectDetailViewMixin
¶
Bases: NautobotViewSetMixin
, RetrieveModelMixin
UI mixin to retrieve a model instance.
retrieve(request, *args, **kwargs)
¶
Retrieve a model instance.
nautobot.apps.views.ObjectDynamicGroupsView
¶
Bases: GenericView
Present a list of dynamic groups associated to a particular object.
base_template: The name of the template to extend. If not provided, "
nautobot.apps.views.ObjectEditView
¶
Bases: GetReturnURLMixin
, ObjectPermissionRequiredMixin
, View
Create or edit a single object.
queryset: The base queryset for the object being modified model_form: The form used to create or edit the object template_name: The name of the template
get_extra_context(request, instance)
¶
Return any additional context data for the template.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
request |
HttpRequest
|
The current request |
required |
instance |
Model
|
The object being edited |
required |
Returns:
Type | Description |
---|---|
dict
|
Additional context data |
get_object(kwargs)
¶
Retrieve an object based on kwargs
.
successful_post(request, obj, created, logger)
¶
Callback after the form is successfully saved but before redirecting the user.
nautobot.apps.views.ObjectEditViewMixin
¶
Bases: NautobotViewSetMixin
, CreateModelMixin
, UpdateModelMixin
UI mixin to create or update a model instance.
create(request, *args, **kwargs)
¶
request.GET: render the ObjectForm which is passed to NautobotHTMLRenderer as Response. request.POST: call perform_create() which validates the form and perform the action of create. Override to add more variables to Response.
perform_create(request, *args, **kwargs)
¶
Function to validate the ObjectForm and to create a new object.
perform_update(request, *args, **kwargs)
¶
Function to validate the ObjectEditForm and to update/partial_update an existing object.
update(request, *args, **kwargs)
¶
request.GET: render the ObjectEditForm which is passed to NautobotHTMLRenderer as Response. request.POST: call perform_update() which validates the form and perform the action of update/partial_update of an existing object. Override to add more variables to Response.
nautobot.apps.views.ObjectImportView
¶
Bases: GetReturnURLMixin
, ObjectPermissionRequiredMixin
, View
Import a single object (YAML or JSON format).
queryset: Base queryset for the objects being created model_form: The ModelForm used to create individual objects related_object_forms: A dictionary mapping of forms to be used for the creation of related (child) objects template_name: The name of the template
nautobot.apps.views.ObjectListView
¶
Bases: ObjectPermissionRequiredMixin
, View
List a series of objects.
The queryset of objects to display. Note: Prefetching related objects is not necessary, as the
table will prefetch objects as needed depending on the columns being displayed.
filter: A django-filter FilterSet that is applied to the queryset filter_form: The form used to render filter options table: The django-tables2 Table used to render the objects list template_name: The name of the template non_filter_params: List of query parameters that are not used for queryset filtering
get_filter_params(request)
¶
Helper function - take request.GET and discard any parameters that are not used for queryset filtering.
queryset_to_yaml()
¶
Export the queryset of objects as concatenated YAML documents.
validate_action_buttons(request)
¶
Verify actions in self.action_buttons are valid view actions.
nautobot.apps.views.ObjectListViewMixin
¶
Bases: NautobotViewSetMixin
, ListModelMixin
UI mixin to list a model queryset
nautobot.apps.views.ObjectNotesView
¶
Bases: GenericView
Present a list of notes associated to a particular object.
base_template: The name of the template to extend. If not provided, "
nautobot.apps.views.ObjectNotesViewMixin
¶
nautobot.apps.views.ObjectPermissionRequiredMixin
¶
Bases: AccessMixin
Similar to Django's built-in PermissionRequiredMixin, but extended to check for both model-level and object-level permission assignments. If the user has only object-level permissions assigned, the view's queryset is filtered to return only those objects on which the user is permitted to perform the specified action.
get_required_permission()
¶
Return the specific permission necessary to perform the requested action on an object.
nautobot.apps.views.ObjectView
¶
Bases: ObjectPermissionRequiredMixin
, View
Retrieve a single object for display.
queryset: The base queryset for retrieving the object template_name: Name of the template to use
get(request, *args, **kwargs)
¶
Generic GET handler for accessing an object.
get_extra_context(request, instance)
¶
Return any additional context data for the template.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
request |
Request
|
The current request |
required |
instance |
Model
|
The object being viewed |
required |
Returns:
Type | Description |
---|---|
dict
|
Additional context data |
get_template_name()
¶
Return self.template_name if set. Otherwise, resolve the template path by model app_label and name.
nautobot.apps.views.check_and_call_git_repository_function(request, pk, func)
¶
Helper for checking Git permissions and worker availability, then calling provided function if all is well Args: request (HttpRequest): request object. pk (UUID): GitRepository pk value. func (function): Enqueue git repo function. Returns: (Union[HttpResponseForbidden,redirect]): HttpResponseForbidden if user does not have permission to run the job, otherwise redirect to the job result page.
nautobot.apps.views.check_filter_for_display(filters, field_name, values)
¶
Return any additional context data for the template.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
filters |
OrderedDict
|
The output of |
required |
field_name |
str
|
The name of the filter to get a label for and lookup values |
required |
values |
list[str]
|
List of strings that may be PKs to look up |
required |
Returns:
Type | Description |
---|---|
dict
|
A dict containing:
- name: (str) Field name
- display: (str) Resolved field name, whether that's a field label or fallback to inputted |
nautobot.apps.views.csv_format(data)
¶
Convert the given list of data to a CSV row string.
Encapsulate any data which contains a comma within double quotes.
Obsolete, as CSV rendering in Nautobot core is now handled by nautobot.core.api.renderers.NautobotCSVRenderer.
nautobot.apps.views.get_csv_form_fields_from_serializer_class(serializer_class)
¶
From the given serializer class, build a list of field dicts suitable for rendering in the CSV import form.
nautobot.apps.views.get_paginate_count(request)
¶
Determine the length of a page, using the following in order:
1. per_page URL query parameter
2. Saved user preference
3. PAGINATE_COUNT global setting.
nautobot.apps.views.handle_protectederror(obj_list, request, e)
¶
Generate a user-friendly error message in response to a ProtectedError exception.
nautobot.apps.views.prepare_cloned_fields(instance)
¶
Compile an object's clone_fields
list into a string of URL query parameters. Tags are automatically cloned where
applicable.