Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sort tables alphabetically #241

Merged
merged 6 commits into from
Sep 25, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 12 additions & 2 deletions primed/cdsa/tables.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ class Meta:
"date_signed",
"number_accessors",
)
order_by = ("cc_id",)


class MemberAgreementTable(tables.Table):
Expand Down Expand Up @@ -80,6 +81,7 @@ class Meta:
"signed_agreement__date_signed",
"number_accessors",
)
order_by = ("signed_agreement__cc_id",)


class DataAffiliateAgreementTable(tables.Table):
Expand Down Expand Up @@ -111,6 +113,7 @@ class Meta:
"signed_agreement__date_signed",
"number_accessors",
)
order_by = ("signed_agreement__cc_id",)


class NonDataAffiliateAgreementTable(tables.Table):
Expand Down Expand Up @@ -140,6 +143,7 @@ class Meta:
"signed_agreement__date_signed",
"number_accessors",
)
order_by = ("signed_agreement__cc_id",)


class RepresentativeRecordsTable(tables.Table):
Expand All @@ -154,12 +158,12 @@ class RepresentativeRecordsTable(tables.Table):
class Meta:
model = models.SignedAgreement
fields = (
"cc_id",
"representative__name",
"representative_role",
"signing_institution",
"signing_group",
)
order_by = ("representative__name",)

def render_signing_group(self, record):
if hasattr(record, "memberagreement"):
Expand All @@ -179,13 +183,16 @@ class StudyRecordsTable(tables.Table):
signed_agreement__representative__name = tables.Column(
verbose_name="Representative"
)
# This will only order properly if the order_by value is a column in the table.
study__short_name = tables.Column(verbose_name="Study")

class Meta:
model = models.DataAffiliateAgreement
fields = (
"study",
"study__short_name",
"signed_agreement__representative__name",
)
order_by = ("study__short_name",)


class UserAccessRecordsTable(tables.Table):
Expand All @@ -207,6 +214,7 @@ class Meta:
"group__signedagreement__signing_institution",
"group__signedagreement__representative__name",
)
order_by = ("account__user__name",)

def render_signing_group(self, record):
if hasattr(record.group.signedagreement, "memberagreement"):
Expand Down Expand Up @@ -246,6 +254,7 @@ class Meta:
"workspace__created",
"date_shared",
)
order_by = ("workspace__name",)

def render_date_shared(self, record):
try:
Expand Down Expand Up @@ -282,3 +291,4 @@ class Meta:
"cdsaworkspace__data_use_permission__abbreviation",
"cdsaworkspace__data_use_modifiers",
)
order_by = ("name",)
91 changes: 91 additions & 0 deletions primed/cdsa/tests/test_tables.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from django.test import TestCase

from primed.primed_anvil.tests.factories import StudyFactory, StudySiteFactory
from primed.users.tests.factories import UserFactory

from .. import models, tables
from . import factories
Expand Down Expand Up @@ -49,6 +50,14 @@ def test_number_accessors(self):
self.assertEqual(table.rows[1].get_cell("number_accessors"), 1)
self.assertEqual(table.rows[2].get_cell("number_accessors"), 2)

def test_ordering(self):
"""Instances are ordered alphabetically by cc_id."""
instance_1 = factories.MemberAgreementFactory.create(signed_agreement__cc_id=2)
instance_2 = factories.MemberAgreementFactory.create(signed_agreement__cc_id=1)
table = self.table_class(self.model.objects.all())
self.assertEqual(table.data[0], instance_2.signed_agreement)
self.assertEqual(table.data[1], instance_1.signed_agreement)


class MemberAgreementTableTest(TestCase):
model = models.MemberAgreement
Expand Down Expand Up @@ -85,6 +94,14 @@ def test_number_accessors(self):
self.assertEqual(table.rows[1].get_cell("number_accessors"), 1)
self.assertEqual(table.rows[2].get_cell("number_accessors"), 2)

def test_ordering(self):
"""Instances are ordered alphabetically by cc_id."""
instance_1 = self.model_factory.create(signed_agreement__cc_id=2)
instance_2 = self.model_factory.create(signed_agreement__cc_id=1)
table = self.table_class(self.model.objects.all())
self.assertEqual(table.data[0], instance_2)
self.assertEqual(table.data[1], instance_1)


class DataAffiliateAgreementTableTest(TestCase):
model = models.DataAffiliateAgreement
Expand Down Expand Up @@ -121,6 +138,14 @@ def test_number_accessors(self):
self.assertEqual(table.rows[1].get_cell("number_accessors"), 1)
self.assertEqual(table.rows[2].get_cell("number_accessors"), 2)

def test_ordering(self):
"""Instances are ordered alphabetically by cc_id."""
instance_1 = self.model_factory.create(signed_agreement__cc_id=2)
instance_2 = self.model_factory.create(signed_agreement__cc_id=1)
table = self.table_class(self.model.objects.all())
self.assertEqual(table.data[0], instance_2)
self.assertEqual(table.data[1], instance_1)


class NonDataAffiliateAgreementTableTest(TestCase):
model = models.NonDataAffiliateAgreement
Expand Down Expand Up @@ -157,6 +182,14 @@ def test_number_accessors(self):
self.assertEqual(table.rows[1].get_cell("number_accessors"), 1)
self.assertEqual(table.rows[2].get_cell("number_accessors"), 2)

def test_ordering(self):
"""Instances are ordered alphabetically by cc_id."""
instance_1 = self.model_factory.create(signed_agreement__cc_id=2)
instance_2 = self.model_factory.create(signed_agreement__cc_id=1)
table = self.table_class(self.model.objects.all())
self.assertEqual(table.data[0], instance_2)
self.assertEqual(table.data[1], instance_1)


