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(): | ||||
|     patch_speaker_profile_form() | ||||
|     patch_accounts_to_send_bcc() | ||||
|     fix_sitetree_check_access_500s() | ||||
| 
 | ||||
|     # Remove this function from existence | ||||
|     global do_monkey_patch | ||||
|  |  | |||
|  | @ -1,5 +1,10 @@ | |||
| {% load lca2017_tags %} | ||||
| 
 | ||||
| {% if form.non_field_errors %} | ||||
|   {{ form.non_field_errors }} | ||||
|   <br/> | ||||
| {% endif %} | ||||
| 
 | ||||
| {% for field in form %} | ||||
|   {% if not field.is_hidden %} | ||||
|     <div class="fieldWrapper"> | ||||
|  |  | |||
|  | @ -14,6 +14,10 @@ | |||
|               {% trans "Don't have an account?" %}  <strong><a href="{% urlnext 'account_signup' %}">{% trans "Sign up" %}</a></strong> | ||||
|       </p> | ||||
|   {% 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 %}> | ||||
|                 {% csrf_token %} | ||||
|  |  | |||
|  | @ -1,8 +1,12 @@ | |||
| {% load i18n %} | ||||
| {% load lca2017_tags %} | ||||
| 
 | ||||
|     <h4>{% trans "Submitted by" %}</h4> | ||||
|     <p>{{ proposal.speaker }}</p> | ||||
| 
 | ||||
|     <h4>{% trans "Proposal Type" %}</h4> | ||||
|     <p>{{ proposal.kind.name|capfirst }}</p> | ||||
| 
 | ||||
|     <h4>{% trans "Target Audience" %}</h4> | ||||
|     <p>{{ proposal.get_target_audience_display }} </p> | ||||
| 
 | ||||
|  | @ -40,14 +44,48 @@ | |||
|     <h4>{% trans "Special Requirements" %}</h4> | ||||
|     <div class="special_requirements">{{ proposal.technical_requirements_html|safe }}</div> | ||||
| 
 | ||||
|     <h4>{% trans "Speaker Bio" %}</h4> | ||||
|     <div class="biography">{{ proposal.speaker.biography_html|safe }} </div> | ||||
|     {% for speaker in proposal.speakers %} | ||||
|       <h4>{% trans "Speaker:" %} {{ speaker.name }}</h4> | ||||
|       <h5>{% trans "Biography" %}</h5> | ||||
| 
 | ||||
|     <h4>{% trans "Speaker Experience" %}</h4> | ||||
|     <div class="biography">{{ proposal.speaker.experience_html|safe }} </div> | ||||
|       <div class="biography">{{ proposal.speaker.biography_html|safe }} </div> | ||||
| 
 | ||||
|       <h5>{% trans "Experience" %}</h5> | ||||
|       <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> | ||||
|         {% 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 "Speaker Accessibility Requirements" %}</h4> | ||||
|     <div class="biography">{{ proposal.speaker.accessibility_html|safe }} </div> | ||||
| 
 | ||||
|     <h4>{% trans "Documents" %}</h4> | ||||
|     <div> | ||||
|  |  | |||
|  | @ -4,3 +4,16 @@ register = template.Library() | |||
| @register.assignment_tag() | ||||
| def classname(ob): | ||||
|     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) { | ||||
|   .l-header { | ||||
|     margin-top: 6.25rem; | ||||
|     /*margin-top: 6.25rem;  /* issue #44. We don't like this. */ | ||||
|   } | ||||
|   .l-header--menu-opener { | ||||
|     display: none !important; | ||||
|  | @ -1430,7 +1430,7 @@ table.alt tr:not(:last-of-type) { | |||
|   -ms-flex-direction: column; | ||||
|   flex-direction: column; | ||||
|   margin-top: 100px; | ||||
|   margin-top: 6.25rem; | ||||
|   margin-top: 3.25rem; | ||||
|   padding: 50px 40px; | ||||
|   padding: 3.125rem 40px; | ||||
|   width: 100%; | ||||
|  | @ -1466,7 +1466,8 @@ table.alt tr:not(:last-of-type) { | |||
| 
 | ||||
| @media (min-width: 48em) { | ||||
|   .l-footer { | ||||
|     padding: 6.25rem 70px; | ||||
|     /*padding: 6.25rem 70px; /* issue #44 too much padding */ | ||||
|     padding: 3.25rem 70px; | ||||
|     -ms-flex-direction: row; | ||||
|     flex-direction: row; | ||||
|     -ms-flex-pack: justify; | ||||
|  | @ -1479,13 +1480,15 @@ table.alt tr:not(:last-of-type) { | |||
| 
 | ||||
| @media (min-width: 64em) { | ||||
|   .l-footer { | ||||
|     padding: 6.25rem 160px; | ||||
|     /*padding: 6.25rem 160px; */ | ||||
|     padding: 3.25rem 160px; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| @media (min-width: 80em) { | ||||
|   .l-footer { | ||||
|     padding: 6.25rem 200px; | ||||
|     /*padding: 6.25rem 200px;*/ | ||||
|     padding: 3.25rem 200px; | ||||
|   } | ||||
|   .l-footer--logo { | ||||
|     margin-bottom: 0; | ||||
|  | @ -1496,7 +1499,8 @@ table.alt tr:not(:last-of-type) { | |||
| 
 | ||||
| @media (min-width: 1946px) { | ||||
|   .l-footer { | ||||
|     padding: 6.25rem auto; | ||||
|     padding: 3.25rem auto; | ||||
|     /*padding: 6.25rem auto;*/ | ||||
|   } | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Christopher Neugebauer
						Christopher Neugebauer