Skip to content

Commit c6233b2

Browse files
authored
Grants admin show participant info (#4239)
1 parent d94e90d commit c6233b2

File tree

7 files changed

+191
-211
lines changed

7 files changed

+191
-211
lines changed

backend/grants/admin.py

Lines changed: 17 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
from datetime import timedelta
1111
from typing import Dict, List, Optional
1212
from countries.filters import CountryFilter
13-
from django import forms
1413
from django.contrib import admin, messages
1514
from django.db.models.query import QuerySet
1615
from django.utils import timezone
@@ -30,6 +29,7 @@
3029
from django.db.models import Exists, OuterRef
3130

3231
from django.contrib.admin import SimpleListFilter
32+
from participants.models import Participant
3333

3434
EXPORT_GRANTS_FIELDS = (
3535
"name",
@@ -351,39 +351,6 @@ def mark_rejected_and_send_email(modeladmin, request, queryset):
351351
messages.info(request, f"Sent Rejected reply email to {grant.name}")
352352

353353

354-
class GrantAdminForm(forms.ModelForm):
355-
class Meta:
356-
model = Grant
357-
fields = (
358-
"id",
359-
"name",
360-
"status",
361-
"approved_type",
362-
"ticket_amount",
363-
"travel_amount",
364-
"accommodation_amount",
365-
"total_amount",
366-
"full_name",
367-
"conference",
368-
"user",
369-
"age_group",
370-
"gender",
371-
"occupation",
372-
"grant_type",
373-
"python_usage",
374-
"been_to_other_events",
375-
"needs_funds_for_travel",
376-
"why",
377-
"notes",
378-
"nationality",
379-
"departure_country",
380-
"departure_city",
381-
"country_type",
382-
"applicant_reply_sent_at",
383-
"applicant_reply_deadline",
384-
)
385-
386-
387354
class IsProposedSpeakerFilter(SimpleListFilter):
388355
title = "Is Proposed Speaker"
389356
parameter_name = "is_proposed_speaker"
@@ -420,7 +387,6 @@ def queryset(self, request, queryset):
420387
class GrantAdmin(ExportMixin, ConferencePermissionMixin, admin.ModelAdmin):
421388
change_list_template = "admin/grants/grant/change_list.html"
422389
resource_class = GrantResource
423-
form = GrantAdminForm
424390
list_display = (
425391
"user_display_name",
426392
"country",
@@ -524,16 +490,27 @@ class GrantAdmin(ExportMixin, ConferencePermissionMixin, admin.ModelAdmin):
524490
"been_to_other_events",
525491
"community_contribution",
526492
"notes",
527-
"website",
528-
"twitter_handle",
529-
"github_handle",
530-
"linkedin_url",
531-
"mastodon_handle",
532493
)
533494
},
534495
),
535496
)
536497

498+
def change_view(self, request, object_id, form_url="", extra_context=None):
499+
extra_context = extra_context or {}
500+
grant = self.model.objects.get(id=object_id)
501+
owner_id = grant.user_id
502+
extra_context["participant"] = Participant.objects.filter(
503+
user_id=owner_id,
504+
conference_id=grant.conference_id,
505+
).first()
506+
507+
return super().change_view(
508+
request,
509+
object_id,
510+
form_url,
511+
extra_context=extra_context,
512+
)
513+
537514
@admin.display(description="User", ordering="user__full_name")
538515
def user_display_name(self, obj):
539516
if obj.user_id:

backend/reviews/admin.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -651,6 +651,10 @@ def _render_grant_review(
651651
can_review_items=review_session.can_review_items,
652652
seen=request.GET.get("seen", "").split(","),
653653
title=f"Grant Review: {grant.user.display_name}",
654+
participant=Participant.objects.filter(
655+
user_id=grant.user_id,
656+
conference=grant.conference,
657+
).first(),
654658
)
655659
return TemplateResponse(request, "grant-review.html", context)
656660

backend/reviews/templates/grant-review.html

Lines changed: 99 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
{% load i18n markdownify %}
33
{% load localize countryname %}
44

5+
56
{% block breadcrumbs %}
67
<div class="breadcrumbs">
78
<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
@@ -12,12 +13,25 @@
1213
</div>
1314
{% endblock %}
1415

16+
1517
{% block content %}
1618

1719
<style>
1820
* {
1921
box-sizing: border-box;
2022
}
23+
.grant-header {
24+
display: flex;
25+
justify-content: space-between;
26+
}
27+
.grant-header a {
28+
color: #fff;
29+
}
30+
.review-session {
31+
display: grid;
32+
grid-template-columns: 1fr 1fr;
33+
column-gap: 10px;
34+
}
2135

2236
.review-row {
2337
display: grid;
@@ -43,9 +57,10 @@
4357
margin-bottom: 10px;
4458
}
4559

