mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Added bulk import views for cluster types and groups
This commit is contained in:
@ -297,7 +297,7 @@
|
|||||||
{% if perms.virtualization.add_clustertype %}
|
{% if perms.virtualization.add_clustertype %}
|
||||||
<div class="buttons pull-right">
|
<div class="buttons pull-right">
|
||||||
<a href="{% url 'virtualization:clustertype_add' %}" class="btn btn-xs btn-success" title="Add"><i class="fa fa-plus"></i></a>
|
<a href="{% url 'virtualization:clustertype_add' %}" class="btn btn-xs btn-success" title="Add"><i class="fa fa-plus"></i></a>
|
||||||
<a class="btn btn-xs btn-info disabled" title="Import"><i class="fa fa-download"></i></a>
|
<a href="{% url 'virtualization:clustertype_import' %}" class="btn btn-xs btn-info" title="Import"><i class="fa fa-download"></i></a>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<a href="{% url 'virtualization:clustertype_list' %}">Cluster Types</a>
|
<a href="{% url 'virtualization:clustertype_list' %}">Cluster Types</a>
|
||||||
@ -306,7 +306,7 @@
|
|||||||
{% if perms.virtualization.add_clustergroup %}
|
{% if perms.virtualization.add_clustergroup %}
|
||||||
<div class="buttons pull-right">
|
<div class="buttons pull-right">
|
||||||
<a href="{% url 'virtualization:clustergroup_add' %}" class="btn btn-xs btn-success" title="Add"><i class="fa fa-plus"></i></a>
|
<a href="{% url 'virtualization:clustergroup_add' %}" class="btn btn-xs btn-success" title="Add"><i class="fa fa-plus"></i></a>
|
||||||
<a class="btn btn-xs btn-info disabled" title="Import"><i class="fa fa-download"></i></a>
|
<a href="{% url 'virtualization:clustergroup_import' %}" class="btn btn-xs btn-info" title="Import"><i class="fa fa-download"></i></a>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<a href="{% url 'virtualization:clustergroup_list' %}">Cluster Groups</a>
|
<a href="{% url 'virtualization:clustergroup_list' %}">Cluster Groups</a>
|
||||||
|
@ -38,6 +38,17 @@ class ClusterTypeForm(BootstrapMixin, forms.ModelForm):
|
|||||||
fields = ['name', 'slug']
|
fields = ['name', 'slug']
|
||||||
|
|
||||||
|
|
||||||
|
class ClusterTypeCSVForm(forms.ModelForm):
|
||||||
|
slug = SlugField()
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = ClusterType
|
||||||
|
fields = ['name', 'slug']
|
||||||
|
help_texts = {
|
||||||
|
'name': 'Name of cluster type',
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Cluster groups
|
# Cluster groups
|
||||||
#
|
#
|
||||||
@ -50,6 +61,17 @@ class ClusterGroupForm(BootstrapMixin, forms.ModelForm):
|
|||||||
fields = ['name', 'slug']
|
fields = ['name', 'slug']
|
||||||
|
|
||||||
|
|
||||||
|
class ClusterGroupCSVForm(forms.ModelForm):
|
||||||
|
slug = SlugField()
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = ClusterGroup
|
||||||
|
fields = ['name', 'slug']
|
||||||
|
help_texts = {
|
||||||
|
'name': 'Name of cluster group',
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Clusters
|
# Clusters
|
||||||
#
|
#
|
||||||
|
@ -37,6 +37,7 @@ VIRTUALMACHINE_PRIMARY_IP = """
|
|||||||
|
|
||||||
class ClusterTypeTable(BaseTable):
|
class ClusterTypeTable(BaseTable):
|
||||||
pk = ToggleColumn()
|
pk = ToggleColumn()
|
||||||
|
name = tables.LinkColumn()
|
||||||
cluster_count = tables.Column(verbose_name='Clusters')
|
cluster_count = tables.Column(verbose_name='Clusters')
|
||||||
actions = tables.TemplateColumn(
|
actions = tables.TemplateColumn(
|
||||||
template_code=CLUSTERTYPE_ACTIONS,
|
template_code=CLUSTERTYPE_ACTIONS,
|
||||||
@ -55,6 +56,7 @@ class ClusterTypeTable(BaseTable):
|
|||||||
|
|
||||||
class ClusterGroupTable(BaseTable):
|
class ClusterGroupTable(BaseTable):
|
||||||
pk = ToggleColumn()
|
pk = ToggleColumn()
|
||||||
|
name = tables.LinkColumn()
|
||||||
cluster_count = tables.Column(verbose_name='Clusters')
|
cluster_count = tables.Column(verbose_name='Clusters')
|
||||||
actions = tables.TemplateColumn(
|
actions = tables.TemplateColumn(
|
||||||
template_code=CLUSTERGROUP_ACTIONS,
|
template_code=CLUSTERGROUP_ACTIONS,
|
||||||
|
@ -12,12 +12,14 @@ urlpatterns = [
|
|||||||
# Cluster types
|
# Cluster types
|
||||||
url(r'^cluster-types/$', views.ClusterTypeListView.as_view(), name='clustertype_list'),
|
url(r'^cluster-types/$', views.ClusterTypeListView.as_view(), name='clustertype_list'),
|
||||||
url(r'^cluster-types/add/$', views.ClusterTypeCreateView.as_view(), name='clustertype_add'),
|
url(r'^cluster-types/add/$', views.ClusterTypeCreateView.as_view(), name='clustertype_add'),
|
||||||
|
url(r'^cluster-types/import/$', views.ClusterTypeBulkImportView.as_view(), name='clustertype_import'),
|
||||||
url(r'^cluster-types/delete/$', views.ClusterTypeBulkDeleteView.as_view(), name='clustertype_bulk_delete'),
|
url(r'^cluster-types/delete/$', views.ClusterTypeBulkDeleteView.as_view(), name='clustertype_bulk_delete'),
|
||||||
url(r'^cluster-types/(?P<slug>[\w-]+)/edit/$', views.ClusterTypeEditView.as_view(), name='clustertype_edit'),
|
url(r'^cluster-types/(?P<slug>[\w-]+)/edit/$', views.ClusterTypeEditView.as_view(), name='clustertype_edit'),
|
||||||
|
|
||||||
# Cluster groups
|
# Cluster groups
|
||||||
url(r'^cluster-groups/$', views.ClusterGroupListView.as_view(), name='clustergroup_list'),
|
url(r'^cluster-groups/$', views.ClusterGroupListView.as_view(), name='clustergroup_list'),
|
||||||
url(r'^cluster-groups/add/$', views.ClusterGroupCreateView.as_view(), name='clustergroup_add'),
|
url(r'^cluster-groups/add/$', views.ClusterGroupCreateView.as_view(), name='clustergroup_add'),
|
||||||
|
url(r'^cluster-groups/import/$', views.ClusterGroupBulkImportView.as_view(), name='clustergroup_import'),
|
||||||
url(r'^cluster-groups/delete/$', views.ClusterGroupBulkDeleteView.as_view(), name='clustergroup_bulk_delete'),
|
url(r'^cluster-groups/delete/$', views.ClusterGroupBulkDeleteView.as_view(), name='clustergroup_bulk_delete'),
|
||||||
url(r'^cluster-groups/(?P<slug>[\w-]+)/edit/$', views.ClusterGroupEditView.as_view(), name='clustergroup_edit'),
|
url(r'^cluster-groups/(?P<slug>[\w-]+)/edit/$', views.ClusterGroupEditView.as_view(), name='clustergroup_edit'),
|
||||||
|
|
||||||
|
@ -43,6 +43,13 @@ class ClusterTypeEditView(ClusterTypeCreateView):
|
|||||||
permission_required = 'virtualization.change_clustertype'
|
permission_required = 'virtualization.change_clustertype'
|
||||||
|
|
||||||
|
|
||||||
|
class ClusterTypeBulkImportView(PermissionRequiredMixin, BulkImportView):
|
||||||
|
permission_required = 'virtualization.add_clustertype'
|
||||||
|
model_form = forms.ClusterTypeCSVForm
|
||||||
|
table = tables.ClusterTypeTable
|
||||||
|
default_return_url = 'virtualization:clustertype_list'
|
||||||
|
|
||||||
|
|
||||||
class ClusterTypeBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
class ClusterTypeBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||||
permission_required = 'virtualization.delete_clustertype'
|
permission_required = 'virtualization.delete_clustertype'
|
||||||
cls = ClusterType
|
cls = ClusterType
|
||||||
@ -74,6 +81,13 @@ class ClusterGroupEditView(ClusterGroupCreateView):
|
|||||||
permission_required = 'virtualization.change_clustergroup'
|
permission_required = 'virtualization.change_clustergroup'
|
||||||
|
|
||||||
|
|
||||||
|
class ClusterGroupBulkImportView(PermissionRequiredMixin, BulkImportView):
|
||||||
|
permission_required = 'virtualization.add_clustergroup'
|
||||||
|
model_form = forms.ClusterGroupCSVForm
|
||||||
|
table = tables.ClusterGroupTable
|
||||||
|
default_return_url = 'virtualization:clustergroup_list'
|
||||||
|
|
||||||
|
|
||||||
class ClusterGroupBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
class ClusterGroupBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||||
permission_required = 'virtualization.delete_clustergroup'
|
permission_required = 'virtualization.delete_clustergroup'
|
||||||
cls = ClusterGroup
|
cls = ClusterGroup
|
||||||
|
Reference in New Issue
Block a user