Skip to content

Commit

Permalink
Merge branch 'pkv/enterprise-user-visit-review' into pkv/staging-deploy
Browse files Browse the repository at this point in the history
  • Loading branch information
pxwxnvermx committed Aug 29, 2024
2 parents 5504396 + bd60f85 commit ad6be4a
Show file tree
Hide file tree
Showing 7 changed files with 88 additions and 41 deletions.
6 changes: 4 additions & 2 deletions commcare_connect/opportunity/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
add_budget_existing_users,
add_payment_unit,
add_payment_units,
apply_opportunity_invite,
apply_or_decline_application,
approve_visit,
delete_form_json_rule,
download_export,
Expand Down Expand Up @@ -105,7 +105,9 @@
path("<int:pk>/catchment_area_export/", view=export_catchment_area, name="catchment_area_export"),
path("<int:pk>/catchment_area_import/", view=import_catchment_area, name="catchment_area_import"),
path(
"<int:pk>/invite/<int:application_id>/apply/", view=apply_opportunity_invite, name="apply_opportunity_invite"
"<int:pk>/application/<int:application_id>/<str:action>/",
view=apply_or_decline_application,
name="apply_or_decline_application",
),
path("<int:pk>/user_invite/", view=opportunity_user_invite, name="user_invite"),
path("<int:opp_id>/user_visit_review", user_visit_review, name="user_visit_review"),
Expand Down
33 changes: 25 additions & 8 deletions commcare_connect/opportunity/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -1075,20 +1075,37 @@ def import_catchment_area(request, org_slug=None, pk=None):
return redirect("opportunity:detail", org_slug, pk)


@org_admin_required
@require_POST
def apply_opportunity_invite(request, application_id, org_slug=None, pk=None):
@org_admin_required
def apply_or_decline_application(request, application_id, action, org_slug=None, pk=None):
application = get_object_or_404(
ManagedOpportunityApplication, id=application_id, status=ManagedOpportunityApplicationStatus.INVITED
)
application.status = ManagedOpportunityApplicationStatus.APPLIED

redirect_url = reverse("opportunity:list", kwargs={"org_slug": org_slug})

action_map = {
"apply": {
"status": ManagedOpportunityApplicationStatus.APPLIED,
"message": f"Application for the opportunity '{application.managed_opportunity.name}' has been "
f"successfully submitted.",
},
"decline": {
"status": ManagedOpportunityApplicationStatus.DECLINED,
"message": f"The application for the opportunity '{application.managed_opportunity.name}' has been marked "
f"as 'Declined'.",
},
}

if action not in action_map:
messages.error(request, "Action not allowed.")
return redirect(redirect_url)

application.status = action_map[action]["status"]
application.modified_by = request.user.email
application.save()
messages.success(
request,
f"Application for the opportunity '{application.managed_opportunity.name}' has been successfully submitted.",
)
return redirect("opportunity:list", org_slug)
messages.success(request, action_map[action]["message"])
return redirect(redirect_url)


@org_member_required
Expand Down
3 changes: 2 additions & 1 deletion commcare_connect/program/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Generated by Django 4.2.5 on 2024-08-20 05:32
# Generated by Django 4.2.5 on 2024-08-29 04:40

from django.db import migrations, models
import django.db.models.deletion
Expand Down Expand Up @@ -79,6 +79,7 @@ class Migration(migrations.Migration):
("applied", "Applied"),
("accepted", "Accepted"),
("rejected", "Rejected"),
("declined", "Declined"),
],
default="invited",
max_length=20,
Expand Down
1 change: 1 addition & 0 deletions commcare_connect/program/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ class ManagedOpportunityApplicationStatus(models.TextChoices):
APPLIED = "applied", _("Applied")
ACCEPTED = "accepted", _("Accepted")
REJECTED = "rejected", _("Rejected")
DECLINED = "declined", _("Declined")


class ManagedOpportunityApplication(BaseModel):
Expand Down
44 changes: 32 additions & 12 deletions commcare_connect/program/tables.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,22 +30,41 @@ class OpportunityInvitationTable(tables.Table):
)

