From 984ed2432d5f7c563bb0a07c462e332ff66a01e4 Mon Sep 17 00:00:00 2001 From: Yingtong Li Date: Sun, 29 Dec 2019 00:54:44 +1100 Subject: [PATCH] Make budget/claim IDs more prominent --- sstreasury/jinja2/sstreasury/claim_print.html | 15 +++++- sstreasury/jinja2/sstreasury/claim_view.html | 13 ++++- .../sstreasury/email/budget_approved.md | 2 +- .../sstreasury/email/budget_commented.md | 2 +- .../email/budget_endorsed_drafter.md | 2 +- .../email/budget_endorsed_secretary.md | 2 +- .../sstreasury/email/budget_returned.md | 2 +- .../email/budget_returned_committee.md | 2 +- .../email/budget_submitted_drafter.md | 2 +- .../email/budget_submitted_treasurer.md | 2 +- .../jinja2/sstreasury/email/claim_approved.md | 2 +- .../sstreasury/email/claim_commented.md | 2 +- .../jinja2/sstreasury/email/claim_returned.md | 2 +- .../email/claim_submitted_drafter.md | 2 +- .../email/claim_submitted_treasurer.md | 2 +- sstreasury/views.py | 48 ++++++++++++------- 16 files changed, 71 insertions(+), 31 deletions(-) diff --git a/sstreasury/jinja2/sstreasury/claim_print.html b/sstreasury/jinja2/sstreasury/claim_print.html index 486e4bc..7bec819 100644 --- a/sstreasury/jinja2/sstreasury/claim_print.html +++ b/sstreasury/jinja2/sstreasury/claim_print.html @@ -60,7 +60,18 @@ Budget ID - {{ claim.budget_id }} + + {% if budget and budget.budgetrevision_set.reverse()[0].can_view(request.user) %} + {{ claim.budget_id }} + {% if budget.budgetrevision_set.reverse()[0].state != import('sstreasury.models').BudgetState.APPROVED.value %} + + {% endif %} + {% elif request.user.groups.filter(name='Treasury').exists() %} + {{ claim.budget_id }} + {% else %} + {{ claim.budget_id }} + {% endif %} + Comments @@ -117,5 +128,7 @@ } var editing = false; makeGrid(); + + print(); {% endblock %} diff --git a/sstreasury/jinja2/sstreasury/claim_view.html b/sstreasury/jinja2/sstreasury/claim_view.html index 3bd957b..a08e4ba 100644 --- a/sstreasury/jinja2/sstreasury/claim_view.html +++ b/sstreasury/jinja2/sstreasury/claim_view.html @@ -88,7 +88,18 @@ Budget ID - {{ claim.budget_id }} + + {% if budget and budget.budgetrevision_set.reverse()[0].can_view(request.user) %} + {{ claim.budget_id }} + {% if budget.budgetrevision_set.reverse()[0].state != import('sstreasury.models').BudgetState.APPROVED.value %} + + {% endif %} + {% elif request.user.groups.filter(name='Treasury').exists() %} + {{ claim.budget_id }} + {% else %} + {{ claim.budget_id }} + {% endif %} + Comments diff --git a/sstreasury/jinja2/sstreasury/email/budget_approved.md b/sstreasury/jinja2/sstreasury/email/budget_approved.md index 3a07900..0bb5cb0 100644 --- a/sstreasury/jinja2/sstreasury/email/budget_approved.md +++ b/sstreasury/jinja2/sstreasury/email/budget_approved.md @@ -1,3 +1,3 @@ -Your budget titled *{{ revision.name }}* has been reviewed by the committee and **approved**. The expenditure shown in the budget may now commence. +Your budget titled *{{ revision.name }}* (BU-{{ revision.budget.id }}) has been reviewed by the committee and **approved**. The expenditure shown in the budget may now commence. {{ baseurl }}{{ url('budget_view', kwargs={'id': revision.budget.id}) }} diff --git a/sstreasury/jinja2/sstreasury/email/budget_commented.md b/sstreasury/jinja2/sstreasury/email/budget_commented.md index b1f8582..d4b790c 100644 --- a/sstreasury/jinja2/sstreasury/email/budget_commented.md +++ b/sstreasury/jinja2/sstreasury/email/budget_commented.md @@ -1,4 +1,4 @@ -{{ comment.author.first_name }} {{ comment.author.last_name }} made a new comment on the budget *{{ revision.name }}*: +{{ comment.author.first_name }} {{ comment.author.last_name }} made a new comment on the budget *{{ revision.name }}* (BU-{{ revision.budget.id }}): ``` {{ comment.content }} diff --git a/sstreasury/jinja2/sstreasury/email/budget_endorsed_drafter.md b/sstreasury/jinja2/sstreasury/email/budget_endorsed_drafter.md index 1003ce0..cb4d806 100644 --- a/sstreasury/jinja2/sstreasury/email/budget_endorsed_drafter.md +++ b/sstreasury/jinja2/sstreasury/email/budget_endorsed_drafter.md @@ -1,3 +1,3 @@ -Your budget titled *{{ revision.name }}* has been reviewed and endorsed by Treasury, and referred to the committee. The committee will determine whether or not to approve the budget at its next meeting. +Your budget titled *{{ revision.name }}* (BU-{{ revision.budget.id }}) has been reviewed and endorsed by Treasury, and referred to the committee. The committee will determine whether or not to approve the budget at its next meeting. {{ baseurl }}{{ url('budget_view', kwargs={'id': revision.budget.id}) }} diff --git a/sstreasury/jinja2/sstreasury/email/budget_endorsed_secretary.md b/sstreasury/jinja2/sstreasury/email/budget_endorsed_secretary.md index 47c08fd..fd0bfb2 100644 --- a/sstreasury/jinja2/sstreasury/email/budget_endorsed_secretary.md +++ b/sstreasury/jinja2/sstreasury/email/budget_endorsed_secretary.md @@ -1,3 +1,3 @@ -A budget titled *{{ revision.name }}* has been endorsed by Treasury and referred to the committee for consideration at its next meeting. +A budget titled *{{ revision.name }}* (BU-{{ revision.budget.id }}) has been endorsed by Treasury and referred to the committee for consideration at its next meeting. {{ baseurl }}{{ url('budget_view', kwargs={'id': revision.budget.id}) }} diff --git a/sstreasury/jinja2/sstreasury/email/budget_returned.md b/sstreasury/jinja2/sstreasury/email/budget_returned.md index 7126511..ac90c6c 100644 --- a/sstreasury/jinja2/sstreasury/email/budget_returned.md +++ b/sstreasury/jinja2/sstreasury/email/budget_returned.md @@ -1,3 +1,3 @@ -Your budget titled *{{ revision.name }}* has been reviewed by Treasury and returned to you for re-drafting. You should make any requested changes and resubmit the budget. +Your budget titled *{{ revision.name }}* (BU-{{ revision.budget.id }}) has been reviewed by Treasury and returned to you for re-drafting. You should make any requested changes and resubmit the budget. {{ baseurl }}{{ url('budget_view', kwargs={'id': revision.budget.id}) }} diff --git a/sstreasury/jinja2/sstreasury/email/budget_returned_committee.md b/sstreasury/jinja2/sstreasury/email/budget_returned_committee.md index 22866b0..e8c156e 100644 --- a/sstreasury/jinja2/sstreasury/email/budget_returned_committee.md +++ b/sstreasury/jinja2/sstreasury/email/budget_returned_committee.md @@ -1,3 +1,3 @@ -Your budget titled *{{ revision.name }}* has been reviewed by the committee and returned to you for re-drafting. You should make any requested changes and resubmit the budget. +Your budget titled *{{ revision.name }}* (BU-{{ revision.budget.id }}) has been reviewed by the committee and returned to you for re-drafting. You should make any requested changes and resubmit the budget. {{ baseurl }}{{ url('budget_view', kwargs={'id': revision.budget.id}) }} diff --git a/sstreasury/jinja2/sstreasury/email/budget_submitted_drafter.md b/sstreasury/jinja2/sstreasury/email/budget_submitted_drafter.md index f331bd2..864cacb 100644 --- a/sstreasury/jinja2/sstreasury/email/budget_submitted_drafter.md +++ b/sstreasury/jinja2/sstreasury/email/budget_submitted_drafter.md @@ -1,3 +1,3 @@ -Your budget titled *{{ revision.name }}* has been submitted for Treasury review. +Your budget titled *{{ revision.name }}* (BU-{{ revision.budget.id }}) has been submitted for Treasury review. {{ baseurl }}{{ url('budget_view', kwargs={'id': revision.budget.id}) }} diff --git a/sstreasury/jinja2/sstreasury/email/budget_submitted_treasurer.md b/sstreasury/jinja2/sstreasury/email/budget_submitted_treasurer.md index e62b9d7..86dcbab 100644 --- a/sstreasury/jinja2/sstreasury/email/budget_submitted_treasurer.md +++ b/sstreasury/jinja2/sstreasury/email/budget_submitted_treasurer.md @@ -1,3 +1,3 @@ -A budget titled *{{ revision.name }}* has been submitted for your review. +A budget titled *{{ revision.name }}* (BU-{{ revision.budget.id }}) has been submitted for your review. {{ baseurl }}{{ url('budget_view', kwargs={'id': revision.budget.id}) }} diff --git a/sstreasury/jinja2/sstreasury/email/claim_approved.md b/sstreasury/jinja2/sstreasury/email/claim_approved.md index fd1da57..c006917 100644 --- a/sstreasury/jinja2/sstreasury/email/claim_approved.md +++ b/sstreasury/jinja2/sstreasury/email/claim_approved.md @@ -1,3 +1,3 @@ -Your reimbursement claim titled *{{ claim.purpose }}* has been reviewed and approved by Treasury, and will be paid in the next pay cycle. +Your reimbursement claim titled *{{ claim.purpose }}* (RE-{{ claim.id }}) has been reviewed and approved by Treasury, and will be paid in the next pay cycle. {{ baseurl }}{{ url('claim_view', kwargs={'id': claim.id}) }} diff --git a/sstreasury/jinja2/sstreasury/email/claim_commented.md b/sstreasury/jinja2/sstreasury/email/claim_commented.md index 3b5f67f..11da25c 100644 --- a/sstreasury/jinja2/sstreasury/email/claim_commented.md +++ b/sstreasury/jinja2/sstreasury/email/claim_commented.md @@ -1,4 +1,4 @@ -{{ comment.author.first_name }} {{ comment.author.last_name }} made a new comment on the reimbursement claim *{{ claim.purpose }}*: +{{ comment.author.first_name }} {{ comment.author.last_name }} made a new comment on the reimbursement claim *{{ claim.purpose }}* (RE-{{ claim.id }}): ``` {{ comment.content }} diff --git a/sstreasury/jinja2/sstreasury/email/claim_returned.md b/sstreasury/jinja2/sstreasury/email/claim_returned.md index 17ee9c4..9d6933e 100644 --- a/sstreasury/jinja2/sstreasury/email/claim_returned.md +++ b/sstreasury/jinja2/sstreasury/email/claim_returned.md @@ -1,3 +1,3 @@ -Your reimbursement claim titled *{{ claim.purpose }}* has been reviewed by Treasury and returned to you for re-drafting. You should make any requested changes and resubmit the claim. +Your reimbursement claim titled *{{ claim.purpose }}* (RE-{{ claim.id }}) has been reviewed by Treasury and returned to you for re-drafting. You should make any requested changes and resubmit the claim. {{ baseurl }}{{ url('claim_view', kwargs={'id': claim.id}) }} diff --git a/sstreasury/jinja2/sstreasury/email/claim_submitted_drafter.md b/sstreasury/jinja2/sstreasury/email/claim_submitted_drafter.md index c3bd92c..b73e438 100644 --- a/sstreasury/jinja2/sstreasury/email/claim_submitted_drafter.md +++ b/sstreasury/jinja2/sstreasury/email/claim_submitted_drafter.md @@ -1,3 +1,3 @@ -Your reimbursement claim titled *{{ claim.purpose }}* has been submitted for Treasury review. +Your reimbursement claim titled *{{ claim.purpose }}* (RE-{{ claim.id }}) has been submitted for Treasury review. {{ baseurl }}{{ url('claim_view', kwargs={'id': claim.id}) }} diff --git a/sstreasury/jinja2/sstreasury/email/claim_submitted_treasurer.md b/sstreasury/jinja2/sstreasury/email/claim_submitted_treasurer.md index c404a97..aaa3808 100644 --- a/sstreasury/jinja2/sstreasury/email/claim_submitted_treasurer.md +++ b/sstreasury/jinja2/sstreasury/email/claim_submitted_treasurer.md @@ -1,3 +1,3 @@ -A reimbursement claim titled *{{ claim.purpose }}* has been submitted for your review. +A reimbursement claim titled *{{ claim.purpose }}* (RE-{{ claim.id }}) has been submitted for your review. {{ baseurl }}{{ url('claim_view', kwargs={'id': claim.id}) }} diff --git a/sstreasury/views.py b/sstreasury/views.py index f73b685..14b2440 100644 --- a/sstreasury/views.py +++ b/sstreasury/views.py @@ -276,10 +276,10 @@ def budget_action(request, budget, revision): emailer = Emailer() for user in User.objects.filter(groups__name='Treasury'): if user != request.user: - emailer.send_mail([user.email], 'New comment on budget: {}'.format(revision.name), 'sstreasury/email/budget_commented.md', {'revision': revision, 'comment': comment}) + emailer.send_mail([user.email], 'New comment on budget: {} (BU-{})'.format(revision.name, budget.id), 'sstreasury/email/budget_commented.md', {'revision': revision, 'comment': comment}) for user in revision.contributors.all(): if user != request.user: - emailer.send_mail([user.email], 'New comment on budget: {}'.format(revision.name), 'sstreasury/email/budget_commented.md', {'revision': revision, 'comment': comment}) + emailer.send_mail([user.email], 'New comment on budget: {} (BU-{})'.format(revision.name, budget.id), 'sstreasury/email/budget_commented.md', {'revision': revision, 'comment': comment}) if 'Submit' in actions: if not revision.can_submit(request.user): @@ -290,9 +290,9 @@ def budget_action(request, budget, revision): emailer = Emailer() for user in User.objects.filter(groups__name='Treasury'): - emailer.send_mail([user.email], 'Action required: Budget submitted: {}'.format(revision.name), 'sstreasury/email/budget_submitted_treasurer.md', {'revision': revision}) + emailer.send_mail([user.email], 'Action required: Budget submitted: {} (BU-{})'.format(revision.name, budget.id), 'sstreasury/email/budget_submitted_treasurer.md', {'revision': revision}) for user in revision.contributors.all(): - emailer.send_mail([user.email], 'Budget submitted: {}'.format(revision.name), 'sstreasury/email/budget_submitted_drafter.md', {'revision': revision}) + emailer.send_mail([user.email], 'Budget submitted: {} (BU-{})'.format(revision.name, budget.id), 'sstreasury/email/budget_submitted_drafter.md', {'revision': revision}) if 'Withdraw' in actions: if not revision.can_withdraw(user): @@ -310,9 +310,9 @@ def budget_action(request, budget, revision): emailer = Emailer() for user in User.objects.filter(groups__name='Secretary'): - emailer.send_mail([user.email], 'Action required: Budget endorsed: {}'.format(revision.name), 'sstreasury/email/budget_endorsed_secretary.md', {'revision': revision}) + emailer.send_mail([user.email], 'Action required: Budget endorsed: {} (BU-{})'.format(revision.name, budget.id), 'sstreasury/email/budget_endorsed_secretary.md', {'revision': revision}) for user in revision.contributors.all(): - emailer.send_mail([user.email], 'Budget endorsed, awaiting committee approval: {}'.format(revision.name), 'sstreasury/email/budget_endorsed_drafter.md', {'revision': revision}) + emailer.send_mail([user.email], 'Budget endorsed, awaiting committee approval: {} (BU-{})'.format(revision.name, budget.id), 'sstreasury/email/budget_endorsed_drafter.md', {'revision': revision}) if 'Return' in actions: if not revision.can_return(user): @@ -323,7 +323,7 @@ def budget_action(request, budget, revision): emailer = Emailer() for user in revision.contributors.all(): - emailer.send_mail([user.email], 'Action required: Budget returned for re-drafting: {}'.format(revision.name), 'sstreasury/email/budget_returned.md', {'revision': revision}) + emailer.send_mail([user.email], 'Action required: Budget returned for re-drafting: {} (BU-{})'.format(revision.name, budget.id), 'sstreasury/email/budget_returned.md', {'revision': revision}) if 'Approve' in actions: if not revision.can_approve(user): @@ -334,7 +334,7 @@ def budget_action(request, budget, revision): emailer = Emailer() for user in revision.contributors.all(): - emailer.send_mail([user.email], 'Budget approved: {}'.format(revision.name), 'sstreasury/email/budget_approved.md', {'revision': revision}) + emailer.send_mail([user.email], 'Budget approved: {} (BU-{})'.format(revision.name, budget.id), 'sstreasury/email/budget_approved.md', {'revision': revision}) if 'CmteReturn' in actions: if not revision.can_cmtereturn(user): @@ -345,7 +345,7 @@ def budget_action(request, budget, revision): emailer = Emailer() for user in revision.contributors.all(): - emailer.send_mail([user.email], 'Action required: Budget returned for re-drafting: {}'.format(revision.name), 'sstreasury/email/budget_returned_committee.md', {'revision': revision}) + emailer.send_mail([user.email], 'Action required: Budget returned for re-drafting: {} (BU-{})'.format(revision.name, budget.id), 'sstreasury/email/budget_returned_committee.md', {'revision': revision}) return redirect(reverse('budget_view', kwargs={'id': budget.id})) @@ -422,8 +422,16 @@ def claim_view(request, claim): history = list(itertools.chain(claim.claimhistory_set.all(), claim.claimcomment_set.all())) history.sort(key=lambda x: x.time, reverse=True) + budget = None + if claim.budget_id: + try: + budget = models.Budget.objects.get(id=claim.budget_id.split('-')[-1]) + except models.Budget.DoesNotExist: + budget = None + return render(request, 'sstreasury/claim_view.html', { 'claim': claim, + 'budget': budget, 'history': history }) @@ -431,8 +439,16 @@ def claim_view(request, claim): @uses_claim @claim_viewable def claim_print(request, claim): + budget = None + if claim.budget_id: + try: + budget = models.Budget.objects.get(id=claim.budget_id.split('-')[-1]) + except models.Budget.DoesNotExist: + budget = None + return render(request, 'sstreasury/claim_print.html', { - 'claim': claim + 'claim': claim, + 'budget': budget }) @login_required @@ -482,9 +498,9 @@ def claim_action(request, claim): emailer = Emailer() for user in User.objects.filter(groups__name='Treasury'): if user != request.user: - emailer.send_mail([user.email], 'New comment on reimbursement claim: {}'.format(claim.purpose), 'sstreasury/email/claim_commented.md', {'claim': claim, 'comment': comment}) + emailer.send_mail([user.email], 'New comment on reimbursement claim: {} (RE-{})'.format(claim.purpose, claim.id), 'sstreasury/email/claim_commented.md', {'claim': claim, 'comment': comment}) if comment.author != request.user: - emailer.send_mail([comment.author], 'New comment on reimbursement claim: {}'.format(revision.name), 'sstreasury/email/claim_commented.md', {'claim': claim, 'comment': comment}) + emailer.send_mail([comment.author], 'New comment on reimbursement claim: {} (RE-{})'.format(revision.name, claim.id), 'sstreasury/email/claim_commented.md', {'claim': claim, 'comment': comment}) if 'Submit' in actions: if not claim.can_submit(request.user): @@ -495,8 +511,8 @@ def claim_action(request, claim): emailer = Emailer() for user in User.objects.filter(groups__name='Treasury'): - emailer.send_mail([user.email], 'Action required: Reimbursement claim submitted: {}'.format(claim.purpose), 'sstreasury/email/claim_submitted_treasurer.md', {'claim': claim}) - emailer.send_mail([claim.author.email], 'Reimbursement claim submitted: {}'.format(claim.purpose), 'sstreasury/email/claim_submitted_drafter.md', {'claim': claim}) + emailer.send_mail([user.email], 'Action required: Reimbursement claim submitted: {} (RE-{})'.format(claim.purpose, claim.id), 'sstreasury/email/claim_submitted_treasurer.md', {'claim': claim}) + emailer.send_mail([claim.author.email], 'Reimbursement claim submitted: {} (RE-{})'.format(claim.purpose, claim.id), 'sstreasury/email/claim_submitted_drafter.md', {'claim': claim}) if 'Withdraw' in actions: if not claim.can_withdraw(request.user): @@ -513,7 +529,7 @@ def claim_action(request, claim): claim.update_state(request.user, models.ClaimState.APPROVED) emailer = Emailer() - emailer.send_mail([claim.author.email], 'Claim approved, awaiting payment: {}'.format(claim.purpose), 'sstreasury/email/claim_approved.md', {'claim': claim}) + emailer.send_mail([claim.author.email], 'Claim approved, awaiting payment: {} (RE-{})'.format(claim.purpose, claim.id), 'sstreasury/email/claim_approved.md', {'claim': claim}) if 'Return' in actions: if not claim.can_approve(request.user): @@ -523,6 +539,6 @@ def claim_action(request, claim): claim.update_state(request.user, models.ClaimState.RESUBMIT) emailer = Emailer() - emailer.send_mail([claim.author.email], 'Action required: Reimbursement claim returned for re-drafting: {}'.format(claim.purpose), 'sstreasury/email/claim_returned.md', {'claim': claim}) + emailer.send_mail([claim.author.email], 'Action required: Reimbursement claim returned for re-drafting: {} (RE-{})'.format(claim.purpose, claim.id), 'sstreasury/email/claim_returned.md', {'claim': claim}) return redirect(reverse('claim_view', kwargs={'id': claim.id}))