class RepresentativeRecordsTableTest(TestCase):
"""Tests for the RepresentativeRecordsTable class."""
Expand Down Expand Up @@ -203,6 +236,18 @@ def test_render_signing_group(self):
record = factories.SignedAgreementFactory()
self.assertIsNone(table.render_signing_group(record))

def test_ordering(self):
"""Instances are ordered alphabetically by representative name."""
instance_1 = factories.MemberAgreementFactory.create(
signed_agreement__representative__name="zzz"
)
instance_2 = factories.MemberAgreementFactory.create(
signed_agreement__representative__name="aaa"
)
table = self.table_class(self.model.objects.all())
self.assertEqual(table.data[0], instance_2.signed_agreement)
self.assertEqual(table.data[1], instance_1.signed_agreement)


class StudyRecordsTableTest(TestCase):
"""Tests for the StudyRecordsTable class."""
Expand All @@ -225,6 +270,14 @@ def test_row_count_with_two_objects(self):
table = self.table_class(self.model.objects.all())
self.assertEqual(len(table.rows), 2)

def test_ordering(self):
"""Instances are ordered alphabetically by study short name."""
instance_1 = self.model_factory.create(study__short_name="zzz")
instance_2 = self.model_factory.create(study__short_name="aaa")
table = self.table_class(self.model.objects.all())
self.assertEqual(table.data[0], instance_2)
self.assertEqual(table.data[1], instance_1)


class UserAccessRecordsTableTest(TestCase):
"""Tests for the UserAccessRecordsTable class."""
Expand Down Expand Up @@ -308,6 +361,23 @@ def test_render_signing_group(self):
record = GroupAccountMembershipFactory.create(group__signedagreement=agreement)
self.assertIsNone(table.render_signing_group(record))

def test_ordering(self):
"""Instances are ordered alphabetically by user name."""
agreement = factories.MemberAgreementFactory.create()
user_1 = UserFactory.create(name="zzz")
instance_1 = GroupAccountMembershipFactory.create(
group__signedagreement=agreement.signed_agreement,
account__user=user_1,
)
user_2 = UserFactory.create(name="aaa")
instance_2 = GroupAccountMembershipFactory.create(
group__signedagreement=agreement.signed_agreement,
account__user=user_2,
)
table = self.table_class(self.model.objects.all())
self.assertEqual(table.data[0], instance_2)
self.assertEqual(table.data[1], instance_1)


class CDSAWorkspaceRecordsTableTest(TestCase):
"""Tests for the CDSAWorkspaceRecordsTable class."""
Expand Down Expand Up @@ -343,6 +413,19 @@ def test_render_date_shared(self):
)
self.assertNotEqual(table.render_date_shared(cdsa_workspace), "—")

def test_ordering(self):
"""Instances are ordered alphabetically by user name."""
agreement = factories.DataAffiliateAgreementFactory.create()
instance_1 = factories.CDSAWorkspaceFactory.create(
study=agreement.study, workspace__name="zzz"
)
instance_2 = factories.CDSAWorkspaceFactory.create(
study=agreement.study, workspace__name="aaa"
)
table = self.table_class(self.model.objects.all())
self.assertEqual(table.data[0], instance_2)
self.assertEqual(table.data[1], instance_1)


class CDSAWorkspaceTableTest(TestCase):
"""Tests for the CDSAWorkspaceTable class."""
Expand Down Expand Up @@ -392,3 +475,11 @@ def test_render_is_shared_shared_with_different_group(self):
)
table = self.table_class(self.model.objects.all())
self.assertEqual("", table.rows[0].get_cell_value("is_shared"))

def test_ordering(self):
"""Instances are ordered alphabetically by user name."""
instance_1 = factories.CDSAWorkspaceFactory.create(workspace__name="zzz")
instance_2 = factories.CDSAWorkspaceFactory.create(workspace__name="aaa")
table = self.table_class(self.model.objects.all())
self.assertEqual(table.data[0], instance_2.workspace)
self.assertEqual(table.data[1], instance_1.workspace)
8 changes: 6 additions & 2 deletions primed/dbgap/tables.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ class Meta:
"dbgap_phs",
"studies",
)
order_by = ("dbgap_phs",)

def render_dbgap_phs(self, value):
return "phs{0:06d}".format(value)
Expand Down Expand Up @@ -140,6 +141,7 @@ class Meta:
"dbgap_project_id",
"principal_investigator",
)
order_by = ("dbgap_project_id",)


class dbGaPDataAccessSnapshotTable(tables.Table):
Expand All @@ -151,6 +153,7 @@ class Meta:
"pk",
"created",
)
order_by = ("-created",)

pk = tables.Column(linkify=True, verbose_name="Details", orderable=False)
number_approved_dars = tables.columns.Column(
Expand All @@ -169,11 +172,11 @@ class Meta:
def render_pk(self, record):
return "See details"

def render_number_approved_dars(self, value, record):
def render_number_approved_dars(self, record):
n_dars = record.dbgapdataaccessrequest_set.approved().count()
return n_dars

def render_number_requested_dars(self, value, record):
def render_number_requested_dars(self, record):
n_dars = record.dbgapdataaccessrequest_set.count()
return n_dars

Expand Down Expand Up @@ -235,6 +238,7 @@ class Meta:
"dbgap_consent_abbreviation",
"dbgap_current_status",
)
order_by = ("dbgap_dar_id",)


class dbGaPDataAccessRequestSummaryTable(tables.Table):
Expand Down
Loading