All tasks done
9 | 10 |There are no more tasks to do - well done!
11 | 12 |Note - there map be more tasks in the system, but none need doing right now.
13 | 14 |├── .gitignore ├── .travis.yml ├── Gemfile ├── Gemfile.lock ├── LICENSE.txt ├── README.md ├── Vagrantfile ├── bin ├── create-images.sh ├── deskew-and-unpaper.py ├── name_find_and_replace.py ├── name_matcher.py ├── prepare_environment.bash ├── run_management_command ├── run_management_command_capture_stdout ├── update_hansard.bash ├── update_za_hansard.bash ├── vagrant-base.bash └── vagrant-install.bash ├── conf ├── .gitignore ├── crontab.ugly ├── general.yml-example ├── httpd.conf-example ├── nginx.conf.example ├── packages └── sysvinit.example ├── data └── .gitkeep ├── docs ├── BACKGROUND.md ├── INSTALL.md ├── OVERVIEW.md ├── STYLING_NOTES.md ├── TESTING.md ├── TROUBLESHOOTING.md └── south_africa.md ├── manage.py ├── pombola ├── .gitignore ├── __init__.py ├── admin_additions │ ├── __init__.py │ └── templates │ │ └── admin │ │ ├── base_site.html │ │ └── edit_inline │ │ └── tabular.html ├── api │ ├── __init__.py │ └── permissions.py ├── bills │ ├── __init__.py │ ├── admin.py │ ├── migrations │ │ ├── 0001_initial.py │ │ └── __init__.py │ ├── models.py │ ├── templates │ │ └── bills │ │ │ ├── _bill_link.html │ │ │ ├── _pagination.html │ │ │ ├── _person_recent_bills.html │ │ │ ├── bill_list.html │ │ │ └── index.html │ ├── urls.py │ └── views.py ├── budgets │ ├── README.md │ ├── __init__.py │ ├── admin.py │ ├── management │ │ ├── __init__.py │ │ └── commands │ │ │ ├── __init__.py │ │ │ └── budgets_import_place_budgets.py │ ├── migrations │ │ ├── 0001_initial.py │ │ ├── 0002_datetimefield_remove_default.py │ │ └── __init__.py │ ├── models.py │ └── templates │ │ └── budgets │ │ └── budgets.html ├── config.py ├── core │ ├── __init__.py │ ├── admin.py │ ├── context_processors.py │ ├── fixtures │ │ └── test_data.json │ ├── kenya_import_scripts │ │ ├── extract_data_from_original_mzalendo_db.pl │ │ ├── extract_positions_from_db.pl │ │ ├── import_cdf_data_from_csv.py │ │ ├── import_committees_csv.py │ │ ├── import_constituency_county_map.py │ │ ├── import_contacts_from_tuples.py │ │ ├── import_contituencies_from_json.py │ │ ├── import_data_from_mzalendo.py │ │ ├── import_member_comments_from_json.py │ │ ├── import_member_photos.py │ │ ├── import_members_from_json.py │ │ ├── import_parties_from_json.py │ │ ├── import_positions_from_json.py │ │ ├── name_to_first_last.py │ │ ├── scrape_data_from_mzalendo.pl │ │ └── update_names.py │ ├── logging_filters.py │ ├── lookups.py │ ├── management │ │ ├── __init__.py │ │ ├── commands │ │ │ ├── __init__.py │ │ │ ├── core_check_mp_aspirants.py │ │ │ ├── core_cleanup_disqus_urls.py │ │ │ ├── core_create_elected_positions.py │ │ │ ├── core_create_places_from_mapit_entries.py │ │ │ ├── core_database_dump.py │ │ │ ├── core_end_positions.py │ │ │ ├── core_export_summary_csvs.py │ │ │ ├── core_export_to_popolo_json.py │ │ │ ├── core_extend_areas_to_generation_2.py │ │ │ ├── core_extend_party_memberships.py │ │ │ ├── core_find_stale_elasticsearch_documents.py │ │ │ ├── core_fix_ward_names.py │ │ │ ├── core_import_basic_positions_csv.py │ │ │ ├── core_import_kenyan_boundaries_2013.py │ │ │ ├── core_list_malformed_slugs.py │ │ │ ├── core_list_person_primary_images.py │ │ │ ├── core_match_places_to_mapit_areas.py │ │ │ ├── core_match_places_to_mapit_areas_2013.py │ │ │ ├── core_merge_organisations.py │ │ │ ├── core_merge_people.py │ │ │ ├── core_move_profile_url_to_parliament_url.py │ │ │ ├── core_output_constituency_party_affiliation.py │ │ │ ├── core_output_mp_contact_csv.py │ │ │ ├── core_output_mp_scorecard_csv.py │ │ │ ├── core_position_deduplicate.py │ │ │ ├── core_render_template.py │ │ │ └── core_set_area_parents.py │ │ └── merge.py │ ├── migrations │ │ ├── 0001_initial.py │ │ ├── 0002_add_related_name.py │ │ ├── 0003_new_emailfield_max_length.py │ │ ├── 0004_parliamentarysession_position_title.py │ │ ├── 0005_parliamentarysession_make_house_optional.py │ │ ├── 0006_add_role_responsibilities.py │ │ ├── 0007_add_preferred_contact_option.py │ │ ├── 0008_sort_organisations_by_name.py │ │ ├── 0009_organisation_short_name.py │ │ ├── 0010_organisation_update_short_name.py │ │ ├── 0011_organisation_alter_short_name.py │ │ ├── 0012_organisation_seats.py │ │ ├── 0013_organisation_show_attendance.py │ │ ├── 0014_auto_20190906_1342.py │ │ └── __init__.py │ ├── models.py │ ├── popolo.py │ ├── seltests │ │ ├── __init__.py │ │ ├── admin_autocomplete.py │ │ └── basics.py │ ├── static │ │ ├── .gitignore │ │ ├── config.rb │ │ ├── css │ │ │ └── jquery.countdown-v1.6.0.css │ │ ├── images │ │ │ ├── assembly-16x16.jpg │ │ │ ├── chevron-left-alt.png │ │ │ ├── chevron-right-alt.png │ │ │ ├── chevron-right.png │ │ │ ├── comment-16px.png │ │ │ ├── county-perf-facebook.png │ │ │ ├── county-perf-twitter.png │ │ │ ├── d-logo.png │ │ │ ├── d-smiley-sprite.png │ │ │ ├── down-logo.png │ │ │ ├── facebook-16px.png │ │ │ ├── fade-to-green.png │ │ │ ├── favicon.png │ │ │ ├── feature_chevrons.png │ │ │ ├── has-dropdown-dark.png │ │ │ ├── logo-450-x-150.png │ │ │ ├── m-logo.png │ │ │ ├── m-smiley-sprite.png │ │ │ ├── mz-person-detail-appearances.png │ │ │ ├── mz-person-detail-budget.png │ │ │ ├── mz-person-detail-experience.png │ │ │ ├── mz-person-detail-positions.png │ │ │ ├── nub.png │ │ │ ├── organisation-16x16.jpg │ │ │ ├── organisation-200x200.jpg │ │ │ ├── organisation-210x210.jpg │ │ │ ├── organisation-90x90.jpg │ │ │ ├── pagination.png │ │ │ ├── pencil-16px.png │ │ │ ├── person-16x16.jpg │ │ │ ├── person-200x200.jpg │ │ │ ├── person-210x210.jpg │ │ │ ├── person-60x60.jpg │ │ │ ├── person-90x90.jpg │ │ │ ├── place-16x16.jpg │ │ │ ├── place-200x200.jpg │ │ │ ├── place-90x90.jpg │ │ │ ├── positiontitle-16x16.jpg │ │ │ ├── question.png │ │ │ ├── quotes.png │ │ │ ├── score-average.png │ │ │ ├── score-bad.png │ │ │ ├── score-disabled.png │ │ │ ├── score-good.png │ │ │ ├── search-icon-dark.png │ │ │ ├── search-icon.png │ │ │ ├── social-links.png │ │ │ ├── twitter-16px.png │ │ │ ├── twitter-app-logo.png │ │ │ ├── ui-icons_444444_256x240.png │ │ │ ├── ui-icons_555555_256x240.png │ │ │ ├── ui-icons_777620_256x240.png │ │ │ ├── ui-icons_777777_256x240.png │ │ │ ├── ui-icons_cc0000_256x240.png │ │ │ └── ui-icons_ffffff_256x240.png │ │ ├── js │ │ │ ├── analytics.js │ │ │ ├── election_countdown.js │ │ │ ├── feeds.js │ │ │ ├── functions.js │ │ │ ├── hide-reveal.js │ │ │ ├── hover-dropdown.js │ │ │ ├── libs │ │ │ │ ├── jquery-ui.js │ │ │ │ ├── jquery.countdown-v1.6.0.js │ │ │ │ ├── jquery.form-v2.94.js │ │ │ │ ├── modernizr.js │ │ │ │ └── respond.1.4.2.js │ │ │ ├── load_appearances.js │ │ │ ├── map.js │ │ │ ├── survey.js │ │ │ ├── twitter-embed.js │ │ │ └── ui-test.js │ │ ├── sass │ │ │ ├── _ajax_dialog.scss │ │ │ ├── _breadcrumb.scss │ │ │ ├── _budgets.scss │ │ │ ├── _buttons.scss │ │ │ ├── _colours_default.scss │ │ │ ├── _comments.scss │ │ │ ├── _common.scss │ │ │ ├── _core.scss │ │ │ ├── _footer.scss │ │ │ ├── _hansard.scss │ │ │ ├── _header.scss │ │ │ ├── _help.scss │ │ │ ├── _hide-reveal.scss │ │ │ ├── _home_page.scss │ │ │ ├── _home_page_carousel.scss │ │ │ ├── _hover-dropdown.scss │ │ │ ├── _html_elements.scss │ │ │ ├── _info_pages.scss │ │ │ ├── _jquery-ui.scss │ │ │ ├── _jquery-ui.structure.scss │ │ │ ├── _jquery-ui.theme.scss │ │ │ ├── _listing.scss │ │ │ ├── _local-aspirants.scss │ │ │ ├── _menu.scss │ │ │ ├── _object_menu.scss │ │ │ ├── _page.scss │ │ │ ├── _pagination.scss │ │ │ ├── _print.scss │ │ │ ├── _scorecard.scss │ │ │ ├── _search.scss │ │ │ ├── _social-and-tools.scss │ │ │ ├── _social.scss │ │ │ ├── _vcard.scss │ │ │ ├── admin.scss │ │ │ └── countdown.scss │ │ ├── static_test.txt │ │ └── templates │ │ │ └── header.html │ ├── templates │ │ ├── core │ │ │ ├── _alphabetical_pagination.html │ │ │ ├── _object_menu_link.html │ │ │ ├── _people_listing.html │ │ │ ├── _person_open_graph.html │ │ │ ├── _place_people_position.html │ │ │ ├── _place_search_filters.html │ │ │ ├── _position_listing.html │ │ │ ├── _position_session_links.html │ │ │ ├── _search_pagination_text.html │ │ │ ├── contact_list.html │ │ │ ├── default_place_candidate_lists.html │ │ │ ├── generic_list.html │ │ │ ├── generic_list_item.html │ │ │ ├── help_api.html │ │ │ ├── object_base.html │ │ │ ├── organisation_base.html │ │ │ ├── organisation_comments.html │ │ │ ├── organisation_contact_details.html │ │ │ ├── organisation_detail.html │ │ │ ├── organisation_list.html │ │ │ ├── organisation_list_item.html │ │ │ ├── organisation_people.html │ │ │ ├── override_breadcrumb.html │ │ │ ├── parties.html │ │ │ ├── person_appearances.html │ │ │ ├── person_base.html │ │ │ ├── person_comments.html │ │ │ ├── person_contact_details.html │ │ │ ├── person_detail.html │ │ │ ├── person_experience.html │ │ │ ├── person_feature.html │ │ │ ├── person_list.html │ │ │ ├── person_list_item.html │ │ │ ├── person_menu.html │ │ │ ├── person_position_section.html │ │ │ ├── person_scorecard.html │ │ │ ├── place_aspirants.html │ │ │ ├── place_base.html │ │ │ ├── place_budgets.html │ │ │ ├── place_candidate_lists.html │ │ │ ├── place_comments.html │ │ │ ├── place_data.html │ │ │ ├── place_detail.html │ │ │ ├── place_election.html │ │ │ ├── place_list.html │ │ │ ├── place_list_item.html │ │ │ ├── place_organisations.html │ │ │ ├── place_people.html │ │ │ ├── place_places.html │ │ │ ├── place_places_child.html │ │ │ ├── place_places_child_list.html │ │ │ ├── place_projects.html │ │ │ ├── place_scorecard.html │ │ │ ├── position_detail.html │ │ │ ├── position_detail_grid.html │ │ │ ├── position_list.html │ │ │ ├── position_list_item.html │ │ │ ├── position_position_section.html │ │ │ ├── positiontitle_list_item.html │ │ │ ├── session_list.html │ │ │ ├── social_tools.html │ │ │ └── unknown_list_item.html │ │ ├── template-for-blog.html │ │ └── ui-test.html │ ├── templatetags │ │ ├── __init__.py │ │ ├── absolute_url.py │ │ ├── active_class.py │ │ ├── add_query_parameter.py │ │ ├── breadcrumbs.py │ │ ├── clean_html.py │ │ ├── get_from_key.py │ │ ├── hidden.py │ │ └── switch.py │ ├── tests │ │ ├── __init__.py │ │ ├── smoke_tests.py │ │ ├── test_clean_html_templatetags.py │ │ ├── test_commands.py │ │ ├── test_models.py │ │ ├── test_open_graph.py │ │ ├── test_organisation_kinds.py │ │ ├── test_organisations.py │ │ ├── test_persons.py │ │ ├── test_popolo.py │ │ ├── test_positions.py │ │ ├── test_templatetags.py │ │ └── test_views.py │ ├── urls.py │ ├── utils.py │ └── views.py ├── country │ ├── README.md │ └── __init__.py ├── experiments │ ├── __init__.py │ ├── admin.py │ ├── migrations │ │ ├── 0001_initial.py │ │ └── __init__.py │ ├── models.py │ ├── tests.py │ └── views.py ├── feedback │ ├── __init__.py │ ├── admin.py │ ├── forms.py │ ├── management │ │ ├── __init__.py │ │ └── commands │ │ │ ├── __init__.py │ │ │ └── feedback_report_pending.py │ ├── migrations │ │ ├── 0001_initial.py │ │ ├── 0002_new_emailfield_max_length_and_datetimefield_remove_default.py │ │ └── __init__.py │ ├── models.py │ ├── seltests │ │ ├── __init__.py │ │ └── feedback_dialog.py │ ├── templates │ │ └── feedback │ │ │ └── add.html │ ├── tests.py │ ├── urls.py │ └── views.py ├── generate_tasks.py ├── hansard │ ├── README.md │ ├── __init__.py │ ├── admin.py │ ├── api │ │ ├── __init__.py │ │ ├── serializers.py │ │ └── views.py │ ├── bin │ │ └── convert_pdf_to_html_on_remote_machine.bash │ ├── constants.py │ ├── fixtures │ │ └── hansard_test_data.json │ ├── kenya_parser.py │ ├── management │ │ ├── __init__.py │ │ └── commands │ │ │ ├── __init__.py │ │ │ ├── hansard_assign_speakers.py │ │ │ ├── hansard_check_for_new_sources.py │ │ │ ├── hansard_email_unmatched_speakers.py │ │ │ ├── hansard_process_sources.py │ │ │ ├── hansard_reattribute_entries.py │ │ │ └── hansard_women_speakers_word_frequency.py │ ├── migrations │ │ ├── 0001_initial.py │ │ ├── 0002_source_unique_together_constraint.py │ │ ├── 0003_datetimefield_remove_default.py │ │ └── __init__.py │ ├── models │ │ ├── __init__.py │ │ ├── alias.py │ │ ├── base.py │ │ ├── entry.py │ │ ├── sitting.py │ │ ├── source.py │ │ └── venue.py │ ├── templates │ │ ├── admin │ │ │ └── hansard │ │ │ │ └── alias │ │ │ │ └── change_list.html │ │ └── hansard │ │ │ ├── entry_list.html │ │ │ ├── index.html │ │ │ ├── person_summary.html │ │ │ └── sitting_detail.html │ ├── tests │ │ ├── 2011-09-01-assembly-sample.doc │ │ ├── 2011-09-01-assembly-sample.html │ │ ├── 2011-09-01-assembly-sample.json │ │ ├── 2011-09-01-assembly-sample.pdf │ │ ├── 2013-07-31-senate-sample.html │ │ ├── 2013-07-31-senate-sample.json │ │ ├── 2013-07-31-senate-sample.pdf │ │ ├── __init__.py │ │ ├── smoke_tests.py │ │ ├── test_alias.py │ │ ├── test_entry.py │ │ ├── test_kenya_parser.py │ │ ├── test_reattribute_entries.py │ │ ├── test_sitting.py │ │ ├── test_sitting_view.py │ │ └── test_source.py │ ├── urls.py │ └── views.py ├── interests_register │ ├── README.md │ ├── __init__.py │ ├── admin.py │ ├── fixtures │ │ └── sample_source.json │ ├── management │ │ ├── __init__.py │ │ └── commands │ │ │ ├── __init__.py │ │ │ ├── interests_register_delete_existing.py │ │ │ └── interests_register_import_from_json.py │ ├── migrations │ │ ├── 0001_initial.py │ │ └── __init__.py │ ├── models.py │ ├── tests.py │ └── views.py ├── kenya │ ├── 2013-election-data │ │ ├── .gitignore │ │ ├── gazette-results │ │ │ ├── governors-results.csv │ │ │ ├── members-results.csv │ │ │ ├── senators-results.csv │ │ │ ├── venues-county-assembly.csv │ │ │ ├── ward-results.csv │ │ │ └── woman-representatives-results.csv │ │ ├── names-manually-checked.csv │ │ ├── party-names-matched.csv │ │ ├── party-names.csv │ │ ├── positions-to-end-delete-and-alternative-names.csv │ │ ├── wards-names-matched.csv │ │ └── wards-names.csv │ ├── __init__.py │ ├── budget-data │ │ └── 2013-14-cdf.csv │ ├── election_data_2017 │ │ ├── __init__.py │ │ ├── iebc_offices.py │ │ └── results │ │ │ ├── na.csv │ │ │ ├── senate.csv │ │ │ └── wo.csv │ ├── forms.py │ ├── lib.py │ ├── management │ │ ├── __init__.py │ │ └── commands │ │ │ ├── __init__.py │ │ │ ├── core_set_iebc_api_ids.py │ │ │ ├── iebc_api.py │ │ │ ├── kenya_add_codes_to_mapit.py │ │ │ ├── kenya_adwords_csv.py │ │ │ ├── kenya_apply_updates.py │ │ │ ├── kenya_assign_aspirants_to_coalitions.py │ │ │ ├── kenya_check_for_recurring_problems.py │ │ │ ├── kenya_create_coalition_entries.py │ │ │ ├── kenya_dump_petition_and_senate_comments.py │ │ │ ├── kenya_get_possible_matches_from_iebc.py │ │ │ ├── kenya_hansard_speech_statistics.py │ │ │ ├── kenya_hide_people.py │ │ │ ├── kenya_import_2017_election_results.py │ │ │ ├── kenya_import_2017_photos.py │ │ │ ├── kenya_import_wards.py │ │ │ ├── kenya_matchup_coords_to_place.py │ │ │ ├── kenya_normalize_person_names.py │ │ │ ├── kenya_parse_iebc_office_data.py │ │ │ ├── kenya_remove_duplicate_aspirants.py │ │ │ ├── kenya_scrape_bills.py │ │ │ ├── kenya_set_election_results_from_gazette.py │ │ │ ├── kenya_sms_retrieve_messages.py │ │ │ └── kenya_update_aspirants_from_iebc.py │ ├── migrations │ │ ├── 0001_fix_mapit_area_types.py │ │ ├── 0002_adjust_parliamentary_sessions.py │ │ ├── 0003_remove_senate_organisation.py │ │ └── __init__.py │ ├── shujaaz.py │ ├── static │ │ ├── fonts │ │ │ ├── Skolar_Bold.woff │ │ │ ├── Skolar_Italic.woff │ │ │ └── Skolar_Regular.woff │ │ ├── images │ │ │ ├── chevron-grey-left-10x15.svg │ │ │ ├── chevron-grey-right-10x15.svg │ │ │ ├── chevron-red-6x10.svg │ │ │ ├── chevron-white.svg │ │ │ ├── facebook-icon.png │ │ │ ├── heinrich-boell.png │ │ │ ├── indigo-without-title.gif │ │ │ ├── logo-boll.png │ │ │ ├── logo-indigo.png │ │ │ ├── logo-mysociety.svg │ │ │ ├── logo-ned.svg │ │ │ ├── logo-nimd.png │ │ │ ├── mzalendo-awards-ribbon.png │ │ │ ├── mzalendo-header-background.svg │ │ │ ├── mzalendo-logo-large.png │ │ │ ├── mzalendo-logo-small.png │ │ │ ├── olympics-1st.png │ │ │ ├── olympics-2nd.png │ │ │ ├── olympics-3rd.png │ │ │ ├── parliament-400px.jpg │ │ │ ├── parliament-600px.jpg │ │ │ ├── peoples-shujaaz-award-badge.png │ │ │ ├── peoples-shujaaz-background.jpg │ │ │ ├── peoples-shujaaz-home-badge.png │ │ │ ├── peoples-shujaaz-logo.png │ │ │ ├── phone-white.svg │ │ │ ├── pin-logo.jpg │ │ │ ├── twitter-icon.png │ │ │ ├── wave-icon.png │ │ │ ├── women-curve-bottom.png │ │ │ ├── women-curve-top.png │ │ │ └── women-representative-topics-wordle.png │ │ ├── js │ │ │ ├── click-tracking.js │ │ │ ├── collapse-responsibilities.js │ │ │ ├── facebook-experiment.js │ │ │ ├── featured-person.js │ │ │ ├── lazy-loaded-images.js │ │ │ ├── libs │ │ │ │ └── blazy.js │ │ │ ├── riveted.js │ │ │ ├── select2-optgroup-matcher.js │ │ │ ├── sms-carousel.js │ │ │ └── women-wordcloud.js │ │ ├── kenya │ │ │ ├── election-homepage │ │ │ │ ├── base.css │ │ │ │ ├── images │ │ │ │ │ ├── countdown-icon.png │ │ │ │ │ ├── election-logo.png │ │ │ │ │ └── election-search.png │ │ │ │ └── style.css │ │ │ └── intro │ │ │ │ ├── intro.css │ │ │ │ ├── logo.png │ │ │ │ ├── logo.svg │ │ │ │ ├── logo@x2.png │ │ │ │ ├── logo_ie6.png │ │ │ │ └── search2.png │ │ └── sass │ │ │ ├── _bills.scss │ │ │ ├── _colours_kenya.scss │ │ │ ├── _county_performance.scss │ │ │ ├── _election-area-page.scss │ │ │ ├── _facebook_experiment.scss │ │ │ ├── _kenya_breadcrumb.scss │ │ │ ├── _kenya_footer.scss │ │ │ ├── _kenya_grid.scss │ │ │ ├── _kenya_hansard.scss │ │ │ ├── _kenya_header.scss │ │ │ ├── _kenya_home.scss │ │ │ ├── _kenya_menu.scss │ │ │ ├── _kenya_overrides.scss │ │ │ ├── _kenya_wrapper.scss │ │ │ ├── _shujaaz.scss │ │ │ ├── _women.scss │ │ │ └── kenya.scss │ ├── templates │ │ ├── 404.html │ │ ├── _county_petition.html │ │ ├── _county_senate.html │ │ ├── _county_share.html │ │ ├── _person_gallery_item.html │ │ ├── _share_facebook.html │ │ ├── _share_twitter.html │ │ ├── _shujaaz-finalist.html │ │ ├── _youth_comment.html │ │ ├── _youth_input.html │ │ ├── _youth_share.html │ │ ├── _youth_support.html │ │ ├── base.html │ │ ├── candidate_data_attribution.html │ │ ├── core │ │ │ ├── _position_listing.html │ │ │ ├── object_base.html │ │ │ ├── person_appearances.html │ │ │ ├── person_base.html │ │ │ ├── person_bills.html │ │ │ ├── person_detail.html │ │ │ ├── person_detail_appearance_list.html │ │ │ ├── person_detail_experience_list.html │ │ │ ├── person_detail_responsibilities.html │ │ │ ├── person_experience.html │ │ │ └── person_feature.html │ │ ├── county-performance-petition-submission.html │ │ ├── county-performance-senate-submission.html │ │ ├── county-performance.html │ │ ├── custom_place_candidate_lists.html │ │ ├── disqus_comments.html │ │ ├── down.html │ │ ├── facebook-ajax-response.html │ │ ├── facebook-experiment-placebo-thanks.html │ │ ├── facebook-experiment-placebo.html │ │ ├── facebook-experiment-politics-thanks.html │ │ ├── facebook-experiment-politics.html │ │ ├── find-polling-station.html │ │ ├── footer.html │ │ ├── header.html │ │ ├── home-2013-election.html │ │ ├── home.html │ │ ├── iebc_office_detail.html │ │ ├── iebc_office_detail_ajax.html │ │ ├── iebc_office_single_select.html │ │ ├── intro.html │ │ ├── main_menu.html │ │ ├── menu_entries.html │ │ ├── register-to-vote.html │ │ ├── reps-female.html │ │ ├── reps-young.html │ │ ├── shujaaz-2014.html │ │ ├── shujaaz-2015.html │ │ ├── shujaaz-2018.html │ │ ├── shujaaz-voting.html │ │ ├── site_header.html │ │ ├── site_header_icon_facebook.html │ │ ├── site_header_icon_instagram.html │ │ ├── site_header_icon_twitter.html │ │ ├── site_header_icon_youtube.html │ │ ├── site_header_logo.html │ │ ├── site_header_search.html │ │ ├── twitter_widget.html │ │ ├── vote-thanks.html │ │ ├── women.html │ │ ├── youth-employment-comment-submission.html │ │ ├── youth-employment-input-submission.html │ │ ├── youth-employment-support-submission.html │ │ └── youth-employment.html │ ├── tests.py │ ├── urls.py │ ├── views.py │ ├── views_facebook_experiments.py │ └── views_iebc_office_locator.py ├── map │ ├── __init__.py │ ├── static │ │ ├── images │ │ │ └── crosshairs.png │ │ └── js │ │ │ └── map-drilldown.js │ ├── templates │ │ └── map │ │ │ └── home.html │ ├── urls.py │ └── views.py ├── middleware.py ├── nigeria │ ├── __init__.py │ ├── data │ │ ├── Nigeria - Political Atlas for SYE.csv │ │ ├── README.md │ │ ├── governors-2014-05-14.csv │ │ ├── governors-wikipedia-2012-02-14.csv │ │ ├── lga-name-corrections.csv │ │ └── manually-matched-FED-and-SEN.csv │ ├── initial_import │ │ ├── .gitignore │ │ ├── extract_areas.py │ │ ├── extract_positions_from_json_to_csv.py │ │ ├── extract_urls.py │ │ ├── import_people_from_json.py │ │ ├── import_positions_from_csv.py │ │ ├── representative_page_to_json.py │ │ ├── run.bash │ │ ├── senator_page_to_json.py │ │ └── unions │ │ │ ├── LGA-mappings.csv │ │ │ ├── constituencies_and_LGAs.csv │ │ │ ├── constituencies_and_LGAs_for_create_unions.csv │ │ │ ├── notes.txt │ │ │ ├── states_and_senatorial_districts.csv │ │ │ └── states_and_senatorial_districts_for_create_union.csv │ ├── lib.py │ ├── management │ │ ├── __init__.py │ │ └── commands │ │ │ ├── __init__.py │ │ │ ├── nigeria_add_governors.py │ │ │ ├── nigeria_add_polling_units_to_mapit.py │ │ │ ├── nigeria_fix_federal_constituencies.py │ │ │ ├── nigeria_fix_place_mapit_matches.py │ │ │ ├── nigeria_fix_senatorial_districts.py │ │ │ ├── nigeria_lga_name_helper.py │ │ │ ├── nigeria_load_lga_name_alternatives.py │ │ │ ├── nigeria_update_governors.py │ │ │ ├── nigeria_update_lga_boundaries_from_gadm.py │ │ │ └── nigeria_update_party_memberships.py │ ├── static │ │ ├── images │ │ │ ├── d-logo.png │ │ │ ├── favicon.png │ │ │ ├── header_bottom.png │ │ │ ├── header_top.png │ │ │ ├── logo-450-x-150.png │ │ │ ├── lr-carousel-arrows.png │ │ │ ├── mz-nigeria-logo-symbol.png │ │ │ ├── mz-nigeria-logo-text-small.png │ │ │ ├── mz-nigeria-logo-text.png │ │ │ └── mz-nigeria-logo.png │ │ └── sass │ │ │ ├── _colours_nigeria.scss │ │ │ ├── _nigeria_overrides.scss │ │ │ └── nigeria.scss │ ├── templates │ │ ├── 404.html │ │ ├── base.html │ │ ├── custom_place_candidate_lists.html │ │ ├── down.html │ │ ├── footer.html │ │ ├── header.html │ │ ├── home.html │ │ ├── info │ │ │ ├── blog_list.html │ │ │ └── blog_post.html │ │ ├── menu_entries.html │ │ ├── search │ │ │ └── poll-unit-number.html │ │ ├── site_header_logo.html │ │ ├── site_header_search.html │ │ └── spinner │ │ │ └── slides │ │ │ └── spinner_image-content.html │ ├── tests.py │ ├── urls.py │ └── views.py ├── place_data │ ├── __init__.py │ ├── bin │ │ └── import_place_data.py │ ├── migrations │ │ ├── 0001_initial.py │ │ └── __init__.py │ └── models.py ├── projects │ ├── __init__.py │ ├── admin.py │ ├── migrations │ │ ├── 0001_initial.py │ │ ├── 0002_datetimefield_remove_default.py │ │ └── __init__.py │ ├── models.py │ ├── templates │ │ └── projects │ │ │ ├── in_place.html │ │ │ └── place_summary.html │ ├── urls.py │ └── views.py ├── scorecards │ ├── __init__.py │ ├── admin.py │ ├── management │ │ ├── __init__.py │ │ └── commands │ │ │ ├── __init__.py │ │ │ ├── scorecard_update_person_contact_scores.py │ │ │ └── scorecard_update_person_hansard_appearances.py │ ├── migrations │ │ ├── 0001_initial.py │ │ ├── 0002_datetimefield_remove_default.py │ │ └── __init__.py │ ├── models.py │ ├── templates │ │ ├── admin │ │ │ └── scorecards │ │ │ │ └── data │ │ │ │ ├── change_list.html │ │ │ │ └── upload_csv.html │ │ └── scorecards │ │ │ └── scorecard.html │ ├── tests.py │ └── views.py ├── search │ ├── __init__.py │ ├── geocoder.py │ ├── search_indexes.py │ ├── templates │ │ └── search │ │ │ ├── _search_pagination.html │ │ │ ├── _search_results.html │ │ │ ├── global_search.html │ │ │ ├── hansard.html │ │ │ ├── indexes │ │ │ ├── core │ │ │ │ ├── organisation_text.txt │ │ │ │ ├── person_text.txt │ │ │ │ ├── place_text.txt │ │ │ │ └── positiontitle_text.txt │ │ │ ├── hansard │ │ │ │ └── entry_text.txt │ │ │ └── info │ │ │ │ └── infopage_text.txt │ │ │ ├── items │ │ │ ├── blog.html │ │ │ ├── hansard.html │ │ │ ├── organisation.html │ │ │ ├── person.html │ │ │ ├── place.html │ │ │ ├── position.html │ │ │ ├── positiontitle.html │ │ │ ├── speech.html │ │ │ └── unknown.html │ │ │ ├── location.html │ │ │ ├── search_base.html │ │ │ ├── search_results_item.html │ │ │ └── section_search.html │ ├── tests │ │ ├── __init__.py │ │ ├── autocomplete.py │ │ ├── fuzzy.py │ │ ├── geocoder-test-data │ │ │ ├── google_cape_town.json │ │ │ ├── google_east_london.json │ │ │ └── google_high_street.json │ │ ├── geocoder.py │ │ └── views.py │ ├── urls.py │ └── views.py ├── settings │ ├── __init__.py │ ├── apps.py │ ├── base.py │ ├── kenya.py │ ├── kenya_base.py │ ├── nigeria.py │ ├── nigeria_base.py │ ├── no_country.py │ ├── south_africa.py │ ├── south_africa_base.py │ ├── tests.py │ ├── tests_base.py │ ├── tests_kenya.py │ ├── tests_nigeria.py │ └── tests_south_africa.py ├── sms │ ├── __init__.py │ ├── admin.py │ ├── api.py │ ├── migrations │ │ ├── 0001_initial.py │ │ ├── 0002_auto_20181003_1515.py │ │ └── __init__.py │ ├── models.py │ └── tests.py ├── south_africa │ ├── __init__.py │ ├── admin.py │ ├── bin │ │ └── people-json │ │ │ ├── .gitignore │ │ │ ├── committees.py │ │ │ ├── compile-json.py │ │ │ ├── manual.py │ │ │ ├── myreps.py │ │ │ ├── parl.py │ │ │ └── utils.py │ ├── data │ │ ├── adwords │ │ │ └── .gitkeep │ │ ├── candidates-2014-elections.csv │ │ ├── committee-members.csv │ │ ├── committees.csv │ │ ├── constituencies_and_offices │ │ │ ├── README.md │ │ │ ├── all_constituencies.csv │ │ │ ├── new-in-issue-1115-data.csv │ │ │ └── source_data │ │ │ │ ├── 2014 │ │ │ │ ├── ACDP_processed.csv │ │ │ │ ├── AIC.doc │ │ │ │ ├── AIC_processed.csv │ │ │ │ ├── ANC │ │ │ │ │ ├── Eastern Cape.doc │ │ │ │ │ ├── Free State.doc │ │ │ │ │ ├── Gauteng.doc │ │ │ │ │ ├── Kwazulu Natal.doc │ │ │ │ │ ├── Limpopo.doc │ │ │ │ │ ├── Mpumalanga.doc │ │ │ │ │ ├── North West.doc │ │ │ │ │ ├── Northern Cape.doc │ │ │ │ │ └── Western Cape.doc │ │ │ │ ├── APC_processed.csv │ │ │ │ ├── DA.xlsx │ │ │ │ ├── DA_processed.csv │ │ │ │ ├── DA_processed.xlsx │ │ │ │ ├── EFF.doc │ │ │ │ ├── EFF_processed.csv │ │ │ │ ├── EFF_processed.xlsx │ │ │ │ ├── FFplus_processed.csv │ │ │ │ ├── PMG_sourced_data.doc │ │ │ │ └── UDM_processed.csv │ │ │ │ ├── 2014.json │ │ │ │ └── convert_to_import_json.py │ │ ├── disqus.json │ │ ├── elections │ │ │ ├── 2014 │ │ │ │ ├── assembly.csv │ │ │ │ ├── executive.csv │ │ │ │ ├── iec_seat_assignment.csv │ │ │ │ ├── mpls.csv │ │ │ │ └── ncop.csv │ │ │ └── 2019 │ │ │ │ ├── National.csv │ │ │ │ ├── Provincial-EC.csv │ │ │ │ ├── Provincial-FS.csv │ │ │ │ ├── Provincial-GP.csv │ │ │ │ ├── Provincial-KZN.csv │ │ │ │ ├── Provincial-LIM.csv │ │ │ │ ├── Provincial-MP.csv │ │ │ │ ├── Provincial-NC.csv │ │ │ │ ├── Provincial-NW.csv │ │ │ │ ├── Provincial-WC.csv │ │ │ │ ├── README.md │ │ │ │ ├── committee-emails.csv │ │ │ │ ├── na-emails.csv │ │ │ │ ├── national-seats-assigned.csv │ │ │ │ ├── parties.csv │ │ │ │ └── provincial-seats-assigned.csv │ │ ├── legislature_members │ │ │ ├── all_contacts.json │ │ │ ├── all_positions.json │ │ │ ├── apply_changes_to_popolo.py │ │ │ ├── eastern_cape.csv │ │ │ ├── eastern_cape_contacts.csv │ │ │ ├── eastern_cape_gender.csv │ │ │ ├── eastern_cape_positions.csv │ │ │ ├── free_state.csv │ │ │ ├── free_state_contacts.csv │ │ │ ├── free_state_positions.csv │ │ │ ├── gauteng.csv │ │ │ ├── gauteng_contacts.csv │ │ │ ├── gauteng_positions.csv │ │ │ ├── kwazulu_natal.csv │ │ │ ├── kwazulu_natal_contacts.csv │ │ │ ├── kwazulu_natal_positions.csv │ │ │ ├── limpopo.csv │ │ │ ├── limpopo_contacts.csv │ │ │ ├── limpopo_positions.csv │ │ │ ├── north_west.csv │ │ │ ├── north_west_contacts.csv │ │ │ ├── north_west_positions.csv │ │ │ ├── western_cape.csv │ │ │ ├── western_cape_contacts.csv │ │ │ └── western_cape_positions.csv │ │ ├── members-interests │ │ │ ├── 2010.json │ │ │ ├── 2010_for_import.json │ │ │ ├── 2011.json │ │ │ ├── 2011_for_import.json │ │ │ ├── 2012.json │ │ │ ├── 2012_for_import.json │ │ │ ├── 2013.json │ │ │ ├── 2013_for_import.json │ │ │ ├── 2014.json │ │ │ ├── 2014_for_import.json │ │ │ ├── 2015.json │ │ │ ├── 2015_for_import.json │ │ │ ├── 2016.json │ │ │ ├── 2016_for_import.json │ │ │ ├── 2017.json │ │ │ ├── 2017_for_import.json │ │ │ ├── 2018.json │ │ │ ├── 2018_for_import.json │ │ │ ├── README.md │ │ │ ├── convert_to_import_json.py │ │ │ └── pdf_scraper │ │ │ │ ├── requirements.txt │ │ │ │ └── scrape_interests_pdf.py │ │ ├── mp_bios │ │ │ ├── apply_bios_from_json_onto_popolo.py │ │ │ ├── mpbios.json │ │ │ └── name_to_legal_name_mapping.csv │ │ ├── myreps-na.xml │ │ ├── myreps-national-assembly.html │ │ ├── myreps-ncop.xml │ │ ├── myreps_na_executive_export.csv │ │ ├── parties-2014-elections.csv │ │ └── test │ │ │ └── attendance_587.json │ ├── fallback_urls.py │ ├── fixtures │ │ └── mapit_south_africa.json │ ├── lib.py │ ├── management │ │ ├── .gitignore │ │ ├── __init__.py │ │ ├── commands │ │ │ ├── .gitignore │ │ │ ├── __init__.py │ │ │ ├── south_africa_adwords_csv.py │ │ │ ├── south_africa_create_new_parties_for_election_2019.py │ │ │ ├── south_africa_export_committee_members.py │ │ │ ├── south_africa_export_constituency_offices.py │ │ │ ├── south_africa_export_na_members.py │ │ │ ├── south_africa_import_boundaries.py │ │ │ ├── south_africa_import_constituency_offices.py │ │ │ ├── south_africa_import_election_candidates_2014.py │ │ │ ├── south_africa_import_election_candidates_2019.py │ │ │ ├── south_africa_import_election_results_2014.py │ │ │ ├── south_africa_import_election_results_2019.py │ │ │ ├── south_africa_import_email_addresses_elections_2019.py │ │ │ ├── south_africa_import_new_constituency_office_locations.py │ │ │ ├── south_africa_import_parties.py │ │ │ ├── south_africa_import_popolo_json.py │ │ │ ├── south_africa_import_scraped_photos.py │ │ │ ├── south_africa_restart_constituency_contacts.py │ │ │ ├── south_africa_set_da_office_locations.py │ │ │ ├── south_africa_sync_everypolitician_uuid.py │ │ │ ├── south_africa_sync_wikidata_ids_from_everypolitician.py │ │ │ ├── south_africa_update_constituency_office_address.py │ │ │ └── south_africa_update_constituency_offices.py │ │ └── helpers.py │ ├── migrations │ │ ├── 0001_initial.py │ │ ├── 0002_add_parliamentary_sessions.py │ │ ├── 0003_attendancefororganisationtoggle.py │ │ └── __init__.py │ ├── models.py │ ├── search.py │ ├── search_indexes.py │ ├── static │ │ ├── css │ │ │ └── libs │ │ │ │ ├── chosen │ │ │ │ ├── chosen-sprite.png │ │ │ │ ├── chosen-sprite@2x.png │ │ │ │ └── chosen.css │ │ │ │ ├── datatables-1.10.10.css │ │ │ │ └── responsive-carousel.fade.css │ │ ├── fonts │ │ │ ├── lato-bold-webfont.eot │ │ │ ├── lato-bold-webfont.svg │ │ │ ├── lato-bold-webfont.ttf │ │ │ ├── lato-bold-webfont.woff │ │ │ ├── lato-italic-webfont.eot │ │ │ ├── lato-italic-webfont.svg │ │ │ ├── lato-italic-webfont.ttf │ │ │ ├── lato-italic-webfont.woff │ │ │ ├── lato-regular-webfont.eot │ │ │ ├── lato-regular-webfont.svg │ │ │ ├── lato-regular-webfont.ttf │ │ │ └── lato-regular-webfont.woff │ │ ├── images │ │ │ ├── SAA survey.jpg │ │ │ ├── civil-union-hom_32181533.png │ │ │ ├── committee-icon.png │ │ │ ├── committee-icon@2.png │ │ │ ├── decrim.jpg │ │ │ ├── elections-icon.png │ │ │ ├── favicon.ico │ │ │ ├── favicon.png │ │ │ ├── has-dropdown.png │ │ │ ├── header_search.png │ │ │ ├── land_closed.png │ │ │ ├── land_submissions.png │ │ │ ├── landissue.png │ │ │ ├── link-icons.png │ │ │ ├── link-icons@2.png │ │ │ ├── medicalnegligence.jpg │ │ │ ├── mp-assets.jpg │ │ │ ├── mp-attendance.jpg │ │ │ ├── national-assembly.jpg │ │ │ ├── national-council-of-provinces.jpg │ │ │ ├── party-logos │ │ │ │ ├── acdp.png │ │ │ │ ├── anc.png │ │ │ │ ├── apc.png │ │ │ │ ├── azapo.png │ │ │ │ ├── cope.png │ │ │ │ ├── da.png │ │ │ │ ├── ff.png │ │ │ │ ├── id.png │ │ │ │ ├── ifp.png │ │ │ │ ├── mf.png │ │ │ │ ├── pac.png │ │ │ │ ├── sacp.png │ │ │ │ ├── ucdp.png │ │ │ │ └── udm.png │ │ │ ├── party-map-icons │ │ │ │ ├── adcp.png │ │ │ │ ├── agang.png │ │ │ │ ├── aic.png │ │ │ │ ├── anc.png │ │ │ │ ├── apc.png │ │ │ │ ├── azapo.png │ │ │ │ ├── cope.png │ │ │ │ ├── da.png │ │ │ │ ├── eff.png │ │ │ │ ├── ff.png │ │ │ │ ├── id.png │ │ │ │ ├── ifp.png │ │ │ │ ├── mf.png │ │ │ │ ├── pac.png │ │ │ │ ├── sacp.png │ │ │ │ ├── ucdp.png │ │ │ │ └── udm.png │ │ │ ├── person-58x78.jpg │ │ │ ├── person-contact-icons │ │ │ │ ├── email-icon.png │ │ │ │ ├── email-icon.svg │ │ │ │ ├── facebook-icon.png │ │ │ │ ├── facebook-icon.svg │ │ │ │ ├── linkedin-icon.png │ │ │ │ ├── linkedin-icon.svg │ │ │ │ ├── twitter-icon.png │ │ │ │ ├── twitter-icon.svg │ │ │ │ ├── whoswhosa-icon.png │ │ │ │ ├── whoswhosa-icon.svg │ │ │ │ ├── youtube-icon.png │ │ │ │ └── youtube-icon.svg │ │ │ ├── pmg-white-icon.png │ │ │ ├── rep-icon.png │ │ │ ├── rep-icon@2.png │ │ │ ├── rep-locator-contact-icons.png │ │ │ ├── rep-locator-contact-icons@2.png │ │ │ ├── rep-locator-credit-code4sa.png │ │ │ ├── rep-locator-credit-speak-up-mzansi.png │ │ │ ├── rep-locator-tooltip.png │ │ │ ├── rep-locator-tooltip.svg │ │ │ ├── rep-locator-tooltip@2.png │ │ │ ├── search-icon.png │ │ │ ├── search-icon@2.png │ │ │ ├── social-icons.png │ │ │ ├── splash-committee.jpg │ │ │ ├── splash-mps.jpg │ │ │ ├── survey-thumb.jpg │ │ │ ├── za-logo.png │ │ │ └── zero-vat-survey_31903862.png │ │ ├── js │ │ │ ├── advanced-search.js │ │ │ ├── attendance-table.js │ │ │ ├── interests-filter.js │ │ │ ├── lazy-loaded-images.js │ │ │ ├── libs │ │ │ │ ├── blazy.js │ │ │ │ ├── chosen.jquery.js │ │ │ │ ├── datatables-1.10.10.js │ │ │ │ └── fuse-2.2.0.js │ │ │ ├── mp-profiles-live-filter.js │ │ │ ├── person-messages-ajax.js │ │ │ ├── rep-locator.js │ │ │ ├── tabs.js │ │ │ ├── writeinpublic.js │ │ │ └── za-map-drilldown.js │ │ └── sass │ │ │ ├── _base_fonts.scss │ │ │ ├── _colours_south-africa.scss │ │ │ ├── _person-write.scss │ │ │ ├── _sayit.scss │ │ │ ├── _south-africa_overrides.scss │ │ │ ├── countdown.scss │ │ │ └── south-africa.scss │ ├── templates │ │ ├── 404.html │ │ ├── 500.html │ │ ├── base.html │ │ ├── core │ │ │ ├── _people_listing.html │ │ │ ├── _person_position.html │ │ │ ├── _position_listing.html │ │ │ ├── _search_pagination_text.html │ │ │ ├── generic_list.html │ │ │ ├── generic_list_item.html │ │ │ ├── organisation_detail.html │ │ │ ├── organisation_list_item.html │ │ │ ├── organisation_party.html │ │ │ ├── organisation_people.html │ │ │ ├── parliament_list_item.html │ │ │ ├── person_detail.html │ │ │ ├── person_detail_position.html │ │ │ ├── person_list_item.html │ │ │ ├── person_menu.html │ │ │ ├── person_speech_list.html │ │ │ ├── place_base.html │ │ │ ├── place_detail.html │ │ │ ├── place_people.html │ │ │ ├── place_places.html │ │ │ ├── position_detail.html │ │ │ └── social_tools.html │ │ ├── custom_place_candidate_lists.html │ │ ├── disqus_comments.html │ │ ├── down.html │ │ ├── error_base.html │ │ ├── footer.html │ │ ├── header.html │ │ ├── home.html │ │ ├── info │ │ │ ├── _blog_sidebar.html │ │ │ ├── _blog_tags.html │ │ │ ├── blog_list.html │ │ │ └── blog_post.html │ │ ├── interests_register │ │ │ ├── index.html │ │ │ ├── index_complete.html │ │ │ ├── index_numberbyrepresentative.html │ │ │ ├── index_numberbysource.html │ │ │ ├── index_section.html │ │ │ └── source.html │ │ ├── map │ │ │ └── home.html │ │ ├── menu_entries.html │ │ ├── search │ │ │ ├── _search_pagination.html │ │ │ ├── items │ │ │ │ └── speech.html │ │ │ └── location.html │ │ ├── site_header_logo.html │ │ ├── site_header_search.html │ │ ├── south_africa │ │ │ ├── _newsletter_signup.html │ │ │ ├── _place_tabs.html │ │ │ ├── _position_listing_constituency.html │ │ │ ├── _search_box.html │ │ │ ├── committee_list.html │ │ │ ├── constituency_office_list.html │ │ │ ├── constituency_office_list_item.html │ │ │ ├── election │ │ │ │ ├── _national.html │ │ │ │ ├── _provincial.html │ │ │ │ ├── national.html │ │ │ │ ├── overview.html │ │ │ │ ├── provincial.html │ │ │ │ └── statistics.html │ │ │ ├── election_base.html │ │ │ ├── election_candidates_party.html │ │ │ ├── election_candidates_province.html │ │ │ ├── hansard_index.html │ │ │ ├── info_newsletter.html │ │ │ ├── latlon_detail_base_view.html │ │ │ ├── latlon_local_view.html │ │ │ ├── local_rep_list_item.html │ │ │ ├── mp_attendance.html │ │ │ ├── mp_profiles.html │ │ │ ├── organisation_house.html │ │ │ ├── person_appearances.html │ │ │ ├── person_attendances.html │ │ │ ├── question_index.html │ │ │ ├── question_section_detail.html │ │ │ └── question_speech.html │ │ ├── speeches │ │ │ ├── _breadcrumbs.html │ │ │ ├── _section_prev_next_links.html │ │ │ ├── _section_user_actions.html │ │ │ ├── _speaker_user_actions.html │ │ │ ├── _speech_user_actions.html │ │ │ ├── pagination.html │ │ │ ├── section_detail.html │ │ │ └── speech_detail.html │ │ └── writeinpublic │ │ │ └── committee-messages.html │ ├── templatetags │ │ ├── __init__.py │ │ ├── blog_titles.py │ │ ├── za_election_list_links.py │ │ ├── za_people_display.py │ │ └── za_speeches.py │ ├── tests.py │ ├── urls.py │ └── views │ │ ├── __init__.py │ │ ├── api.py │ │ ├── attendance.py │ │ ├── committees.py │ │ ├── constants.py │ │ ├── elections.py │ │ ├── geolocalization.py │ │ ├── home.py │ │ ├── infoviews.py │ │ ├── interests.py │ │ ├── organisations.py │ │ ├── person.py │ │ ├── positions.py │ │ ├── search.py │ │ └── speechviews.py ├── spinner │ ├── README.md │ ├── __init__.py │ ├── admin.py │ ├── fixtures │ │ └── test_data.json │ ├── migrations │ │ ├── 0001_initial.py │ │ └── __init__.py │ ├── models.py │ ├── static │ │ ├── css │ │ │ └── libs │ │ │ │ └── responsive-carousel.css │ │ ├── images │ │ │ └── lr-carousel-arrows.png │ │ └── js │ │ │ └── libs │ │ │ └── responsive-carousel.js │ ├── templates │ │ └── spinner │ │ │ ├── carousel-slides.html │ │ │ ├── display-slide.html │ │ │ ├── random.html │ │ │ └── slides │ │ │ ├── core_person.html │ │ │ ├── default.html │ │ │ ├── spinner_image-content.html │ │ │ └── spinner_quote-content.html │ ├── templatetags │ │ ├── __init__.py │ │ └── spinner.py │ ├── tests.py │ ├── urls.py │ └── views.py ├── surveys │ ├── __init__.py │ ├── admin.py │ ├── migrations │ │ ├── 0001_initial.py │ │ ├── 0002_auto_20190319_1101.py │ │ └── __init__.py │ └── models.py ├── tasks │ ├── __init__.py │ ├── admin.py │ ├── migrations │ │ ├── 0001_initial.py │ │ └── __init__.py │ ├── models.py │ ├── templates │ │ └── admin │ │ │ └── tasks │ │ │ └── task │ │ │ ├── change_form.html │ │ │ ├── change_list.html │ │ │ ├── do.html │ │ │ └── do_next.html │ ├── tests.py │ └── views.py ├── templates │ ├── 500.html │ ├── _all_form_errors.html │ ├── base.html │ ├── candidate_data_attribution.html │ ├── default_base.html │ ├── disqus_comments.html │ ├── disqus_javascript.html │ ├── footer.html │ ├── header.html │ ├── home.html │ ├── include.html │ ├── main_menu.html │ ├── mapit │ │ ├── base.html │ │ └── index.html │ ├── menu_entries.html │ ├── robots.txt │ ├── site_header.html │ ├── site_header_logo.html │ ├── site_header_search.html │ ├── staging_header.html │ ├── twitter_widget.html │ └── wikipedia_attribution.html ├── testing │ ├── __init__.py │ └── selenium.py ├── urls.py ├── votematch │ ├── README.md │ ├── __init__.py │ ├── admin.py │ ├── fixtures │ │ └── development.json │ ├── migrations │ │ ├── 0001_initial.py │ │ └── __init__.py │ ├── models.py │ ├── static │ │ └── votematch │ │ │ ├── .gitignore │ │ │ ├── config.rb │ │ │ ├── css │ │ │ ├── base.css │ │ │ ├── desktop_tablet.css │ │ │ └── layout.css │ │ │ ├── images │ │ │ ├── quiz-smileys.jpg │ │ │ └── quiz-smileys.png │ │ │ └── sass │ │ │ ├── base.scss │ │ │ └── layout.scss │ ├── templates │ │ └── votematch │ │ │ ├── base.html │ │ │ ├── quiz_detail.html │ │ │ ├── quiz_list.html │ │ │ ├── scoring.html │ │ │ └── submission_detail.html │ ├── urls.py │ └── views.py ├── wordcloud │ ├── __init__.py │ ├── management │ │ ├── __init__.py │ │ └── commands │ │ │ ├── __init__.py │ │ │ └── wordcloud_generate.py │ ├── static │ │ ├── css │ │ │ └── jqcloud.css │ │ └── js │ │ │ └── jqcloud-1.0.4.js │ ├── stopwords.txt │ ├── templates │ │ └── wordcloud │ │ │ └── wordcloud.html │ ├── tests │ │ ├── __init__.py │ │ └── test_wordcloud.py │ ├── urls.py │ ├── views.py │ └── wordcloud.py ├── writeinpublic │ ├── __init__.py │ ├── client.py │ ├── forms.py │ ├── migrations │ │ ├── 0001_initial.py │ │ └── __init__.py │ ├── models.py │ ├── templates │ │ └── writeinpublic │ │ │ ├── committee-write-draft.html │ │ │ ├── committee-write-preview.html │ │ │ ├── committee-write-recipients.html │ │ │ ├── flash_messages.html │ │ │ ├── message.html │ │ │ ├── messages.html │ │ │ ├── pending.html │ │ │ ├── person-write-draft.html │ │ │ ├── person-write-preview.html │ │ │ └── person-write-recipients.html │ ├── tests.py │ ├── urls.py │ └── views.py ├── wsgi.py ├── wsgi_monitor.py └── za_hansard │ ├── __init__.py │ ├── chairperson.py │ ├── data │ └── committee-meeting-mappings.csv │ ├── datejson.py │ ├── importers │ ├── __init__.py │ ├── import_base.py │ ├── import_json.py │ └── import_za_akomantoso.py │ ├── management │ ├── __init__.py │ └── commands │ │ ├── __init__.py │ │ ├── za_hansard_check_for_new_sources.py │ │ ├── za_hansard_check_for_new_sources_from_pmg.py │ │ ├── za_hansard_load_into_sayit.py │ │ ├── za_hansard_load_json.py │ │ ├── za_hansard_load_za_akomantoso.py │ │ ├── za_hansard_one_off_create_hansard_hierarchies.py │ │ ├── za_hansard_one_off_rename_hansard_month_sections.py │ │ ├── za_hansard_one_off_tag_speeches.py │ │ ├── za_hansard_pmg_api_scraper.py │ │ ├── za_hansard_q_and_a_scraper.py │ │ └── za_hansard_run_parsing.py │ ├── migrations │ ├── 0001_initial.py │ ├── 0002_add_pmg_api_fields.py │ ├── 0003_remove_unique_constraint_with_question_id_number.py │ ├── 0004_auto_20190322_1856.py │ └── __init__.py │ ├── models.py │ ├── parse.py │ ├── question_scraper.py │ └── tests │ ├── __init__.py │ ├── test_akomantoso_import.py │ ├── test_commands.py │ ├── test_hansard.py │ ├── test_inputs │ ├── answers_cache │ │ ├── content-php-category_id-248-documentstart-10-documentstart-20.html │ │ ├── content-php-category_id-248-documentstart-10.html │ │ ├── content-php-category_id-248-documentstart-20-documentstart-30.html │ │ ├── content-php-category_id-248-documentstart-30-documentstart-40.html │ │ ├── content-php-category_id-248-documentstart-40-documentstart-50.html │ │ ├── content-php-category_id-248-documentstart-5310-documentstart-5320.html │ │ ├── content-php-category_id-248-documentstart-5310.html │ │ └── content-php-category_id-248.html │ ├── committee │ │ ├── 1.json │ │ ├── 2.json │ │ ├── 3.json │ │ ├── 4.json │ │ ├── 5.json │ │ ├── 6.json │ │ ├── 7.json │ │ ├── 8.json │ │ └── 9.json │ ├── hansard │ │ ├── 0 │ │ │ └── 1 │ │ │ │ ├── 2013-05-08-00010-NA080513 │ │ │ │ └── 2013-05-08-00010-NA080513.xml │ │ ├── 20130522-na-debate-use-air-force-base-waterkloof-gupta-family-matters-public-importance.html │ │ ├── 502914_1.doc │ │ ├── 502914_1.xml │ │ ├── 520729_1.doc │ │ ├── EPC110512.doc │ │ ├── EPC110512.xml │ │ ├── NA200912.doc │ │ ├── NA200912.xml │ │ ├── NA210212.doc │ │ ├── NA210212.xml │ │ ├── NA290307.doc │ │ ├── NA290307.xml │ │ └── release-23.xsd │ ├── questions │ │ ├── 184530_1.pdf │ │ ├── 184530_1.xml │ │ ├── 458606_1.pdf │ │ ├── 458606_1.xml │ │ ├── 517147_1.pdf │ │ ├── 517147_1.xml │ │ ├── 529998_1.pdf │ │ ├── 529998_1.xml │ │ ├── 548302_1.pdf │ │ ├── 548302_1.xml │ │ ├── 559662_1.pdf │ │ ├── 559662_1.xml │ │ ├── answer_1.doc │ │ ├── answer_1_expected.txt │ │ ├── expected_json_data_for_184530_1.json │ │ ├── expected_json_data_for_458606_1.json │ │ ├── expected_json_data_for_517147_1.json │ │ ├── expected_json_data_for_529998_1.json │ │ ├── expected_json_data_for_548302_1.json │ │ └── expected_json_data_for_559662_1.json │ └── questions_cache │ │ ├── content-php-category_id-236-documentstart-10-documentstart-20.html │ │ ├── content-php-category_id-236-documentstart-10.html │ │ ├── content-php-category_id-236-documentstart-20-documentstart-30.html │ │ ├── content-php-category_id-236-documentstart-30-documentstart-40.html │ │ ├── content-php-category_id-236-documentstart-830-documentstart-840.html │ │ ├── content-php-category_id-236-documentstart-830.html │ │ └── content-php-category_id-236.html │ ├── test_json_import.py │ ├── test_pmg_q_and_a.py │ └── test_questions.py ├── pombola_sayit ├── __init__.py ├── management │ ├── __init__.py │ └── commands │ │ ├── __init__.py │ │ └── pombola_sayit_sync_pombola_to_popolo.py ├── migrations │ ├── 0001_initial.py │ └── __init__.py ├── models.py ├── templates │ └── speeches │ │ └── speech.html └── tests.py ├── requirements.txt ├── run-tests ├── run_selenium_tests.bash ├── run_tests_za.bash └── web ├── googlee8d580ff44c6001c.html └── static └── test.txt /.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | *~ 3 | \#*\# 4 | \.\#* 5 | .idea/ 6 | 7 | .sass-cache 8 | .bundle 9 | web/down.default.html 10 | /web/down.html 11 | /pombola/core/static/sass/admin.css 12 | /pombola/core/static/sass/countdown.css 13 | /pombola/core/static/sass/jquery-ui.css 14 | /pombola/kenya/static/sass/kenya.css 15 | /pombola/nigeria/static/sass/nigeria.css 16 | /pombola/south_africa/static/sass/countdown.css 17 | /pombola/south_africa/static/sass/south-africa.css 18 | /staticfiles 19 | *.sublime-project 20 | *.sublime-workspace 21 | *.DS_Store 22 | .project 23 | .pydevproject 24 | build/ 25 | tmp/ 26 | /.env 27 | /data/* 28 | !/data/.gitkeep 29 | .vagrant/ 30 | .ruby-version 31 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | 3 | gem 'json' 4 | gem 'compass', '0.12.7' 5 | -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: https://rubygems.org/ 3 | specs: 4 | chunky_png (1.3.11) 5 | compass (0.12.7) 6 | chunky_png (~> 1.2) 7 | fssm (>= 0.2.7) 8 | sass (~> 3.2.19) 9 | fssm (0.2.10) 10 | json (2.2.0) 11 | sass (3.2.19) 12 | 13 | PLATFORMS 14 | ruby 15 | 16 | DEPENDENCIES 17 | compass (= 0.12.7) 18 | json 19 | -------------------------------------------------------------------------------- /bin/run_management_command: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # This is a simple script that can be used from the crontab to run a management 4 | # command in the correct environment. 5 | 6 | # abort on any errors 7 | set -e 8 | 9 | # check that we are in the expected directory 10 | cd `dirname $0`/.. 11 | 12 | # Set DATADIR. 13 | DATADIR=$(grep ^DATA_DIR conf/general.yml | awk '{ print $NF}' | tr -d "'\"") 14 | DATADIR=${DATADIR:-data} 15 | 16 | # Activate virtualenv 17 | virtualenv_dir="${DATADIR}/pombola-virtualenv" 18 | source ${virtualenv_dir}/bin/activate 19 | 20 | ./manage.py "$@" 21 | -------------------------------------------------------------------------------- /bin/run_management_command_capture_stdout: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # abort on any errors 4 | set -e 5 | 6 | # check that we are in the expected directory 7 | cd `dirname $0`/.. 8 | source ../pombola-virtualenv/bin/activate 9 | 10 | # don't abort on error so we can capture output 11 | set +e 12 | 13 | # run the command 14 | output="`./manage.py $@`" 15 | 16 | # suppress output unless we got a non-zero exit status 17 | if [ "$?" -ne 0 ] 18 | then 19 | echo "" 20 | echo "### output captured before '$@' exited ###" 21 | echo "" 22 | echo "$output" 23 | exit 1 24 | fi 25 | -------------------------------------------------------------------------------- /bin/update_hansard.bash: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # abort on any errors 4 | set -e 5 | 6 | # check that we are in the expected directory 7 | cd `dirname $0`/.. 8 | 9 | # Set DATADIR. 10 | DATADIR=$(grep ^DATA_DIR conf/general.yml | awk '{ print $NF}' | tr -d "'\"") 11 | DATADIR=${DATADIR:-data} 12 | 13 | # Activate virtualenv 14 | virtualenv_dir="${DATADIR}/pombola-virtualenv" 15 | source ${virtualenv_dir}/bin/activate 16 | 17 | ./manage.py hansard_check_for_new_sources 18 | ./manage.py hansard_process_sources 19 | ./manage.py hansard_assign_speakers 20 | -------------------------------------------------------------------------------- /conf/.gitignore: -------------------------------------------------------------------------------- 1 | general*.yml 2 | general.yml.deployed 3 | httpd.conf 4 | httpd.conf.deployed 5 | 6 | -------------------------------------------------------------------------------- /data/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mysociety/pombola/cb0f4a75aea91a471bb8b64921c80f19adf1a9f1/data/.gitkeep -------------------------------------------------------------------------------- /pombola/.gitignore: -------------------------------------------------------------------------------- 1 | /cache 2 | -------------------------------------------------------------------------------- /pombola/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mysociety/pombola/cb0f4a75aea91a471bb8b64921c80f19adf1a9f1/pombola/__init__.py -------------------------------------------------------------------------------- /pombola/admin_additions/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mysociety/pombola/cb0f4a75aea91a471bb8b64921c80f19adf1a9f1/pombola/admin_additions/__init__.py -------------------------------------------------------------------------------- /pombola/api/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mysociety/pombola/cb0f4a75aea91a471bb8b64921c80f19adf1a9f1/pombola/api/__init__.py -------------------------------------------------------------------------------- /pombola/api/permissions.py: -------------------------------------------------------------------------------- 1 | from rest_framework import permissions 2 | 3 | class ReadOnly(permissions.BasePermission): 4 | message = 'Only read-only access is allowed' 5 | 6 | def has_permission(self, request, view): 7 | return request.method in permissions.SAFE_METHODS 8 | -------------------------------------------------------------------------------- /pombola/bills/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mysociety/pombola/cb0f4a75aea91a471bb8b64921c80f19adf1a9f1/pombola/bills/__init__.py -------------------------------------------------------------------------------- /pombola/bills/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | from pombola.bills import models 4 | 5 | @admin.register(models.Bill) 6 | class BillAdmin(admin.ModelAdmin): 7 | list_display = ['title', 'date', 'sponsor'] 8 | search_fields = ['title', 'sponsor__name', 'source_url'] 9 | -------------------------------------------------------------------------------- /pombola/bills/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mysociety/pombola/cb0f4a75aea91a471bb8b64921c80f19adf1a9f1/pombola/bills/migrations/__init__.py -------------------------------------------------------------------------------- /pombola/bills/templates/bills/_bill_link.html: -------------------------------------------------------------------------------- 1 | {% if bill.act_source_url and bill.act_title %} 2 | {{ bill.act_title }} 3 | {% else %} 4 | {{ bill.title }} 5 | {% endif %} 6 | -------------------------------------------------------------------------------- /pombola/bills/templates/bills/_pagination.html: -------------------------------------------------------------------------------- 1 | {% if page_obj %} 2 |
View bills by parliamentary session:
8 |No results were found
19 | 20 | {% endif %} 21 | 22 | -------------------------------------------------------------------------------- /pombola/core/templates/core/organisation_comments.html: -------------------------------------------------------------------------------- 1 | {% extends 'core/organisation_base.html' %} 2 | 3 | {% block title %}{{ object.name }} Comments{% endblock %} 4 | 5 | {% block subcontent %} 6 | {# Removed to revert to old comments pending Disqus migration #} 7 | {# include 'disqus_comments.html' #} 8 | {% endblock %} 9 | -------------------------------------------------------------------------------- /pombola/core/templates/core/organisation_contact_details.html: -------------------------------------------------------------------------------- 1 | {% extends 'core/organisation_base.html' %} 2 | 3 | {% block title %}{{ object.name }} Contact Details{% endblock %} 4 | 5 | {% block subcontent %} 6 | {% include "core/contact_list.html" with contacts=object.contacts.all %} 7 | {% endblock %} 8 | -------------------------------------------------------------------------------- /pombola/core/templates/core/organisation_list.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | {% load pagination_tags %} 3 | 4 | {% block title %}{% if kind %}{{ kind.name }}{% endif %}{% endblock %} 5 | 6 | {% block content %} 7 | 8 |These are the parties whose members are currently MPs in parliament.
13 | 14 |There is also a list of all parties.
15 | 16 | {% include 'core/generic_list.html' with object_list=parties %} 17 | 18 | {% endblock %} 19 | 20 | -------------------------------------------------------------------------------- /pombola/core/templates/core/person_comments.html: -------------------------------------------------------------------------------- 1 | {% extends 'core/person_base.html' %} 2 | 3 | {% block title %}{{ object.name }} Comments{% endblock %} 4 | 5 | {% block subcontent %} 6 | {# Removed to revert to old comments pending Disqus migration #} 7 | {# include 'disqus_comments.html' #} 8 | {% endblock %} 9 | -------------------------------------------------------------------------------- /pombola/core/templates/core/person_contact_details.html: -------------------------------------------------------------------------------- 1 | {% extends 'core/person_base.html' %} 2 | 3 | {% block title %}{{ object.name }} Contact Details{% endblock %} 4 | 5 | {% block subcontent %} 6 | {% include "core/contact_list.html" with contacts=object.contacts.all %} 7 | {% endblock %} 8 | -------------------------------------------------------------------------------- /pombola/core/templates/core/person_list.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | {% load thumbnail %} 3 | {% load pagination_tags %} 4 | 5 | {% block title %}People{% endblock %} 6 | 7 | {% block content %} 8 | 9 |The page you are looking for could not be found - please check the address and try again.
10 | 11 | {% endblock %} 12 | 13 | -------------------------------------------------------------------------------- /pombola/kenya/templates/_county_petition.html: -------------------------------------------------------------------------------- 1 | 16 | -------------------------------------------------------------------------------- /pombola/kenya/templates/_county_senate.html: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /pombola/kenya/templates/_county_share.html: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /pombola/kenya/templates/_person_gallery_item.html: -------------------------------------------------------------------------------- 1 |{{ bio }}
15 | {% endif %} 16 |4 | The aspirant data on this page is from the 5 | IEBC API, 6 | with many thanks. 7 |
8 | {% endif %} 9 | {% endwith %} 10 | -------------------------------------------------------------------------------- /pombola/kenya/templates/core/person_detail_appearance_list.html: -------------------------------------------------------------------------------- 1 | {% load switch %} 2 | 3 |{{ entry.sitting.venue.name }}, {{ entry.sitting.start_date}}
8 |This page lists all the female Members of the National Assembly and Senators.
12 | 13 | {% include 'core/_position_listing.html' %} 14 | 15 | {% endblock %} 16 | -------------------------------------------------------------------------------- /pombola/kenya/templates/reps-young.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | {% load thumbnail %} 3 | {% load pagination_tags %} 4 | 5 | {% block title %}Young Representatives{% endblock %} 6 | 7 | {% block content %} 8 | 9 |This page lists all Members of the National Assembly and Senators under the age of 35.
12 | 13 | {% include 'core/_position_listing.html' %} 14 | 15 | {% endblock %} 16 | -------------------------------------------------------------------------------- /pombola/kenya/templates/site_header_icon_facebook.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /pombola/kenya/templates/site_header_icon_twitter.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /pombola/kenya/templates/site_header_icon_youtube.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /pombola/kenya/templates/site_header_search.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /pombola/kenya/templates/twitter_widget.html: -------------------------------------------------------------------------------- 1 | {# Official Twitter widget, set up by twitter-embed.js #} 2 | 10 | -------------------------------------------------------------------------------- /pombola/map/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mysociety/pombola/cb0f4a75aea91a471bb8b64921c80f19adf1a9f1/pombola/map/__init__.py -------------------------------------------------------------------------------- /pombola/map/static/images/crosshairs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mysociety/pombola/cb0f4a75aea91a471bb8b64921c80f19adf1a9f1/pombola/map/static/images/crosshairs.png -------------------------------------------------------------------------------- /pombola/map/urls.py: -------------------------------------------------------------------------------- 1 | from django.conf.urls import url 2 | 3 | from pombola.map.views import home 4 | 5 | 6 | urlpatterns = [ 7 | url(r'^$', home, name='map-home'), 8 | ] 9 | -------------------------------------------------------------------------------- /pombola/map/views.py: -------------------------------------------------------------------------------- 1 | from django.shortcuts import render_to_response 2 | from django.template import RequestContext 3 | 4 | def home(request): 5 | """Homepage""" 6 | 7 | return render_to_response( 8 | 'map/home.html', 9 | {}, 10 | context_instance=RequestContext(request) 11 | ) 12 | 13 | -------------------------------------------------------------------------------- /pombola/middleware.py: -------------------------------------------------------------------------------- 1 | from instances.models import Instance 2 | 3 | class FakeInstanceMiddleware: 4 | """ 5 | We don't really use instances, as we're embedding sayit as an app. It 6 | should really be factored out, but for now, just use the default one 7 | created by the initial migration. 8 | """ 9 | def process_request(self, request): 10 | request.instance, _ = Instance.objects.get_or_create(label='default') 11 | # We don't want to offer the ability to edit or delete 12 | # speeches to any users of the site at the moment, so force 13 | # that no user of the site is regarded as its owner. 14 | request.is_user_instance = False 15 | -------------------------------------------------------------------------------- /pombola/nigeria/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mysociety/pombola/cb0f4a75aea91a471bb8b64921c80f19adf1a9f1/pombola/nigeria/__init__.py -------------------------------------------------------------------------------- /pombola/nigeria/initial_import/.gitignore: -------------------------------------------------------------------------------- 1 | var 2 | var.tgz 3 | -------------------------------------------------------------------------------- /pombola/nigeria/initial_import/extract_urls.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from bs4 import BeautifulSoup 4 | import sys 5 | import re 6 | 7 | soup = BeautifulSoup( sys.stdin.read() ) 8 | # print soup.prettify() 9 | 10 | title_re = re.compile('View My') 11 | 12 | for link in soup.find_all('a'): 13 | if title_re.search(link.get_text()): 14 | print link['href'] 15 | 16 | -------------------------------------------------------------------------------- /pombola/nigeria/lib.py: -------------------------------------------------------------------------------- 1 | def significant_positions_filter(qs): 2 | """Return a queryset only with 'significant' positions from it 3 | 4 | If you pass in a Position queryset, this should return a queryset 5 | which has filtered out any positions that aren't considered 6 | 'significant' for this country; this is used to determine which 7 | positions are shown on place pages, for instance. 8 | 9 | In the case of Nigeria, we only want to consider Senators, 10 | Governors and Federal Representatives.""" 11 | 12 | return qs.filter(title__slug__in=('governor', 'representative', 'senator')) 13 | -------------------------------------------------------------------------------- /pombola/nigeria/management/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mysociety/pombola/cb0f4a75aea91a471bb8b64921c80f19adf1a9f1/pombola/nigeria/management/__init__.py -------------------------------------------------------------------------------- /pombola/nigeria/management/commands/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mysociety/pombola/cb0f4a75aea91a471bb8b64921c80f19adf1a9f1/pombola/nigeria/management/commands/__init__.py -------------------------------------------------------------------------------- /pombola/nigeria/static/images/d-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mysociety/pombola/cb0f4a75aea91a471bb8b64921c80f19adf1a9f1/pombola/nigeria/static/images/d-logo.png -------------------------------------------------------------------------------- /pombola/nigeria/static/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mysociety/pombola/cb0f4a75aea91a471bb8b64921c80f19adf1a9f1/pombola/nigeria/static/images/favicon.png -------------------------------------------------------------------------------- /pombola/nigeria/static/images/header_bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mysociety/pombola/cb0f4a75aea91a471bb8b64921c80f19adf1a9f1/pombola/nigeria/static/images/header_bottom.png -------------------------------------------------------------------------------- /pombola/nigeria/static/images/header_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mysociety/pombola/cb0f4a75aea91a471bb8b64921c80f19adf1a9f1/pombola/nigeria/static/images/header_top.png -------------------------------------------------------------------------------- /pombola/nigeria/static/images/logo-450-x-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mysociety/pombola/cb0f4a75aea91a471bb8b64921c80f19adf1a9f1/pombola/nigeria/static/images/logo-450-x-150.png -------------------------------------------------------------------------------- /pombola/nigeria/static/images/lr-carousel-arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mysociety/pombola/cb0f4a75aea91a471bb8b64921c80f19adf1a9f1/pombola/nigeria/static/images/lr-carousel-arrows.png -------------------------------------------------------------------------------- /pombola/nigeria/static/images/mz-nigeria-logo-symbol.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mysociety/pombola/cb0f4a75aea91a471bb8b64921c80f19adf1a9f1/pombola/nigeria/static/images/mz-nigeria-logo-symbol.png -------------------------------------------------------------------------------- /pombola/nigeria/static/images/mz-nigeria-logo-text-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mysociety/pombola/cb0f4a75aea91a471bb8b64921c80f19adf1a9f1/pombola/nigeria/static/images/mz-nigeria-logo-text-small.png -------------------------------------------------------------------------------- /pombola/nigeria/static/images/mz-nigeria-logo-text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mysociety/pombola/cb0f4a75aea91a471bb8b64921c80f19adf1a9f1/pombola/nigeria/static/images/mz-nigeria-logo-text.png -------------------------------------------------------------------------------- /pombola/nigeria/static/images/mz-nigeria-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mysociety/pombola/cb0f4a75aea91a471bb8b64921c80f19adf1a9f1/pombola/nigeria/static/images/mz-nigeria-logo.png -------------------------------------------------------------------------------- /pombola/nigeria/static/sass/_colours_nigeria.scss: -------------------------------------------------------------------------------- 1 | $colour_primary: #55a4da; 2 | $colour_primary_light: #75a8cd; 3 | -------------------------------------------------------------------------------- /pombola/nigeria/templates/404.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | 3 | {% block title %}Page Not Found{% endblock %} 4 | 5 | {% block content %} 6 | 7 |The page you are looking for could not be found - please check the address and try again.
10 | 11 | {% endblock %} 12 | 13 | -------------------------------------------------------------------------------- /pombola/nigeria/templates/base.html: -------------------------------------------------------------------------------- 1 | {% extends "default_base.html" %} 2 | {% load pipeline %} 3 | 4 | {% block title_suffix %} :: ShineYourEye {% endblock %} 5 | 6 | {% block css_headers %} 7 | {% stylesheet 'nigeria' %} 8 | {% endblock %} 9 | -------------------------------------------------------------------------------- /pombola/nigeria/templates/custom_place_candidate_lists.html: -------------------------------------------------------------------------------- 1 | {% extends "core/default_place_candidate_lists.html" %} 2 | -------------------------------------------------------------------------------- /pombola/nigeria/templates/header.html: -------------------------------------------------------------------------------- 1 | {% include 'staging_header.html' %} 2 | 3 | {% include 'main_menu.html' %} 4 | 5 | {% include 'site_header.html' %} 6 | -------------------------------------------------------------------------------- /pombola/nigeria/templates/info/blog_post.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | 3 | {% block open_graph %}{% include 'info/_blog_open_graph.html' %}{% endblock %} 4 | 5 | {% block title %} 6 | {{ object.title }} 7 | {% endblock %} 8 | 9 | {% block content %} 10 | 11 |Blog post
8 | 9 |{% highlight result.object.content with query %}
15 | 16 |{{ result.highlighted.0|safe }}
6 |Error: Unable to load messages at this time. Please try again later.
'); 14 | }); 15 | }); 16 | }); 17 | -------------------------------------------------------------------------------- /pombola/south_africa/static/js/writeinpublic.js: -------------------------------------------------------------------------------- 1 | jQuery(function($){ 2 | $('#id_recipients-persons').chosen(); 3 | }); 4 | -------------------------------------------------------------------------------- /pombola/south_africa/templates/404.html: -------------------------------------------------------------------------------- 1 | {% extends 'error_base.html' %} 2 | 3 | {% block title %}Page Not Found{% endblock %} 4 | 5 | {% block error_content %} 6 | 7 |We're sorry, the page you are looking for can't be found.
10 | 11 |Try going back to the home page or use the search to find what you are looking for.
12 | 13 | {% endblock %} 14 | 15 | -------------------------------------------------------------------------------- /pombola/south_africa/templates/500.html: -------------------------------------------------------------------------------- 1 | {% extends 'error_base.html' %} 2 | 3 | {% block title %}Internal Server Error{% endblock %} 4 | 5 | {% block error_content %} 6 | 7 |We're sorry, there was an error when opening this page.
10 | 11 |Try reloading this page or try again later.
12 | 13 | {% endblock %} 14 | 15 | -------------------------------------------------------------------------------- /pombola/south_africa/templates/core/_people_listing.html: -------------------------------------------------------------------------------- 1 |No results were found
19 | {% endif %} 20 | -------------------------------------------------------------------------------- /pombola/south_africa/templates/core/parliament_list_item.html: -------------------------------------------------------------------------------- 1 | 2 |{{ object.seats }} seats
6 | {% endif %} 7 |We're sorry, this website is unavailable while we do some maintenance, please try again later.
10 | 11 | {% endblock %} 12 | 13 | -------------------------------------------------------------------------------- /pombola/south_africa/templates/header.html: -------------------------------------------------------------------------------- 1 | {% include 'staging_header.html' %} 2 | 3 | {% include 'site_header.html' %} 4 | 5 | {% include 'main_menu.html' %} 6 | -------------------------------------------------------------------------------- /pombola/south_africa/templates/info/_blog_tags.html: -------------------------------------------------------------------------------- 1 | {% if object.tags.count %} 2 | 3 | 12 | 13 |4 | 5 | This is the default slide template {{ slide.template_name }} which 6 | is being used because the template {{ slide.required_template_name }} 7 | could not be found for {{ slide }} (id {{ slide.id }}). 8 |
9 | 10 |11 | Please create it. 12 |
13 | -------------------------------------------------------------------------------- /pombola/spinner/templates/spinner/slides/spinner_image-content.html: -------------------------------------------------------------------------------- 1 | {% load thumbnail %} 2 | 3 | 4 | {% thumbnail object.image "598x200" crop="center" as im %} 5 |{{ object.description }}
{{ object.quote }}3 | 4 |
There are no more tasks to do - well done!
11 | 12 |Note - there map be more tasks in the system, but none need doing right now.
13 | 14 |Something went wrong on the server. Please try again later...
10 | 11 | {% endblock %} 12 | 13 | -------------------------------------------------------------------------------- /pombola/templates/_all_form_errors.html: -------------------------------------------------------------------------------- 1 | {% if form.non_field_errors %} 2 | {{ form.non_field_errors.as_text|cut:"* " }} 3 | {% else %} 4 | {% for field in form %} 5 | {{ field.errors.as_text|cut:"* " }} 6 | {% endfor %} 7 | {% endif %} 8 | -------------------------------------------------------------------------------- /pombola/templates/base.html: -------------------------------------------------------------------------------- 1 | {% extends "default_base.html" %} 2 | 3 | 4 | {% block title_suffix %} :: Generic Pombola Site {% endblock %} 5 | 6 | {% block css_headers %} 7 | {# Include some "white label" styling here #} 8 | {% endblock %} 9 | -------------------------------------------------------------------------------- /pombola/templates/candidate_data_attribution.html: -------------------------------------------------------------------------------- 1 | {# If there's an attribution required for candidate data, put it here #} 2 | -------------------------------------------------------------------------------- /pombola/templates/header.html: -------------------------------------------------------------------------------- 1 | {% include 'staging_header.html' %} 2 | 3 | {% include 'main_menu.html' %} 4 | 5 | {% include 'site_header.html' %} 6 | -------------------------------------------------------------------------------- /pombola/templates/main_menu.html: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /pombola/templates/mapit/index.html: -------------------------------------------------------------------------------- 1 | {% extends "mapit/base.html" %} 2 | 3 | {% block title %}MapIt{% endblock %} 4 | 5 | {% block content %} 6 | 7 |3 | Some content on this page may come from 4 | Wikipedia 5 | under a 6 | CC BY-SA 3.0 License. 7 |
8 | -------------------------------------------------------------------------------- /pombola/testing/__init__.py: -------------------------------------------------------------------------------- 1 | from selenium import PombolaSeleniumTestCase # noqa 2 | 3 | -------------------------------------------------------------------------------- /pombola/votematch/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mysociety/pombola/cb0f4a75aea91a471bb8b64921c80f19adf1a9f1/pombola/votematch/__init__.py -------------------------------------------------------------------------------- /pombola/votematch/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mysociety/pombola/cb0f4a75aea91a471bb8b64921c80f19adf1a9f1/pombola/votematch/migrations/__init__.py -------------------------------------------------------------------------------- /pombola/votematch/static/votematch/.gitignore: -------------------------------------------------------------------------------- 1 | .sass-cache 2 | -------------------------------------------------------------------------------- /pombola/votematch/static/votematch/css/desktop_tablet.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | /*------------------------------------*\ 3 | DESKTOP_TABLET.CSS 4 | \*------------------------------------*/ 5 | form.quiz-form ul.check-list { 6 | float: right; 7 | } 8 | -------------------------------------------------------------------------------- /pombola/votematch/static/votematch/images/quiz-smileys.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mysociety/pombola/cb0f4a75aea91a471bb8b64921c80f19adf1a9f1/pombola/votematch/static/votematch/images/quiz-smileys.jpg -------------------------------------------------------------------------------- /pombola/votematch/static/votematch/images/quiz-smileys.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mysociety/pombola/cb0f4a75aea91a471bb8b64921c80f19adf1a9f1/pombola/votematch/static/votematch/images/quiz-smileys.png -------------------------------------------------------------------------------- /pombola/votematch/templates/votematch/base.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | {% load staticfiles %} 3 | 4 | {% block css_headers %} 5 | {{ block.super }} 6 | 7 | 8 | {% endblock %} 9 | 10 | {% block breadcrumbs %} 11 | {# Hide bread crumbs on the home page. Insert blank div to add padding #} 12 | 13 | {% endblock %} 14 | -------------------------------------------------------------------------------- /pombola/votematch/templates/votematch/quiz_list.html: -------------------------------------------------------------------------------- 1 | {% extends 'votematch/base.html' %} 2 | 3 | {% block title %} 4 | Quizzes 5 | {% endblock %} 6 | 7 | {% block content %} 8 | 9 |It will appear on the site once it has been approved by the site admins.
14 | 15 |