Skip to content

Commit

Permalink
Refactor UI: Catalog/Request /instance pages
Browse files Browse the repository at this point in the history
Closes #103
  • Loading branch information
Sispheor committed Aug 3, 2021
1 parent 8dc1e9e commit f68cf67
Show file tree
Hide file tree
Showing 41 changed files with 194 additions and 203 deletions.
2 changes: 1 addition & 1 deletion project-static/squest/js/squest.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ $(document).ready( function () {
$('#tower_list').DataTable();
$('#job_template_list').DataTable();
$('#service_list').DataTable();
$('#customer_request_list').DataTable();
$('#request_list').DataTable();
$('#customer_request_operation_list').DataTable();

$('[data-toggle="popover"]').popover({
Expand Down
9 changes: 7 additions & 2 deletions service_catalog/templatetags/admin_data.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from django import template
from guardian.shortcuts import get_objects_for_user

from service_catalog.models import Request, Support
from service_catalog.models.request import RequestState
Expand All @@ -7,8 +8,12 @@


@register.simple_tag
def submitted_request():
return Request.objects.filter(state=RequestState.SUBMITTED).count()
def submitted_request(user):
if user.is_staff:
return Request.objects.filter(state=RequestState.SUBMITTED).count()
else:
objects = get_objects_for_user(user, 'service_catalog.view_request')
return objects.filter(state=RequestState.SUBMITTED).count()


@register.simple_tag
Expand Down
11 changes: 4 additions & 7 deletions service_catalog/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@
path('', views.dashboards, name='home'),
path('dashboards/', views.dashboards, name='dashboards'),
path('tasks/<int:task_id>/', views.get_task_result, name='get_task_result'),
path('requests/', views.request_list, name='request_list'),
path('services/', views.service_list, name='service_list'),
path('instances/', views.instance_list, name='instance_list'),

# settings URLs
path('settings/tower/', views.list_tower, name='list_tower'),
Expand All @@ -23,7 +26,7 @@
path('settings/tower/<int:tower_id>/job_templates/<int:job_template_id>/delete', views.delete_job_template,
name='delete_job_template'),

path('settings/catalog/service/', views.service_list, name='service_list'),
path('settings/catalog/service/', views.manage_services, name='manage_services'),
path('settings/catalog/service/add_service/', views.add_service, name='create_service'),
path('settings/catalog/service/<int:service_id>/operations/', views.service_operations, name='service_operations'),
path('settings/catalog/service/<int:service_id>/delete/', views.delete_service, name='delete_service'),
Expand All @@ -44,14 +47,10 @@
name='ajax_load_model_state'),

# customer views URLs
path('customer/catalog/service/', views.customer_list_service, name='customer_service_list'),
path('customer/catalog/service/<int:service_id>/request/', views.customer_service_request,
name='customer_service_request'),
path('customer/request/', views.customer_request_list, name='customer_request_list'),
path('customer/request/<int:request_id>/cancel/', views.customer_request_cancel, name='customer_request_cancel'),
path('customer/request/<int:request_id>/comment/', views.customer_request_comment, name='customer_request_comment'),

path('customer/instance/', views.customer_instance_list, name='customer_instance_list'),
path('customer/instance/<int:instance_id>/', views.customer_instance_details, name='customer_instance_details'),
path('customer/instance/<int:instance_id>/new-support/', views.customer_instance_new_support,
name='customer_instance_new_support'),
Expand All @@ -63,7 +62,6 @@
views.customer_instance_request_new_operation, name='customer_instance_request_new_operation'),

# admin views URLs
path('admin/request/', views.admin_request_list, name='admin_request_list'),
path('admin/request/<int:request_id>/comment/', views.admin_request_comment, name='admin_request_comment'),
path('admin/request/<int:request_id>/cancel/', views.admin_request_cancel, name='admin_request_cancel'),
path('admin/request/<int:request_id>/need-info/', views.admin_request_need_info, name='admin_request_need_info'),
Expand All @@ -72,7 +70,6 @@
path('admin/request/<int:request_id>/accept/', views.admin_request_accept, name='admin_request_accept'),
path('admin/request/<int:request_id>/process/', views.admin_request_process, name='admin_request_process'),

path('admin/instance/', views.admin_instance_list, name='admin_instance_list'),
path('admin/instance/<int:instance_id>/', views.admin_instance_details, name='admin_instance_details'),
path('admin/instance/<int:instance_id>/new-support/', views.admin_instance_new_support,
name='admin_instance_new_support'),
Expand Down
40 changes: 28 additions & 12 deletions service_catalog/views/admin/catalog.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@


@user_passes_test(lambda u: u.is_superuser)
def service_list(request):
def manage_services(request):
services = Service.objects.all()
return render(request, 'service_catalog/settings/catalog/service/service-list.html', {'services': services})
return render(request, 'service_catalog/admin/service/service-list.html', {'services': services})


@user_passes_test(lambda u: u.is_superuser)
Expand All @@ -30,10 +30,12 @@ def add_service(request):
form = ServiceForm()
breadcrumbs = [
{'text': 'Service catalog', 'url': reverse('service_catalog:service_list')},
{'text': 'Manage services', 'url': reverse('service_catalog:manage_services')},
{'text': 'Create a new service', 'url': ""},
]
context = {'form': form, 'breadcrumbs': breadcrumbs}
return render(request, 'service_catalog/settings/catalog/service/service-create.html', context)
return render(request,
'service_catalog/admin/service/service-create.html', context)


@user_passes_test(lambda u: u.is_superuser)
Expand All @@ -42,6 +44,7 @@ def service_operations(request, service_id):
operations = Operation.objects.filter(service=target_service)
breadcrumbs = [
{'text': 'Service catalog', 'url': reverse('service_catalog:service_list')},
{'text': 'Manage services', 'url': reverse('service_catalog:manage_services')},
{'text': target_service.name, 'url': ""},
{'text': 'Operations', 'url': ""},
]
Expand All @@ -50,24 +53,27 @@ def service_operations(request, service_id):
"service": target_service,
'breadcrumbs': breadcrumbs
}
return render(request, "service_catalog/settings/catalog/service/operation/operation-list.html", context)
return render(request,
"service_catalog/admin/service/operation/operation-list.html", context)


@user_passes_test(lambda u: u.is_superuser)
def delete_service(request, service_id):
target_service = get_object_or_404(Service, id=service_id)
if request.method == "POST":
target_service.delete()
return redirect('service_catalog:service_list')
return redirect('service_catalog:manage_services')
breadcrumbs = [
{'text': 'Service catalog', 'url': reverse('service_catalog:service_list')},
{'text': 'Manage services', 'url': reverse('service_catalog:manage_services')},
{'text': target_service.name, 'url': ""},
]
context = {
'object': target_service,
'breadcrumbs': breadcrumbs
}
return render(request, "service_catalog/settings/catalog/service/service-delete.html", context)
return render(request,
"service_catalog/admin/service/service-delete.html", context)


@user_passes_test(lambda u: u.is_superuser)
Expand All @@ -77,13 +83,15 @@ def edit_service(request, service_id):
form = EditServiceForm(request.POST or None, request.FILES or None, instance=target_service)
if form.is_valid():
form.save()
return redirect('service_catalog:service_list')
return redirect('service_catalog:manage_services')
breadcrumbs = [
{'text': 'Service catalog', 'url': reverse('service_catalog:service_list')},
{'text': 'Manage services', 'url': reverse('service_catalog:manage_services')},
{'text': target_service.name, 'url': ""},
]
context = {'form': form, 'service': target_service, 'breadcrumbs': breadcrumbs}
return render(request, 'service_catalog/settings/catalog/service/service-edit.html', context)
return render(request,
'service_catalog/admin/service/service-edit.html', context)


@user_passes_test(lambda u: u.is_superuser)
Expand All @@ -101,11 +109,13 @@ def add_service_operation(request, service_id):
form = AddServiceOperationForm()
breadcrumbs = [
{'text': 'Service catalog', 'url': reverse('service_catalog:service_list')},
{'text': 'Manage services', 'url': reverse('service_catalog:manage_services')},
{'text': target_service.name, 'url': reverse('service_catalog:service_operations', args=[service_id])},
{'text': 'Create a new operation', 'url': ""},
]
context = {'form': form, 'service': target_service, 'breadcrumbs': breadcrumbs}
return render(request, 'service_catalog/settings/catalog/service/operation/operation-create.html', context)
return render(request,
'service_catalog/admin/service/operation/operation-create.html', context)


@user_passes_test(lambda u: u.is_superuser)
Expand All @@ -120,6 +130,7 @@ def delete_service_operation(request, service_id, operation_id):
return redirect('service_catalog:service_operations', service_id=target_service.id)
breadcrumbs = [
{'text': 'Service catalog', 'url': reverse('service_catalog:service_list')},
{'text': 'Manage services', 'url': reverse('service_catalog:manage_services')},
{'text': target_service.name, 'url': reverse('service_catalog:service_operations', args=[service_id])},
{'text': target_operation.name, 'url': ""},
]
Expand All @@ -128,7 +139,8 @@ def delete_service_operation(request, service_id, operation_id):
'service': target_service,
'breadcrumbs': breadcrumbs
}
return render(request, "service_catalog/settings/catalog/service/operation/operation-delete.html", context)
return render(request,
"service_catalog/admin/service/operation/operation-delete.html", context)


