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:
Christopher Neugebauer 2016-07-09 23:14:31 +10:00 committed by Scott Bragg
parent e32942a49d
commit ecabf31e54
6 changed files with 77 additions and 12 deletions

View file

@ -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

View file

@ -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">

View file

@ -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 %}

View file

@ -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 }}&nbsp;</p> <p>{{ proposal.get_target_audience_display }}&nbsp;</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 }}&nbsp;</div> <div class="biography">{{ proposal.speaker.biography_html|safe }}&nbsp;</div>
<h4>{% trans "Speaker Experience" %}</h4> <h5>{% trans "Experience" %}</h5>
<div class="biography">{{ proposal.speaker.experience_html|safe }}&nbsp;</div> <div class="biography">{{ proposal.speaker.experience_html|safe }}&nbsp;</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 }}&nbsp;</div> {% for speaker in proposal.speakers %}
{% if speaker.accessibility_html %}
<h5>{{ speaker.name }}</h5>
<div class="biography">{{ speaker.accessibility_html|safe }}&nbsp;</div>
{% endif %}
{% endfor %}
{% endif %}
{% endif %}
<h4>{% trans "Documents" %}</h4> <h4>{% trans "Documents" %}</h4>
<div> <div>

View file

@ -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)

View file

@ -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;*/
} }
} }