Assorted fixes (#47)
* Invokes the site tree fix from previous fixes. * Adds a disclaimer noting that previous years’ accounts have not been carried over. Fixes #43 * Adds proposal type to the proposal summary page. Fixes #40 * Adds travel/accommodation assistance to the proposals page, but makes it only visible to speakers in the proposal, or review managers. Fixes #41. Fixes #42. * Reduces a lot of the whitespace in the header and footer. Fixes #44 * Proposals review page now shows information for every speaker on a proposal. Fixes #45 * Makes sure that non_field_errors are displayed by forms. Fixes #37
This commit is contained in:
parent
e32942a49d
commit
ecabf31e54
6 changed files with 77 additions and 12 deletions
|
@ -13,6 +13,7 @@ class MonkeyPatchMiddleware(object):
|
||||||
def do_monkey_patch():
|
def do_monkey_patch():
|
||||||
patch_speaker_profile_form()
|
patch_speaker_profile_form()
|
||||||
patch_accounts_to_send_bcc()
|
patch_accounts_to_send_bcc()
|
||||||
|
fix_sitetree_check_access_500s()
|
||||||
|
|
||||||
# Remove this function from existence
|
# Remove this function from existence
|
||||||
global do_monkey_patch
|
global do_monkey_patch
|
||||||
|
|
|
@ -1,5 +1,10 @@
|
||||||
{% load lca2017_tags %}
|
{% load lca2017_tags %}
|
||||||
|
|
||||||
|
{% if form.non_field_errors %}
|
||||||
|
{{ form.non_field_errors }}
|
||||||
|
<br/>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{% for field in form %}
|
{% for field in form %}
|
||||||
{% if not field.is_hidden %}
|
{% if not field.is_hidden %}
|
||||||
<div class="fieldWrapper">
|
<div class="fieldWrapper">
|
||||||
|
|
|
@ -14,6 +14,10 @@
|
||||||
{% trans "Don't have an account?" %} <strong><a href="{% urlnext 'account_signup' %}">{% trans "Sign up" %}</a></strong>
|
{% trans "Don't have an account?" %} <strong><a href="{% urlnext 'account_signup' %}">{% trans "Sign up" %}</a></strong>
|
||||||
</p>
|
</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
<p>
|
||||||
|
{% trans "Accounts from previous years have not been carried over to this site." %}
|
||||||
|
{% trans "You will need to create a new account for this year's site." %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<form method="POST" action="{% url "account_login" %}" autocapitalize="off" {% if form.is_multipart %} enctype="multipart/form-data"{% endif %}>
|
<form method="POST" action="{% url "account_login" %}" autocapitalize="off" {% if form.is_multipart %} enctype="multipart/form-data"{% endif %}>
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
|
|
|
@ -1,8 +1,12 @@
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
|
{% load lca2017_tags %}
|
||||||
|
|
||||||
<h4>{% trans "Submitted by" %}</h4>
|
<h4>{% trans "Submitted by" %}</h4>
|
||||||
<p>{{ proposal.speaker }}</p>
|
<p>{{ proposal.speaker }}</p>
|
||||||
|
|
||||||
|
<h4>{% trans "Proposal Type" %}</h4>
|
||||||
|
<p>{{ proposal.kind.name|capfirst }}</p>
|
||||||
|
|
||||||
<h4>{% trans "Target Audience" %}</h4>
|
<h4>{% trans "Target Audience" %}</h4>
|
||||||
<p>{{ proposal.get_target_audience_display }} </p>
|
<p>{{ proposal.get_target_audience_display }} </p>
|
||||||
|
|
||||||
|
@ -40,14 +44,48 @@
|
||||||
<h4>{% trans "Special Requirements" %}</h4>
|
<h4>{% trans "Special Requirements" %}</h4>
|
||||||
<div class="special_requirements">{{ proposal.technical_requirements_html|safe }}</div>
|
<div class="special_requirements">{{ proposal.technical_requirements_html|safe }}</div>
|
||||||
|
|
||||||
<h4>{% trans "Speaker Bio" %}</h4>
|
{% for speaker in proposal.speakers %}
|
||||||
|
<h4>{% trans "Speaker:" %} {{ speaker.name }}</h4>
|
||||||
|
<h5>{% trans "Biography" %}</h5>
|
||||||
|
|
||||||
<div class="biography">{{ proposal.speaker.biography_html|safe }} </div>
|
<div class="biography">{{ proposal.speaker.biography_html|safe }} </div>
|
||||||
|
|
||||||
<h4>{% trans "Speaker Experience" %}</h4>
|
<h5>{% trans "Experience" %}</h5>
|
||||||
<div class="biography">{{ proposal.speaker.experience_html|safe }} </div>
|
<div class="biography">{{ proposal.speaker.experience_html|safe }} </div>
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
{% if can_manage_proposal or request.user.speaker_profile in proposal.speakers %}
|
||||||
|
|
||||||
|
<h4>{% trans "Assistance required?" %}</h4>
|
||||||
|
<br />
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th></th>
|
||||||
|
<th>{% trans "Travel" %}</th>
|
||||||
|
<th>{% trans "Accommodation" %}</th>
|
||||||
|
</tr>
|
||||||
|
{% for speaker in proposal.speakers %}
|
||||||
|
<tr>
|
||||||
|
<td>{{ speaker.name }}</td>
|
||||||
|
<td>{{ speaker.travel_assistance }}</td>
|
||||||
|
<td>{{ speaker.accommodation_assistance }}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
{% if proposal.speaker.accessibility_html %}
|
||||||
<h4>{% trans "Speaker Accessibility Requirements" %}</h4>
|
<h4>{% trans "Speaker Accessibility Requirements" %}</h4>
|
||||||
<div class="biography">{{ proposal.speaker.accessibility_html|safe }} </div>
|
{% for speaker in proposal.speakers %}
|
||||||
|
{% if speaker.accessibility_html %}
|
||||||
|
<h5>{{ speaker.name }}</h5>
|
||||||
|
<div class="biography">{{ speaker.accessibility_html|safe }} </div>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
<h4>{% trans "Documents" %}</h4>
|
<h4>{% trans "Documents" %}</h4>
|
||||||
<div>
|
<div>
|
||||||
|
|
|
@ -4,3 +4,16 @@ register = template.Library()
|
||||||
@register.assignment_tag()
|
@register.assignment_tag()
|
||||||
def classname(ob):
|
def classname(ob):
|
||||||
return ob.__class__.__name__
|
return ob.__class__.__name__
|
||||||
|
|
||||||
|
@register.simple_tag(takes_context=True)
|
||||||
|
def can_manage(context, proposal):
|
||||||
|
return proposal_permission(context, "manage", proposal)
|
||||||
|
|
||||||
|
@register.simple_tag(takes_context=True)
|
||||||
|
def can_review(context, proposal):
|
||||||
|
return proposal_permission(context, "review", proposal)
|
||||||
|
|
||||||
|
def proposal_permission(context, permname, proposal):
|
||||||
|
slug = proposal.kind.section.slug
|
||||||
|
perm = "reviews.can_%s_%s" % (permname, slug)
|
||||||
|
return context.request.user.has_perm(perm)
|
||||||
|
|
|
@ -1375,7 +1375,7 @@ table.alt tr:not(:last-of-type) {
|
||||||
|
|
||||||
@media (min-width: 48em) {
|
@media (min-width: 48em) {
|
||||||
.l-header {
|
.l-header {
|
||||||
margin-top: 6.25rem;
|
/*margin-top: 6.25rem; /* issue #44. We don't like this. */
|
||||||
}
|
}
|
||||||
.l-header--menu-opener {
|
.l-header--menu-opener {
|
||||||
display: none !important;
|
display: none !important;
|
||||||
|
@ -1430,7 +1430,7 @@ table.alt tr:not(:last-of-type) {
|
||||||
-ms-flex-direction: column;
|
-ms-flex-direction: column;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
margin-top: 100px;
|
margin-top: 100px;
|
||||||
margin-top: 6.25rem;
|
margin-top: 3.25rem;
|
||||||
padding: 50px 40px;
|
padding: 50px 40px;
|
||||||
padding: 3.125rem 40px;
|
padding: 3.125rem 40px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
@ -1466,7 +1466,8 @@ table.alt tr:not(:last-of-type) {
|
||||||
|
|
||||||
@media (min-width: 48em) {
|
@media (min-width: 48em) {
|
||||||
.l-footer {
|
.l-footer {
|
||||||
padding: 6.25rem 70px;
|
/*padding: 6.25rem 70px; /* issue #44 too much padding */
|
||||||
|
padding: 3.25rem 70px;
|
||||||
-ms-flex-direction: row;
|
-ms-flex-direction: row;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
-ms-flex-pack: justify;
|
-ms-flex-pack: justify;
|
||||||
|
@ -1479,13 +1480,15 @@ table.alt tr:not(:last-of-type) {
|
||||||
|
|
||||||
@media (min-width: 64em) {
|
@media (min-width: 64em) {
|
||||||
.l-footer {
|
.l-footer {
|
||||||
padding: 6.25rem 160px;
|
/*padding: 6.25rem 160px; */
|
||||||
|
padding: 3.25rem 160px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (min-width: 80em) {
|
@media (min-width: 80em) {
|
||||||
.l-footer {
|
.l-footer {
|
||||||
padding: 6.25rem 200px;
|
/*padding: 6.25rem 200px;*/
|
||||||
|
padding: 3.25rem 200px;
|
||||||
}
|
}
|
||||||
.l-footer--logo {
|
.l-footer--logo {
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
|
@ -1496,7 +1499,8 @@ table.alt tr:not(:last-of-type) {
|
||||||
|
|
||||||
@media (min-width: 1946px) {
|
@media (min-width: 1946px) {
|
||||||
.l-footer {
|
.l-footer {
|
||||||
padding: 6.25rem auto;
|
padding: 3.25rem auto;
|
||||||
|
/*padding: 6.25rem auto;*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue