diff --git a/backend/grant/admin/views.py b/backend/grant/admin/views.py index 5d12e30f..e942a8dc 100644 --- a/backend/grant/admin/views.py +++ b/backend/grant/admin/views.py @@ -86,6 +86,7 @@ def stats(): .scalar() # Count contributions on proposals that didn't get funded for users who have specified a refund address contribution_refundable_count = db.session.query(func.count(ProposalContribution.id)) \ + .filter(ProposalContribution.refund_tx_id == None) \ .join(Proposal) \ .filter(Proposal.stage == ProposalStage.REFUNDING) \ .join(ProposalContribution.user) \ diff --git a/backend/grant/task/jobs.py b/backend/grant/task/jobs.py index a196f58c..4f763ee9 100644 --- a/backend/grant/task/jobs.py +++ b/backend/grant/task/jobs.py @@ -3,6 +3,7 @@ from datetime import datetime, timedelta from grant.extensions import db from grant.email.send import send_email from grant.utils.enums import ProposalStage +from grant.utils.misc import make_url class ProposalReminder: @@ -81,6 +82,7 @@ class ProposalDeadline: 'contribution': c, 'proposal': proposal, 'refund_address': c.user.settings.refund_address, + 'account_settings_url': make_url('/profile/settings?tab=account') }) diff --git a/backend/grant/utils/pagination.py b/backend/grant/utils/pagination.py index 34a287b2..23f7c2e1 100644 --- a/backend/grant/utils/pagination.py +++ b/backend/grant/utils/pagination.py @@ -149,14 +149,16 @@ class ContributionPagination(Pagination): if status_filters: query = query.filter(ProposalContribution.status.in_(status_filters)) - + if 'REFUNDABLE' in filters: - query = query.join(Proposal) \ + query = query.filter(ProposalContribution.refund_tx_id == None) \ + .join(Proposal) \ .filter(Proposal.stage == ProposalStage.REFUNDING) \ .join(ProposalContribution.user) \ .join(UserSettings) \ .filter(UserSettings.refund_address != None) \ + # SORT (see self.SORT_MAP) if sort: self.validate_sort(sort)