-
-
-
-
+
+
+ Make Request
+
+
-
-
-
-
+
Open Requests
+
+
+
+
+ Request Type
+ Created
+ Modified
+ Status
+
+
+
+
+ {% for obj in requests %}
+
+ {{ obj.get_request_type }}
+ {{ obj.date_created|date:"Y-m-d H:i" }}
+ {{ obj.date_modified|date:"Y-m-d H:i" }}
+ {{ obj.status }}
+
+
+ {% if is_decided %}
+
+
+
+ {% endif %}
+
+
+
+
+
+
+ {% empty %}
+
+
+ No pending requests.
+
+
+ {% endfor %}
+
+
+
+
Group Members
+
+
+
+
+ Name
+ Username
+ Joined
+ Expires
+
+
+
+
+ {% for member in object.primary_group.hpcuser.all|order_by:"user__name" %}
+
+ {{ member.user.name }}
+ {{ member.username }}
+ {{ member.date_created|date:"Y-m-d H:i" }}
+ {{ member.expiration|date:"Y-m-d H:i" }}
+
+
+
+
+ {% empty %}
+
+
+ No users.
+
+
+ {% endfor %}
+
+
+
+
Projects
+
+
+
+
+ Name
+ Delegate
+ Created
+ Expires
+
+
+
+
+ {% for project in object.hpcproject_members.all|order_by:"name" %}
+
+ {{ project.name }}
+ {{ project.delegate.user.name|default:"None " }}
+ {{ project.date_created|date:"Y-m-d H:i" }}
+ {{ project.expiration|date:"Y-m-d H:i" }}
+
+
+
+
+ {% empty %}
+
+
+ No projects.
+
+
+ {% endfor %}
+
+
+
{% block inline_javascript %}
-
-{% endblock inline_javascript %}
diff --git a/usersec/templates/usersec/modules/request_grid_group_change.html b/usersec/templates/usersec/modules/request_grid_group_change.html
deleted file mode 100644
index a28fe9b..0000000
--- a/usersec/templates/usersec/modules/request_grid_group_change.html
+++ /dev/null
@@ -1,32 +0,0 @@
-{% load common %}
-
-
diff --git a/usersec/templates/usersec/modules/request_grid_group_create.html b/usersec/templates/usersec/modules/request_grid_group_create.html
deleted file mode 100644
index 5fe44c8..0000000
--- a/usersec/templates/usersec/modules/request_grid_group_create.html
+++ /dev/null
@@ -1,25 +0,0 @@
-{% load common %}
-
-
-
-
- {% for obj in hpcgroupcreaterequests %}
-
- {{ obj.requester.username }}
-
- {{ obj.display_status }}
-
-
- {{ obj.date_created|date:"Y-m-d H:i" }}
-
-
- {% empty %}
- No requests.
- {% endfor %}
-
-
diff --git a/usersec/templates/usersec/modules/request_grid_group_delete.html b/usersec/templates/usersec/modules/request_grid_group_delete.html
deleted file mode 100644
index 05f56c2..0000000
--- a/usersec/templates/usersec/modules/request_grid_group_delete.html
+++ /dev/null
@@ -1,29 +0,0 @@
-{% load common %}
-
-
-
-
- {% for obj in hpcgroupdeleterequests %}
-
- {{ obj.requester.username }}
-
- {{ obj.display_status }}
-
-
- {% empty %}
- No requests.
- {% endfor %}
-
-
diff --git a/usersec/templates/usersec/modules/request_grid_no_permission.html b/usersec/templates/usersec/modules/request_grid_no_permission.html
deleted file mode 100644
index 47c15da..0000000
--- a/usersec/templates/usersec/modules/request_grid_no_permission.html
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
You do not have permission to {{ request }} a {{ obj }}.
-
-
diff --git a/usersec/templates/usersec/modules/request_grid_project_change.html b/usersec/templates/usersec/modules/request_grid_project_change.html
deleted file mode 100644
index 1eb9504..0000000
--- a/usersec/templates/usersec/modules/request_grid_project_change.html
+++ /dev/null
@@ -1,43 +0,0 @@
-{% load common %}
-
-
diff --git a/usersec/templates/usersec/modules/request_grid_project_create.html b/usersec/templates/usersec/modules/request_grid_project_create.html
deleted file mode 100644
index b7cb14d..0000000
--- a/usersec/templates/usersec/modules/request_grid_project_create.html
+++ /dev/null
@@ -1,33 +0,0 @@
-{% load common %}
-
-
diff --git a/usersec/templates/usersec/modules/request_grid_project_delete.html b/usersec/templates/usersec/modules/request_grid_project_delete.html
deleted file mode 100644
index 73b6ab8..0000000
--- a/usersec/templates/usersec/modules/request_grid_project_delete.html
+++ /dev/null
@@ -1,29 +0,0 @@
-{% load common %}
-
-
-
-
- {% for obj in hpcprojectdeleterequests %}
-
- {{ obj.requester.username }}
-
- {{ obj.display_status }}
-
-
- {% empty %}
- No requests.
- {% endfor %}
-
-
diff --git a/usersec/templates/usersec/modules/request_grid_user_change.html b/usersec/templates/usersec/modules/request_grid_user_change.html
deleted file mode 100644
index de944ad..0000000
--- a/usersec/templates/usersec/modules/request_grid_user_change.html
+++ /dev/null
@@ -1,36 +0,0 @@
-{% load common %}
-
-
diff --git a/usersec/templates/usersec/modules/request_grid_user_create.html b/usersec/templates/usersec/modules/request_grid_user_create.html
deleted file mode 100644
index 1189eae..0000000
--- a/usersec/templates/usersec/modules/request_grid_user_create.html
+++ /dev/null
@@ -1,33 +0,0 @@
-{% load common %}
-
-
diff --git a/usersec/templates/usersec/modules/request_grid_user_delete.html b/usersec/templates/usersec/modules/request_grid_user_delete.html
deleted file mode 100644
index 7782531..0000000
--- a/usersec/templates/usersec/modules/request_grid_user_delete.html
+++ /dev/null
@@ -1,29 +0,0 @@
-{% load common %}
-
-
-
-
- {% for obj in hpcuserdeleterequests %}
-
- {{ obj.requester.username }}
-
- {{ obj.display_status }}
-
-
- {% empty %}
- No requests.
- {% endfor %}
-
-
diff --git a/usersec/templates/usersec/modules/request_status_card.html b/usersec/templates/usersec/modules/request_status_card.html
new file mode 100644
index 0000000..544b8f4
--- /dev/null
+++ b/usersec/templates/usersec/modules/request_status_card.html
@@ -0,0 +1,27 @@
+{% load common %}
+
+
+
+ {% if object.status == "ACTIVE" or object.status == "REVISED" %}
+ We are working on your request and you will receive an email once we approve it.
+ {% elif object.status == "RETRACTED" %}
+ You have retracted your request. Click
Re-activate to activate the request.
+ {% elif object.status == "REVISION" %}
+ We have asked you to revise your request with the following comment:
+
+ {% with object.get_comment_history|last as comment %}
+ "{{ comment.2 }}"
+ {% endwith %}
+
+ {% elif object.status == "APPROVED" %}
+ We have approved your request.
+ {% elif object.status == "DENIED" %}
+ We have denied your request with the following comment:
+
+ {% with object.get_comment_history|last as comment %}
+ "{{ comment.2 }}"
+ {% endwith %}
+
+ {% endif %}
+
+
\ No newline at end of file
diff --git a/usersec/templatetags/common.py b/usersec/templatetags/common.py
index 883d533..1eac8cc 100644
--- a/usersec/templatetags/common.py
+++ b/usersec/templatetags/common.py
@@ -52,9 +52,9 @@ def site_version():
REQUEST_STATUS_INITIAL: "info",
REQUEST_STATUS_ACTIVE: "info",
REQUEST_STATUS_REVISION: "warning",
- REQUEST_STATUS_REVISED: "secondary",
+ REQUEST_STATUS_REVISED: "info",
REQUEST_STATUS_APPROVED: "success",
- REQUEST_STATUS_DENIED: "secondary",
+ REQUEST_STATUS_DENIED: "danger",
REQUEST_STATUS_RETRACTED: "secondary",
}
@@ -65,6 +65,16 @@ def colorize_request_status(status):
return REQUEST_STATUS_COLOR_MAPPING.get(status, "dark")
+@register.filter
+def colorize_text(status):
+ """Return the color for a given status."""
+ color = REQUEST_STATUS_COLOR_MAPPING.get(status, "dark")
+ if color in ("warning", "info"):
+ return "dark"
+ else:
+ return "light"
+
+
@register.filter
def colorize_object_status(status):
"""Return the color for a given status."""
diff --git a/usersec/urls.py b/usersec/urls.py
index 290fc9e..284eaa5 100644
--- a/usersec/urls.py
+++ b/usersec/urls.py
@@ -50,6 +50,11 @@
view=views.HpcGroupCreateRequestDeleteView.as_view(),
name="hpcgroupcreaterequest-delete",
),
+ path(
+ "hpcgroupcreaterequest/
/archive/",
+ view=views.HpcGroupCreateRequestArchiveView.as_view(),
+ name="hpcgroupcreaterequest-archive",
+ ),
# ------------------------------------------------------------------------------
# HpcGroupChangeRequest related
# ------------------------------------------------------------------------------
@@ -83,6 +88,11 @@
view=views.HpcGroupChangeRequestDeleteView.as_view(),
name="hpcgroupchangerequest-delete",
),
+ path(
+ "hpcgroupchangerequest//archive/",
+ view=views.HpcGroupChangeRequestArchiveView.as_view(),
+ name="hpcgroupchangerequest-archive",
+ ),
# ------------------------------------------------------------------------------
# HpcGroupDeleteRequest related
# ------------------------------------------------------------------------------
@@ -116,6 +126,11 @@
view=views.HpcGroupDeleteRequestDeleteView.as_view(),
name="hpcgroupdeleterequest-delete",
),
+ path(
+ "hpcgroupdeleterequest//archive/",
+ view=views.HpcGroupDeleteRequestArchiveView.as_view(),
+ name="hpcgroupdeleterequest-archive",
+ ),
# ------------------------------------------------------------------------------
# HpcUser related
# ------------------------------------------------------------------------------
@@ -162,6 +177,11 @@
view=views.HpcUserCreateRequestDeleteView.as_view(),
name="hpcusercreaterequest-delete",
),
+ path(
+ "hpcusercreaterequest//archive/",
+ view=views.HpcUserCreateRequestArchiveView.as_view(),
+ name="hpcusercreaterequest-archive",
+ ),
# ------------------------------------------------------------------------------
# HpcUserChangeRequest related
# ------------------------------------------------------------------------------
@@ -228,6 +248,11 @@
view=views.HpcUserDeleteRequestDeleteView.as_view(),
name="hpcuserdeleterequest-delete",
),
+ path(
+ "hpcuserdeleterequest//archive/",
+ view=views.HpcUserDeleteRequestArchiveView.as_view(),
+ name="hpcuserdeleterequest-archive",
+ ),
# ------------------------------------------------------------------------------
# HpcProject related
# ------------------------------------------------------------------------------
@@ -269,6 +294,11 @@
view=views.HpcProjectCreateRequestDeleteView.as_view(),
name="hpcprojectcreaterequest-delete",
),
+ path(
+ "hpcprojectcreaterequest//archive/",
+ view=views.HpcProjectCreateRequestArchiveView.as_view(),
+ name="hpcprojectcreaterequest-archive",
+ ),
# ------------------------------------------------------------------------------
# HpcProjectChangeRequest related
# ------------------------------------------------------------------------------
@@ -302,6 +332,11 @@
view=views.HpcProjectChangeRequestDeleteView.as_view(),
name="hpcprojectchangerequest-delete",
),
+ path(
+ "hpcprojectchangerequest//archive/",
+ view=views.HpcProjectChangeRequestArchiveView.as_view(),
+ name="hpcprojectchangerequest-archive",
+ ),
# ------------------------------------------------------------------------------
# HpcProjectDeleteRequest related
# ------------------------------------------------------------------------------
@@ -335,6 +370,11 @@
view=views.HpcProjectDeleteRequestDeleteView.as_view(),
name="hpcprojectdeleterequest-delete",
),
+ path(
+ "hpcprojectdeleterequest//archive/",
+ view=views.HpcProjectDeleteRequestArchiveView.as_view(),
+ name="hpcprojectdeleterequest-archive",
+ ),
# ------------------------------------------------------------------------------
# HpcGroupInvitation related
# ------------------------------------------------------------------------------
diff --git a/usersec/views.py b/usersec/views.py
index 3a848cb..521b4b4 100644
--- a/usersec/views.py
+++ b/usersec/views.py
@@ -44,7 +44,11 @@
INVITATION_STATUS_REJECTED,
OBJECT_STATUS_ACTIVE,
REQUEST_STATUS_ACTIVE,
+ REQUEST_STATUS_APPROVED,
+ REQUEST_STATUS_ARCHIVED,
+ REQUEST_STATUS_DENIED,
REQUEST_STATUS_RETRACTED,
+ REQUEST_STATUS_REVISED,
REQUEST_STATUS_REVISION,
TERMS_AUDIENCE_ALL,
TERMS_AUDIENCE_PI,
@@ -74,11 +78,8 @@
MSG_PART_SUBMITTED = "submitted"
MSG_PART_UPDATE = "update"
MSG_PART_UPDATED = "updated"
-MSG_PART_RETRACT = "retract"
-MSG_PART_RETRACTED = "retracted"
-MSG_PART_REACTIVATE = "re-activate"
-MSG_PART_REACTIVATED = "re-activated"
MSG_PART_DELETED = "deleted"
+MSG_PART_ARCHIVED = "archived"
MSG_PART_GROUP_CREATION = "group creation"
MSG_PART_GROUP_UPDATE = "group update"
MSG_PART_GROUP_DELETION = "group deletion"
@@ -104,14 +105,6 @@
MSG_TERMS_CONSENT = "Consented successfully to terms and conditions."
-# -----------------------------------------------------------------------------
-# Object comments
-# -----------------------------------------------------------------------------
-
-COMMENT_REACTIVATED = "Request re-activated"
-COMMENT_RETRACTED = "Request retracted"
-
-
class HpcPermissionMixin(LoginRequiredMixin, PermissionRequiredMixin):
"""Customized required login and permission mixin."""
@@ -211,9 +204,6 @@ def form_valid(self, form):
send_notification_manager_group_request(obj)
send_notification_admin_request(obj)
- messages.success(
- self.request, MSG_REQUEST_SUCCESS.format(MSG_PART_SUBMITTED, MSG_PART_GROUP_CREATION)
- )
return HttpResponseRedirect(self.get_success_url(obj.uuid))
@@ -236,6 +226,8 @@ def get_context_data(self, **kwargs):
context["is_active"] = obj.is_active()
context["is_revision"] = obj.is_revision()
context["is_revised"] = obj.is_revised()
+ context["is_archived"] = obj.is_archived()
+ context["is_hpc_group_create_request"] = True
return context
@@ -288,33 +280,23 @@ def form_valid(self, form):
)
return HttpResponseRedirect(reverse("usersec:orphan-user"))
- # No email notification required
- messages.success(
- self.request, MSG_REQUEST_SUCCESS.format(MSG_PART_UPDATED, MSG_PART_GROUP_CREATION)
- )
return HttpResponseRedirect(self.get_success_url())
-class HpcGroupCreateRequestRetractView(HpcPermissionMixin, DeleteView):
+class HpcGroupCreateRequestRetractView(HpcPermissionMixin, SingleObjectMixin, View):
"""HPC group create request update view."""
- template_name_suffix = "_retract_confirm"
model = HpcGroupCreateRequest
slug_field = "uuid"
slug_url_kwarg = "hpcgroupcreaterequest"
permission_required = "usersec.manage_hpcgroupcreaterequest"
- def post(self, request, *args, **kwargs):
+ def get(self, request, *args, **kwargs):
obj = self.get_object()
- obj.comment = COMMENT_RETRACTED
obj.editor = self.request.user
+ obj.comment = ""
obj.retract_with_version()
- # No email notification required
- messages.success(
- self.request, MSG_REQUEST_SUCCESS.format(MSG_PART_RETRACTED, MSG_PART_GROUP_CREATION)
- )
-
return HttpResponseRedirect(
reverse(
"usersec:hpcgroupcreaterequest-detail",
@@ -334,22 +316,14 @@ class HpcGroupCreateRequestReactivateView(HpcPermissionMixin, SingleObjectMixin,
def get(self, request, *args, **kwargs):
obj = self.get_object()
obj.status = REQUEST_STATUS_ACTIVE
- obj.comment = COMMENT_REACTIVATED
obj.editor = self.request.user
+ obj.comment = ""
obj.save_with_version()
if settings.SEND_EMAIL:
send_notification_admin_request(obj)
- messages.success(
- self.request, MSG_REQUEST_SUCCESS.format(MSG_PART_REACTIVATED, MSG_PART_GROUP_CREATION)
- )
- return HttpResponseRedirect(
- reverse(
- "usersec:hpcgroupcreaterequest-detail",
- kwargs={"hpcgroupcreaterequest": obj.uuid},
- )
- )
+ return HttpResponseRedirect(reverse("home"))
class HpcGroupCreateRequestDeleteView(HpcPermissionMixin, DeleteView):
@@ -365,6 +339,23 @@ def get_success_url(self):
return reverse("home")
+class HpcGroupCreateRequestArchiveView(HpcPermissionMixin, SingleObjectMixin, View):
+ """HPC user change request archive view."""
+
+ model = HpcGroupCreateRequest
+ slug_field = "uuid"
+ slug_url_kwarg = "hpcgroupcreaterequest"
+ permission_required = "usersec.manage_hpcgroupcreaterequest"
+
+ def get(self, request, *args, **kwargs):
+ obj = self.get_object()
+ obj.status = REQUEST_STATUS_ARCHIVED
+ obj.editor = self.request.user
+ obj.save_with_version()
+
+ return HttpResponseRedirect(reverse("home"))
+
+
class HpcUserView(HpcPermissionMixin, DetailView):
"""HPC user overview."""
@@ -434,9 +425,16 @@ def get_requests_by_status(status):
context["hpcgroupdeleterequests"] = None
context["hpcuserdeleterequests"] = None
context["hpcprojectdeleterequests"] = None
- context["pending_requests"] = get_requests_by_status(REQUEST_STATUS_ACTIVE)
- context["revision_requests"] = get_requests_by_status(REQUEST_STATUS_REVISION)
- context["retracted_requests"] = get_requests_by_status(REQUEST_STATUS_RETRACTED)
+ context["requests"] = list(
+ chain(
+ get_requests_by_status(REQUEST_STATUS_ACTIVE),
+ get_requests_by_status(REQUEST_STATUS_REVISED),
+ get_requests_by_status(REQUEST_STATUS_REVISION),
+ get_requests_by_status(REQUEST_STATUS_RETRACTED),
+ get_requests_by_status(REQUEST_STATUS_APPROVED),
+ get_requests_by_status(REQUEST_STATUS_DENIED),
+ )
+ )
context["has_pending_group_change_request"] = HpcGroupChangeRequest.objects.filter(
group=group, status=REQUEST_STATUS_ACTIVE
).exists()
@@ -458,19 +456,14 @@ def get_requests_by_status(status):
context["pending_requests"] += list(
HpcProjectChangeRequest.objects.filter(
Q(project__group=group) | Q(project__delegate=context["object"]),
- status=REQUEST_STATUS_ACTIVE,
- )
- )
- context["revision_requests"] += list(
- HpcProjectChangeRequest.objects.filter(
- Q(project__group=group) | Q(project__delegate=context["object"]),
- status=REQUEST_STATUS_REVISION,
- )
- )
- context["retracted_requests"] += list(
- HpcProjectChangeRequest.objects.filter(
- Q(project__group=group) | Q(project__delegate=context["object"]),
- status=REQUEST_STATUS_RETRACTED,
+ status__in=(
+ REQUEST_STATUS_ACTIVE,
+ REQUEST_STATUS_REVISION,
+ REQUEST_STATUS_REVISED,
+ REQUEST_STATUS_RETRACTED,
+ REQUEST_STATUS_APPROVED,
+ REQUEST_STATUS_DENIED,
+ ),
)
)
projects_available |= context["object"].hpcproject_delegate.exists()
@@ -551,9 +544,6 @@ def form_valid(self, form):
if settings.SEND_EMAIL:
send_notification_admin_request(obj)
- messages.success(
- self.request, MSG_REQUEST_FAILURE.format(MSG_PART_SUBMITTED, MSG_PART_USER_CREATION)
- )
return HttpResponseRedirect(reverse("home"))
@@ -576,6 +566,7 @@ def get_context_data(self, **kwargs):
context["is_active"] = obj.is_active()
context["is_revision"] = obj.is_revision()
context["is_revised"] = obj.is_revised()
+ context["is_archived"] = obj.is_archived()
return context
@@ -630,31 +621,23 @@ def form_valid(self, form):
if settings.SEND_EMAIL:
send_notification_admin_request(obj)
- messages.success(
- self.request, MSG_REQUEST_SUCCESS.format(MSG_PART_UPDATED, MSG_PART_USER_CREATION)
- )
return HttpResponseRedirect(self.get_success_url())
-class HpcUserCreateRequestRetractView(HpcPermissionMixin, DeleteView):
+class HpcUserCreateRequestRetractView(HpcPermissionMixin, SingleObjectMixin, View):
"""HPC user create request update view."""
- template_name_suffix = "_retract_confirm"
model = HpcUserCreateRequest
slug_field = "uuid"
slug_url_kwarg = "hpcusercreaterequest"
permission_required = "usersec.manage_hpcusercreaterequest"
- def post(self, request, *args, **kwargs):
+ def get(self, request, *args, **kwargs):
obj = self.get_object()
- obj.comment = COMMENT_RETRACTED
obj.editor = self.request.user
+ obj.comment = ""
obj.retract_with_version()
- # No email notification required
- messages.success(
- self.request, MSG_REQUEST_SUCCESS.format(MSG_PART_RETRACTED, MSG_PART_USER_CREATION)
- )
return HttpResponseRedirect(
reverse(
"usersec:hpcusercreaterequest-detail",
@@ -674,22 +657,14 @@ class HpcUserCreateRequestReactivateView(HpcPermissionMixin, SingleObjectMixin,
def get(self, request, *args, **kwargs):
obj = self.get_object()
obj.status = REQUEST_STATUS_ACTIVE
- obj.comment = COMMENT_REACTIVATED
obj.editor = self.request.user
+ obj.comment = ""
obj.save_with_version()
if settings.SEND_EMAIL:
send_notification_admin_request(obj)
- messages.success(
- self.request, MSG_REQUEST_SUCCESS.format(MSG_PART_REACTIVATED, MSG_PART_USER_CREATION)
- )
- return HttpResponseRedirect(
- reverse(
- "usersec:hpcusercreaterequest-detail",
- kwargs={"hpcusercreaterequest": obj.uuid},
- )
- )
+ return HttpResponseRedirect(reverse("home"))
class HpcUserCreateRequestDeleteView(HpcPermissionMixin, DeleteView):
@@ -702,12 +677,26 @@ class HpcUserCreateRequestDeleteView(HpcPermissionMixin, DeleteView):
permission_required = "usersec.manage_hpcusercreaterequest"
def get_success_url(self):
- messages.success(
- self.request, MSG_REQUEST_SUCCESS.format(MSG_PART_DELETED, MSG_PART_USER_CREATION)
- )
return reverse("home")
+class HpcUserCreateRequestArchiveView(HpcPermissionMixin, SingleObjectMixin, View):
+ """HPC user create request archive view."""
+
+ model = HpcUserCreateRequest
+ slug_field = "uuid"
+ slug_url_kwarg = "hpcusercreaterequest"
+ permission_required = "usersec.manage_hpcusercreaterequest"
+
+ def get(self, request, *args, **kwargs):
+ obj = self.get_object()
+ obj.status = REQUEST_STATUS_ARCHIVED
+ obj.editor = self.request.user
+ obj.save_with_version()
+
+ return HttpResponseRedirect(reverse("home"))
+
+
class HpcGroupDeleteRequestCreateView(View):
pass
@@ -732,6 +721,10 @@ class HpcGroupDeleteRequestDeleteView(View):
pass
+class HpcGroupDeleteRequestArchiveView(View):
+ pass
+
+
class HpcGroupChangeRequestCreateView(HpcPermissionMixin, CreateView):
"""HPC group change request create view.
@@ -767,6 +760,21 @@ def get_context_data(self, **kwargs):
context.update({"group": self.get_object()})
return context
+ def get(self, request, *args, **kwargs):
+ if HpcGroupChangeRequest.objects.filter(
+ group=self.get_object(),
+ status__in=(
+ REQUEST_STATUS_ACTIVE,
+ REQUEST_STATUS_REVISION,
+ REQUEST_STATUS_RETRACTED,
+ REQUEST_STATUS_REVISED,
+ ),
+ ).exists():
+ messages.error(request, "There already exists an ongoing request to create the group.")
+ return HttpResponseRedirect(reverse("home"))
+
+ return super().get(request, *args, **kwargs)
+
def form_valid(self, form):
obj = form.save(commit=False)
obj.requester = self.request.user
@@ -786,9 +794,6 @@ def form_valid(self, form):
if settings.SEND_EMAIL:
send_notification_admin_request(obj)
- messages.success(
- self.request, MSG_REQUEST_SUCCESS.format(MSG_PART_SUBMITTED, MSG_PART_GROUP_UPDATE)
- )
return HttpResponseRedirect(
reverse(
"usersec:hpcgroupchangerequest-detail",
@@ -816,6 +821,7 @@ def get_context_data(self, **kwargs):
context["is_active"] = obj.is_active()
context["is_revision"] = obj.is_revision()
context["is_revised"] = obj.is_revised()
+ context["is_archived"] = obj.is_archived()
return context
@@ -867,32 +873,23 @@ def form_valid(self, form):
)
return HttpResponseRedirect(reverse("home"))
- # No email notification required
- messages.success(
- self.request, MSG_REQUEST_SUCCESS.format(MSG_PART_UPDATED, MSG_PART_GROUP_UPDATE)
- )
return HttpResponseRedirect(self.get_success_url())
-class HpcGroupChangeRequestRetractView(HpcPermissionMixin, DeleteView):
+class HpcGroupChangeRequestRetractView(HpcPermissionMixin, SingleObjectMixin, View):
"""HPC group change request retract view."""
- template_name_suffix = "_retract_confirm"
model = HpcGroupChangeRequest
slug_field = "uuid"
slug_url_kwarg = "hpcgroupchangerequest"
permission_required = "usersec.manage_hpcgroupchangerequest"
- def post(self, request, *args, **kwargs):
+ def get(self, request, *args, **kwargs):
obj = self.get_object()
- obj.comment = COMMENT_RETRACTED
obj.editor = self.request.user
+ obj.comment = ""
obj.retract_with_version()
- # No email notification required
- messages.success(
- self.request, MSG_REQUEST_SUCCESS.format(MSG_PART_RETRACTED, MSG_PART_GROUP_UPDATE)
- )
return HttpResponseRedirect(
reverse(
"usersec:hpcgroupchangerequest-detail",
@@ -912,22 +909,14 @@ class HpcGroupChangeRequestReactivateView(HpcPermissionMixin, SingleObjectMixin,
def get(self, request, *args, **kwargs):
obj = self.get_object()
obj.status = REQUEST_STATUS_ACTIVE
- obj.comment = COMMENT_REACTIVATED
obj.editor = self.request.user
+ obj.comment = ""
obj.save_with_version()
if settings.SEND_EMAIL:
send_notification_admin_request(obj)
- messages.success(
- self.request, MSG_REQUEST_SUCCESS.format(MSG_PART_REACTIVATED, MSG_PART_GROUP_UPDATE)
- )
- return HttpResponseRedirect(
- reverse(
- "usersec:hpcgroupchangerequest-detail",
- kwargs={"hpcgroupchangerequest": obj.uuid},
- )
- )
+ return HttpResponseRedirect(reverse("home"))
class HpcGroupChangeRequestDeleteView(HpcPermissionMixin, DeleteView):
@@ -940,12 +929,26 @@ class HpcGroupChangeRequestDeleteView(HpcPermissionMixin, DeleteView):
permission_required = "usersec.manage_hpcgroupchangerequest"
def get_success_url(self):
- messages.success(
- self.request, MSG_REQUEST_SUCCESS.format(MSG_PART_DELETED, MSG_PART_GROUP_UPDATE)
- )
return reverse("home")
+class HpcGroupChangeRequestArchiveView(HpcPermissionMixin, SingleObjectMixin, View):
+ """HPC group change request archive view."""
+
+ model = HpcGroupChangeRequest
+ slug_field = "uuid"
+ slug_url_kwarg = "hpcgroupchangerequest"
+ permission_required = "usersec.manage_hpcgroupchangerequest"
+
+ def get(self, request, *args, **kwargs):
+ obj = self.get_object()
+ obj.status = REQUEST_STATUS_ARCHIVED
+ obj.editor = self.request.user
+ obj.save_with_version()
+
+ return HttpResponseRedirect(reverse("home"))
+
+
class HpcUserDeleteRequestCreateView(View):
pass
@@ -970,6 +973,10 @@ class HpcUserDeleteRequestDeleteView(View):
pass
+class HpcUserDeleteRequestArchiveView(View):
+ pass
+
+
class HpcUserChangeRequestCreateView(HpcPermissionMixin, CreateView):
"""HPC user change request create view.
@@ -1022,9 +1029,6 @@ def form_valid(self, form):
if settings.SEND_EMAIL:
send_notification_admin_request(obj)
- messages.success(
- self.request, MSG_REQUEST_SUCCESS.format(MSG_PART_SUBMITTED, MSG_PART_USER_UPDATE)
- )
return HttpResponseRedirect(
reverse(
"usersec:hpcuserchangerequest-detail",
@@ -1052,6 +1056,7 @@ def get_context_data(self, **kwargs):
context["is_active"] = obj.is_active()
context["is_revision"] = obj.is_revision()
context["is_revised"] = obj.is_revised()
+ context["is_archived"] = obj.is_archived()
return context
@@ -1103,32 +1108,23 @@ def form_valid(self, form):
)
return HttpResponseRedirect(reverse("home"))
- # No email notification required
- messages.success(
- self.request, MSG_REQUEST_SUCCESS.format(MSG_PART_UPDATED, MSG_PART_USER_UPDATE)
- )
return HttpResponseRedirect(self.get_success_url())
-class HpcUserChangeRequestRetractView(HpcPermissionMixin, DeleteView):
+class HpcUserChangeRequestRetractView(HpcPermissionMixin, SingleObjectMixin, View):
"""HPC user change request update view."""
- template_name_suffix = "_retract_confirm"
model = HpcUserChangeRequest
slug_field = "uuid"
slug_url_kwarg = "hpcuserchangerequest"
permission_required = "usersec.manage_hpcuserchangerequest"
- def post(self, request, *args, **kwargs):
+ def get(self, request, *args, **kwargs):
obj = self.get_object()
- obj.comment = COMMENT_RETRACTED
obj.editor = self.request.user
+ obj.comment = ""
obj.retract_with_version()
- # No email notification required
- messages.success(
- self.request, MSG_REQUEST_SUCCESS.format(MSG_PART_RETRACTED, MSG_PART_USER_UPDATE)
- )
return HttpResponseRedirect(
reverse(
"usersec:hpcuserchangerequest-detail",
@@ -1148,22 +1144,14 @@ class HpcUserChangeRequestReactivateView(HpcPermissionMixin, SingleObjectMixin,
def get(self, request, *args, **kwargs):
obj = self.get_object()
obj.status = REQUEST_STATUS_ACTIVE
- obj.comment = COMMENT_REACTIVATED
obj.editor = self.request.user
+ obj.comment = ""
obj.save_with_version()
if settings.SEND_EMAIL:
send_notification_admin_request(obj)
- messages.success(
- self.request, MSG_REQUEST_SUCCESS.format(MSG_PART_REACTIVATED, MSG_PART_USER_UPDATE)
- )
- return HttpResponseRedirect(
- reverse(
- "usersec:hpcuserchangerequest-detail",
- kwargs={"hpcuserchangerequest": obj.uuid},
- )
- )
+ return HttpResponseRedirect(reverse("home"))
class HpcUserChangeRequestDeleteView(HpcPermissionMixin, DeleteView):
@@ -1176,12 +1164,26 @@ class HpcUserChangeRequestDeleteView(HpcPermissionMixin, DeleteView):
permission_required = "usersec.manage_hpcuserchangerequest"
def get_success_url(self):
- messages.success(
- self.request, MSG_REQUEST_SUCCESS.format(MSG_PART_DELETED, MSG_PART_USER_UPDATE)
- )
return reverse("home")
+class HpcUserChangeRequestArchiveView(HpcPermissionMixin, SingleObjectMixin, View):
+ """HPC user change request archive view."""
+
+ model = HpcUserChangeRequest
+ slug_field = "uuid"
+ slug_url_kwarg = "hpcuserchangerequest"
+ permission_required = "usersec.manage_hpcuserchangerequest"
+
+ def get(self, request, *args, **kwargs):
+ obj = self.get_object()
+ obj.status = REQUEST_STATUS_ARCHIVED
+ obj.editor = self.request.user
+ obj.save_with_version()
+
+ return HttpResponseRedirect(reverse("home"))
+
+
class HpcProjectDetailView(HpcPermissionMixin, DetailView):
"""HPC project detail view."""
@@ -1224,7 +1226,7 @@ def get_form_kwargs(self):
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
- context.update({"group": self.get_object()})
+ context.update({"owner_id": self.get_object().owner.id})
return context
def form_valid(self, form):
@@ -1251,9 +1253,6 @@ def form_valid(self, form):
send_notification_admin_request(obj)
send_notification_manager_project_request(obj)
- messages.success(
- self.request, MSG_REQUEST_SUCCESS.format(MSG_PART_SUBMITTED, MSG_PART_PROJECT_CREATION)
- )
return HttpResponseRedirect(
reverse(
"usersec:hpcprojectcreaterequest-detail",
@@ -1281,6 +1280,7 @@ def get_context_data(self, **kwargs):
context["is_active"] = obj.is_active()
context["is_revision"] = obj.is_revision()
context["is_revised"] = obj.is_revised()
+ context["is_archived"] = obj.is_archived()
return context
@@ -1297,6 +1297,7 @@ class HpcProjectCreateRequestUpdateView(HpcPermissionMixin, UpdateView):
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["update"] = True
+ context["owner_id"] = self.get_object().group.owner.id
return context
def get_form_kwargs(self):
@@ -1335,33 +1336,23 @@ def form_valid(self, form):
obj.members.set(form.cleaned_data["members"])
obj.version_history.last().members.set(form.cleaned_data["members"])
- # No email notification required
- messages.success(
- self.request, MSG_REQUEST_SUCCESS.format(MSG_PART_UPDATED, MSG_PART_PROJECT_CREATION)
- )
return HttpResponseRedirect(self.get_success_url())
-class HpcProjectCreateRequestRetractView(HpcPermissionMixin, DeleteView):
+class HpcProjectCreateRequestRetractView(HpcPermissionMixin, SingleObjectMixin, View):
"""HPC project create request update view."""
- template_name_suffix = "_retract_confirm"
model = HpcProjectCreateRequest
slug_field = "uuid"
slug_url_kwarg = "hpcprojectcreaterequest"
permission_required = "usersec.manage_hpcprojectcreaterequest"
- def post(self, request, *args, **kwargs):
+ def get(self, request, *args, **kwargs):
obj = self.get_object()
- obj.comment = COMMENT_RETRACTED
obj.editor = self.request.user
+ obj.comment = ""
obj.retract_with_version()
- # No email notification required
- messages.success(
- self.request, MSG_REQUEST_SUCCESS.format(MSG_PART_RETRACTED, MSG_PART_PROJECT_CREATION)
- )
-
return HttpResponseRedirect(
reverse(
"usersec:hpcprojectcreaterequest-detail",
@@ -1381,23 +1372,14 @@ class HpcProjectCreateRequestReactivateView(HpcPermissionMixin, SingleObjectMixi
def get(self, request, *args, **kwargs):
obj = self.get_object()
obj.status = REQUEST_STATUS_ACTIVE
- obj.comment = COMMENT_REACTIVATED
obj.editor = self.request.user
+ obj.comment = ""
obj.save_with_version()
if settings.SEND_EMAIL:
send_notification_admin_request(obj)
- messages.success(
- self.request,
- MSG_REQUEST_SUCCESS.format(MSG_PART_REACTIVATED, MSG_PART_PROJECT_CREATION),
- )
- return HttpResponseRedirect(
- reverse(
- "usersec:hpcprojectcreaterequest-detail",
- kwargs={"hpcprojectcreaterequest": obj.uuid},
- )
- )
+ return HttpResponseRedirect(reverse("home"))
class HpcProjectCreateRequestDeleteView(HpcPermissionMixin, DeleteView):
@@ -1410,12 +1392,26 @@ class HpcProjectCreateRequestDeleteView(HpcPermissionMixin, DeleteView):
permission_required = "usersec.manage_hpcprojectcreaterequest"
def get_success_url(self):
- messages.success(
- self.request, MSG_REQUEST_SUCCESS.format(MSG_PART_DELETED, MSG_PART_PROJECT_CREATION)
- )
return reverse("home")
+class HpcProjectCreateRequestArchiveView(HpcPermissionMixin, SingleObjectMixin, View):
+ """HPC project create request archive view."""
+
+ model = HpcProjectCreateRequest
+ slug_field = "uuid"
+ slug_url_kwarg = "hpcprojectcreaterequest"
+ permission_required = "usersec.manage_hpcprojectcreaterequest"
+
+ def get(self, request, *args, **kwargs):
+ obj = self.get_object()
+ obj.status = REQUEST_STATUS_ARCHIVED
+ obj.editor = self.request.user
+ obj.save_with_version()
+
+ return HttpResponseRedirect(reverse("home"))
+
+
class HpcProjectDeleteRequestCreateView(View):
pass
@@ -1440,6 +1436,10 @@ class HpcProjectDeleteRequestDeleteView(View):
pass
+class HpcProjectDeleteRequestArchiveView(View):
+ pass
+
+
class HpcProjectChangeRequestCreateView(HpcPermissionMixin, CreateView):
"""HPC project create request create view.
@@ -1450,7 +1450,7 @@ class HpcProjectChangeRequestCreateView(HpcPermissionMixin, CreateView):
# Required for permission checks, usually the CreateView doesn't have the current object
# available
model = HpcProject
- template_name = "usersec/hpcprojectchangerequest_form.html"
+ template_name = "usersec/hpcprojectcreaterequest_form.html"
slug_field = "uuid"
slug_url_kwarg = "hpcproject"
# Check permission based on HpcProject object
@@ -1472,7 +1472,7 @@ def get_form_kwargs(self):
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
- context.update({"project": self.get_object()})
+ context["owner_id"] = self.get_object().group.owner.id
return context
def form_valid(self, form):
@@ -1498,9 +1498,6 @@ def form_valid(self, form):
if settings.SEND_EMAIL:
send_notification_admin_request(obj)
- messages.success(
- self.request, MSG_REQUEST_SUCCESS.format(MSG_PART_SUBMITTED, MSG_PART_PROJECT_UPDATE)
- )
return HttpResponseRedirect(
reverse(
"usersec:hpcprojectchangerequest-detail",
@@ -1528,13 +1525,14 @@ def get_context_data(self, **kwargs):
context["is_active"] = obj.is_active()
context["is_revision"] = obj.is_revision()
context["is_revised"] = obj.is_revised()
+ context["is_archived"] = obj.is_archived()
return context
class HpcProjectChangeRequestUpdateView(HpcPermissionMixin, UpdateView):
"""HPC project change request update view."""
- template_name = "usersec/hpcprojectchangerequest_form.html"
+ template_name = "usersec/hpcprojectcreaterequest_form.html"
form_class = HpcProjectChangeRequestForm
model = HpcProjectChangeRequest
slug_field = "uuid"
@@ -1544,7 +1542,7 @@ class HpcProjectChangeRequestUpdateView(HpcPermissionMixin, UpdateView):
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["update"] = True
- context["project"] = self.get_object().project
+ context["owner_id"] = self.get_object().project.group.owner.id
return context
def get_form_kwargs(self):
@@ -1579,32 +1577,23 @@ def form_valid(self, form):
)
return HttpResponseRedirect(reverse("home"))
- # No email notification required
- messages.success(
- self.request, MSG_REQUEST_SUCCESS.format(MSG_PART_UPDATED, MSG_PART_PROJECT_UPDATE)
- )
return HttpResponseRedirect(self.get_success_url())
-class HpcProjectChangeRequestRetractView(HpcPermissionMixin, DeleteView):
+class HpcProjectChangeRequestRetractView(HpcPermissionMixin, SingleObjectMixin, View):
"""HPC project change request retract view."""
- template_name_suffix = "_retract_confirm"
model = HpcProjectChangeRequest
slug_field = "uuid"
slug_url_kwarg = "hpcprojectchangerequest"
permission_required = "usersec.manage_hpcprojectchangerequest"
- def post(self, request, *args, **kwargs):
+ def get(self, request, *args, **kwargs):
obj = self.get_object()
- obj.comment = COMMENT_RETRACTED
obj.editor = self.request.user
+ obj.comment = ""
obj.retract_with_version()
- # No email notification required
- messages.success(
- self.request, MSG_REQUEST_SUCCESS.format(MSG_PART_RETRACTED, MSG_PART_PROJECT_UPDATE)
- )
return HttpResponseRedirect(
reverse(
"usersec:hpcprojectchangerequest-detail",
@@ -1624,22 +1613,14 @@ class HpcProjectChangeRequestReactivateView(HpcPermissionMixin, SingleObjectMixi
def get(self, request, *args, **kwargs):
obj = self.get_object()
obj.status = REQUEST_STATUS_ACTIVE
- obj.comment = COMMENT_REACTIVATED
obj.editor = self.request.user
+ obj.comment = ""
obj.save_with_version()
if settings.SEND_EMAIL:
send_notification_admin_request(obj)
- messages.success(
- self.request, MSG_REQUEST_SUCCESS.format(MSG_PART_REACTIVATED, MSG_PART_PROJECT_UPDATE)
- )
- return HttpResponseRedirect(
- reverse(
- "usersec:hpcprojectchangerequest-detail",
- kwargs={"hpcprojectchangerequest": obj.uuid},
- )
- )
+ return HttpResponseRedirect(reverse("home"))
class HpcProjectChangeRequestDeleteView(HpcPermissionMixin, DeleteView):
@@ -1652,12 +1633,26 @@ class HpcProjectChangeRequestDeleteView(HpcPermissionMixin, DeleteView):
permission_required = "usersec.manage_hpcprojectchangerequest"
def get_success_url(self):
- messages.success(
- self.request, MSG_REQUEST_SUCCESS.format(MSG_PART_DELETED, MSG_PART_PROJECT_UPDATE)
- )
return reverse("home")
+class HpcProjectChangeRequestArchiveView(HpcPermissionMixin, SingleObjectMixin, View):
+ """HPC project change request archive view."""
+
+ model = HpcProjectChangeRequest
+ slug_field = "uuid"
+ slug_url_kwarg = "hpcprojectchangerequest"
+ permission_required = "usersec.manage_hpcprojectchangerequest"
+
+ def get(self, request, *args, **kwargs):
+ obj = self.get_object()
+ obj.status = REQUEST_STATUS_ARCHIVED
+ obj.editor = self.request.user
+ obj.save_with_version()
+
+ return HttpResponseRedirect(reverse("home"))
+
+
class HpcGroupInvitationDetailView(HpcPermissionMixin, DetailView):
"""HPC group invitation detail view."""
@@ -1728,7 +1723,6 @@ def get(self, request, *args, **kwargs):
send_notification_manager_user_decided_invitation(obj)
send_notification_user_welcome_mail(hpcuser)
- messages.success(request, MSG_INVITATION_GROUP_USER_CREATE_SUCCESS)
return HttpResponseRedirect(
reverse(
"usersec:hpcuser-overview",
@@ -1753,7 +1747,6 @@ def post(self, request, *args, **kwargs):
if settings.SEND_EMAIL:
send_notification_manager_user_decided_invitation(obj)
- messages.success(request, MSG_INVITATION_REJECTED_SUCCESS)
return HttpResponseRedirect(
reverse(
"usersec:hpcgroupinvitation-detail",
@@ -1801,7 +1794,6 @@ def get(self, request, *args, **kwargs):
if settings.SEND_EMAIL:
send_notification_manager_user_decided_invitation(obj)
- messages.success(request, MSG_INVITATION_PROJECT_USER_ADD_SUCCESS)
return HttpResponseRedirect(
reverse(
"usersec:hpcuser-overview",
@@ -1826,7 +1818,6 @@ def post(self, request, *args, **kwargs):
if settings.SEND_EMAIL:
send_notification_manager_user_decided_invitation(obj)
- messages.success(self.request, MSG_INVITATION_REJECTED_SUCCESS)
return HttpResponseRedirect(
reverse(
"usersec:hpcuser-overview",
@@ -1857,5 +1848,4 @@ def post(self, request, *args, **kwargs):
request.user.consented_to_terms = True
request.user.save()
- messages.success(self.request, MSG_TERMS_CONSENT)
return HttpResponseRedirect(reverse("home"))