Skip to content

Commit 65bfa27

Browse files
chore: show deleted organisations in sales dashboard (#5390)
1 parent 5066427 commit 65bfa27

3 files changed

Lines changed: 16 additions & 4 deletions

File tree

api/sales_dashboard/templates/sales_dashboard/home.html

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ <h1 class="h2">Organisations</h1>
2929

3030
<div class="sort-form">
3131
<form action="{% url 'sales_dashboard:index' %}" method="get" class="form-inline float-right">
32+
<label for="include-deleted" class="mr-1">Include deleted:</label>
33+
<input type="checkbox" name="include_deleted" id="include-deleted" class="mr-1" {% if include_deleted %}checked{% endif %}>
3234
<label for="filter-plan">Filter: </label>
3335
<select name="filter_plan" id="filter-plan" class="custom-select m-1">
3436
<option value="" {% if not filter_plan %}selected{% endif %}>Filter Plan</option>
@@ -82,7 +84,7 @@ <h1 class="h2">Organisations</h1>
8284
{% endif %}"
8385
>
8486
<td>{{org.id}}</td>
85-
<td><a href="/sales-dashboard/organisations/{{org.id}}">{{org.name}}</a></td>
87+
<td><a href="/sales-dashboard/organisations/{{org.id}}">{{org.name}} {% if org.deleted_at %}<span class="badge badge-danger">Deleted</span>{% endif %}</a></td>
8688
<td>{{ org.subscription.plan|default:"Free" }}{% if org.subscription.payment_method %} - {{ org.subscription.payment_method|capfirst }}{% endif %}</td>
8789
<td><span class="{% if org.num_users > org.subscription_information_cache.allowed_seats %}badge badge-danger{% endif %}">{{org.num_users}}</span></td>
8890
<td>{{org.subscription_information_cache.allowed_seats|default:1}}</td>

api/sales_dashboard/templates/sales_dashboard/organisation.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@
1616
<h1 class="h2 float-left">
1717
Organisation: <strong>{{organisation.name}}</strong>
1818
- Plan: <strong>{{ organisation.subscription.plan|default:"Free"}}</strong>
19-
{% if organisation.has_paid_subscription and not organisation.is_paid %}<span class="badge badge-danger">Subscription Cancelled</button>{% endif %}
19+
{% if organisation.deleted_at %}<span class="badge badge-danger">Deleted</span>{% endif %}
20+
{% if organisation.has_paid_subscription and not organisation.is_paid %}<span class="badge badge-danger">Subscription Cancelled</span>{% endif %}
2021
</h1>
2122
<div class="float-right"><a href="/admin/organisations/organisation/{{organisation.id}}/change">Django Admin</a></div>
2223
<div class="float-right">

api/sales_dashboard/views.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,14 @@ class OrganisationList(ListView): # type: ignore[type-arg]
6767
template_name = "sales_dashboard/home.html"
6868

6969
def get_queryset(self): # type: ignore[no-untyped-def]
70-
queryset = Organisation.objects.annotate(
70+
if self.request.GET.get("include_deleted") == "on" or self.request.GET.get(
71+
"search"
72+
):
73+
queryset = Organisation.objects.all_with_deleted()
74+
else:
75+
queryset = Organisation.objects.all()
76+
77+
queryset = queryset.annotate(
7178
num_projects=Count("projects", distinct=True),
7279
num_users=Count("users", distinct=True),
7380
num_features=Count("projects__features", distinct=True),
@@ -105,6 +112,7 @@ def get_context_data(self, **kwargs): # type: ignore[no-untyped-def]
105112
data["filter_plan"] = self.request.GET.get("filter_plan")
106113
data["sort_field"] = self.request.GET.get("sort_field")
107114
data["sort_direction"] = self.request.GET.get("sort_direction")
115+
data["include_deleted"] = self.request.GET.get("include_deleted", "off") == "on"
108116

109117
# Use the most recent "influx_updated_at" in
110118
# OrganisationSubscriptionInformationCache object to determine
@@ -155,7 +163,8 @@ def _build_search_query(self, search_term: str) -> Q:
155163
@staff_member_required
156164
def organisation_info(request: HttpRequest, organisation_id: int) -> HttpResponse:
157165
organisation = get_object_or_404(
158-
Organisation.objects.select_related("subscription"), pk=organisation_id
166+
Organisation.objects.all_with_deleted().select_related("subscription"),
167+
pk=organisation_id,
159168
)
160169
template = loader.get_template("sales_dashboard/organisation.html")
161170
subscription_metadata = organisation.subscription.get_subscription_metadata()

0 commit comments

Comments
 (0)