def render_manage(self, record):
url = reverse(
"opportunity:apply_opportunity_invite",
apply_url = reverse(
"opportunity:apply_or_decline_application",
kwargs={
"org_slug": self.context["request"].org.slug,
"pk": record.managed_opportunity.id,
"application_id": record.id,
"action": "apply",
},
)
button = {
"post": True,
"url": url,
"text": "Apply",
"color": "primary",
"icon": "bi bi-check-circle-fill",
}
return get_manage_buttons_html([button], self.context["request"])
decline_url = reverse(
"opportunity:apply_or_decline_application",
kwargs={
"org_slug": self.context["request"].org.slug,
"pk": record.managed_opportunity.id,
"application_id": record.id,
"action": "decline",
},
)
buttons = [
{
"post": True,
"url": apply_url,
"text": "Apply",
"color": "primary",
"icon": "bi bi-check-circle-fill",
},
{
"post": True,
"url": decline_url,
"text": "Decline",
"color": "warning",
"icon": "bi bi-x-square-fill",
},
]
return get_manage_buttons_html(buttons, self.context["request"])

class Meta:
model = ManagedOpportunityApplication
Expand All @@ -57,9 +76,9 @@ class Meta:


class ManagedOpportunityApplicationTable(tables.Table):
organization = tables.Column(orderable=False)
organization = tables.Column()
created_by = tables.Column(orderable=False)
status = tables.Column(orderable=False)
status = tables.Column()
date_modified = tables.DateColumn(verbose_name=_("Updated On"), order_by=("date_modified",))
manage = tables.Column(
verbose_name=_("Manage"),
Expand Down Expand Up @@ -96,6 +115,7 @@ def render_manage(self, record):
in [
ManagedOpportunityApplicationStatus.ACCEPTED,
ManagedOpportunityApplicationStatus.REJECTED,
ManagedOpportunityApplicationStatus.DECLINED,
],
},
]
Expand Down
30 changes: 14 additions & 16 deletions commcare_connect/templates/opportunity/opportunity_detail.html
Original file line number Diff line number Diff line change
Expand Up @@ -47,24 +47,22 @@ <h1 class="mb-0">{{ object.name }}</h1>
</li>
{% endif %}
{% if object.managed %}
{% if request.org_membership.is_admin and request.org.program_manager or request.user.is_superuser %}
<li>
{% if request.org_membership.is_admin and request.org.program_manager or request.user.is_superuser %}
<li>
<a class="dropdown-item"
href="{% url "program:opportunity_application_list" org_slug=request.org.slug pk=opportunity.managedopportunity.program.id opp_id=opportunity.pk %}">
<i class="bi bi-building-fill-add pe-2"></i>
{% translate "View Application" %}
</a>
</li>
{% endif %}
<li>
<a class="dropdown-item"
href="{% url "program:opportunity_application_list" org_slug=request.org.slug pk=opportunity.managedopportunity.program.id opp_id=opportunity.pk %}">
<i class="bi bi-building-fill-add pe-2"></i>
{% translate "View Application" %}
href="{% url "opportunity:user_visit_review" org_slug=request.org.slug opp_id=opportunity.pk %}">
<i class="bi bi-clipboard2-data-fill pe-2"></i>
{% translate "Review User Visits" %}
</a>
</li>
{% endif %}
{% endif %}
{% if object.managed %}
<li>
<a class="dropdown-item"
href="{% url "opportunity:user_visit_review" org_slug=request.org.slug opp_id=opportunity.pk %}">
<i class="bi bi-clipboard2-data-fill pe-2"></i>
{% translate "Review User Visits" %}
</a>
</li>
</li>
{% endif %}
<li>
<a class="dropdown-item"
Expand Down
12 changes: 10 additions & 2 deletions commcare_connect/templates/opportunity/opportunity_list.html
Original file line number Diff line number Diff line change
Expand Up @@ -137,13 +137,21 @@ <h2>{% translate "Opportunity Invitations" %}</h2>
<td width="300">
<div>
<form
action="{% url 'opportunity:apply_opportunity_invite' org_slug=request.org.slug pk=invitation.managed_opportunity.id application_id=invitation.id %}"
method="post" style="display:inline;">
action="{% url 'opportunity:apply_or_decline_application' org_slug=request.org.slug pk=invitation.managed_opportunity.id application_id=invitation.id action='apply' %}"
method="post" class="d-inline">
{% csrf_token %}
<button type="submit" class="btn btn-primary btn-sm">
<span class="bi bi-check-circle-fill"></span><span class="d-none d-md-inline">&nbsp;{% translate "Apply" %}</span>
</button>
</form>
<form
action="{% url 'opportunity:apply_or_decline_application' org_slug=request.org.slug pk=invitation.managed_opportunity.id application_id=invitation.id action='decline' %}"
method="post" class="d-inline">
{% csrf_token %}
<button type="submit" class="btn btn-warning btn-sm">
<span class="bi bi bi-x-square-fill"></span><span class="d-none d-md-inline">&nbsp;{% translate "Decline" %}</span>
</button>
</form>
</div>
</td>
</tr>
Expand Down

0 comments on commit ad6be4a

Please sign in to comment.