diff --git a/uber/site_sections/summary.py b/uber/site_sections/summary.py index 0e6f7bb57..1219601e3 100644 --- a/uber/site_sections/summary.py +++ b/uber/site_sections/summary.py @@ -30,6 +30,45 @@ def generate_staff_badges(start_badge, end_badge, out, session): badge_type_name='Staff').run(out, session) +def volunteer_checklists(session): + attendees = session.query(Attendee) \ + .filter( + Attendee.staffing == True, + Attendee.badge_status.in_([c.NEW_STATUS, c.COMPLETED_STATUS])) \ + .order_by(Attendee.full_name, Attendee.id).all() + + checklist_items = OrderedDict() + for item_template in c.VOLUNTEER_CHECKLIST: + item_name = os.path.splitext(os.path.basename(item_template))[0] + if item_name.endswith('_item'): + item_name = item_name[:-5] + item_name = item_name.replace('_', ' ').title() + checklist_items[item_name] = item_template + + re_checkbox = re.compile(r'') - for attendee in attendees: - attendee.checklist_items = OrderedDict() - for item_name, item_template in checklist_items.items(): - html = render(item_template, {'attendee': attendee}, encoding=None) - match = re_checkbox.search(html) - attendee.checklist_items[item_name] = match.group(0) if match else 'N/A' + @csv_file + def volunteer_checklist_csv(self, out, session): + checklists = volunteer_checklists(session) + out.writerow(['Volunteer', 'Email'] + [s for s in checklists['checklist_items'].keys()]) + for attendee in checklists['attendees']: + checklist_items = [] + for item in attendee.checklist_items.values(): + checklist_items.append('Yes' if item['is_complete'] else 'No' if item['is_applicable'] else 'N/A') + out.writerow([attendee.full_name, attendee.email] + checklist_items) - return { - 'checklist_items': checklist_items, - 'attendees': attendees, - } + def volunteer_checklists(self, session): + return volunteer_checklists(session) @csv_file @site_mappable diff --git a/uber/templates/summary/volunteer_checklists.html b/uber/templates/summary/volunteer_checklists.html index 04c078280..be9e17c02 100644 --- a/uber/templates/summary/volunteer_checklists.html +++ b/uber/templates/summary/volunteer_checklists.html @@ -2,21 +2,37 @@ {% block title %}Volunteer Checklists{% endblock %} {% block content %} -

Volunteer Checklists

+ + +

Volunteer Checklists Download CSV

+ data-paging="true" + data-info="false"> {% for item_name in checklist_items.keys() %} - + {% endfor %} @@ -24,8 +40,18 @@

Volunteer Checklists

{% for attendee in attendees %} - {% for item_name, checkbox in attendee.checklist_items.items() %} - + {% for item_name, status in attendee.checklist_items.items() %} + {% endfor %} {% endfor %}
Volunteer{{ item_name }}{{ item_name }}
{{ attendee|form_link }}{{ checkbox|safe }} +
+ {% if status.is_complete %} + + {% elif status.is_applicable %} + + {% else %} + N/A + {% endif %} +
+