Skip to content

Commit

Permalink
Add staff action for rejecting and removing verification requests
Browse files Browse the repository at this point in the history
  • Loading branch information
mrchrisadams authored and tortila committed Jun 15, 2023
1 parent 557824f commit 597c86a
Show file tree
Hide file tree
Showing 4 changed files with 77 additions and 5 deletions.
47 changes: 43 additions & 4 deletions apps/accounts/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
from apps.greencheck.models import GreencheckIpApprove, GreencheckIp
from apps.greencheck.models import GreencheckASNapprove


from apps.greencheck.forms import ImporterCSVForm


Expand Down Expand Up @@ -72,6 +73,7 @@
ProviderRequestLocation,
ProviderRequestEvidence,
ProviderRequestConsent,
ProviderRequestStatus,
Service,
)

Expand Down Expand Up @@ -552,7 +554,6 @@ def save_formset(self, request, form, formset, change):
Called multiple times - once for each formset on a model.
"""

# We need to let the form know if this an addition or a change
# so that approval record is saved correctly in case of a
# non-staff user.
Expand Down Expand Up @@ -1199,9 +1200,7 @@ class ProviderRequest(ActionInChangeFormMixin, admin.ModelAdmin):
"location_import_required",
"missing_network_explanation",
)
actions = [
"mark_approved",
]
actions = ["mark_approved", "mark_rejected", "mark_removed"]
change_form_template = "admin/provider_request/change_form.html"

def send_approval_email(self, provider_request, request):
Expand Down Expand Up @@ -1264,3 +1263,43 @@ def mark_approved(self, request, queryset):
"""
)
self.message_user(request, message=message, level=messages.ERROR)

@admin.action(description="Reject", permissions=["change"])
def mark_rejected(self, request, queryset):
for provider_request in queryset:
provider_request.status = ProviderRequestStatus.REJECTED.value
provider_request.save()

message = mark_safe(
f"""
Request id <em>{provider_request.id}</em> for provider: \
<em>{provider_request.name}</em> has been rejected.
They creator of this request has <em>not</em> been contacted yet -
you will need to contact them if appropriate.
"""
)
self.message_user(request, message=message, level=messages.SUCCESS)

@admin.action(description="Remove", permissions=["change"])
def mark_removed(self, request, queryset):
"""
Mark the selected verification a 'removed', and remove it from the
dashboard for a given user. Used when we do not want to delete data,
but it doesn't make sense to have the request lingering in a user's
dashboard either.
"""
for provider_request in queryset:
provider_request.status = ProviderRequestStatus.REMOVED.value
provider_request.save()

message = mark_safe(
f"""
Request id <em>{provider_request.id}</em> for provider: \
<em>{provider_request.name}</em> has been removed.
The request has not been deleted, but will not show up in a user's
provider portal view.
The creator of this request has <em>not</em> been contacted yet - you
will need to contact them if appropriate.
"""
)
self.message_user(request, message=message, level=messages.SUCCESS)
26 changes: 26 additions & 0 deletions apps/accounts/migrations/0053_alter_providerrequest_status.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Generated by Django 3.2.18 on 2023-06-14 14:06

from django.db import migrations, models


class Migration(migrations.Migration):
dependencies = [
("accounts", "0052_merge_20230510_1057"),
]

operations = [
migrations.AlterField(
model_name="providerrequest",
name="status",
field=models.CharField(
choices=[
("Pending review", "Pending Review"),
("Approved", "Approved"),
("Rejected", "Rejected"),
("Open", "Open"),
("Removed", "Removed"),
],
max_length=255,
),
),
]
2 changes: 2 additions & 0 deletions apps/accounts/models/provider_request.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,14 @@ class ProviderRequestStatus(models.TextChoices):
- APPROVED: GWF staff approved the request
- REJECTED: GWF staff rejected the request (completely)
- OPEN: GWF staff requested some changes from the provider
- REMOVED: This request was not rejected, should no longer be shown to the user.
"""

PENDING_REVIEW = "Pending review"
APPROVED = "Approved"
REJECTED = "Rejected"
OPEN = "Open"
REMOVED = "Removed"


class ProviderRequestService(tag_models.TaggedItemBase):
Expand Down
7 changes: 6 additions & 1 deletion apps/accounts/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,12 @@ def get_queryset(self) -> "dict[str, QuerySet[ProviderRequest]]":
return {
"requests": ProviderRequest.objects.filter(
created_by=self.request.user
).exclude(status=ProviderRequestStatus.APPROVED),
).exclude(
status__in=[
ProviderRequestStatus.APPROVED,
ProviderRequestStatus.REMOVED,
]
),
# TODO: change this when a user can have multiple providers assigned
"providers": Hostingprovider.objects.filter(
id__in=[self.request.user.hostingprovider_id]
Expand Down

0 comments on commit 597c86a

Please sign in to comment.