Skip to content

Commit

Permalink
Merge branch 'refs/heads/hy/change-table-args' into pkv/staging-deploy
Browse files Browse the repository at this point in the history
  • Loading branch information
hemant10yadav committed Sep 3, 2024
2 parents e280243 + 734e3a0 commit f55e823
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 60 deletions.
63 changes: 28 additions & 35 deletions commcare_connect/opportunity/tables.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,13 @@
)


class LearnStatusTable(tables.Table):
class OrgContextTable(tables.Table):
def __init__(self, *args, **kwargs):
self.org_slug = kwargs.pop("org_slug", None)
super().__init__(*args, **kwargs)


class LearnStatusTable(OrgContextTable):
display_name = columns.Column(verbose_name="Name")
learn_progress = columns.Column(verbose_name="Modules Completed")
assessment_count = columns.Column(verbose_name="Number of Attempts")
Expand All @@ -30,10 +36,6 @@ class Meta:
orderable = False
empty_text = "No learn progress for users."

def __init__(self, *args, **kwargs):
self.org_slug = kwargs.pop("org_slug", None)
super().__init__(*args, **kwargs)

def render_details(self, record):
url = reverse(
"opportunity:user_learn_progress",
Expand All @@ -49,7 +51,7 @@ def show_warning(record):
return ""


class UserVisitTable(tables.Table):
class UserVisitTable(OrgContextTable):
# export only columns
visit_id = columns.Column("Visit ID", accessor="xform_id", visible=False)
username = columns.Column("Username", accessor="user__username", visible=False)
Expand All @@ -63,13 +65,14 @@ class UserVisitTable(tables.Table):
entity_id = columns.Column("Entity ID", accessor="entity_id", visible=False)
entity_name = columns.Column("Entity Name", accessor="entity_name")
flag_reason = columns.Column("Flags", accessor="flag_reason", empty_values=({}, None))
details = columns.LinkColumn(
"opportunity:visit_verification",
verbose_name="",
text="Review",
attrs={"a": {"class": "btn btn-sm btn-primary"}},
args=[utils.A("opportunity__organization__slug"), utils.A("pk")],
)
details = columns.Column(verbose_name="", empty_values=())

def render_details(self, record):
url = reverse(
"opportunity:visit_verification",
kwargs={"org_slug": self.org_slug, "pk": record.pk},
)
return mark_safe(f'<a class="btn btn-sm btn-primary" href="{url}">Review</a>')

def render_flag_reason(self, value):
short = [flag[1] for flag in value.get("flags")]
Expand All @@ -92,15 +95,17 @@ class Meta:
row_attrs = {"class": show_warning}


class OpportunityPaymentTable(tables.Table):
class OpportunityPaymentTable(OrgContextTable):
display_name = columns.Column(verbose_name="Name")
username = columns.Column(accessor="user__username", visible=False)
view_payments = columns.LinkColumn(
"opportunity:user_payments_table",
verbose_name="",
text="View Details",
args=[utils.A("opportunity__organization__slug"), utils.A("opportunity__id"), utils.A("pk")],
)
view_payments = columns.Column(verbose_name="", empty_values=())

def render_view_payments(self, record):
url = reverse(
"opportunity:user_payments_table",
kwargs={"org_slug": self.org_slug, "opp_id": record.opportunity.id, "pk": record.pk},
)
return mark_safe(f'<a href="{url}">View Details</a>')

class Meta:
model = OpportunityAccess
Expand Down Expand Up @@ -132,7 +137,7 @@ class BooleanAggregateColumn(columns.BooleanColumn, AggregateColumn):
pass


class UserStatusTable(tables.Table):
class UserStatusTable(OrgContextTable):
display_name = columns.Column(verbose_name="Name", footer="Total", empty_values=())
username = columns.Column(accessor="opportunity_access__user__username", visible=False)
claimed = AggregateColumn(verbose_name="Job Claimed", accessor="job_claimed")
Expand Down Expand Up @@ -165,10 +170,6 @@ class Meta:
empty_text = "No users invited for this opportunity."
orderable = False

def __init__(self, *args, **kwargs):
self.org_slug = kwargs.pop("org_slug", None)
super().__init__(*args, **kwargs)

def render_display_name(self, record):
if record.opportunity_access is None:
return record.phone_number
Expand Down Expand Up @@ -200,7 +201,7 @@ def render_last_visit_date(self, record, value):
return date_with_time_popup(self, value)


class PaymentUnitTable(tables.Table):
class PaymentUnitTable(OrgContextTable):
deliver_units = columns.Column("Deliver Units")
details = columns.Column(verbose_name="", empty_values=())

Expand All @@ -210,10 +211,6 @@ class Meta:
empty_text = "No payment units for this opportunity."
orderable = False

def __init__(self, *args, **kwargs):
self.org_slug = kwargs.pop("org_slug", None)
super().__init__(*args, **kwargs)

def render_deliver_units(self, record):
deliver_units = "".join([f"<li>{d.name}</li>" for d in record.deliver_units.all()])
return mark_safe(f"<ul>{deliver_units}</ul>")
Expand All @@ -226,7 +223,7 @@ def render_details(self, record):
return mark_safe(f'<a href="{url}">Edit</a>')


class DeliverStatusTable(tables.Table):
class DeliverStatusTable(OrgContextTable):
display_name = columns.Column(verbose_name="Name of the User", footer="Total")
username = columns.Column(accessor="user__username", visible=False)
payment_unit = columns.Column("Name of Payment Unit")
Expand Down Expand Up @@ -254,10 +251,6 @@ class Meta:
"incomplete",
)