@user_passes_test(lambda u: u.is_superuser)
Expand All @@ -142,6 +154,7 @@ def edit_service_operation(request, service_id, operation_id):
return redirect('service_catalog:service_operations', service_id=target_service.id)
breadcrumbs = [
{'text': 'Service catalog', 'url': reverse('service_catalog:service_list')},
{'text': 'Manage services', 'url': reverse('service_catalog:manage_services')},
{'text': target_service.name, 'url': reverse('service_catalog:service_operations', args=[service_id])},
{'text': target_operation.name, 'url': ""},
]
Expand All @@ -150,7 +163,8 @@ def edit_service_operation(request, service_id, operation_id):
'operation': target_operation,
'breadcrumbs': breadcrumbs
}
return render(request, 'service_catalog/settings/catalog/service/operation/operation-edit.html', context)
return render(request,
'service_catalog/admin/service/operation/operation-edit.html', context)


@user_passes_test(lambda u: u.is_superuser)
Expand All @@ -169,11 +183,13 @@ def service_operation_edit_survey(request, service_id, operation_id):
form = SurveySelectorForm(**parameters)
breadcrumbs = [
{'text': 'Service catalog', 'url': reverse('service_catalog:service_list')},
{'text': 'Manage services', 'url': reverse('service_catalog:manage_services')},
{'text': target_service.name, 'url': reverse('service_catalog:service_operations', args=[service_id])},
{'text': target_operation.name, 'url': ""},
]
context = {'form': form,
'service': target_service,
'operation': target_operation,
'breadcrumbs': breadcrumbs}
return render(request, 'service_catalog/settings/catalog/service/operation/operation-edit-survey.html', context)
return render(request,
'service_catalog/admin/service/operation/operation-edit-survey.html', context)
15 changes: 4 additions & 11 deletions service_catalog/views/admin/instance.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,26 +4,19 @@
from django.shortcuts import render, get_object_or_404, redirect
from django.urls import reverse

