diff --git a/opentech/apply/funds/tables.py b/opentech/apply/funds/tables.py index b9d5626c11bfcfcb34d7da0b083ea5d3c48b231d..9028a5e609372b64d9efc095a3f466196fd96868 100644 --- a/opentech/apply/funds/tables.py +++ b/opentech/apply/funds/tables.py @@ -34,14 +34,14 @@ class SubmissionsTable(tables.Table): submit_time = tables.DateColumn(verbose_name="Submitted") phase = tables.Column(verbose_name="Status", order_by=('status',)) stage = tables.Column(verbose_name="Type", order_by=('status',)) - page = tables.Column(verbose_name="Fund") + fund = tables.Column(verbose_name="Fund", accessor='page') comments = tables.Column(accessor='comment_count', verbose_name="Comments") last_update = tables.DateColumn(accessor="last_update", verbose_name="Last updated") class Meta: model = ApplicationSubmission order_by = ('-last_update',) - fields = ('title', 'phase', 'stage', 'page', 'round', 'submit_time', 'last_update') + fields = ('title', 'phase', 'stage', 'fund', 'round', 'submit_time', 'last_update') sequence = fields + ('comments',) template_name = 'funds/tables/table.html' row_attrs = { @@ -69,7 +69,7 @@ class AdminSubmissionsTable(SubmissionsTable): reviews_stats = tables.TemplateColumn(template_name='funds/tables/column_reviews.html', verbose_name=mark_safe("Reviews\n<span>Assgn.\tComp.</span>"), orderable=False) class Meta(SubmissionsTable.Meta): - fields = ('title', 'phase', 'stage', 'page', 'round', 'lead', 'submit_time', 'last_update', 'reviews_stats') # type: ignore + fields = ('title', 'phase', 'stage', 'fund', 'round', 'lead', 'submit_time', 'last_update', 'reviews_stats') # type: ignore sequence = fields + ('comments',) def render_lead(self, value): @@ -129,14 +129,23 @@ class StatusMultipleChoiceFilter(Select2MultipleChoiceFilter): class SubmissionFilter(filters.FilterSet): round = Select2ModelMultipleChoiceFilter(queryset=get_used_rounds, label='Rounds') - funds = Select2ModelMultipleChoiceFilter(name='page', queryset=get_used_funds, label='Funds') + fund = Select2ModelMultipleChoiceFilter(name='page', queryset=get_used_funds, label='Funds') status = StatusMultipleChoiceFilter() lead = Select2ModelMultipleChoiceFilter(queryset=get_round_leads, label='Leads') reviewers = Select2ModelMultipleChoiceFilter(queryset=get_reviewers, label='Reviewers') class Meta: model = ApplicationSubmission - fields = ('funds', 'round', 'status') + fields = ('fund', 'round', 'status') + + def __init__(self, *args, exclude=list(), **kwargs): + super().__init__(*args, **kwargs) + + self.filters = { + field: filter + for field, filter in self.filters.items() + if field not in exclude + } class SubmissionFilterAndSearch(SubmissionFilter): diff --git a/opentech/apply/funds/views.py b/opentech/apply/funds/views.py index 574293fefec5a5300557e36c77528aa338c655ab..f21e1b74a14bedf5584a8a2e06d245961bafed80 100644 --- a/opentech/apply/funds/views.py +++ b/opentech/apply/funds/views.py @@ -41,6 +41,22 @@ class BaseAdminSubmissionsTable(SingleTableMixin, FilterView): table_class = AdminSubmissionsTable filterset_class = SubmissionFilter + excluded_fields = [] + + @property + def excluded(self): + return { + 'exclude': self.excluded_fields + } + + def get_table_kwargs(self): + return self.excluded + + def get_filterset_kwargs(self, filterset_class): + kwargs = super().get_filterset_kwargs(filterset_class) + kwargs.update(self.excluded) + return kwargs + def get_queryset(self): return self.filterset_class._meta.model.objects.current().for_table(self.request.user) @@ -56,10 +72,7 @@ class SubmissionListView(AllActivityContextMixin, BaseAdminSubmissionsTable): class SubmissionsByRound(BaseAdminSubmissionsTable): template_name = 'funds/submissions_by_round.html' - def get_table_kwargs(self): - return { - 'exclude': ('round', 'lead', 'page') - } + excluded_fields = ('round', 'lead', 'fund') def get_queryset(self): # We want to only show lab or Rounds in this view, their base class is Page