def __init__(self, *args, **kwargs):
self.org_slug = kwargs.pop("org_slug", None)
super().__init__(*args, **kwargs)

def render_details(self, record):
url = reverse(
"opportunity:user_visits_list",
Expand Down
37 changes: 12 additions & 25 deletions commcare_connect/opportunity/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,13 @@ def get_opportunity_or_404(pk, org_slug):
raise Http404("Opportunity not found.")


class OrgContextSingleTableView(SingleTableView):
def get_table_kwargs(self):
kwargs = super().get_table_kwargs()
kwargs["org_slug"] = self.request.org.slug
return kwargs


class OpportunityList(OrganizationUserMixin, ListView):
model = Opportunity
paginate_by = 10
Expand Down Expand Up @@ -292,7 +299,7 @@ def get_context_data(self, object, **kwargs):
return context


class OpportunityLearnStatusTableView(OrganizationUserMixin, SingleTableView):
class OpportunityLearnStatusTableView(OrganizationUserMixin, OrgContextSingleTableView):
model = OpportunityAccess
paginate_by = 25
table_class = LearnStatusTable
Expand All @@ -303,13 +310,8 @@ def get_queryset(self):
opportunity = get_opportunity_or_404(org_slug=self.request.org.slug, pk=opportunity_id)
return OpportunityAccess.objects.filter(opportunity=opportunity).order_by("user__name")

def get_table_kwargs(self):
kwargs = super().get_table_kwargs()
kwargs["org_slug"] = self.request.org.slug
return kwargs


class OpportunityPaymentTableView(OrganizationUserMixin, SingleTableView):
class OpportunityPaymentTableView(OrganizationUserMixin, OrgContextSingleTableView):
model = OpportunityAccess
paginate_by = 25
table_class = OpportunityPaymentTable
Expand Down Expand Up @@ -463,7 +465,7 @@ def add_budget_existing_users(request, org_slug=None, pk=None):
)


class OpportunityUserStatusTableView(OrganizationUserMixin, SingleTableView):
class OpportunityUserStatusTableView(OrganizationUserMixin, OrgContextSingleTableView):
model = OpportunityAccess
paginate_by = 25
table_class = UserStatusTable
Expand All @@ -475,11 +477,6 @@ def get_queryset(self):
access_objects = get_annotated_opportunity_access(opportunity)
return access_objects

def get_table_kwargs(self):
kwargs = super().get_table_kwargs()
kwargs["org_slug"] = self.request.org.slug
return kwargs


@org_member_required
def export_users_for_payment(request, **kwargs):
Expand Down Expand Up @@ -614,7 +611,7 @@ def edit_payment_unit(request, org_slug=None, opp_id=None, pk=None):
)


class OpportunityPaymentUnitTableView(OrganizationUserMixin, SingleTableView):
class OpportunityPaymentUnitTableView(OrganizationUserMixin, OrgContextSingleTableView):
model = PaymentUnit
paginate_by = 25
table_class = PaymentUnitTable
Expand All @@ -625,11 +622,6 @@ def get_queryset(self):
opportunity = get_opportunity_or_404(org_slug=self.kwargs["org_slug"], pk=opportunity_id)
return PaymentUnit.objects.filter(opportunity=opportunity).order_by("name")

def get_table_kwargs(self):
kwargs = super().get_table_kwargs()
kwargs["org_slug"] = self.request.org.slug
return kwargs


@org_member_required
def export_user_status(request, **kwargs):
Expand All @@ -646,7 +638,7 @@ def export_user_status(request, **kwargs):
return redirect(f"{redirect_url}?export_task_id={result.id}")


class OpportunityDeliverStatusTable(OrganizationUserMixin, SingleTableView):
class OpportunityDeliverStatusTable(OrganizationUserMixin, OrgContextSingleTableView):
model = OpportunityAccess
paginate_by = 25
table_class = DeliverStatusTable
Expand All @@ -658,11 +650,6 @@ def get_queryset(self):
access_objects = get_annotated_opportunity_access_deliver_status(opportunity)
return access_objects

def get_table_kwargs(self):
kwargs = super().get_table_kwargs()
kwargs["org_slug"] = self.request.org.slug
return kwargs


@org_member_required
def export_deliver_status(request, **kwargs):
Expand Down

0 comments on commit f55e823

Please sign in to comment.