46-
.comments-wrapper-label {
60+
.comments-wrapper label.comments-wrapper-label {
4761
display: block;
4862
margin-bottom: 5px;
63+
width: 100%;
4964
}
5065

5166
.comments-wrapper textarea {
@@ -78,82 +93,104 @@
7893
}
7994
</style>
8095
<fieldset class="module aligned">
81-
<h2>Grant</h2>
8296

83-
<div class="review-row">
84-
<strong>Name</strong>
85-
<div>{{grant.name}}</div>
86-
</div>
97+
<h2 class="grant-header">
98+
Grant
99+
<a target="_blank" href="{% url 'admin:grants_grant_change' object_id=grant.id %}">Open Grant</a>
87100

88-
<div class="review-row">
89-
<strong>Fullname</strong>
90-
<div>{{grant.full_name}}</div>
91-
</div>
101+
</h2>
92102

93-
<div class="review-row">
94-
<strong>Nationality</strong>
95-
<div>{{grant.get_nationality_display}}</div>
96-
</div>
103+
<div class="review-session">
104+
<div>
105+
<div class="review-row">
106+
<strong>Name</strong>
107+
<div>{{grant.name}}</div>
108+
</div>
97109

98-
<div class="review-row">
99-
<strong>Age Group</strong>
100-
<div>{{grant.get_age_group_display}}</div>
101-
</div>
110+
<div class="review-row">
111+
<strong>Fullname</strong>
112+
<div>{{grant.full_name}}</div>
113+
</div>
102114

103-
<div class="review-row">
104-
<strong>Gender</strong>
105-
<div>{{grant.get_gender_display}}</div>
106-
</div>
115+
<div class="review-row">
116+
<strong>Nationality</strong>
117+
<div>{{grant.get_nationality_display}}</div>
118+
</div>
107119

108-
<div class="review-row">
109-
<strong>Occupation</strong>
110-
<div>{{grant.get_occupation_display}}</div>
111-
</div>
120+
<div class="review-row">
121+
<strong>Age Group</strong>
122+
<div>{{grant.get_age_group_display}}</div>
123+
</div>
124+
125+
<div class="review-row">
126+
<strong>Gender</strong>
127+
<div>{{grant.get_gender_display}}</div>
128+
</div>
129+
130+
131+
<div class="review-row">
132+
<strong>Occupation</strong>
133+
<div>{{grant.get_occupation_display}}</div>
134+
</div>
135+
136+
<div class="review-row">
137+
<strong>Has sent a proposal?</strong>
138+
<div>{{has_sent_proposal|yesno}}</div>
139+
</div>
112140

113-
<div class="review-row">
114-
<strong>Grant type</strong>
115-
<div>
116-
{% for type_ in grant.grant_type %}
117-
{{type_}}
118-
{% endfor %}
119141
</div>
120-
</div>
121142

122-
<div class="review-row">
123-
<strong>Country type</strong>
124-
<div>{{grant.get_country_type_display}}</div>
125-
</div>
143+
<div>
126144

145+
<div class="review-row">
146+
<strong>Grant type</strong>
147+
<div>
148+
{% for type_ in grant.grant_type %}
149+
{{type_}}
150+
{% endfor %}
151+
</div>
152+
</div>
127153

128-
<div class="review-row">
129-
<strong>Needs visa</strong>
130-
<div>{{grant.need_visa|yesno}}</div>
131-
</div>
132154

133-
<div class="review-row">
134-
<strong>Needs accommodation</strong>
135-
<div>{{grant.need_accommodation|yesno}}</div>
136-
</div>
155+
<div class="review-row">
156+
<strong>Needs visa</strong>
157+
<div>{{grant.need_visa|yesno}}</div>
158+
</div>
137159

138-
<div class="review-row">
139-
<strong>Needs funds for travel</strong>
140-
<div>{{grant.needs_funds_for_travel|yesno}}</div>
141-
</div>
160+
<div class="review-row">
161+
<strong>Needs accommodation</strong>
162+
<div>{{grant.need_accommodation|yesno}}</div>
163+
</div>
142164

143-
<div class="review-row">
144-
<strong>Departure country</strong>
145-
<div>{{grant.get_departure_country_display}}</div>
146-
</div>
165+
<div class="review-row">
166+
<strong>Needs funds for travel</strong>
167+
<div>{{grant.needs_funds_for_travel|yesno}}</div>
168+
</div>
147169

148-
<div class="review-row">
149-
<strong>Departure city</strong>
150-
<div>{{grant.get_departure_city_display}}</div>
151-
</div>
170+
<div class="review-row">
171+
<strong>Country type</strong>
172+
<div>{{grant.get_country_type_display}}</div>
173+
</div>
174+
175+
176+
<div class="review-row">
177+
<strong>Departure country</strong>
178+
<div>{{grant.get_departure_country_display}}</div>
179+
</div>
180+
181+
<div class="review-row">
182+
<strong>Departure city</strong>
183+
<div>{{grant.get_departure_city_display}}</div>
184+
</div>
185+
186+
</div>
152187

153-
<div class="review-row">
154-
<strong>Has sent a proposal?</strong>
155-
<div>{{has_sent_proposal|yesno}}</div>
156188
</div>
189+
</fieldset>
190+
191+
<fieldset class="module aligned">
192+
<h2>Answers</h2>
193+
157194

158195
<div class="review-row">
159196
<strong>Why are you asking for a grant?</strong>
@@ -180,37 +217,10 @@ <h2>Grant</h2>
180217
<div>{{grant.notes|linebreaksbr}}</div>
181218
</div>
182219

183-
<div class="review-row">
184-
<strong>Socials</strong>
185-
<div>
186-
<ul>
187-
{% if grant.website %}
188-
<li><a target="_blank" rel="noopener noreferrer" href="{{grant.website}}">Website</a></li>
189-
{% endif %}
190-
{% if grant.twitter_handle %}
191-
<li><a target="_blank" rel="noopener noreferrer" href="https://twitter.com/@{{grant.twitter_handle}}">Twitter</a></li>
192-
{% endif %}
193-
{% if grant.github_handle %}
194-
<li><a target="_blank" rel="noopener noreferrer" href="https://github.com/{{grant.github_handle}}">GitHub</a></li>
195-
{% endif %}
196-
{% if grant.linkedin_url %}
197-
<li><a target="_blank" rel="noopener noreferrer" href="{{grant.linkedin_url}}">Linkedin</a></li>
198-
{% endif %}
199-
{% if grant.mastodon_handle %}
200-
<li><a target="_blank" rel="noopener noreferrer" href="{{grant.mastodon_handle}}">Mastodon</a></li>
201-
{% endif %}
202-
</ul>
203-
</div>
204-
</div>
205-
206-
<div class="review-row">
207-
<strong>Open Grant</strong>
208-
<div>
209-
<a target="_blank" href="{% url 'admin:grants_grant_change' object_id=grant.id %}">Open Grant</a>
210-
</div>
211-
</div>
212220
</fieldset>
213221

222+
{% include "includes/participant/view_info.html" with title="Socials info" %}
223+
214224
<fieldset class="module aligned">
215225
<h2>Your vote</h2>
216226
<form

backend/reviews/templates/proposal-review.html

Lines changed: 3 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -239,32 +239,10 @@ <h2>Speaker</h2>
239239
<a href="{% url 'admin:participants_participant_change' participant.id %}" target="_blank">Open Participant in admin</a>
240240
</div>
241241
</div>
242-
<div class="review-row">
243-
<strong>Socials</strong>
244-
<div>
245-
<ul>
246-
{% if participant.website %}
247-
<li><a target="_blank" rel="noopener noreferrer" href="{{participant.website}}">Website ({{participant.website|hostname}})</a></li>
248-
{% endif %}
249-
{% if participant.twitter_handle %}
250-
<li><a target="_blank" rel="noopener noreferrer" href="https://twitter.com/@{{participant.twitter_handle}}">Twitter ({{participant.twitter_handle}})</a></li>
251-
{% endif %}
252-
{% if participant.instagram_handle %}
253-
<li><a target="_blank" rel="noopener noreferrer" href="https://instagram.com/{{participant.instagram_handle}}">Instagram ({{participant.instagram_handle}})</a></li>
254-
{% endif %}
255-
{% if participant.linkedin_url %}
256-
<li><a target="_blank" rel="noopener noreferrer" href="{{participant.linkedin_url}}">Linkedin</a></li>
257-
{% endif %}
258-
{% if participant.facebook_url %}
259-
<li><a target="_blank" rel="noopener noreferrer" href="{{participant.facebook_url}}">Facebook</a></li>
260-
{% endif %}
261-
{% if participant.mastodon_handle %}
262-
<li><a target="_blank" rel="noopener noreferrer" href="{{participant.mastodon_handle}}">Mastodon ({{participant.mastodon_handle}})</a></li>
263-
{% endif %}
264-
</ul>
265-
</div>
266-
</div>
267242
</fieldset>
243+
244+
{% include "includes/participant/view_info.html" with title="Socials info" %}
245+
268246
<fieldset class="module aligned">
269247
<h2>Your vote</h2>
270248
<form
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{% extends "admin/change_form.html" %}
2+
3+
{% block after_field_sets %}
4+
{% include "includes/participant/view_info.html" with title="Grantee info" %}
5+
{% endblock %}

0 commit comments

Comments
 (0)