From 9d88f27e8c26382b4a34ff67bd3d4add7e206901 Mon Sep 17 00:00:00 2001 From: Anthony Belhadj Date: Tue, 21 Nov 2023 20:44:08 +0100 Subject: [PATCH] Add view who can accept --- .../migrations/0035_alter_request_options.py | 17 +++++++++++ service_catalog/models/approval_step_state.py | 7 +++-- service_catalog/models/request.py | 1 + service_catalog/views/filters.py | 6 ++++ .../request_details/approval.html | 30 ++++++++++++++++++- 5 files changed, 58 insertions(+), 3 deletions(-) create mode 100644 service_catalog/migrations/0035_alter_request_options.py diff --git a/service_catalog/migrations/0035_alter_request_options.py b/service_catalog/migrations/0035_alter_request_options.py new file mode 100644 index 000000000..7721a9b21 --- /dev/null +++ b/service_catalog/migrations/0035_alter_request_options.py @@ -0,0 +1,17 @@ +# Generated by Django 4.2.6 on 2023-11-16 13:19 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('service_catalog', '0034_alter_request_approval_workflow_state'), + ] + + operations = [ + migrations.AlterModelOptions( + name='request', + options={'default_permissions': ('add', 'change', 'delete', 'view', 'list'), 'ordering': ['-last_updated'], 'permissions': [('accept_request', 'Can accept request'), ('cancel_request', 'Can cancel request'), ('reject_request', 'Can reject request'), ('archive_request', 'Can archive request'), ('unarchive_request', 'Can unarchive request'), ('re_submit_request', 'Can re-submit request'), ('process_request', 'Can process request'), ('need_info_request', 'Can ask info request'), ('view_admin_survey', 'Can view admin survey'), ('list_approvers', 'Can view who can accept')]}, + ), + ] diff --git a/service_catalog/models/approval_step_state.py b/service_catalog/models/approval_step_state.py index 6671b5f93..223747c12 100644 --- a/service_catalog/models/approval_step_state.py +++ b/service_catalog/models/approval_step_state.py @@ -6,7 +6,6 @@ class ApprovalStepState(SquestModel): - class Meta: unique_together = ('approval_workflow_state', 'approval_step') ordering = ("approval_step__position",) @@ -61,7 +60,11 @@ def get_scopes(self): return self.approval_workflow_state.get_scopes() def who_can_approve(self): - return self.approval_workflow_state.request.instance.quota_scope.who_has_perm(self.approval_step.permission.permission_str) + return self.approval_workflow_state.request.instance.quota_scope.who_has_perm( + self.approval_step.permission.permission_str) + + def who_can_accept(self): + return self.who_can_approve() @classmethod def get_q_filter(cls, user, perm): diff --git a/service_catalog/models/request.py b/service_catalog/models/request.py index cc9c53103..67e258329 100644 --- a/service_catalog/models/request.py +++ b/service_catalog/models/request.py @@ -39,6 +39,7 @@ class Meta: ("process_request", "Can process request"), ("need_info_request", "Can ask info request"), ("view_admin_survey", "Can view admin survey"), + ("list_approvers", "Can view who can accept"), ] default_permissions = ('add', 'change', 'delete', 'view', 'list') diff --git a/service_catalog/views/filters.py b/service_catalog/views/filters.py index 8bc8dcd93..5f023a640 100644 --- a/service_catalog/views/filters.py +++ b/service_catalog/views/filters.py @@ -2,6 +2,7 @@ import markdown as md from django.conf import settings +from django.contrib.auth.models import User from django.template.defaultfilters import stringfilter from django.template.defaulttags import register from django.utils.safestring import mark_safe @@ -181,3 +182,8 @@ def display_boolean(boolean_value): return mark_safe('') else: return mark_safe('') + + +@register.simple_tag() +def who_can_approve(object): + return object.who_can_accept() diff --git a/templates/service_catalog/request_details/approval.html b/templates/service_catalog/request_details/approval.html index 448a62de8..810102eb5 100644 --- a/templates/service_catalog/request_details/approval.html +++ b/templates/service_catalog/request_details/approval.html @@ -3,9 +3,10 @@ {% has_perm request.user "service_catalog.re_submit_request" object as can_re_submit_request %} {% has_perm request.user "service_catalog.reject_request" object as can_reject_request %} {% has_perm request.user "service_catalog.accept_request" object as can_accept_request %} -{% has_perm request.user "service_catalog.process_request" object as can_process_request %} +{% has_perm request.user "service_catalog.list_approvers" object as list_approvers %} {% has_perm request.user "service_catalog.view_admin_spec_instance" object.instance as can_view_admin_spec_instance %} +
@@ -56,6 +57,21 @@

Requested by

{{ step.approval_step.name }}

+ + {% if list_approvers %} + {% who_can_approve step as list_who_can_approve %} +
+ Approvers + + {% for user in list_who_can_approve %} + + + + {% endfor %} +
{{ user.username }}
+
+ {% endif %} + {% if step.get_state_display == "APPROVED" %}
Survey @@ -143,6 +159,18 @@

{{ step.approval_step.name }}

Admin review

+ {% if list_approvers %} +
+ Approvers + + {% for user in list_who_can_approve %} + + + + {% endfor %} +
{{ user.username }}
+
+ {% endif %} {% if object.get_state_display == "SUBMITTED" %}
This request is waiting for an approval