from service_catalog.filters.instance_filter import InstanceFilter
from service_catalog.forms import InstanceForm
from service_catalog.models import Instance, Support
from service_catalog.views import instance_new_support, instance_support_details


@user_passes_test(lambda u: u.is_superuser)
def admin_instance_list(request):
instances_filtered = InstanceFilter(request.GET, queryset=Instance.objects.all())
return render(request, 'service_catalog/admin/instance/instance-list.html', {'instances': instances_filtered})


@user_passes_test(lambda u: u.is_superuser)
def admin_instance_details(request, instance_id):
instance = get_object_or_404(Instance, id=instance_id)
spec_json_pretty = json.dumps(instance.spec)

supports = Support.objects.filter(instance=instance)
breadcrumbs = [
{'text': 'Instances', 'url': reverse('service_catalog:admin_instance_list')},
{'text': 'Instances', 'url': reverse('service_catalog:instance_list')},
{'text': f"{instance.name} ({instance.id})", 'url': ""},
]
context = {'instance': instance,
Expand All @@ -38,7 +31,7 @@ def admin_instance_details(request, instance_id):
def admin_instance_new_support(request, instance_id):
instance = get_object_or_404(Instance, id=instance_id)
breadcrumbs = [
{'text': 'Instances', 'url': reverse('service_catalog:admin_instance_list')},
{'text': 'Instances', 'url': reverse('service_catalog:instance_list')},
{'text': f"{instance.name} ({instance.id})",
'url': reverse('service_catalog:admin_instance_details', args=[instance.id])},
]
Expand All @@ -50,7 +43,7 @@ def admin_instance_support_details(request, instance_id, support_id):
instance = get_object_or_404(Instance, id=instance_id)
support = get_object_or_404(Support, id=support_id)
breadcrumbs = [
{'text': 'Instances', 'url': reverse('service_catalog:admin_instance_list')},
{'text': 'Instances', 'url': reverse('service_catalog:instance_list')},
{'text': f"{instance.name} ({instance.id})",
'url': reverse('service_catalog:admin_instance_details', args=[instance.id])},
{'text': 'Support', 'url': reverse('service_catalog:admin_support_list')},
Expand All @@ -68,7 +61,7 @@ def admin_instance_edit(request, instance_id):
form.save()
return redirect('service_catalog:admin_instance_details', instance.id)
breadcrumbs = [
{'text': 'Instances', 'url': reverse('service_catalog:admin_instance_list')},
{'text': 'Instances', 'url': reverse('service_catalog:instance_list')},
{'text': f"{instance.name} ({instance.id})",
'url': reverse('service_catalog:admin_instance_details', args=[instance_id])},
]
Expand Down
32 changes: 13 additions & 19 deletions service_catalog/views/admin/request.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,6 @@
logger = logging.getLogger(__name__)


@user_passes_test(lambda u: u.is_superuser)
def admin_request_list(request):
f = RequestFilter(request.GET, queryset=Request.objects.all())
return render(request, 'service_catalog/admin/request/request-list.html', {'filter': f})


@user_passes_test(lambda u: u.is_superuser)
def admin_request_cancel(request, request_id):
target_request = get_object_or_404(Request, id=request_id)
Expand All @@ -33,9 +27,9 @@ def admin_request_cancel(request, request_id):
request_owner_user=target_request.user)
# now delete the request and the pending instance
target_request.delete()
return redirect('service_catalog:admin_request_list')
return redirect('service_catalog:request_list')
breadcrumbs = [
{'text': 'Requests', 'url': reverse('service_catalog:admin_request_list')},
{'text': 'Requests', 'url': reverse('service_catalog:request_list')},
{'text': request_id, 'url': ""},
]
context = {
Expand Down Expand Up @@ -63,11 +57,11 @@ def admin_request_need_info(request, request_id):
target_request.save()
message = form.cleaned_data['message']
send_mail_request_update(target_request, user_applied_state=request.user, message=message)
return redirect('service_catalog:admin_request_list')
return redirect('service_catalog:request_list')
else:
form = MessageOnRequestForm(request.user, **parameters)
breadcrumbs = [
{'text': 'Requests', 'url': reverse('service_catalog:admin_request_list')},
{'text': 'Requests', 'url': reverse('service_catalog:request_list')},
{'text': request_id, 'url': ""},
]
context = {
Expand All @@ -94,11 +88,11 @@ def admin_request_re_submit(request, request_id):
target_request.re_submit()
target_request.save()
send_mail_request_update(target_request, user_applied_state=request.user)
return redirect('service_catalog:admin_request_list')
return redirect('service_catalog:request_list')
else:
form = MessageOnRequestForm(request.user, **parameters)
breadcrumbs = [
{'text': 'Requests', 'url': reverse('service_catalog:admin_request_list')},
{'text': 'Requests', 'url': reverse('service_catalog:request_list')},
{'text': request_id, 'url': ""},
]
context = {
Expand Down Expand Up @@ -126,11 +120,11 @@ def admin_request_reject(request, request_id):
target_request.save()
message = form.cleaned_data['message']
send_mail_request_update(target_request, user_applied_state=request.user, message=message)
return redirect('service_catalog:admin_request_list')
return redirect('service_catalog:request_list')
else:
form = MessageOnRequestForm(request.user, **parameters)
breadcrumbs = [
{'text': 'Requests', 'url': reverse('service_catalog:admin_request_list')},
{'text': 'Requests', 'url': reverse('service_catalog:request_list')},
{'text': request_id, 'url': ""},
]
context = {
Expand All @@ -153,11 +147,11 @@ def admin_request_accept(request, request_id):
form.save()
target_request.refresh_from_db()
send_mail_request_update(target_request, user_applied_state=request.user)
return redirect('service_catalog:admin_request_list')
return redirect('service_catalog:request_list')
else:
form = AcceptRequestForm(request.user, initial=target_request.fill_in_survey, **parameters)
breadcrumbs = [
{'text': 'Requests', 'url': reverse('service_catalog:admin_request_list')},
{'text': 'Requests', 'url': reverse('service_catalog:request_list')},
{'text': request_id, 'url': ""},
]
context = {
Expand Down Expand Up @@ -204,9 +198,9 @@ def admin_request_process(request, request_id):
if not error:
target_request.save()
send_mail_request_update(target_request, user_applied_state=request.user)
return redirect('service_catalog:admin_request_list')
return redirect('service_catalog:request_list')
breadcrumbs = [
{'text': 'Requests', 'url': reverse('service_catalog:admin_request_list')},
{'text': 'Requests', 'url': reverse('service_catalog:request_list')},
{'text': request_id, 'url': ""},
]
context = {
Expand All @@ -220,7 +214,7 @@ def admin_request_process(request, request_id):
@user_passes_test(lambda u: u.is_superuser)
def admin_request_comment(request, request_id):
breadcrumbs = [
{'text': 'Requests', 'url': reverse('service_catalog:admin_request_list')},
{'text': 'Requests', 'url': reverse('service_catalog:request_list')},
{'text': request_id, 'url': ""},
]
return request_comment(request, request_id, 'service_catalog:admin_request_comment', breadcrumbs)
Loading

0 comments on commit f68cf67

Please sign in to comment.