├── __init__.py ├── mainapp ├── search.py ├── __init__.py ├── views │ ├── __init__.py │ ├── mobile │ │ └── __init__.py │ ├── reports │ │ ├── __init__.py │ │ ├── flags.py │ │ ├── updates.py │ │ ├── main.py │ │ └── subscribers.py │ ├── ajax.py │ ├── promotion.py │ ├── contact.py │ ├── wards.py │ └── cities.py ├── middleware │ ├── __init__.py │ ├── subdomains.py │ └── SSLMiddleware.py ├── templatetags │ ├── __init__.py │ └── tags.py ├── tests │ ├── open311 │ │ ├── __init__.py │ │ └── expected │ │ │ ├── create_report.xml │ │ │ ├── get_report_4.xml │ │ │ ├── get_report_1.xml │ │ │ ├── get_report_2.xml │ │ │ ├── get_reports.xml │ │ │ └── get_modified_services.xml │ ├── testsocial_auth │ │ ├── __init__.py │ │ └── dummy_socialauth.py │ └── __init__.py ├── management │ ├── commands │ │ ├── __init__.py │ │ ├── unicodewriter.py │ │ ├── resend_report.py │ │ ├── sync_councillors.py │ │ ├── create_cityadmin.py │ │ ├── export_email_rules.py │ │ └── export_ward_info.py │ ├── __init__.py │ └── signals │ │ ├── post_syncdb.py │ │ └── __init__.py ├── testviewdefs.py └── fixtures │ ├── test_email_rules.json │ ├── test_report_basecases.json │ └── test_stats.json ├── templates ├── reports │ ├── updates │ │ ├── confirm.html │ │ └── create.html │ ├── subscribers │ │ ├── message.html │ │ ├── confirm.html │ │ ├── new.html │ │ └── create.html │ ├── flags │ │ ├── thanks.html │ │ └── new.html │ ├── _pagination.html │ └── new.html ├── feeds │ ├── reports_title.html │ └── reports_description.html ├── emails │ ├── batch_reports │ │ ├── invitations │ │ │ ├── subject.txt │ │ │ └── message.html │ │ ├── reminders │ │ │ ├── subject.txt │ │ │ └── message.txt │ │ └── new_reports │ │ │ ├── subject.txt │ │ │ └── message.html │ ├── send_report_to_city │ │ ├── subject.txt │ │ └── message.txt │ ├── flag_report │ │ └── message.txt │ ├── report_update │ │ ├── subject.txt │ │ └── message.txt │ ├── confirm │ │ ├── subject.txt │ │ └── message.txt │ ├── contact │ │ └── message.txt │ └── subscribe │ │ └── message.txt ├── registration │ ├── activation_email_subject.txt │ ├── activate.html │ ├── registration_complete.html │ ├── activation_email.txt │ ├── error.html │ ├── login.html │ └── registration_form.html ├── 500.html ├── 404.html ├── open311 │ └── v2 │ │ ├── _errors.xml │ │ ├── _services.xml │ │ └── _reports.xml ├── contact │ ├── thanks.html │ └── new.html ├── cities │ ├── home.html │ ├── index.html │ ├── _report_count_table.html │ └── show.html ├── faq │ └── show.html ├── wards │ ├── _info_box.html │ └── show.html ├── admin │ ├── mainapp │ │ └── emailrules │ │ │ └── change_list.html │ ├── base_site.html │ └── login.html ├── ajax │ └── category_description.html ├── posters.html ├── account │ ├── edit.html │ └── home.html ├── promotions │ └── show.html ├── about.html ├── search_result.html ├── _fixmystreetmap.js ├── privacy.html └── _search.js ├── .gitignore ├── media ├── bug.png ├── logo.png ├── fixitlogo.png ├── images │ ├── .DS_Store │ ├── rss25x26.png │ ├── rss30x31.png │ ├── rss30x31.xcf │ ├── rss62x64.xcf │ ├── sitebyvg.png │ ├── start_bl.png │ ├── start_br.png │ ├── start_tl.png │ ├── start_tr.png │ ├── stat_bl.png │ ├── stat_br.png │ ├── stat_tl.png │ ├── stat_tr.png │ ├── arrow-right.png │ ├── marker-icon.gif │ ├── marker-icon.png │ ├── search-off.png │ ├── submit-off.gif │ ├── metrics-back.gif │ ├── search-hover.png │ ├── submit-hover.gif │ ├── fixmystreetlogo.png │ ├── fms-canada-logo.gif │ ├── map-background.png │ ├── marker │ │ ├── red │ │ │ ├── blank.png │ │ │ ├── marker0.png │ │ │ ├── marker1.png │ │ │ ├── marker2.png │ │ │ ├── marker3.png │ │ │ ├── marker4.png │ │ │ ├── marker5.png │ │ │ ├── marker6.png │ │ │ ├── marker7.png │ │ │ ├── marker8.png │ │ │ ├── marker9.png │ │ │ ├── marker00.png │ │ │ ├── marker01.png │ │ │ ├── marker02.png │ │ │ ├── marker03.png │ │ │ ├── marker04.png │ │ │ ├── marker05.png │ │ │ ├── marker06.png │ │ │ ├── marker07.png │ │ │ ├── marker08.png │ │ │ ├── marker09.png │ │ │ ├── marker10.png │ │ │ ├── marker11.png │ │ │ ├── marker12.png │ │ │ ├── marker13.png │ │ │ ├── marker14.png │ │ │ ├── marker15.png │ │ │ ├── marker16.png │ │ │ ├── marker17.png │ │ │ ├── marker18.png │ │ │ ├── marker19.png │ │ │ ├── marker20.png │ │ │ ├── marker21.png │ │ │ ├── marker22.png │ │ │ ├── marker23.png │ │ │ ├── marker24.png │ │ │ ├── marker25.png │ │ │ ├── marker26.png │ │ │ ├── marker27.png │ │ │ ├── marker28.png │ │ │ ├── marker29.png │ │ │ ├── marker30.png │ │ │ ├── marker31.png │ │ │ ├── marker32.png │ │ │ ├── marker33.png │ │ │ ├── marker34.png │ │ │ ├── marker35.png │ │ │ ├── marker36.png │ │ │ ├── marker37.png │ │ │ ├── marker38.png │ │ │ ├── marker39.png │ │ │ ├── marker40.png │ │ │ ├── marker41.png │ │ │ ├── marker42.png │ │ │ ├── marker43.png │ │ │ ├── marker44.png │ │ │ ├── marker45.png │ │ │ ├── marker46.png │ │ │ ├── marker47.png │ │ │ ├── marker48.png │ │ │ ├── marker49.png │ │ │ ├── marker50.png │ │ │ ├── marker51.png │ │ │ ├── marker52.png │ │ │ ├── marker53.png │ │ │ ├── marker54.png │ │ │ ├── marker55.png │ │ │ ├── marker56.png │ │ │ ├── marker57.png │ │ │ ├── marker58.png │ │ │ ├── marker59.png │ │ │ ├── marker60.png │ │ │ ├── marker61.png │ │ │ ├── marker62.png │ │ │ ├── marker63.png │ │ │ ├── marker64.png │ │ │ ├── marker65.png │ │ │ ├── marker66.png │ │ │ ├── marker67.png │ │ │ ├── marker68.png │ │ │ ├── marker69.png │ │ │ ├── marker70.png │ │ │ ├── marker71.png │ │ │ ├── marker72.png │ │ │ ├── marker73.png │ │ │ ├── marker74.png │ │ │ ├── marker75.png │ │ │ ├── marker76.png │ │ │ ├── marker77.png │ │ │ ├── marker78.png │ │ │ ├── marker79.png │ │ │ ├── marker80.png │ │ │ ├── marker81.png │ │ │ ├── marker82.png │ │ │ ├── marker83.png │ │ │ ├── marker84.png │ │ │ ├── marker85.png │ │ │ ├── marker86.png │ │ │ ├── marker87.png │ │ │ ├── marker88.png │ │ │ ├── marker89.png │ │ │ ├── marker90.png │ │ │ ├── marker91.png │ │ │ ├── marker92.png │ │ │ ├── marker93.png │ │ │ ├── marker94.png │ │ │ ├── marker95.png │ │ │ ├── marker96.png │ │ │ ├── marker97.png │ │ │ ├── marker98.png │ │ │ └── marker99.png │ │ ├── green │ │ │ ├── blank.png │ │ │ ├── marker0.png │ │ │ ├── marker00.png │ │ │ ├── marker01.png │ │ │ ├── marker02.png │ │ │ ├── marker03.png │ │ │ ├── marker04.png │ │ │ ├── marker05.png │ │ │ ├── marker06.png │ │ │ ├── marker07.png │ │ │ ├── marker08.png │ │ │ ├── marker09.png │ │ │ ├── marker1.png │ │ │ ├── marker10.png │ │ │ ├── marker11.png │ │ │ ├── marker12.png │ │ │ ├── marker13.png │ │ │ ├── marker14.png │ │ │ ├── marker15.png │ │ │ ├── marker16.png │ │ │ ├── marker17.png │ │ │ ├── marker18.png │ │ │ ├── marker19.png │ │ │ ├── marker2.png │ │ │ ├── marker20.png │ │ │ ├── marker21.png │ │ │ ├── marker22.png │ │ │ ├── marker23.png │ │ │ ├── marker24.png │ │ │ ├── marker25.png │ │ │ ├── marker26.png │ │ │ ├── marker27.png │ │ │ ├── marker28.png │ │ │ ├── marker29.png │ │ │ ├── marker3.png │ │ │ ├── marker30.png │ │ │ ├── marker31.png │ │ │ ├── marker32.png │ │ │ ├── marker33.png │ │ │ ├── marker34.png │ │ │ ├── marker35.png │ │ │ ├── marker36.png │ │ │ ├── marker37.png │ │ │ ├── marker38.png │ │ │ ├── marker39.png │ │ │ ├── marker4.png │ │ │ ├── marker40.png │ │ │ ├── marker41.png │ │ │ ├── marker42.png │ │ │ ├── marker43.png │ │ │ ├── marker44.png │ │ │ ├── marker45.png │ │ │ ├── marker46.png │ │ │ ├── marker47.png │ │ │ ├── marker48.png │ │ │ ├── marker49.png │ │ │ ├── marker5.png │ │ │ ├── marker50.png │ │ │ ├── marker51.png │ │ │ ├── marker52.png │ │ │ ├── marker53.png │ │ │ ├── marker54.png │ │ │ ├── marker55.png │ │ │ ├── marker56.png │ │ │ ├── marker57.png │ │ │ ├── marker58.png │ │ │ ├── marker59.png │ │ │ ├── marker6.png │ │ │ ├── marker60.png │ │ │ ├── marker61.png │ │ │ ├── marker62.png │ │ │ ├── marker63.png │ │ │ ├── marker64.png │ │ │ ├── marker65.png │ │ │ ├── marker66.png │ │ │ ├── marker67.png │ │ │ ├── marker68.png │ │ │ ├── marker69.png │ │ │ ├── marker7.png │ │ │ ├── marker70.png │ │ │ ├── marker71.png │ │ │ ├── marker72.png │ │ │ ├── marker73.png │ │ │ ├── marker74.png │ │ │ ├── marker75.png │ │ │ ├── marker76.png │ │ │ ├── marker77.png │ │ │ ├── marker78.png │ │ │ ├── marker79.png │ │ │ ├── marker8.png │ │ │ ├── marker80.png │ │ │ ├── marker81.png │ │ │ ├── marker82.png │ │ │ ├── marker83.png │ │ │ ├── marker84.png │ │ │ ├── marker85.png │ │ │ ├── marker86.png │ │ │ ├── marker87.png │ │ │ ├── marker88.png │ │ │ ├── marker89.png │ │ │ ├── marker9.png │ │ │ ├── marker90.png │ │ │ ├── marker91.png │ │ │ ├── marker92.png │ │ │ ├── marker93.png │ │ │ ├── marker94.png │ │ │ ├── marker95.png │ │ │ ├── marker96.png │ │ │ ├── marker97.png │ │ │ ├── marker98.png │ │ │ └── marker99.png │ │ └── default │ │ │ ├── blank.png │ │ │ ├── marker.png │ │ │ ├── marker0.png │ │ │ ├── marker00.png │ │ │ ├── marker01.png │ │ │ ├── marker02.png │ │ │ ├── marker03.png │ │ │ ├── marker04.png │ │ │ ├── marker05.png │ │ │ ├── marker06.png │ │ │ ├── marker07.png │ │ │ ├── marker08.png │ │ │ ├── marker09.png │ │ │ ├── marker1.png │ │ │ ├── marker10.png │ │ │ ├── marker11.png │ │ │ ├── marker12.png │ │ │ ├── marker13.png │ │ │ ├── marker14.png │ │ │ ├── marker15.png │ │ │ ├── marker16.png │ │ │ ├── marker17.png │ │ │ ├── marker18.png │ │ │ ├── marker19.png │ │ │ ├── marker2.png │ │ │ ├── marker20.png │ │ │ ├── marker21.png │ │ │ ├── marker22.png │ │ │ ├── marker23.png │ │ │ ├── marker24.png │ │ │ ├── marker25.png │ │ │ ├── marker26.png │ │ │ ├── marker27.png │ │ │ ├── marker28.png │ │ │ ├── marker29.png │ │ │ ├── marker3.png │ │ │ ├── marker30.png │ │ │ ├── marker31.png │ │ │ ├── marker32.png │ │ │ ├── marker33.png │ │ │ ├── marker34.png │ │ │ ├── marker35.png │ │ │ ├── marker36.png │ │ │ ├── marker37.png │ │ │ ├── marker38.png │ │ │ ├── marker39.png │ │ │ ├── marker4.png │ │ │ ├── marker40.png │ │ │ ├── marker41.png │ │ │ ├── marker42.png │ │ │ ├── marker43.png │ │ │ ├── marker44.png │ │ │ ├── marker45.png │ │ │ ├── marker46.png │ │ │ ├── marker47.png │ │ │ ├── marker48.png │ │ │ ├── marker49.png │ │ │ ├── marker5.png │ │ │ ├── marker50.png │ │ │ ├── marker51.png │ │ │ ├── marker52.png │ │ │ ├── marker53.png │ │ │ ├── marker54.png │ │ │ ├── marker55.png │ │ │ ├── marker56.png │ │ │ ├── marker57.png │ │ │ ├── marker58.png │ │ │ ├── marker59.png │ │ │ ├── marker6.png │ │ │ ├── marker60.png │ │ │ ├── marker61.png │ │ │ ├── marker62.png │ │ │ ├── marker63.png │ │ │ ├── marker64.png │ │ │ ├── marker65.png │ │ │ ├── marker66.png │ │ │ ├── marker67.png │ │ │ ├── marker68.png │ │ │ ├── marker69.png │ │ │ ├── marker7.png │ │ │ ├── marker70.png │ │ │ ├── marker71.png │ │ │ ├── marker72.png │ │ │ ├── marker73.png │ │ │ ├── marker74.png │ │ │ ├── marker75.png │ │ │ ├── marker76.png │ │ │ ├── marker77.png │ │ │ ├── marker78.png │ │ │ ├── marker79.png │ │ │ ├── marker8.png │ │ │ ├── marker80.png │ │ │ ├── marker81.png │ │ │ ├── marker82.png │ │ │ ├── marker83.png │ │ │ ├── marker84.png │ │ │ ├── marker85.png │ │ │ ├── marker86.png │ │ │ ├── marker87.png │ │ │ ├── marker88.png │ │ │ ├── marker89.png │ │ │ ├── marker9.png │ │ │ ├── marker90.png │ │ │ ├── marker91.png │ │ │ ├── marker92.png │ │ │ ├── marker93.png │ │ │ ├── marker94.png │ │ │ ├── marker95.png │ │ │ ├── marker96.png │ │ │ ├── marker97.png │ │ │ ├── marker98.png │ │ │ └── marker99.png │ └── social │ │ ├── all_social.png │ │ ├── facebook_small.gif │ │ ├── google_small.gif │ │ └── twitter_small.gif ├── posters │ ├── FMSPoster_en.pdf │ └── FMSPoster_fr.pdf └── css │ ├── global.css │ └── colors.css ├── locale └── fr │ └── LC_MESSAGES │ └── django.mo ├── .pydevproject ├── .project ├── README ├── RELEASE_NOTES ├── manage.py └── scripts └── batch_reports.py /__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /mainapp/search.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /mainapp/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /mainapp/views/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /mainapp/middleware/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /mainapp/templatetags/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /mainapp/tests/open311/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /mainapp/views/mobile/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /mainapp/views/reports/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /templates/reports/updates/confirm.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /mainapp/management/commands/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /mainapp/tests/testsocial_auth/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /mainapp/management/__init__.py: -------------------------------------------------------------------------------- 1 | import signals -------------------------------------------------------------------------------- /mainapp/management/signals/post_syncdb.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /mainapp/tests/open311/expected/create_report.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | .gitignore 3 | local_settings.py 4 | -------------------------------------------------------------------------------- /mainapp/management/signals/__init__.py: -------------------------------------------------------------------------------- 1 | import post_syncdb -------------------------------------------------------------------------------- /templates/feeds/reports_title.html: -------------------------------------------------------------------------------- 1 | {{ obj.title|safe }} 2 | -------------------------------------------------------------------------------- /templates/emails/batch_reports/invitations/subject.txt: -------------------------------------------------------------------------------- 1 | FixMyStreet.ca - An Invitation -------------------------------------------------------------------------------- /templates/registration/activation_email_subject.txt: -------------------------------------------------------------------------------- 1 | Activate your FixMyStreet.ca account -------------------------------------------------------------------------------- /templates/emails/send_report_to_city/subject.txt: -------------------------------------------------------------------------------- 1 | FixMyStreet.ca: {{update.report.title|safe}} -------------------------------------------------------------------------------- /media/bug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/bug.png -------------------------------------------------------------------------------- /media/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/logo.png -------------------------------------------------------------------------------- /media/fixitlogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/fixitlogo.png -------------------------------------------------------------------------------- /templates/emails/batch_reports/reminders/subject.txt: -------------------------------------------------------------------------------- 1 | FixMyStreet.ca - Update Reminder For Report: {{report.title}} -------------------------------------------------------------------------------- /media/images/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/.DS_Store -------------------------------------------------------------------------------- /media/images/rss25x26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/rss25x26.png -------------------------------------------------------------------------------- /media/images/rss30x31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/rss30x31.png -------------------------------------------------------------------------------- /media/images/rss30x31.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/rss30x31.xcf -------------------------------------------------------------------------------- /media/images/rss62x64.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/rss62x64.xcf -------------------------------------------------------------------------------- /media/images/sitebyvg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/sitebyvg.png -------------------------------------------------------------------------------- /media/images/start_bl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/start_bl.png -------------------------------------------------------------------------------- /media/images/start_br.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/start_br.png -------------------------------------------------------------------------------- /media/images/start_tl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/start_tl.png -------------------------------------------------------------------------------- /media/images/start_tr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/start_tr.png -------------------------------------------------------------------------------- /media/images/stat_bl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/stat_bl.png -------------------------------------------------------------------------------- /media/images/stat_br.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/stat_br.png -------------------------------------------------------------------------------- /media/images/stat_tl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/stat_tl.png -------------------------------------------------------------------------------- /media/images/stat_tr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/stat_tr.png -------------------------------------------------------------------------------- /media/images/arrow-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/arrow-right.png -------------------------------------------------------------------------------- /media/images/marker-icon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker-icon.gif -------------------------------------------------------------------------------- /media/images/marker-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker-icon.png -------------------------------------------------------------------------------- /media/images/search-off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/search-off.png -------------------------------------------------------------------------------- /media/images/submit-off.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/submit-off.gif -------------------------------------------------------------------------------- /templates/emails/batch_reports/new_reports/subject.txt: -------------------------------------------------------------------------------- 1 | FixMyStreet.ca - Reports submitted in the last 24 hours in {{ward.name}} -------------------------------------------------------------------------------- /media/images/metrics-back.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/metrics-back.gif -------------------------------------------------------------------------------- /media/images/search-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/search-hover.png -------------------------------------------------------------------------------- /media/images/submit-hover.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/submit-hover.gif -------------------------------------------------------------------------------- /media/posters/FMSPoster_en.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/posters/FMSPoster_en.pdf -------------------------------------------------------------------------------- /media/posters/FMSPoster_fr.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/posters/FMSPoster_fr.pdf -------------------------------------------------------------------------------- /locale/fr/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/locale/fr/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /media/images/fixmystreetlogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/fixmystreetlogo.png -------------------------------------------------------------------------------- /media/images/fms-canada-logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/fms-canada-logo.gif -------------------------------------------------------------------------------- /media/images/map-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/map-background.png -------------------------------------------------------------------------------- /media/images/marker/red/blank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/blank.png -------------------------------------------------------------------------------- /templates/emails/flag_report/message.txt: -------------------------------------------------------------------------------- 1 | 2 | Report '{{report.title}}' has been flagged as offensive: 3 | 4 | {{report.get_absolute_url}} -------------------------------------------------------------------------------- /media/images/marker/green/blank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/blank.png -------------------------------------------------------------------------------- /media/images/marker/red/marker0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker0.png -------------------------------------------------------------------------------- /media/images/marker/red/marker1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker1.png -------------------------------------------------------------------------------- /media/images/marker/red/marker2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker2.png -------------------------------------------------------------------------------- /media/images/marker/red/marker3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker3.png -------------------------------------------------------------------------------- /media/images/marker/red/marker4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker4.png -------------------------------------------------------------------------------- /media/images/marker/red/marker5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker5.png -------------------------------------------------------------------------------- /media/images/marker/red/marker6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker6.png -------------------------------------------------------------------------------- /media/images/marker/red/marker7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker7.png -------------------------------------------------------------------------------- /media/images/marker/red/marker8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker8.png -------------------------------------------------------------------------------- /media/images/marker/red/marker9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker9.png -------------------------------------------------------------------------------- /media/images/social/all_social.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/social/all_social.png -------------------------------------------------------------------------------- /media/images/marker/default/blank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/blank.png -------------------------------------------------------------------------------- /media/images/marker/default/marker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker.png -------------------------------------------------------------------------------- /media/images/marker/green/marker0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker0.png -------------------------------------------------------------------------------- /media/images/marker/green/marker00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker00.png -------------------------------------------------------------------------------- /media/images/marker/green/marker01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker01.png -------------------------------------------------------------------------------- /media/images/marker/green/marker02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker02.png -------------------------------------------------------------------------------- /media/images/marker/green/marker03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker03.png -------------------------------------------------------------------------------- /media/images/marker/green/marker04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker04.png -------------------------------------------------------------------------------- /media/images/marker/green/marker05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker05.png -------------------------------------------------------------------------------- /media/images/marker/green/marker06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker06.png -------------------------------------------------------------------------------- /media/images/marker/green/marker07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker07.png -------------------------------------------------------------------------------- /media/images/marker/green/marker08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker08.png -------------------------------------------------------------------------------- /media/images/marker/green/marker09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker09.png -------------------------------------------------------------------------------- /media/images/marker/green/marker1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker1.png -------------------------------------------------------------------------------- /media/images/marker/green/marker10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker10.png -------------------------------------------------------------------------------- /media/images/marker/green/marker11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker11.png -------------------------------------------------------------------------------- /media/images/marker/green/marker12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker12.png -------------------------------------------------------------------------------- /media/images/marker/green/marker13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker13.png -------------------------------------------------------------------------------- /media/images/marker/green/marker14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker14.png -------------------------------------------------------------------------------- /media/images/marker/green/marker15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker15.png -------------------------------------------------------------------------------- /media/images/marker/green/marker16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker16.png -------------------------------------------------------------------------------- /media/images/marker/green/marker17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker17.png -------------------------------------------------------------------------------- /media/images/marker/green/marker18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker18.png -------------------------------------------------------------------------------- /media/images/marker/green/marker19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker19.png -------------------------------------------------------------------------------- /media/images/marker/green/marker2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker2.png -------------------------------------------------------------------------------- /media/images/marker/green/marker20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker20.png -------------------------------------------------------------------------------- /media/images/marker/green/marker21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker21.png -------------------------------------------------------------------------------- /media/images/marker/green/marker22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker22.png -------------------------------------------------------------------------------- /media/images/marker/green/marker23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker23.png -------------------------------------------------------------------------------- /media/images/marker/green/marker24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker24.png -------------------------------------------------------------------------------- /media/images/marker/green/marker25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker25.png -------------------------------------------------------------------------------- /media/images/marker/green/marker26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker26.png -------------------------------------------------------------------------------- /media/images/marker/green/marker27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker27.png -------------------------------------------------------------------------------- /media/images/marker/green/marker28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker28.png -------------------------------------------------------------------------------- /media/images/marker/green/marker29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker29.png -------------------------------------------------------------------------------- /media/images/marker/green/marker3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker3.png -------------------------------------------------------------------------------- /media/images/marker/green/marker30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker30.png -------------------------------------------------------------------------------- /media/images/marker/green/marker31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker31.png -------------------------------------------------------------------------------- /media/images/marker/green/marker32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker32.png -------------------------------------------------------------------------------- /media/images/marker/green/marker33.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker33.png -------------------------------------------------------------------------------- /media/images/marker/green/marker34.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker34.png -------------------------------------------------------------------------------- /media/images/marker/green/marker35.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker35.png -------------------------------------------------------------------------------- /media/images/marker/green/marker36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker36.png -------------------------------------------------------------------------------- /media/images/marker/green/marker37.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker37.png -------------------------------------------------------------------------------- /media/images/marker/green/marker38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker38.png -------------------------------------------------------------------------------- /media/images/marker/green/marker39.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker39.png -------------------------------------------------------------------------------- /media/images/marker/green/marker4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker4.png -------------------------------------------------------------------------------- /media/images/marker/green/marker40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker40.png -------------------------------------------------------------------------------- /media/images/marker/green/marker41.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker41.png -------------------------------------------------------------------------------- /media/images/marker/green/marker42.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker42.png -------------------------------------------------------------------------------- /media/images/marker/green/marker43.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker43.png -------------------------------------------------------------------------------- /media/images/marker/green/marker44.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker44.png -------------------------------------------------------------------------------- /media/images/marker/green/marker45.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker45.png -------------------------------------------------------------------------------- /media/images/marker/green/marker46.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker46.png -------------------------------------------------------------------------------- /media/images/marker/green/marker47.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker47.png -------------------------------------------------------------------------------- /media/images/marker/green/marker48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker48.png -------------------------------------------------------------------------------- /media/images/marker/green/marker49.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker49.png -------------------------------------------------------------------------------- /media/images/marker/green/marker5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker5.png -------------------------------------------------------------------------------- /media/images/marker/green/marker50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker50.png -------------------------------------------------------------------------------- /media/images/marker/green/marker51.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker51.png -------------------------------------------------------------------------------- /media/images/marker/green/marker52.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker52.png -------------------------------------------------------------------------------- /media/images/marker/green/marker53.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker53.png -------------------------------------------------------------------------------- /media/images/marker/green/marker54.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker54.png -------------------------------------------------------------------------------- /media/images/marker/green/marker55.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker55.png -------------------------------------------------------------------------------- /media/images/marker/green/marker56.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker56.png -------------------------------------------------------------------------------- /media/images/marker/green/marker57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker57.png -------------------------------------------------------------------------------- /media/images/marker/green/marker58.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker58.png -------------------------------------------------------------------------------- /media/images/marker/green/marker59.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker59.png -------------------------------------------------------------------------------- /media/images/marker/green/marker6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker6.png -------------------------------------------------------------------------------- /media/images/marker/green/marker60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker60.png -------------------------------------------------------------------------------- /media/images/marker/green/marker61.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker61.png -------------------------------------------------------------------------------- /media/images/marker/green/marker62.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker62.png -------------------------------------------------------------------------------- /media/images/marker/green/marker63.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker63.png -------------------------------------------------------------------------------- /media/images/marker/green/marker64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker64.png -------------------------------------------------------------------------------- /media/images/marker/green/marker65.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker65.png -------------------------------------------------------------------------------- /media/images/marker/green/marker66.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker66.png -------------------------------------------------------------------------------- /media/images/marker/green/marker67.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker67.png -------------------------------------------------------------------------------- /media/images/marker/green/marker68.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker68.png -------------------------------------------------------------------------------- /media/images/marker/green/marker69.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker69.png -------------------------------------------------------------------------------- /media/images/marker/green/marker7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker7.png -------------------------------------------------------------------------------- /media/images/marker/green/marker70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker70.png -------------------------------------------------------------------------------- /media/images/marker/green/marker71.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker71.png -------------------------------------------------------------------------------- /media/images/marker/green/marker72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker72.png -------------------------------------------------------------------------------- /media/images/marker/green/marker73.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker73.png -------------------------------------------------------------------------------- /media/images/marker/green/marker74.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker74.png -------------------------------------------------------------------------------- /media/images/marker/green/marker75.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker75.png -------------------------------------------------------------------------------- /media/images/marker/green/marker76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker76.png -------------------------------------------------------------------------------- /media/images/marker/green/marker77.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker77.png -------------------------------------------------------------------------------- /media/images/marker/green/marker78.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker78.png -------------------------------------------------------------------------------- /media/images/marker/green/marker79.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker79.png -------------------------------------------------------------------------------- /media/images/marker/green/marker8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker8.png -------------------------------------------------------------------------------- /media/images/marker/green/marker80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker80.png -------------------------------------------------------------------------------- /media/images/marker/green/marker81.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker81.png -------------------------------------------------------------------------------- /media/images/marker/green/marker82.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker82.png -------------------------------------------------------------------------------- /media/images/marker/green/marker83.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker83.png -------------------------------------------------------------------------------- /media/images/marker/green/marker84.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker84.png -------------------------------------------------------------------------------- /media/images/marker/green/marker85.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker85.png -------------------------------------------------------------------------------- /media/images/marker/green/marker86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker86.png -------------------------------------------------------------------------------- /media/images/marker/green/marker87.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker87.png -------------------------------------------------------------------------------- /media/images/marker/green/marker88.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker88.png -------------------------------------------------------------------------------- /media/images/marker/green/marker89.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker89.png -------------------------------------------------------------------------------- /media/images/marker/green/marker9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker9.png -------------------------------------------------------------------------------- /media/images/marker/green/marker90.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker90.png -------------------------------------------------------------------------------- /media/images/marker/green/marker91.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker91.png -------------------------------------------------------------------------------- /media/images/marker/green/marker92.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker92.png -------------------------------------------------------------------------------- /media/images/marker/green/marker93.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker93.png -------------------------------------------------------------------------------- /media/images/marker/green/marker94.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker94.png -------------------------------------------------------------------------------- /media/images/marker/green/marker95.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker95.png -------------------------------------------------------------------------------- /media/images/marker/green/marker96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker96.png -------------------------------------------------------------------------------- /media/images/marker/green/marker97.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker97.png -------------------------------------------------------------------------------- /media/images/marker/green/marker98.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker98.png -------------------------------------------------------------------------------- /media/images/marker/green/marker99.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/green/marker99.png -------------------------------------------------------------------------------- /media/images/marker/red/marker00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker00.png -------------------------------------------------------------------------------- /media/images/marker/red/marker01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker01.png -------------------------------------------------------------------------------- /media/images/marker/red/marker02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker02.png -------------------------------------------------------------------------------- /media/images/marker/red/marker03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker03.png -------------------------------------------------------------------------------- /media/images/marker/red/marker04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker04.png -------------------------------------------------------------------------------- /media/images/marker/red/marker05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker05.png -------------------------------------------------------------------------------- /media/images/marker/red/marker06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker06.png -------------------------------------------------------------------------------- /media/images/marker/red/marker07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker07.png -------------------------------------------------------------------------------- /media/images/marker/red/marker08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker08.png -------------------------------------------------------------------------------- /media/images/marker/red/marker09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker09.png -------------------------------------------------------------------------------- /media/images/marker/red/marker10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker10.png -------------------------------------------------------------------------------- /media/images/marker/red/marker11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker11.png -------------------------------------------------------------------------------- /media/images/marker/red/marker12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker12.png -------------------------------------------------------------------------------- /media/images/marker/red/marker13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker13.png -------------------------------------------------------------------------------- /media/images/marker/red/marker14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker14.png -------------------------------------------------------------------------------- /media/images/marker/red/marker15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker15.png -------------------------------------------------------------------------------- /media/images/marker/red/marker16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker16.png -------------------------------------------------------------------------------- /media/images/marker/red/marker17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker17.png -------------------------------------------------------------------------------- /media/images/marker/red/marker18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker18.png -------------------------------------------------------------------------------- /media/images/marker/red/marker19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker19.png -------------------------------------------------------------------------------- /media/images/marker/red/marker20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker20.png -------------------------------------------------------------------------------- /media/images/marker/red/marker21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker21.png -------------------------------------------------------------------------------- /media/images/marker/red/marker22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker22.png -------------------------------------------------------------------------------- /media/images/marker/red/marker23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker23.png -------------------------------------------------------------------------------- /media/images/marker/red/marker24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker24.png -------------------------------------------------------------------------------- /media/images/marker/red/marker25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker25.png -------------------------------------------------------------------------------- /media/images/marker/red/marker26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker26.png -------------------------------------------------------------------------------- /media/images/marker/red/marker27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker27.png -------------------------------------------------------------------------------- /media/images/marker/red/marker28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker28.png -------------------------------------------------------------------------------- /media/images/marker/red/marker29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker29.png -------------------------------------------------------------------------------- /media/images/marker/red/marker30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker30.png -------------------------------------------------------------------------------- /media/images/marker/red/marker31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker31.png -------------------------------------------------------------------------------- /media/images/marker/red/marker32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker32.png -------------------------------------------------------------------------------- /media/images/marker/red/marker33.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker33.png -------------------------------------------------------------------------------- /media/images/marker/red/marker34.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker34.png -------------------------------------------------------------------------------- /media/images/marker/red/marker35.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker35.png -------------------------------------------------------------------------------- /media/images/marker/red/marker36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker36.png -------------------------------------------------------------------------------- /media/images/marker/red/marker37.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker37.png -------------------------------------------------------------------------------- /media/images/marker/red/marker38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker38.png -------------------------------------------------------------------------------- /media/images/marker/red/marker39.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker39.png -------------------------------------------------------------------------------- /media/images/marker/red/marker40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker40.png -------------------------------------------------------------------------------- /media/images/marker/red/marker41.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker41.png -------------------------------------------------------------------------------- /media/images/marker/red/marker42.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker42.png -------------------------------------------------------------------------------- /media/images/marker/red/marker43.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker43.png -------------------------------------------------------------------------------- /media/images/marker/red/marker44.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker44.png -------------------------------------------------------------------------------- /media/images/marker/red/marker45.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker45.png -------------------------------------------------------------------------------- /media/images/marker/red/marker46.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker46.png -------------------------------------------------------------------------------- /media/images/marker/red/marker47.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker47.png -------------------------------------------------------------------------------- /media/images/marker/red/marker48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker48.png -------------------------------------------------------------------------------- /media/images/marker/red/marker49.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker49.png -------------------------------------------------------------------------------- /media/images/marker/red/marker50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker50.png -------------------------------------------------------------------------------- /media/images/marker/red/marker51.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker51.png -------------------------------------------------------------------------------- /media/images/marker/red/marker52.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker52.png -------------------------------------------------------------------------------- /media/images/marker/red/marker53.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker53.png -------------------------------------------------------------------------------- /media/images/marker/red/marker54.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker54.png -------------------------------------------------------------------------------- /media/images/marker/red/marker55.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker55.png -------------------------------------------------------------------------------- /media/images/marker/red/marker56.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker56.png -------------------------------------------------------------------------------- /media/images/marker/red/marker57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker57.png -------------------------------------------------------------------------------- /media/images/marker/red/marker58.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker58.png -------------------------------------------------------------------------------- /media/images/marker/red/marker59.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker59.png -------------------------------------------------------------------------------- /media/images/marker/red/marker60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker60.png -------------------------------------------------------------------------------- /media/images/marker/red/marker61.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker61.png -------------------------------------------------------------------------------- /media/images/marker/red/marker62.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker62.png -------------------------------------------------------------------------------- /media/images/marker/red/marker63.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker63.png -------------------------------------------------------------------------------- /media/images/marker/red/marker64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker64.png -------------------------------------------------------------------------------- /media/images/marker/red/marker65.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker65.png -------------------------------------------------------------------------------- /media/images/marker/red/marker66.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker66.png -------------------------------------------------------------------------------- /media/images/marker/red/marker67.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker67.png -------------------------------------------------------------------------------- /media/images/marker/red/marker68.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker68.png -------------------------------------------------------------------------------- /media/images/marker/red/marker69.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker69.png -------------------------------------------------------------------------------- /media/images/marker/red/marker70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker70.png -------------------------------------------------------------------------------- /media/images/marker/red/marker71.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker71.png -------------------------------------------------------------------------------- /media/images/marker/red/marker72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker72.png -------------------------------------------------------------------------------- /media/images/marker/red/marker73.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker73.png -------------------------------------------------------------------------------- /media/images/marker/red/marker74.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker74.png -------------------------------------------------------------------------------- /media/images/marker/red/marker75.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker75.png -------------------------------------------------------------------------------- /media/images/marker/red/marker76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker76.png -------------------------------------------------------------------------------- /media/images/marker/red/marker77.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker77.png -------------------------------------------------------------------------------- /media/images/marker/red/marker78.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker78.png -------------------------------------------------------------------------------- /media/images/marker/red/marker79.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker79.png -------------------------------------------------------------------------------- /media/images/marker/red/marker80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker80.png -------------------------------------------------------------------------------- /media/images/marker/red/marker81.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker81.png -------------------------------------------------------------------------------- /media/images/marker/red/marker82.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker82.png -------------------------------------------------------------------------------- /media/images/marker/red/marker83.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker83.png -------------------------------------------------------------------------------- /media/images/marker/red/marker84.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker84.png -------------------------------------------------------------------------------- /media/images/marker/red/marker85.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker85.png -------------------------------------------------------------------------------- /media/images/marker/red/marker86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker86.png -------------------------------------------------------------------------------- /media/images/marker/red/marker87.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker87.png -------------------------------------------------------------------------------- /media/images/marker/red/marker88.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker88.png -------------------------------------------------------------------------------- /media/images/marker/red/marker89.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker89.png -------------------------------------------------------------------------------- /media/images/marker/red/marker90.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker90.png -------------------------------------------------------------------------------- /media/images/marker/red/marker91.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker91.png -------------------------------------------------------------------------------- /media/images/marker/red/marker92.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker92.png -------------------------------------------------------------------------------- /media/images/marker/red/marker93.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker93.png -------------------------------------------------------------------------------- /media/images/marker/red/marker94.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker94.png -------------------------------------------------------------------------------- /media/images/marker/red/marker95.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker95.png -------------------------------------------------------------------------------- /media/images/marker/red/marker96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker96.png -------------------------------------------------------------------------------- /media/images/marker/red/marker97.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker97.png -------------------------------------------------------------------------------- /media/images/marker/red/marker98.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker98.png -------------------------------------------------------------------------------- /media/images/marker/red/marker99.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/red/marker99.png -------------------------------------------------------------------------------- /media/images/social/facebook_small.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/social/facebook_small.gif -------------------------------------------------------------------------------- /media/images/social/google_small.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/social/google_small.gif -------------------------------------------------------------------------------- /media/images/social/twitter_small.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/social/twitter_small.gif -------------------------------------------------------------------------------- /media/images/marker/default/marker0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker0.png -------------------------------------------------------------------------------- /media/images/marker/default/marker00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker00.png -------------------------------------------------------------------------------- /media/images/marker/default/marker01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker01.png -------------------------------------------------------------------------------- /media/images/marker/default/marker02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker02.png -------------------------------------------------------------------------------- /media/images/marker/default/marker03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker03.png -------------------------------------------------------------------------------- /media/images/marker/default/marker04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker04.png -------------------------------------------------------------------------------- /media/images/marker/default/marker05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker05.png -------------------------------------------------------------------------------- /media/images/marker/default/marker06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker06.png -------------------------------------------------------------------------------- /media/images/marker/default/marker07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker07.png -------------------------------------------------------------------------------- /media/images/marker/default/marker08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker08.png -------------------------------------------------------------------------------- /media/images/marker/default/marker09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker09.png -------------------------------------------------------------------------------- /media/images/marker/default/marker1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker1.png -------------------------------------------------------------------------------- /media/images/marker/default/marker10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker10.png -------------------------------------------------------------------------------- /media/images/marker/default/marker11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker11.png -------------------------------------------------------------------------------- /media/images/marker/default/marker12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker12.png -------------------------------------------------------------------------------- /media/images/marker/default/marker13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker13.png -------------------------------------------------------------------------------- /media/images/marker/default/marker14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker14.png -------------------------------------------------------------------------------- /media/images/marker/default/marker15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker15.png -------------------------------------------------------------------------------- /media/images/marker/default/marker16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker16.png -------------------------------------------------------------------------------- /media/images/marker/default/marker17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker17.png -------------------------------------------------------------------------------- /media/images/marker/default/marker18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker18.png -------------------------------------------------------------------------------- /media/images/marker/default/marker19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker19.png -------------------------------------------------------------------------------- /media/images/marker/default/marker2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker2.png -------------------------------------------------------------------------------- /media/images/marker/default/marker20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker20.png -------------------------------------------------------------------------------- /media/images/marker/default/marker21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker21.png -------------------------------------------------------------------------------- /media/images/marker/default/marker22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker22.png -------------------------------------------------------------------------------- /media/images/marker/default/marker23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker23.png -------------------------------------------------------------------------------- /media/images/marker/default/marker24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker24.png -------------------------------------------------------------------------------- /media/images/marker/default/marker25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker25.png -------------------------------------------------------------------------------- /media/images/marker/default/marker26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker26.png -------------------------------------------------------------------------------- /media/images/marker/default/marker27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker27.png -------------------------------------------------------------------------------- /media/images/marker/default/marker28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker28.png -------------------------------------------------------------------------------- /media/images/marker/default/marker29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker29.png -------------------------------------------------------------------------------- /media/images/marker/default/marker3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker3.png -------------------------------------------------------------------------------- /media/images/marker/default/marker30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker30.png -------------------------------------------------------------------------------- /media/images/marker/default/marker31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker31.png -------------------------------------------------------------------------------- /media/images/marker/default/marker32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker32.png -------------------------------------------------------------------------------- /media/images/marker/default/marker33.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker33.png -------------------------------------------------------------------------------- /media/images/marker/default/marker34.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker34.png -------------------------------------------------------------------------------- /media/images/marker/default/marker35.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker35.png -------------------------------------------------------------------------------- /media/images/marker/default/marker36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker36.png -------------------------------------------------------------------------------- /media/images/marker/default/marker37.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker37.png -------------------------------------------------------------------------------- /media/images/marker/default/marker38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker38.png -------------------------------------------------------------------------------- /media/images/marker/default/marker39.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker39.png -------------------------------------------------------------------------------- /media/images/marker/default/marker4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker4.png -------------------------------------------------------------------------------- /media/images/marker/default/marker40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker40.png -------------------------------------------------------------------------------- /media/images/marker/default/marker41.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker41.png -------------------------------------------------------------------------------- /media/images/marker/default/marker42.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker42.png -------------------------------------------------------------------------------- /media/images/marker/default/marker43.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker43.png -------------------------------------------------------------------------------- /media/images/marker/default/marker44.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker44.png -------------------------------------------------------------------------------- /media/images/marker/default/marker45.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker45.png -------------------------------------------------------------------------------- /media/images/marker/default/marker46.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker46.png -------------------------------------------------------------------------------- /media/images/marker/default/marker47.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker47.png -------------------------------------------------------------------------------- /media/images/marker/default/marker48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker48.png -------------------------------------------------------------------------------- /media/images/marker/default/marker49.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker49.png -------------------------------------------------------------------------------- /media/images/marker/default/marker5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker5.png -------------------------------------------------------------------------------- /media/images/marker/default/marker50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker50.png -------------------------------------------------------------------------------- /media/images/marker/default/marker51.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker51.png -------------------------------------------------------------------------------- /media/images/marker/default/marker52.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker52.png -------------------------------------------------------------------------------- /media/images/marker/default/marker53.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker53.png -------------------------------------------------------------------------------- /media/images/marker/default/marker54.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker54.png -------------------------------------------------------------------------------- /media/images/marker/default/marker55.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker55.png -------------------------------------------------------------------------------- /media/images/marker/default/marker56.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker56.png -------------------------------------------------------------------------------- /media/images/marker/default/marker57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker57.png -------------------------------------------------------------------------------- /media/images/marker/default/marker58.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker58.png -------------------------------------------------------------------------------- /media/images/marker/default/marker59.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker59.png -------------------------------------------------------------------------------- /media/images/marker/default/marker6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker6.png -------------------------------------------------------------------------------- /media/images/marker/default/marker60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker60.png -------------------------------------------------------------------------------- /media/images/marker/default/marker61.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker61.png -------------------------------------------------------------------------------- /media/images/marker/default/marker62.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker62.png -------------------------------------------------------------------------------- /media/images/marker/default/marker63.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker63.png -------------------------------------------------------------------------------- /media/images/marker/default/marker64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker64.png -------------------------------------------------------------------------------- /media/images/marker/default/marker65.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker65.png -------------------------------------------------------------------------------- /media/images/marker/default/marker66.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker66.png -------------------------------------------------------------------------------- /media/images/marker/default/marker67.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker67.png -------------------------------------------------------------------------------- /media/images/marker/default/marker68.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker68.png -------------------------------------------------------------------------------- /media/images/marker/default/marker69.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker69.png -------------------------------------------------------------------------------- /media/images/marker/default/marker7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker7.png -------------------------------------------------------------------------------- /media/images/marker/default/marker70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker70.png -------------------------------------------------------------------------------- /media/images/marker/default/marker71.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker71.png -------------------------------------------------------------------------------- /media/images/marker/default/marker72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker72.png -------------------------------------------------------------------------------- /media/images/marker/default/marker73.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker73.png -------------------------------------------------------------------------------- /media/images/marker/default/marker74.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker74.png -------------------------------------------------------------------------------- /media/images/marker/default/marker75.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker75.png -------------------------------------------------------------------------------- /media/images/marker/default/marker76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker76.png -------------------------------------------------------------------------------- /media/images/marker/default/marker77.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker77.png -------------------------------------------------------------------------------- /media/images/marker/default/marker78.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker78.png -------------------------------------------------------------------------------- /media/images/marker/default/marker79.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker79.png -------------------------------------------------------------------------------- /media/images/marker/default/marker8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker8.png -------------------------------------------------------------------------------- /media/images/marker/default/marker80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker80.png -------------------------------------------------------------------------------- /media/images/marker/default/marker81.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker81.png -------------------------------------------------------------------------------- /media/images/marker/default/marker82.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker82.png -------------------------------------------------------------------------------- /media/images/marker/default/marker83.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker83.png -------------------------------------------------------------------------------- /media/images/marker/default/marker84.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker84.png -------------------------------------------------------------------------------- /media/images/marker/default/marker85.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker85.png -------------------------------------------------------------------------------- /media/images/marker/default/marker86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker86.png -------------------------------------------------------------------------------- /media/images/marker/default/marker87.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker87.png -------------------------------------------------------------------------------- /media/images/marker/default/marker88.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker88.png -------------------------------------------------------------------------------- /media/images/marker/default/marker89.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker89.png -------------------------------------------------------------------------------- /media/images/marker/default/marker9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker9.png -------------------------------------------------------------------------------- /media/images/marker/default/marker90.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker90.png -------------------------------------------------------------------------------- /media/images/marker/default/marker91.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker91.png -------------------------------------------------------------------------------- /media/images/marker/default/marker92.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker92.png -------------------------------------------------------------------------------- /media/images/marker/default/marker93.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker93.png -------------------------------------------------------------------------------- /media/images/marker/default/marker94.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker94.png -------------------------------------------------------------------------------- /media/images/marker/default/marker95.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker95.png -------------------------------------------------------------------------------- /media/images/marker/default/marker96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker96.png -------------------------------------------------------------------------------- /media/images/marker/default/marker97.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker97.png -------------------------------------------------------------------------------- /media/images/marker/default/marker98.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker98.png -------------------------------------------------------------------------------- /media/images/marker/default/marker99.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visiblegovernment/django-fixmystreet/HEAD/media/images/marker/default/marker99.png -------------------------------------------------------------------------------- /templates/emails/report_update/subject.txt: -------------------------------------------------------------------------------- 1 | FixMyStreet.ca: '{{update.report.title|safe}}' {% if update.is_fixed %} Fixed {% else %} Updated {% endif %} -------------------------------------------------------------------------------- /templates/feeds/reports_description.html: -------------------------------------------------------------------------------- 1 |

{{obj.desc|linebreaks}}

2 | Filed at {{obj.created_at}} in {{obj.ward.name}},{{obj.ward.city.name}} -------------------------------------------------------------------------------- /templates/500.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 500 - Not Found 4 | 5 |

Server Error 500

6 | -------------------------------------------------------------------------------- /templates/emails/confirm/subject.txt: -------------------------------------------------------------------------------- 1 | FixMyStreet.ca - Please Confirm {% if update.first_update %}Report{% else %}Update For{% endif %}: {{update.report.title|safe}} -------------------------------------------------------------------------------- /mainapp/tests/__init__.py: -------------------------------------------------------------------------------- 1 | from emailrules import * 2 | from stats import * 3 | from account import * 4 | from base_cases import * 5 | from open311.v2 import * 6 | 7 | -------------------------------------------------------------------------------- /templates/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 404 - Not Found 4 | 5 |

Error 404 - Not Found

6 | -------------------------------------------------------------------------------- /templates/open311/v2/_errors.xml: -------------------------------------------------------------------------------- 1 | {% for key,value in errors.items %} 2 | 3 | {{key}}:{{value|safe}} 4 | 5 | {% endfor %} -------------------------------------------------------------------------------- /templates/reports/subscribers/message.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | {% block content %} 4 |
5 |

{{message}}

6 |
7 | {% endblock %} -------------------------------------------------------------------------------- /templates/emails/contact/message.txt: -------------------------------------------------------------------------------- 1 | From: {{name}} ({{email}}) 2 | ------------------------------------------------------------ 3 | {{body|safe}} 4 | ------------------------------------------------------------ 5 | -------------------------------------------------------------------------------- /templates/emails/subscribe/message.txt: -------------------------------------------------------------------------------- 1 | Please click on the following URL: 2 | {{confirm_url}} 3 | 4 | To confirm your subscription to updates on the report: 5 | {{subscriber.report.title|safe}} 6 | 7 | Thank you, 8 | The FixMyStreet.ca Team -------------------------------------------------------------------------------- /templates/reports/flags/thanks.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | {% block content %} 4 | {% blocktrans %} 5 |

Thank you

6 |

Thank you, your feedback has been received and we will act accordingly as soon as possible.

7 | {% endblocktrans %} 8 | {% endblock %} -------------------------------------------------------------------------------- /templates/contact/thanks.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | 4 | {% block content %} 5 |

{% trans "Thank you" %}

6 | {% blocktrans %} 7 |

Thanks for submitting your comments.

8 | Return to FixMyStreet.ca 9 | {% endblocktrans %} 10 | {% endblock %} -------------------------------------------------------------------------------- /templates/cities/home.html: -------------------------------------------------------------------------------- 1 | {% extends "home.html" %} 2 | {% load i18n %} 3 | {% block stats_title %}{{city.name}} {% endblock %} 4 | {% block all_reports_link %}{{city.get_absolute_url}}{% endblock %} 5 | {% block search_instructions %}{% trans "Report, view, or discuss local problems in" %} {{city.name}}{% endblock %} -------------------------------------------------------------------------------- /.pydevproject: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | python 2.6 6 | Default 7 | 8 | -------------------------------------------------------------------------------- /templates/registration/activate.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | {% block title %}{% trans "Activation Complete" %}{% endblock %} 4 | {% block content %} 5 |

{% trans "Account Confirmed" %}

6 |

{% trans "Thanks for signing up!" %}

7 |
8 |

{% trans "Return to FixMyStreet.ca" %}

9 | {% endblock %} -------------------------------------------------------------------------------- /templates/reports/subscribers/confirm.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | {% block content %} 4 |

{% trans "Subscribe Complete" %}

5 |

{% trans "You have subscribed to updates to" %}:

6 |

{{subscriber.report.title}} 7 |

8 | Return to FixMyStreet.ca 9 | {% endblock %} -------------------------------------------------------------------------------- /templates/faq/show.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | {% block title %}{% trans "About" %} - {{faq_entry.q}}{% endblock %} 4 | {% block content %} 5 |

6 | 7 |

{% trans "About" %} FixMyStreet Canada

8 |
9 |

{{faq_entry.q}}

10 |

{{faq_entry.a|safe}}

11 |
12 |
13 | {% endblock %} -------------------------------------------------------------------------------- /templates/registration/registration_complete.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | {% block title %}{% trans "Registration Complete" %}{% endblock %} 4 | {% block content %} 5 |

{% trans "Check Your Inbox..." %}

6 |

{% trans "Your account has been created, but you still need to confirm your email address." %}

7 |

8 |

{% trans "Please check your email." %}

9 | {% endblock %} -------------------------------------------------------------------------------- /templates/wards/_info_box.html: -------------------------------------------------------------------------------- 1 | {% load i18n %} 2 |
3 | {% if ward.councillor %} 4 | {% if ward.councillor.photo %} 5 | 6 | {% endif %} 7 | {% trans "Councillor" %}: {{ward.councillor.first_name}} {{ward.councillor.last_name}}
8 | {% endif %} 9 | {% trans "Ward" %}: {{ward.name}}
10 |
11 | -------------------------------------------------------------------------------- /.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | FixMySteet 4 | 5 | 6 | 7 | 8 | 9 | org.python.pydev.PyDevBuilder 10 | 11 | 12 | 13 | 14 | 15 | org.python.pydev.pythonNature 16 | 17 | 18 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | This is the code for http://fixmystreet.ca. 2 | 3 | Official installation instructions are available here: 4 | http://wiki.github.com/visiblegovernment/django-fixmystreet/ 5 | 6 | A first-hand account of an installation on ms-dos using a VMware Virtual Machine is here: 7 | https://www.socialtext.net/lukec/index.cgi?howto_set_up_fixmystreet_ca_developer_environment 8 | 9 | FixMyStreet was created for http://visiblegovernment.ca/. 10 | -------------------------------------------------------------------------------- /mainapp/views/ajax.py: -------------------------------------------------------------------------------- 1 | from django.shortcuts import render_to_response, get_object_or_404 2 | from django.template import Context, RequestContext 3 | from mainapp.models import ReportCategory, ReportCategoryClass 4 | 5 | def category_desc(request,id): 6 | return render_to_response("ajax/category_description.html", 7 | {"category": ReportCategory.objects.get(id=id), 8 | }, 9 | context_instance=RequestContext(request)) -------------------------------------------------------------------------------- /mainapp/management/commands/unicodewriter.py: -------------------------------------------------------------------------------- 1 | import csv 2 | 3 | 4 | class UnicodeWriter: 5 | def __init__(self, f, dialect=csv.excel, encoding="utf-8", **kwds): 6 | self.writer = csv.writer(f, dialect=dialect, **kwds) 7 | self.encoding = encoding 8 | 9 | def writerow(self, row): 10 | self.writer.writerow([s.encode("utf-8") for s in row]) 11 | 12 | def writerows(self, rows): 13 | for row in rows: 14 | self.writerow(row) 15 | -------------------------------------------------------------------------------- /templates/open311/v2/_services.xml: -------------------------------------------------------------------------------- 1 | {% for service in services %} 2 | 3 | {{service.id}} 4 | {{service.name}} 5 | {{service.hint}} 6 | false 7 | realtime 8 | 9 | {{service.category_class.name}} 10 | {% endfor %} 11 | 12 | -------------------------------------------------------------------------------- /templates/admin/mainapp/emailrules/change_list.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/change_list.html" %} 2 | {% load adminmedia admin_list i18n %} 3 | 4 | {% block pretitle %} 5 | {% if city %} 6 |

Most of the time these won't need to be changed from the default.

7 |

Current rules for {{city.name}} are:

8 | 13 | {% endif %} 14 | 15 | {% endblock %} 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /RELEASE_NOTES: -------------------------------------------------------------------------------- 1 | RELEASE DEPENDENCIES 2 | 3 | HEAD 4 | ==== 5 | 6 | Head is currently running on Django-1.3.0. We hope to upgrade 7 | to Django-1.3.1 shortly. 8 | 9 | django-1.3.0 10 | django-stdimage 11 | django-transmeta 12 | django-google-analytics - optional 13 | django-registration 14 | django-social-auth 15 | 16 | 17 | VERSION 1.1.0 18 | ============== 19 | 20 | django-1.1 21 | django-stdimage (contrib) 22 | django-transmeta (contrib) 23 | django-google-analytics (contrib) - optional 24 | 25 | -------------------------------------------------------------------------------- /templates/registration/activation_email.txt: -------------------------------------------------------------------------------- 1 | Hello {{user.first_name}}, 2 | 3 | You are almost done! Your FixMyStreet.ca account has been 4 | created but your email address needs to be verified before 5 | your account becomes fully active. 6 | 7 | Click here to activate your account, or cut and paste 8 | the link to your browser: 9 | 10 | {{activation_link}} 11 | 12 | Please keep this information for you records: 13 | Username: {{user.username}} 14 | 15 | Thank you for using FixMyStreet.ca. 16 | The FixMyStreet.ca Team -------------------------------------------------------------------------------- /templates/reports/flags/new.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | {% block content %} 4 |

{% trans "Flag an Offensive Report" %}

5 |

{% trans "You are reporting the following problem report for being abusive, containing personal information, or similar to another report:" %}

6 |
7 |

{{report.title}}

8 |

{{report.first_update.desc}}

9 |
10 |
{% csrf_token %} 11 | 12 |
13 | 14 | {% endblock %} -------------------------------------------------------------------------------- /manage.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | from django.core.management import execute_manager 3 | try: 4 | import settings # Assumed to be in the same directory. 5 | except ImportError: 6 | import sys 7 | sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n(If the file settings.py does indeed exist, it's causing an ImportError somehow.)\n" % __file__) 8 | sys.exit(1) 9 | 10 | if __name__ == "__main__": 11 | execute_manager(settings) 12 | -------------------------------------------------------------------------------- /templates/registration/error.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | {% block css %} 4 | 8 | {% endblock %} 9 | {% block title %}{% trans "Login Error" %}{% endblock %} 10 | {% block content %} 11 |
12 |

Sorry, but we could not complete your login.

13 |

Details:

14 |

{{ social_error }}

15 |

Please try again.

16 |
17 | {% endblock %} -------------------------------------------------------------------------------- /mainapp/tests/open311/expected/get_report_4.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 4 | closed 5 | Fixed in 16 Days 6 | 5 7 | Grafitti: Graffiti On City Property 8 | Parks! 9 | 2009-02-04T15:11:49 10 | 2009-02-09T19:35:16 11 | -75.682464838 12 | 45.430126958 13 |
Dalhousie, Oglo
14 |
15 |
-------------------------------------------------------------------------------- /templates/emails/send_report_to_city/message.txt: -------------------------------------------------------------------------------- 1 | Title: {{update.report.title|safe}} 2 | Category: {{update.report.category.name}} 3 | Submitted By: {{update.author|safe}} 4 | Phone: {{update.phone}} 5 | Email: {{update.email}} 6 | FMS ID: {{update.report.id}} 7 | {% if update.report.address %}Location: {{update.report.address}}{% endif %} 8 | {% if update.report.photo %}Image URL: {{SITE_URL}}/media/{{update.report.photo}}{% endif %} 9 | 10 | {{update.desc|safe}} 11 | 12 | Submitted via FixMyStreet.ca on {{update.report.created_at|date}}. 13 | {{SITE_URL}}{{update.report.get_absolute_url}} 14 | -------------------------------------------------------------------------------- /mainapp/middleware/subdomains.py: -------------------------------------------------------------------------------- 1 | """ 2 | Subdomain middleware from here: 3 | http://thingsilearned.com/2009/01/05/using-subdomains-in-django/ 4 | 5 | NOTE: there may be login issues across sub-domains when user 6 | logins are supported 7 | """ 8 | 9 | class SubdomainMiddleware: 10 | def process_request(self, request): 11 | """Parse out the subdomain from the request""" 12 | request.subdomain = None 13 | host = request.META.get('HTTP_HOST', '') 14 | host_s = host.replace('www.', '').split('.') 15 | if len(host_s) > 2: 16 | request.subdomain = ''.join(host_s[:-2]) -------------------------------------------------------------------------------- /templates/reports/_pagination.html: -------------------------------------------------------------------------------- 1 | {% load i18n %} 2 | 15 | -------------------------------------------------------------------------------- /templates/reports/subscribers/new.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | {% block title %}{{report.ward.name}}{% trans "Subscribe to a Report" %}{% endblock %} 4 | {% block content %} 5 |
6 |
7 | 8 |

{% trans "Subscribe to Updates to Report" %}: {{report.title}}

9 |

{% trans "Enter your email address to subscribe to updates for this report:" %}

10 |
{% csrf_token %} 11 | {{subscriber_form.as_table}} 12 | 13 |
14 |
15 |
16 | 17 | {% endblock %} -------------------------------------------------------------------------------- /templates/ajax/category_description.html: -------------------------------------------------------------------------------- 1 | {% load i18n %} 2 |
{% trans "Please Note" %}
{{category.hint}}
3 | 4 | {% ifequal category.category_class.id 99 %} 5 |
{% trans "Is it Hate Graffiti?" %}
Yes (racist, vulgar, or hate) No (tagging)
6 |

{% trans "Please contact the City directly regarding hate or racist graffiti by calling #311." %}

7 | {% endifequal %} -------------------------------------------------------------------------------- /mainapp/tests/open311/expected/get_report_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 1 4 | open 5 | Unfixed 1 6 | 5 7 | Grafitti: Graffiti On City Property 8 | Here's a description with a lot of 'escapes' in it. 9 | 10 | And linebreaks! 11 | 2009-02-01T16:47:06 12 | 2010-02-01T16:47:06 13 | -75.6965517998 14 | 45.418741558 15 |
Caldaver, Oglo
16 |
17 |
-------------------------------------------------------------------------------- /templates/emails/batch_reports/new_reports/message.html: -------------------------------------------------------------------------------- 1 |

Hello Councillor {{ward.councillor.first_name}} {{ward.councillor.last_name}},

2 |
3 |

The following is a summary of reports affecting {{ward.name}}, {{ward.city.name}} 4 | that have been submitted in the last 24 hours

5 | 6 | 13 | 14 |

Thank you for your co-operation,

15 |

The FixMyStreet.ca Team

16 | 17 | -------------------------------------------------------------------------------- /templates/emails/batch_reports/reminders/message.txt: -------------------------------------------------------------------------------- 1 | Hello {{report.author}} 2 | 3 | On {{report.created_at|date:"l, F dS, Y"}}, you left a problem on FixMyStreet.ca with the 4 | details provided at the end of this email. To keep our site up to date 5 | and relevant, we'd appreciate it if you could follow the link below and 6 | fill in our short questionnaire updating the status of your problem: 7 | 8 | {{report.get_absolute_url}} 9 | 10 | Please do not reply to this email; there is a public update box on the above page. 11 | 12 | Yours, 13 | The FixMyStreet.ca Team 14 | 15 | === 16 | 17 | Your problem was as follows: 18 | 19 | {{report.title}} 20 | 21 | {{report.desc}} 22 | 23 | -------------------------------------------------------------------------------- /mainapp/tests/open311/expected/get_report_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 2 4 | open 5 | Unfixed 2 6 | 1 7 | Parks: Broken or Damaged Equipment/Play Structures 8 | Here's a description with a lot of 'escapes' in it. 9 | 10 | And linebreaks! 11 | 2009-02-02T16:47:06 12 | 2010-02-02T16:47:06 13 | -75.6965517998 14 | 45.418741558 15 |
Caldaver, Oglo
16 |
17 |
-------------------------------------------------------------------------------- /templates/admin/base_site.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/base.html" %} 2 | {% load i18n %} 3 | 4 | {% block title %}{{ title }} | {% trans 'FixMyStreet.ca Admin' %}{% endblock %} 5 | {% block extrastyle %} 6 | 13 | {% endblock %} 14 | {% block branding %} 15 |

{% trans 'FixMyStreet.ca Administration' %}

16 | {% endblock %} 17 | 18 | {% block nav-global %}{% endblock %} 19 | -------------------------------------------------------------------------------- /templates/reports/subscribers/create.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | {% block content %} 4 |
5 | {% blocktrans %} 6 |

Nearly Done! Now check your email...

7 | 8 |

The confirmation email may take a few minutes to arrive — please be patient.

9 | 10 |

If you use web-based email or have 'junk mail' filters, you may wish to check your bulk/spam mail folders: sometimes, our messages are marked that way. 11 | You must now click the link in the email we've just sent you — if you do not, your alert will not be activated.

12 | 13 |

(Don't worry — we'll hang on to your alert while you're checking your email.)

14 | {% endblocktrans %} 15 |
16 | {% endblock %} -------------------------------------------------------------------------------- /templates/posters.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | {% block title %} 4 | {% trans "Posters" %} 5 | {% endblock %} 6 | {% block content %} 7 |
8 |

FixMyStreet Canada {% trans "Posters" %}

9 |
10 |

{% blocktrans %} 11 | Help spread the word. The more people who know about fixmystreet.ca, the more 12 | useful it will be. Share your report on Twitter or Facebook, 13 | or hang a poster at a university or neighbourhood coffee shop. 14 | {% endblocktrans %} 15 |

16 | 21 |
22 |
23 | {% endblock %} -------------------------------------------------------------------------------- /templates/account/edit.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | {% block css %} 4 | 7 | {% endblock %} 8 | {% block title %}{% trans "Edit Profile" %}{% endblock %} 9 | {% block content %} 10 |
11 |

{% trans "Editing User Profile For" %} {{user.first_name}} {{user.last_name}}

12 |
{% csrf_token %} 13 | 14 | {{form.as_table}} 15 | 16 | 17 | 20 | 21 |
18 | 19 |
22 |
23 |
24 | {% endblock %} 25 | 26 | -------------------------------------------------------------------------------- /mainapp/management/commands/resend_report.py: -------------------------------------------------------------------------------- 1 | from mainapp.models import Report,ReportUpdate 2 | from optparse import make_option 3 | import csv 4 | from django.core.management.base import BaseCommand,CommandError 5 | 6 | class Command(BaseCommand): 7 | help = 'Resend original notification email for a particular report' 8 | args = 'report_id' 9 | 10 | def handle(self, *args, **options): 11 | if len(args) == 0: 12 | raise CommandError("a report ID must be supplied") 13 | report_id = args[0] 14 | try: 15 | report = Report.objects.get(id=report_id) 16 | except Exception,e: 17 | raise CommandError("there is no report with id %s in the database." % report_id ) 18 | report.first_update().notify_on_new() 19 | -------------------------------------------------------------------------------- /mainapp/views/promotion.py: -------------------------------------------------------------------------------- 1 | from django.template import Context, RequestContext 2 | from django.shortcuts import render_to_response 3 | from django.http import HttpResponseRedirect 4 | from mainapp.models import Report, ReportUpdate 5 | 6 | 7 | def show(request, promo_code): 8 | matchstr = "author LIKE '%%" + promo_code + "%%'" 9 | reports = Report.objects.filter(is_confirmed=True).extra(select={'match': matchstr }).order_by('created_at')[0:100] 10 | count = Report.objects.filter(author__contains=promo_code).count() 11 | return render_to_response("promotions/show.html", 12 | { "reports": reports, 13 | "promo_code":promo_code, 14 | "count": count }, 15 | context_instance=RequestContext(request)) 16 | 17 | -------------------------------------------------------------------------------- /templates/open311/v2/_reports.xml: -------------------------------------------------------------------------------- 1 | {% for report in reports %} 2 | 3 | {{report.id}} 4 | {% if report.is_fixed %}closed{% else %}open{% endif %} 5 | {{report.title|safe}} 6 | {{report.category.id}} 7 | {{report.category.category_class.name}}: {{report.category.name}} 8 | {{report.desc|safe}} 9 | {{report.created_at|date:"c"}} 10 | {{report.updated_at|date:"c"}} 11 | {{report.point.x}} 12 | {{report.point.y}} 13 |
{{report.ward}}
14 |
{% endfor %} 15 |
-------------------------------------------------------------------------------- /templates/reports/updates/create.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | 4 | {% block title %}{{report.ward.name}}{% trans "Update Created" %}{% endblock %} 5 | {% block content %} 6 |
7 | {% blocktrans %} 8 |

Nearly Done! Now check your email...

9 | 10 |

The confirmation email may take a few minutes to arrive — please be patient.

11 | 12 |

If you use web-based email or have 'junk mail' filters, you may wish to check your bulk/spam mail folders: sometimes, our messages are marked that way. 13 | You must now click the link in the email we've just sent you — if you do not, your update will not be activated.

14 | 15 |

(Don't worry — we'll hang on to your update while you're checking your email.)

16 | {% endblocktrans %} 17 |
18 | 19 | {% endblock %} -------------------------------------------------------------------------------- /templates/cities/index.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | {% block title %}{% trans "All Reports" %}{% endblock %} 4 | {% block css %} 5 | 18 | {% endblock %} 19 | {% block content %} 20 | 21 |
22 |
23 |

{% trans "All Reports" %}

24 |

{% trans "Reports by City" %}

25 | {% include "cities/_report_count_table.html" %} 26 |
27 |
28 |
29 | 30 | {% endblock %} -------------------------------------------------------------------------------- /templates/emails/report_update/message.txt: -------------------------------------------------------------------------------- 1 | The FixMyStreet.ca Report: '{{update.report.title|safe}}' 2 | was updated by {{update.author|safe}} on {{update.created_at|date}}: 3 | 4 | {% if update.is_fixed %}This issue has been fixed. {% endif %} 5 | ----------------------------------------------------------------------------- 6 | 7 | {{update.desc|safe}} 8 | 9 | ----------------------------------------------------------------------------- 10 | 11 | For more information, see the full report at: 12 | {{update.report.get_absolute_url}} 13 | 14 | Thank you for supporting FixMyStreet.ca, 15 | The FixMyStreet.ca Team 16 | 17 | {% if unsubscribe_url %} 18 | You are receiving this email because you subscribed to updates for this report 19 | on FixMyStreet.ca. To unsubscribe from updates to this report, click the 20 | following link: {{unsubscribe_url}} 21 | {% endif %} -------------------------------------------------------------------------------- /mainapp/management/commands/sync_councillors.py: -------------------------------------------------------------------------------- 1 | from mainapp.models import City,Ward,Councillor 2 | from django.core.management.base import BaseCommand,CommandError 3 | 4 | class Command(BaseCommand): 5 | help = 'Add \'city\' link to councillors in database, get rid of unlinked councillors' 6 | 7 | def handle(self, *args, **options): 8 | for councillor in Councillor.objects.all(): 9 | # do we have a ward for this councillor? 10 | try: 11 | ward = Ward.objects.get(councillor=councillor) 12 | councillor.city = ward.city 13 | councillor.save() 14 | print "saving councillor %s %s (%s)" % (councillor.first_name,councillor.last_name,ward.city) 15 | except: 16 | print "deleting councillor %s %s" % (councillor.first_name,councillor.last_name) 17 | councillor.delete() -------------------------------------------------------------------------------- /templates/contact/new.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | 4 | {% block content %} 5 | 6 |
7 |
8 |

{% trans "Contact Us" %}

9 | {% blocktrans %} 10 |

11 | Please DO NOT report problems through this form. 12 | Messages go to the team behind FixMyStreet.ca, not to city councillors. 13 |

14 |

15 | To report a problem, please follow the instructions here. 16 |

17 |

We'd love to get your feedback on this site:

18 | {% endblocktrans %} 19 |
{% csrf_token %} 20 | 21 | {{contact_form}} 22 | 23 | 24 | 27 | 28 |
25 | 26 |
29 |
30 |
31 |
32 | 33 | {% endblock %} -------------------------------------------------------------------------------- /templates/emails/confirm/message.txt: -------------------------------------------------------------------------------- 1 | {% if update.author %}Hello {{update.author|safe}}{% endif %} 2 | 3 | {% if update.first_update %}Thank you for submitting the report '{{update.report.title|safe}}' to FixMyStreet.ca. 4 | {% else %}Thank you for submitting an update on the report '{{update.report.title|safe}}' 5 | to FixMyStreet.ca. 6 | {% endif %} 7 | 8 | To confirm your submission, please click on the following URL: 9 | {{confirm_url}} 10 | 11 | Thank you, 12 | The FixMyStreet.ca Team 13 | 14 | 15 | {% if update.first_update %} 16 | -------------------------------------------------------------- 17 | 18 | The more people who know about fixmystreet.ca, the more 19 | useful it will be. Share your report on Twitter or Facebook, 20 | or hang a poster at a university or local coffee shop: 21 | http://fixmystreet.ca/posters/ 22 | 23 | -------------------------------------------------------------- 24 | {% endif %} -------------------------------------------------------------------------------- /mainapp/views/contact.py: -------------------------------------------------------------------------------- 1 | from django.shortcuts import render_to_response, get_object_or_404 2 | from mainapp.models import Report 3 | from mainapp.forms import ContactForm 4 | from django.template import Context, RequestContext 5 | from django.http import HttpResponseRedirect 6 | 7 | import settings 8 | 9 | def thanks(request): 10 | return render_to_response("contact/thanks.html", {}, 11 | context_instance=RequestContext(request)) 12 | 13 | def new(request): 14 | if request.method == 'POST': 15 | form = ContactForm(data=request.POST) 16 | if form.is_valid(): 17 | form.save() 18 | return HttpResponseRedirect("/contact/thanks") 19 | else: 20 | form = ContactForm() 21 | 22 | return render_to_response("contact/new.html", 23 | { 'contact_form': form }, 24 | context_instance=RequestContext(request)) 25 | -------------------------------------------------------------------------------- /templates/promotions/show.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | 4 | {% block title %}{% trans "Reports for" %} {{city.name}}{% endblock %} 5 | {% block content %} 6 |
7 |
8 |

{% trans "First 100 Reports" %}

9 |

{{count}} {% trans " out of the first 100 confirmed reports were filed with the promotional code " %} "{{promo_code}}".

10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | {% for report in reports %} 18 | 19 | 20 | 21 | 22 | 28 | 29 | {% endfor %} 30 |
OrderReportAuthorMatch?
{{forloop.counter}}{{report.title}}{{report.author}} 23 | {% if report.match %} 24 | ** 25 | {% else %} 26 | {% endif %} 27 |
31 |
32 |
33 |
34 | 35 | {% endblock %} -------------------------------------------------------------------------------- /mainapp/management/commands/create_cityadmin.py: -------------------------------------------------------------------------------- 1 | from mainapp.models import CityAdmin, City 2 | from optparse import make_option 3 | from django.contrib.auth.models import Group, User 4 | from django.core.management.base import BaseCommand,CommandError 5 | 6 | class Command(BaseCommand): 7 | help = 'Create a city administrator user' 8 | option_list = BaseCommand.option_list + ( 9 | make_option('--city', '-c', dest='city',help='city'), 10 | make_option('--userid', '-u', dest='userid',help='userid'), 11 | make_option('--pwd', '-p', dest='password',help='password'), 12 | make_option('--email', '-e', dest='email',help='email'), 13 | ) 14 | 15 | def handle(self, *args, **options): 16 | for option in self.option_list: 17 | if not options.has_key(option.dest): 18 | raise CommandError("%s must be specified" % (option.dest)) 19 | city = City.objects.get(name=options['city']) 20 | user = CityAdmin.objects.create_user(options['userid'], options['email'], city, options['password'] ) 21 | if not user: 22 | print "error creating user" -------------------------------------------------------------------------------- /templates/cities/_report_count_table.html: -------------------------------------------------------------------------------- 1 | {% load i18n %} 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | {% for entry in report_counts %} 13 | {% if entry.province %} 14 | {% ifchanged entry.province %} 15 | 16 | {% endifchanged %} 17 | {% endif %} 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | {% endfor %} 28 |
{% trans "New Problems" %}{% trans "Older Unresolved Problems" %}{% trans "Recently Fixed" %}*{% trans "Old Fixed" %}*
{{entry.province.name}}
{{entry.number}}{{entry.name}}{{entry.recent_new}}{{entry.old_unfixed}}{{entry.recent_fixed}}{{entry.old_fixed}}
29 |

*{% trans "As reported by fixmystreet.ca users." %}

30 | -------------------------------------------------------------------------------- /mainapp/testviewdefs.py: -------------------------------------------------------------------------------- 1 | # urls used by testview app 2 | 3 | TEST_URLS = [ 4 | ('/' , 'home'), 5 | ('/cities/' , 'city list'), 6 | ('/cities/1' , 'ward list'), 7 | ('/wards/3' , 'show ward'), 8 | ('/search?q=slater street', 'ambigous search'), 9 | ('/search?q=Moscow,Russia', 'failed search'), 10 | ('/search?q=somerset and empress,ottawa canada', 'search'), 11 | ('/reports/new?&lat=45.41958499972712&lon=-75.7028603553772','file new report'), 12 | ('/reports/114', 'unconfirmed report'), 13 | ('/reports/331', 'report with no updates'), 14 | ('/reports/491', 'updated report'), 15 | ('/reports/479', 'fixed report'), 16 | ('/reports/updates/create/', 'request to confirm update'), 17 | ('/reports/331/subscribers/', 'new subscriber'), 18 | ('/reports/subscribers/create/', 'request subscriber confirm'), 19 | ('/reports/subscribers/confirm/02a99e748e18bfec372d6f460b592d69','on subscriber confirm'), 20 | ('/reports/331/flags', 'flag report'), 21 | ('/reports/331/flags/thanks', 'after flagging a report'), 22 | ('/contact/', 'contact form'), 23 | ('/contact/thanks', 'after submitting contact form'), 24 | ('/about', 'about') 25 | ] 26 | 27 | FIXTURES = [] # [ 'testview_report_fixtures.json' ] -------------------------------------------------------------------------------- /mainapp/views/reports/flags.py: -------------------------------------------------------------------------------- 1 | from django.shortcuts import render_to_response, get_object_or_404 2 | from django.http import HttpResponseRedirect 3 | from mainapp.models import Report 4 | from django.template import Context, RequestContext 5 | from fixmystreet import settings 6 | from django.template.loader import render_to_string 7 | from django.core.mail import send_mail 8 | 9 | def new( request, report_id ): 10 | report = get_object_or_404(Report, id=report_id) 11 | if request.method == 'GET': 12 | return render_to_response("reports/flags/new.html", 13 | { "report": report }, 14 | context_instance=RequestContext(request)) 15 | else: 16 | # send email flagging this report as being potentially offensive. 17 | message = render_to_string("emails/flag_report/message.txt", 18 | { 'report': report }) 19 | send_mail('FixMyStreet.ca Report Flagged as Offensive', message, 20 | settings.EMAIL_FROM_USER,[settings.ADMIN_EMAIL], fail_silently=False) 21 | return HttpResponseRedirect(report.get_absolute_url() + '/flags/thanks') 22 | 23 | def thanks( request, report_id ): 24 | return render_to_response("reports/flags/thanks.html", {}, 25 | context_instance=RequestContext(request)) 26 | -------------------------------------------------------------------------------- /templates/about.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | {% block title %} 4 | {% trans "About" %} 5 | {% endblock %} 6 | {% block content %} 7 |
8 | 9 |

{% trans "About" %} FixMyStreet Canada

10 |
11 | {% for faq in faq_entries %} 12 |

{{faq.q}}

13 |

{{faq.a|safe}}

14 | {% endfor %} 15 | 16 |

{% trans "Credits" %}

17 |

{% trans "Thanks to:" %}

18 | 25 |

26 | {% trans "In addition, Chris Taggart would like to thank:" %} 27 |

28 | 31 |
32 |
33 | {% endblock %} 34 | -------------------------------------------------------------------------------- /mainapp/management/commands/export_email_rules.py: -------------------------------------------------------------------------------- 1 | from mainapp.models import City,EmailRule 2 | from optparse import make_option 3 | import csv 4 | from django.core.management.base import BaseCommand,CommandError 5 | 6 | class Command(BaseCommand): 7 | help = 'Export email rules for particular city/cities' 8 | option_list = BaseCommand.option_list + ( 9 | make_option('--city', '-c', dest='city',help='cityname[,cityname]'), 10 | make_option('--file', '-f', dest='file',help='name of output file'), 11 | 12 | ) 13 | 14 | def handle(self, *args, **options): 15 | if not options.has_key('file'): 16 | raise CommandError("An output filename must be specified with -f=") 17 | if not options.has_key('city'): 18 | raise CommandError("At least one city must be specified with -c=") 19 | 20 | file = open(options['file'],'w') 21 | 22 | for city_name in options['city'].split(','): 23 | try: 24 | city = City.objects.get(name=city_name) 25 | except: 26 | raise CommandError("city %s not found in database."% city_name) 27 | 28 | rules = EmailRule.objects.filter(city=city) 29 | for rule in rules: 30 | file.write(str(rule) + "\n") 31 | 32 | file.close() -------------------------------------------------------------------------------- /mainapp/templatetags/tags.py: -------------------------------------------------------------------------------- 1 | from django import template 2 | register = template.Library() 3 | 4 | MENU_DEFS = { 'submit' : { 'exact': [ '/','/reports/new', '/search' ], 5 | 'startswith':[], 6 | 'exclude' : [] 7 | }, 8 | 'view' : { 'exact': [], 9 | 'startswith' : [ '/cities','/wards', '/reports' ], 10 | 'exclude':[ '/reports/new' ] 11 | }, 12 | 'myreports' : { 'exact' : [], 13 | 'startswith' : [ '/accounts' ], 14 | 'exclude' : [] }, 15 | 16 | 17 | } 18 | 19 | def is_match( path, pattern ): 20 | if MENU_DEFS.has_key(pattern): 21 | menudef = MENU_DEFS[pattern] 22 | if path in menudef[ 'exact' ]: 23 | return True 24 | for match in menudef['startswith']: 25 | if path.startswith(match) and not path in menudef['exclude']: 26 | return True 27 | return False 28 | if path.startswith(pattern): 29 | return True 30 | return False 31 | 32 | @register.simple_tag 33 | def fmsmenu_active(request, pattern ): 34 | if is_match(request.path, pattern ): 35 | return 'active' 36 | return '' 37 | 38 | 39 | -------------------------------------------------------------------------------- /templates/registration/login.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | {% block title %}{% trans "Sign In" %}{% endblock %} 4 | {% block content %} 5 | {% if login_disabled %} 6 |
7 |

{% trans "Sign In" %}

8 |

Sorry, user sign-in is temporarily disabled.

9 |
10 | {% else %} 11 |
12 |

{% trans "Sign In" %}

13 |
{% csrf_token %} 14 | 15 | {{form.as_table}} 16 | 17 | 18 | 21 | 22 | 23 | 24 | 27 | 28 |
19 | {% trans "Forgot?" %} 20 |
25 | 26 |
29 |
30 |

{% trans "Don't have an account?" %} {% trans "Create one." %}

31 |
32 |
33 |
34 |

{% trans "Or, log in using:" %}

35 | 44 |
45 |
46 | {% endif %} 47 | {% endblock %} 48 | 49 | -------------------------------------------------------------------------------- /templates/admin/login.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/base_site.html" %} 2 | {% load i18n %} 3 | 4 | {% block extrastyle %}{% load adminmedia %}{{ block.super }}{% endblock %} 5 | 6 | {% block bodyclass %}login{% endblock %} 7 | 8 | {% block content_title %}{% endblock %} 9 | 10 | {% block breadcrumbs %}{% endblock %} 11 | 12 | {% block content %} 13 | {% if error_message %} 14 |

{{ error_message }}

15 | {% endif %} 16 |
17 |
{% csrf_token %} 18 |
19 | 20 |
21 |
22 | 23 | 24 |

Forgot password?

25 |
26 |
27 | 28 |
29 |
30 | 31 | 34 |
35 | {% endblock %} 36 | -------------------------------------------------------------------------------- /mainapp/management/commands/export_ward_info.py: -------------------------------------------------------------------------------- 1 | from mainapp.models import Ward,City,Councillor 2 | from optparse import make_option 3 | from django.core.management.base import BaseCommand,CommandError 4 | from unicodewriter import UnicodeWriter 5 | 6 | 7 | class Command(BaseCommand): 8 | help = 'Export ward names and councillors in a CVS format for a given city' 9 | option_list = BaseCommand.option_list + ( 10 | make_option('--city', '-c', dest='city',help='cityname[,cityname]'), 11 | make_option('--file', '-f', dest='file',help='name of output file'), 12 | 13 | ) 14 | 15 | def handle(self, *args, **options): 16 | if not options.has_key('file'): 17 | raise CommandError("An output filename must be specified with -f=") 18 | if not options.has_key('city'): 19 | raise CommandError("At least one city must be specified with -c=") 20 | 21 | file = open(options['file'],'w') 22 | csv = UnicodeWriter(file) 23 | 24 | for city_name in options['city'].split(','): 25 | print city_name 26 | city = City.objects.get(name=city_name) 27 | wards = Ward.objects.filter(city=city) 28 | for ward in wards: 29 | row = [ city.name, ward.name, ward.councillor.first_name, ward.councillor.last_name, ward.councillor.email] 30 | csv.writerow(row) 31 | 32 | -------------------------------------------------------------------------------- /mainapp/fixtures/test_email_rules.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "pk": 2, 4 | "model": "mainapp.city", 5 | "fields": { 6 | "name": "TestCityWithoutEmail", 7 | "province": 1, 8 | "email": "", 9 | "slug": "TestCityWithoutEmail" 10 | } 11 | }, 12 | { 13 | "pk": 3, 14 | "model": "mainapp.city", 15 | "fields": { 16 | "name": "TestCityWithEmail", 17 | "province": 1, 18 | "email": "311email@city.com", 19 | "slug": "TestCityWithEmail" 20 | } 21 | }, 22 | 23 | { 24 | "pk": 7, 25 | "model": "mainapp.councillor", 26 | "fields": { 27 | "first_name": "Angus", 28 | "last_name": "Arthur-Doyle", 29 | "email": "councillor_email@testward1.com" 30 | } 31 | }, 32 | { 33 | "pk": 1, 34 | "model": "mainapp.ward", 35 | "fields": { 36 | "city": 2, 37 | "name": "WardInCityWithNo311Email", 38 | "councillor": 7, 39 | "number": 1 40 | } 41 | }, 42 | { 43 | "pk": 2, 44 | "model": "mainapp.ward", 45 | "fields": { 46 | "city": 3, 47 | "name": "WardInCityWith311Email", 48 | "councillor": 7, 49 | "number": 1 50 | } 51 | } 52 | 53 | ] 54 | -------------------------------------------------------------------------------- /templates/wards/show.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | {% block title %}{% trans "Reports for" %} {{ward.name}}, {{ward.city.name}}{% endblock %} 4 | {% block content %} 5 |
6 |

{% trans "Reports for" %} {{ward.name}}, {{ward.city.name}} (Ward {{ward.number}})

7 | {% if older_reports_link %} ({% trans "See older reports" %}){% endif %}

8 |
9 |
    10 | {% if not reports %} 11 |

    {% trans "No problems have been reported." %}

    12 | 13 | {% endif %} 14 | {% include "reports/_pagination.html" %} 15 | {% for report in reports %} 16 | {% ifchanged report.status %} 17 |

    {% trans report.status %}

    18 | {% endifchanged %} 19 |
  1. {{report.title}}
  2. 20 | {% endfor %} 21 |
22 |

23 | {% if reports %} 24 |
25 |

{% trans "Note: fixmystreet.ca relies on users to report problems as fixed." %}

26 |
27 | {% endif %} 28 |
29 |
30 | {% if google %} 31 |
32 | {% endif %} 33 | {% include "wards/_info_box.html" %} 34 | 35 |
36 |
37 |
38 | {% endblock %} 39 | -------------------------------------------------------------------------------- /templates/search_result.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | {% load i18n %} 4 | {% block script %} 5 | {% include '_fixmystreetmap.js' %} 6 | {% endblock %} 7 | {% block content %} 8 |
9 | 10 |
11 |
12 | 13 |

{% trans "To Report a New Problem" %}

14 |

{% trans "Drag the indicated marker to the correct location on the map." %}

15 | 16 | 17 |
18 |

19 | {% if reports %} 20 |

{% trans "Nearby Reports" %}:

21 | {% include "reports/_pagination.html" %} 22 |
    23 | {% for report in reports %} 24 |
  1. {{report.title}} ({{report.distance.km|floatformat:2}} km) 25 | {% if report.is_fixed %}({% trans "fixed" %}){% endif %} 26 |
  2. 27 | {% endfor %} 28 |
29 |

30 |

{% trans "Zoom out to see more reports nearby." %}

31 | {% include "reports/_pagination.html" %} 32 | 33 | {% else %} 34 |

{% trans "No problems have been reported in this area." %}

35 | {% endif %} 36 | 37 |

38 | 39 |
40 | 41 |
42 |
43 | {{google.body}} 44 |
45 |
46 | {% endblock %} -------------------------------------------------------------------------------- /templates/account/home.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | {% block css %} 4 | 8 | {% endblock %} 9 | {% block title %}My Reports{% endblock %} 10 | 11 | {% block content %} 12 |

{% trans "My Reports" %}

13 | {% include "reports/_pagination.html" %} 14 | {% if reports %} 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | {% for report in reports %} 24 | 25 | 28 | 31 | 34 | 37 | 44 | 45 | {% endfor %} 46 |
{% trans "Report" %}{% trans "Date Filed" %}{% trans "Status" %}{% trans "Days Open" %}{% trans "My Role" %}
26 | {{report.title}} 27 | 29 | {{report.created_at|date:"Y-m-d"}} 30 | 32 | {% if report.is_fixed %}{% trans "Fixed" %}{% else %}{% trans "Open" %}{% endif %} 33 | 35 | {{report.days_open}} 36 | 38 | {% if report.is_reporter %}{% trans "Reporter" %} 39 | {% else %} 40 | {% if report.is_updater %}{% trans "Updater" %} 41 | {% else %}{% trans "Subscriber" %}{% endif %} 42 | {% endif %} 43 |
47 | {% else %} 48 |
49 |

{% trans "You haven't yet filed any reports." %}

50 |
51 | {% trans "Submit a Report" %} 52 | {% endif %} 53 | {% include "reports/_pagination.html" %} 54 | {% endblock %} -------------------------------------------------------------------------------- /templates/_fixmystreetmap.js: -------------------------------------------------------------------------------- 1 | {% load i18n %} 2 | 3 | 4 | 5 | 6 | 48 | 49 | -------------------------------------------------------------------------------- /mainapp/tests/testsocial_auth/dummy_socialauth.py: -------------------------------------------------------------------------------- 1 | """ 2 | Dummy Auth 3 | """ 4 | 5 | from social_auth.backends import SocialAuthBackend,BaseAuth 6 | from django.contrib.auth import authenticate 7 | 8 | class DummyBackend(SocialAuthBackend): 9 | name = 'dummy' 10 | 11 | def get_user_details(self, response): 12 | return {'username': response['username'], 13 | 'email': response.get('email', ''), 14 | 'fullname': response.get('first_name',"") + " " + response.get('last_name',''), 15 | 'first_name': response.get('first_name', ''), 16 | 'last_name': response.get('last_name', '')} 17 | 18 | 19 | def get_user_id(self, details, response): 20 | "OAuth providers return an unique user id in response""" 21 | if not response.get('id',None): 22 | raise ValueError('Missing user id') 23 | 24 | return response['id'] 25 | 26 | 27 | class DummyAuth(BaseAuth): 28 | AUTH_BACKEND = DummyBackend 29 | 30 | 31 | def auth_complete(self, *args, **kwargs): 32 | """Returns user, might be logged in""" 33 | response = { 'email': self.data.get('email',''), 34 | 'username': self.data.get('username',''), 35 | 'first_name': self.data.get('first_name',''), 36 | 'last_name': self.data.get('last_name','') 37 | } 38 | 39 | if self.data.get('uid',None): 40 | response['id'] = self.data.get('uid') 41 | 42 | kwargs.update({'response': response, DummyBackend.name: True}) 43 | return authenticate(*args, **kwargs) 44 | 45 | 46 | 47 | 48 | # Backend definition 49 | BACKENDS = { 50 | 'dummy': DummyAuth, 51 | } 52 | -------------------------------------------------------------------------------- /templates/registration/registration_form.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | {% block title %}{% trans "Register" %}{% endblock %} 4 | {% block css %} 5 | 10 | {% endblock %} 11 | {% block content %} 12 | 13 |
14 |
15 |
16 | {% if social_connect %} 17 |
18 |

{% trans "You are connected to fixmystreet.ca with:" %}

19 |
    20 |
22 | {% trans "Disconnect" %} 23 |
24 | {% endif %} 25 |

{% trans "Join FixMyStreet.ca!" %}

26 | {% if social_connect %} 27 |

{% trans "We need a few more pieces of information to continue..." %}

28 | {% endif %} 29 |
{% csrf_token %} 30 | 31 | {{form.as_table}} 32 | 33 | 34 | 37 | 38 |
35 | 36 |
39 |
40 | 41 |
42 | {% if providers %} 43 |
44 |

{% trans "Use your existing account from..." %}

45 |
    46 | {% for social in providers %} 47 |
  • 48 | 49 | 51 |
  • 52 | {% endfor %} 53 |
54 |
55 | {% endif %} 56 |
57 |
58 | 59 | {% endblock %} -------------------------------------------------------------------------------- /mainapp/views/reports/updates.py: -------------------------------------------------------------------------------- 1 | from django.shortcuts import render_to_response, get_object_or_404 2 | from django.http import HttpResponseRedirect 3 | from mainapp.models import Report, ReportUpdate, Ward, FixMyStreetMap, ReportCategory 4 | from mainapp.forms import ReportForm,ReportUpdateForm 5 | from django.template import Context, RequestContext 6 | 7 | def new( request, report_id ): 8 | report = get_object_or_404(Report, id=report_id) 9 | if request.method == 'POST': 10 | update_form = ReportUpdateForm( request.POST, user=request.user, report=report ) 11 | if update_form.is_valid(): 12 | update = update_form.save() 13 | # redirect after a POST 14 | if update.is_confirmed: 15 | return( HttpResponseRedirect( report.get_absolute_url() ) ) 16 | else: 17 | return( HttpResponseRedirect( '/reports/updates/create/' ) ) 18 | 19 | else: 20 | update_form = ReportUpdateForm(initial={},user=request.user) 21 | 22 | return render_to_response("reports/show.html", 23 | { "report": report, 24 | "google": FixMyStreetMap(report.point), 25 | "update_form": update_form, 26 | }, 27 | context_instance=RequestContext(request)) 28 | 29 | def create( request ): 30 | return render_to_response("reports/updates/create.html", 31 | { }, 32 | context_instance=RequestContext(request)) 33 | 34 | def confirm( request, confirm_token ): 35 | update = get_object_or_404(ReportUpdate, confirm_token = confirm_token ) 36 | 37 | if update.is_confirmed: 38 | return( HttpResponseRedirect( update.report.get_absolute_url() )) 39 | 40 | update.confirm() 41 | 42 | # redirect to report 43 | return( HttpResponseRedirect( update.report.get_absolute_url() )) 44 | -------------------------------------------------------------------------------- /templates/emails/batch_reports/invitations/message.html: -------------------------------------------------------------------------------- 1 |

Hello,

2 | 3 |

I’m Jennifer Bell, Executive Director of VisibleGovernment.ca 4 | (http://visiblegovernment.ca), a non-profit with a mission to promote 5 | online tools for government transparency. As president of {{assoc}}, 6 | and a stakeholder in the quality of Ottawa’s roads and pathways, I’d 7 | like to introduce you to our new pilot project - FixMyStreet.ca:

8 | 9 |

http://fixmystreet.ca

10 | 11 |

Inspired by a similar site by in the UK by a group called MySociety, 12 | FixMyStreet.ca allows you to report problems in your neighbourhood, 13 | such as potholes, graffiti, missing streetlights, or dangerous 14 | pathways. FixMyStreet.ca will post the problem on our website, and 15 | email the report to Ottawa 311 on your behalf. You may also browse 16 | through reports that other people have submitted, and subscribe to 17 | ones you would like updates on.

18 | 19 |

We believe that making civic problem reports public and visible is a 20 | valuable communications tool for both the City of Ottawa and its 21 | citizens. Providing the ability to browse problems that have been 22 | reported avoids having many people report the same issue individually. 23 | Further, the site keeps public records of when reports were filed, and 24 | when they were fixed, giving citizens access to richer information 25 | about their community and municipal council.

26 | 27 |

Please help us launch our website by forwarding this message to people 28 | in your community you think would be motivated to use fixmystreet.ca 29 | to track problems in their neighbourhood. If you have a community 30 | newsletter, I could also provide you with more information for a story 31 | or article to reach citizens in your neighbourhood. If you have any 32 | questions, I would be happy to speak with you about the site – my 33 | number is 514-513-0475.

34 | 35 |

Jennifer Bell

36 | 37 |
38 | http://visiblegovernment.ca
39 | RSS Feed: http://feeds.feedburner.com/VisiblegovernmentcaBlog -------------------------------------------------------------------------------- /templates/cities/show.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | 4 | {% block title %}{% trans "Reports for" %} {{city.name}}{% endblock %} 5 | {% block content %} 6 |
7 |
8 |

{% trans "Reports for" %} {{city.name}}

9 |
10 |
11 |

{% trans "City Stats" %}

12 |
13 | {{city_totals.recent_new}}
14 | {% trans "Reports Filed" %}
15 |
16 |
17 | {{city_totals.recent_fixed}}
18 | {% trans "Reports Fixed" %}*
19 |
20 |
21 | {{city_totals.recent_updated}}
22 | {% trans "Reports Updated" %}
23 |
24 |
25 | {% if top_problems %} 26 |
27 |

{% trans "Top Problems" %}

28 | 29 | 30 | 31 | 32 | 33 | 34 | {% for top_problem in top_problems %} 35 | 36 | 37 | 38 | 39 | 40 | {% endfor %} 41 |
{% trans "Rank" %}{% trans "Problem" %}{% trans "Number of Subscribers" %}
{{forloop.counter}}{{top_problem.title}}{{top_problem.subscriber_count|add:"1"}}
42 |
43 |
44 | {% endif %} 45 |
46 |
47 |
48 |

{% trans "Reports by Ward" %}

49 | {% include "cities/_report_count_table.html" %} 50 |
51 |
52 |
53 | {% if google %} 54 |
55 | {% endif %} 56 | 57 |
58 | 59 | {% endblock %} -------------------------------------------------------------------------------- /media/css/global.css: -------------------------------------------------------------------------------- 1 | /*--------------------------------------------------------------------------------------------------------*/ 2 | /*--------------------------------------------------------------------------------------------------------*/ 3 | /*** CSS RESET ***/ 4 | html, body, div, span, applet, object, iframe, 5 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, 6 | a, abbr, acronym, address, big, cite, code, 7 | del, dfn, em, font, img, ins, kbd, q, s, samp, 8 | small, strike, strong, sub, sup, tt, var, 9 | dl, dt, dd, ol, ul, li, 10 | fieldset, form, label, legend, 11 | table, caption, tbody, tfoot, thead, tr, th, td { 12 | margin: 0; 13 | padding: 0; 14 | border: 0; 15 | outline: 0; 16 | /*font-weight: inherit; 17 | font-style: inherit; 18 | font-family: inherit; */ 19 | vertical-align: baseline; 20 | } 21 | :focus { 22 | outline: 0; 23 | } 24 | body { 25 | line-height: 1.3; 26 | background: silver; 27 | font-size: 90%; /* equals 10px in most modern broswers, 1.2em = 12px, 2.8em = 28px*/ 28 | /** bc specific **/ 29 | font-family: Helvetica, "Lucida Sans", "Trebuchet MS", Helvetica, Arial, sans-serif; 30 | color: #222; 31 | } 32 | ol, ul { 33 | list-style: none; 34 | } 35 | table { 36 | border-collapse: separate; 37 | border-spacing: 0; 38 | } 39 | caption, th, td { 40 | text-align: left; 41 | font-weight: normal; 42 | } 43 | 44 | 45 | /*--------------------------------------------------------------------------------------------------------*/ 46 | /**** GLOBAL STYLES ****/ 47 | 48 | ::-moz-selection{ 49 | background:#daecf0; 50 | color:#4b8899; 51 | } 52 | ::selection { 53 | background:#daecf0; 54 | color:#4b8899; 55 | } 56 | a::-moz-selection { 57 | background: #d9f0d9; 58 | color: #68a12d; 59 | } 60 | a::selection { 61 | background: #d9f0d9; 62 | color: #68a12d; 63 | } 64 | 65 | 66 | a { 67 | text-decoration: none; 68 | } 69 | 70 | 71 | .float_wrapper { 72 | width: 100%; 73 | overflow: hidden; 74 | } 75 | 76 | 77 | .clearfloat {clear: both; display: block;} 78 | 79 | 80 | 81 | .unknown { 82 | background-color: #ffcccc; 83 | border: solid 2px #990000; 84 | } 85 | 86 | -------------------------------------------------------------------------------- /media/css/colors.css: -------------------------------------------------------------------------------- 1 | 2 | #heading { 3 | background: olive; 4 | } 5 | 6 | #page_container { 7 | background-color: #fff; 8 | } 9 | 10 | #error-msg, #notice { 11 | background-color: #ffffcc; 12 | border: solid 2px #999900; 13 | } 14 | 15 | .is_fixed { 16 | background-color: #b5d29c; 17 | border: solid 2px #009900; 18 | color: #222222; 19 | } 20 | 21 | #report-subscribers { 22 | background: #222222; 23 | border: solid 2px #b4b4b4; 24 | } 25 | .is_fixed p { 26 | color: #222222; 27 | text-align: left; 28 | margin: 1em; 29 | } 30 | 31 | 32 | .errorlist { 33 | color: #fc3535; 34 | } 35 | 36 | .row-highlight { 37 | background: #FFFFAA; 38 | } 39 | 40 | td.section { 41 | background-color:#000000; 42 | } 43 | 44 | .row-odd { 45 | background: #222222; 46 | } 47 | 48 | .row-even { 49 | background: #434343; 50 | } 51 | 52 | #photo_note { 53 | color: #6396b0; 54 | } 55 | 56 | #top_menu { 57 | background: #666666; 58 | } 59 | 60 | 61 | #top_menu { 62 | background: #666666 url(/media/images/stat_tl.png) no-repeat; 63 | } 64 | 65 | #top_menu_tr { 66 | background: url(/media/images/stat_tr.png) top right no-repeat; 67 | } 68 | 69 | #top_menu_bl { 70 | background: url(/media/images/stat_bl.png) bottom left no-repeat; 71 | } 72 | 73 | #top_menu_br { 74 | background: url(/media/images/stat_br.png) bottom right no-repeat; 75 | } 76 | 77 | .note strong { 78 | color:green; 79 | } 80 | 81 | a { 82 | color: #7E090C; 83 | } 84 | p {color:#B4B4B4;} 85 | 86 | #content_third .fix-disclaimer p{color: #4c4c4c;} 87 | 88 | .status-text { 89 | color:#666666; 90 | } 91 | 92 | 93 | #content_container h1 { 94 | color: #4a8797; 95 | } 96 | #content_container h2 { 97 | color: #f3865a; 98 | } 99 | #content_container h3 { 100 | color: #FFF; 101 | text-shadow:0px 1px 0px #000; 102 | } 103 | 104 | #content_middle a { 105 | color: #fc3535; 106 | } 107 | 108 | #more-actions a { 109 | color: #98b3cc; 110 | font-weight: bold; 111 | } 112 | 113 | .ishate strong { 114 | color:red; 115 | 116 | } 117 | 118 | th { 119 | font-weight: bold; 120 | } 121 | 122 | 123 | 124 | 125 | 126 | .highlight {color:#FFF;} 127 | -------------------------------------------------------------------------------- /mainapp/tests/open311/expected/get_reports.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 4 | closed 5 | Fixed in 16 Days 6 | 5 7 | Grafitti: Graffiti On City Property 8 | Parks! 9 | 2009-02-04T15:11:49 10 | 2009-02-09T19:35:16 11 | -75.682464838 12 | 45.430126958 13 |
Dalhousie, Oglo
14 |
15 | 16 | 3 17 | closed 18 | Fixed in Two Days 19 | 1 20 | Parks: Broken or Damaged Equipment/Play Structures 21 | Here's a description with a lot of 'escapes' in it. 22 | 23 | And linebreaks! 24 | 2009-02-03T16:47:06 25 | 2009-02-03T16:47:06 26 | -75.682464838 27 | 45.430126958 28 |
Caldaver, Oglo
29 |
30 | 31 | 2 32 | open 33 | Unfixed 2 34 | 1 35 | Parks: Broken or Damaged Equipment/Play Structures 36 | Here's a description with a lot of 'escapes' in it. 37 | 38 | And linebreaks! 39 | 2009-02-02T16:47:06 40 | 2010-02-02T16:47:06 41 | -75.6965517998 42 | 45.418741558 43 |
Caldaver, Oglo
44 |
45 | 46 | 1 47 | open 48 | Unfixed 1 49 | 5 50 | Grafitti: Graffiti On City Property 51 | Here's a description with a lot of 'escapes' in it. 52 | 53 | And linebreaks! 54 | 2009-02-01T16:47:06 55 | 2010-02-01T16:47:06 56 | -75.6965517998 57 | 45.418741558 58 |
Caldaver, Oglo
59 |
60 |
61 | -------------------------------------------------------------------------------- /mainapp/views/reports/main.py: -------------------------------------------------------------------------------- 1 | from django.shortcuts import render_to_response, get_object_or_404 2 | from django.http import HttpResponseRedirect,Http404 3 | from mainapp.models import UserProfile,DictToPoint,Report, ReportUpdate, Ward, FixMyStreetMap, ReportCategory 4 | from mainapp.forms import ReportForm,ReportUpdateForm 5 | from django.template import Context, RequestContext 6 | from django.contrib.gis.geos import * 7 | from fixmystreet import settings 8 | from django.utils.translation import ugettext as _ 9 | 10 | def new( request ): 11 | 12 | d2p = DictToPoint( request.REQUEST ) 13 | pnt = d2p.pnt() 14 | 15 | if request.method == "POST": 16 | #an UpdateForm is bundled inside ReportForm 17 | report_form = ReportForm( request.POST, request.FILES, user=request.user ) 18 | # this checks update is_valid too 19 | if report_form.is_valid(): 20 | # this saves the update as part of the report. 21 | report = report_form.save() 22 | if report: 23 | return( HttpResponseRedirect( report.get_absolute_url() )) 24 | else: 25 | initial = {} 26 | initial['lat' ] =request.GET['lat'] 27 | initial['lon'] = request.GET['lon'] 28 | initial['address'] = request.GET.get('address',None) 29 | 30 | report_form = ReportForm( initial=initial, user=request.user ) 31 | 32 | return render_to_response("reports/new.html", 33 | { "google": FixMyStreetMap(pnt, True), 34 | 'GOOGLE_KEY': settings.GMAP_KEY, 35 | "report_form": report_form, 36 | "update_form": report_form.update_form, 37 | 'ward': report_form.ward }, 38 | context_instance=RequestContext(request)) 39 | 40 | 41 | def show( request, report_id ): 42 | report = get_object_or_404(Report, id=report_id) 43 | subscribers = report.reportsubscriber_set.count() + 1 44 | return render_to_response("reports/show.html", 45 | { "report": report, 46 | "subscribers": subscribers, 47 | "ward":report.ward, 48 | "updates": ReportUpdate.objects.filter(report=report, is_confirmed=True).order_by("created_at")[1:], 49 | "update_form": ReportUpdateForm(user=request.user,initial={}), 50 | "google": FixMyStreetMap((report.point)) }, 51 | context_instance=RequestContext(request)) 52 | 53 | 54 | -------------------------------------------------------------------------------- /mainapp/tests/open311/expected/get_modified_services.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 1 4 | Broken or Damaged Equipment/Play Structures 5 | Please provide the location within the park where the problem is located (e.g. near the play structure; along the pathway that runs from the south end of the park to the neighbouring school; beside the water fountain near the east parking lot). Please provide the name or address of the park if possible. 6 | false 7 | realtime 8 | 9 | Parks 10 | 11 | 12 | 3 13 | Lights Malfunctioning in Park 14 | Please provide the location within the park where the problem is located (e.g. near the play structure; along the pathway that runs from the south end of the park to the neighbouring school; beside the water fountain near the east parking lot). Please provide the name or address of the park if possible. 15 | false 16 | realtime 17 | 18 | Parks 19 | 20 | 21 | 4 22 | Debris or Litter in Park 23 | Please provide the location within the park where the problem is located (e.g. near the play structure; along the pathway that runs from the south end of the park to the neighbouring school; beside the water fountain near the east parking lot). Please provide the name or address of the park if possible. 24 | false 25 | realtime 26 | 27 | Parks 28 | 29 | 30 | 2 31 | Full or Overflowing Garbage Cans 32 | Please provide the location within the park where the problem is located (e.g. near the play structure; along the pathway that runs from the south end of the park to the neighbouring school; beside the water fountain near the east parking lot). Please provide the name or address of the park if possible. 33 | false 34 | realtime 35 | 36 | Parks 37 | 38 | -------------------------------------------------------------------------------- /mainapp/views/reports/subscribers.py: -------------------------------------------------------------------------------- 1 | from django.shortcuts import render_to_response, get_object_or_404 2 | from django.http import HttpResponseRedirect 3 | from mainapp.models import Report, ReportSubscriber 4 | from mainapp.forms import ReportSubscriberForm 5 | from django.template import Context, RequestContext 6 | from django.utils.translation import ugettext as _ 7 | 8 | def new( request, report_id ): 9 | report = get_object_or_404(Report, id=report_id) 10 | error_msg = None 11 | 12 | if request.method == 'POST': 13 | form = ReportSubscriberForm( request.POST ) 14 | if form.is_valid(): 15 | subscriber = form.save( commit = False ) 16 | subscriber.report = report 17 | subscriber.is_confirmed = request.user.is_authenticated() 18 | if report.is_subscribed(subscriber.email): 19 | error_msg = _("You are already subscribed to this report.") 20 | else: 21 | subscriber.save() 22 | return( HttpResponseRedirect( '/reports/subscribers/create/' ) ) 23 | else: 24 | initial = {} 25 | if request.user.is_authenticated(): 26 | initial['email'] = request.user.email 27 | form = ReportSubscriberForm(initial=initial,freeze_email=request.user.is_authenticated()) 28 | 29 | return render_to_response("reports/subscribers/new.html", 30 | { "subscriber_form": form, 31 | "report": report, 32 | "error_msg": error_msg, }, 33 | context_instance=RequestContext(request)) 34 | 35 | def create( request ): 36 | return render_to_response("reports/subscribers/create.html", 37 | { }, 38 | context_instance=RequestContext(request)) 39 | 40 | def confirm( request, confirm_token ): 41 | subscriber = get_object_or_404(ReportSubscriber, confirm_token = confirm_token ) 42 | subscriber.is_confirmed = True 43 | subscriber.save() 44 | 45 | return render_to_response("reports/subscribers/confirm.html", 46 | { "subscriber": subscriber, }, 47 | context_instance=RequestContext(request)) 48 | 49 | def unsubscribe(request, confirm_token ): 50 | subscriber = get_object_or_404(ReportSubscriber, confirm_token = confirm_token ) 51 | report = subscriber.report 52 | subscriber.delete() 53 | return render_to_response("reports/subscribers/message.html", 54 | { "message": _("You have unsubscribed from updates to:") + report.title, }, 55 | context_instance=RequestContext(request)) 56 | -------------------------------------------------------------------------------- /scripts/batch_reports.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # encoding: utf-8 3 | 4 | import sys 5 | import os 6 | 7 | path = os.path.abspath(os.path.dirname(os.path.abspath(os.path.dirname(os.path.abspath(os.path.dirname(__file__)))))) 8 | sys.path.append(path) 9 | os.environ['DJANGO_SETTINGS_MODULE'] = 'fixmystreet.settings' 10 | 11 | import datetime 12 | from datetime import datetime as dt 13 | from django.core.mail import send_mail, EmailMessage 14 | from django.template.loader import render_to_string 15 | from fixmystreet.mainapp.models import Ward,Report 16 | from fixmystreet import settings 17 | 18 | 19 | reminder_email_count = 0 20 | councillor_email_count = 0 21 | # 22 | ## send new reports to ward councillors 23 | #for ward in Ward.objects.all(): 24 | # new_reports = ward.report_set.filter(ward=ward,is_confirmed=True,is_fixed=False,sent_at__isnull=True).order_by("-created_at") 25 | # if len(new_reports) > 0 : 26 | # subject = render_to_string("emails/batch_reports/new_reports/subject.txt", 27 | # {'ward': ward }) 28 | # message = render_to_string("emails/batch_reports/new_reports/message.html", 29 | # {'new_reports': new_reports, 'ward': ward }) 30 | # 31 | # msg = EmailMessage(subject, message,settings.EMAIL_FROM_USER,[ward.councillor.email, settings.ADMIN_EMAIL]) 32 | # msg.content_subtype = "html" # Main content is now text/html 33 | # msg.send() 34 | # 35 | # print "sending report for ward " + ward.name 36 | # new_reports.update(sent_at=dt.now()) 37 | # councillor_email_count += 1 38 | 39 | # send old reports that have not been updated 40 | one_month_ago = dt.today() - datetime.timedelta(days=31) 41 | reminder_reports = Report.objects.filter(is_confirmed=True, is_fixed = False, reminded_at__lte=one_month_ago, updated_at__lte=one_month_ago ).order_by("ward","-created_at") 42 | 43 | for report in reminder_reports: 44 | subject = render_to_string("emails/batch_reports/reminders/subject.txt", 45 | {'report': report }) 46 | message = render_to_string("emails/batch_reports/reminders/message.txt", 47 | {'report': report }) 48 | 49 | send_mail(subject, message, settings.EMAIL_FROM_USER,[report.first_update().email], fail_silently=False) 50 | 51 | report.reminded_at = dt.now() 52 | report.save() 53 | reminder_email_count += 1 54 | 55 | # notify admin reports were run 56 | send_mail('Ward Summary Reports Run %s' % ( dt.now() ), 57 | '%d Report Summaries Sent to Councillors\n%d Reminders Sent' %( councillor_email_count, reminder_email_count ), 58 | settings.EMAIL_FROM_USER,[settings.ADMIN_EMAIL], fail_silently=False) 59 | 60 | -------------------------------------------------------------------------------- /templates/privacy.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | {% block title %} 4 | {% trans "Privacy" %} 5 | {% endblock %} 6 | {% block content %} 7 |
8 |

FixMyStreet Canada {% trans "Privacy Policy" %}

9 |
10 | {% blocktrans %} 11 |

About this policy

12 | 13 |

This privacy policy sets out how fixmystreet.ca uses and 14 | protects any information that you give fixmystreet.ca when 15 | you use this website. fixmystreet.ca is committed to ensuring 16 | that your privacy is protected.

17 | 18 |

What we collect

19 | 20 |

When you submit a report, or create an account with 21 | fixmystreet.ca, we collect the following information: 22 |

23 | 28 |

What we do with this information

29 |

30 | If you submit a problem, we pass on your contact details, 31 | and details of the problem, to the municipality contact 32 | responsible for the area where you located the problem. 33 | When you submit a report or update, your name is displayed 34 | upon the site, but not your email address or phone number. 35 |

36 |

37 | We will never give or sell your contact information to 38 | anyone else, unless we are obliged to by law. 39 |

40 |

Security

41 |

42 | We are committed to ensuring that your information 43 | is secure. In order to prevent unauthorised access or 44 | disclosure we have put in place suitable physical, 45 | electronic and managerial procedures to safeguard and 46 | secure the information we collect online. 47 |

48 |

How we use cookies

49 |

A cookie is a small file which asks permission to 50 | be placed on your computer’s hard drive. Once you agree, 51 | the file is added and the cookie helps analyse web traffic 52 | or lets you know when you visit a particular site. 53 | Cookies allow web applications to respond to you as an 54 | individual. The web application can tailor its operations to 55 | your needs, likes and dislikes by gathering and remembering 56 | information about your preferences.

57 | 58 |

We use traffic log cookies to identify which pages 59 | are being used. This helps us analyse data about webpage 60 | traffic and improve our website in order to tailor 61 | it to customer needs. We only use this information 62 | for statistical analysis purposes and then the data is 63 | removed from the system.

64 | 65 |

Questions

66 | 67 |

For common questions and answers regarding fixmystreet.ca 68 | privacy, contact info@fixmystreet.ca, or use the contact form 69 | provided on the site.

70 | 71 |

Effective Date

72 |

73 | This policy was last updated the 15 of July, 2011. 74 |

75 | {% endblocktrans %} 76 |
77 |
78 | {% endblock %} -------------------------------------------------------------------------------- /mainapp/views/wards.py: -------------------------------------------------------------------------------- 1 | from django.shortcuts import render_to_response, get_object_or_404 2 | from mainapp.models import City, Ward, WardMap, Report 3 | from django.template import Context, RequestContext 4 | from django.db import connection 5 | from django.utils.translation import ugettext_lazy, ugettext as _ 6 | from django.core.paginator import Paginator, InvalidPage, EmptyPage 7 | 8 | import datetime 9 | 10 | def show( request, ward ): 11 | 12 | try: 13 | page_no = int(request.GET.get('page', '1')) 14 | except ValueError: 15 | page_no = 1 16 | 17 | all_reports = Report.objects.filter( ward = ward, is_confirmed = True ).extra( select = { 'status' : """ 18 | CASE 19 | WHEN age( clock_timestamp(), created_at ) < interval '1 month' AND is_fixed = false THEN 'New Problems' 20 | WHEN age( clock_timestamp(), created_at ) > interval '1 month' AND is_fixed = false THEN 'Older Unresolved Problems' 21 | WHEN age( clock_timestamp(), fixed_at ) < interval '1 month' AND is_fixed = true THEN 'Recently Fixed' 22 | WHEN age( clock_timestamp(), fixed_at ) > interval '1 month' AND is_fixed = true THEN 'Old Fixed' 23 | ELSE 'Unknown Status' 24 | END """, 25 | 'status_int' : """ 26 | CASE 27 | WHEN age( clock_timestamp(), created_at ) < interval '1 month' AND is_fixed = false THEN 0 28 | WHEN age( clock_timestamp(), created_at ) > interval '1 month' AND is_fixed = false THEN 1 29 | WHEN age( clock_timestamp(), fixed_at ) < interval '1 month' AND is_fixed = true THEN 2 30 | WHEN age( clock_timestamp(), fixed_at ) > interval '1 month' AND is_fixed = true THEN 3 31 | ELSE 4 32 | END """ } ).order_by('-created_at') 33 | 34 | paginator = Paginator(all_reports, 100) 35 | try: 36 | page = paginator.page(page_no) 37 | except (EmptyPage, InvalidPage): 38 | page = paginator.page(paginator.num_pages) 39 | 40 | reports = sorted(page.object_list,key=lambda o: o.status_int ) 41 | google = WardMap(ward,reports) 42 | 43 | return render_to_response("wards/show.html", 44 | {"ward": ward, 45 | "google": google, 46 | "page":page, 47 | "reports": reports }, 48 | context_instance=RequestContext(request)) 49 | 50 | def show_by_id(request,ward_id): 51 | ward = get_object_or_404(Ward, id=ward_id) 52 | return(show(request,ward)) 53 | 54 | def show_by_number( request, city_id, ward_no ): 55 | ward = get_object_or_404( Ward,city__id=city_id, number=ward_no) 56 | return(show(request,ward)) 57 | 58 | def show_by_slug( request, city_slug, ward_slug ): 59 | ward = get_object_or_404( Ward,city__slug=city_slug, slug=ward_slug) 60 | return(show(request,ward)) 61 | -------------------------------------------------------------------------------- /mainapp/views/cities.py: -------------------------------------------------------------------------------- 1 | from django.shortcuts import render_to_response, get_object_or_404 2 | from mainapp.models import City, Ward, Report, ReportCounters, CityMap 3 | from django.template import Context, RequestContext 4 | from django.db.models import Count 5 | 6 | def index(request): 7 | return render_to_response("cities/index.html", 8 | {"report_counts": City.objects.annotate(**ReportCounters('ward__report')).order_by('province__abbrev') }, 9 | context_instance=RequestContext(request)) 10 | 11 | 12 | def show( request, city ): 13 | #top problems 14 | top_problems = Report.objects.filter(ward__city=city,is_fixed=False).annotate(subscriber_count=Count('reportsubscriber' ) ).filter(subscriber_count__gte=1).order_by('-subscriber_count')[:5] 15 | if request.GET.has_key('test'): 16 | google = CityMap(city) 17 | else: 18 | google = None 19 | 20 | 21 | return render_to_response("cities/show.html", 22 | {"city":city, 23 | "google": google, 24 | 'top_problems': top_problems, 25 | 'city_totals' : City.objects.filter(id=city.id).annotate(**ReportCounters('ward__report','10 years'))[0], 26 | "report_counts": Ward.objects.filter(city=city).order_by('number').annotate(**ReportCounters('report')) 27 | }, 28 | context_instance=RequestContext(request)) 29 | 30 | def show_by_id(request, city_id ): 31 | city = get_object_or_404(City, id=city_id) 32 | return( show(request,city )) 33 | 34 | def show_by_slug(request, city_slug ): 35 | city = get_object_or_404(City, slug=city_slug) 36 | return( show(request,city )) 37 | 38 | def home( request, city, error_msg, disambiguate ): 39 | #top problems 40 | top_problems = Report.objects.filter(ward__city=city,is_fixed=False).annotate(subscriber_count=Count('reportsubscriber' ) ).filter(subscriber_count__gte=1).order_by('-subscriber_count')[:10] 41 | reports_with_photos = Report.objects.filter(is_confirmed=True, ward__city=city).exclude(photo='').order_by("-created_at")[:3] 42 | recent_reports = Report.objects.filter(is_confirmed=True, ward__city=city).order_by("-created_at")[:5] 43 | 44 | return render_to_response("cities/home.html", 45 | {"report_counts": City.objects.filter(id=city.id).annotate(ReportTotalCounters('ward__report','10 years'))[0], 46 | "cities": City.objects.all(), 47 | 'city':city, 48 | 'top_problems': top_problems, 49 | "reports_with_photos": reports_with_photos, 50 | "recent_reports": recent_reports , 51 | 'error_msg': error_msg, 52 | 'disambiguate':disambiguate }, 53 | context_instance=RequestContext(request)) 54 | -------------------------------------------------------------------------------- /templates/_search.js: -------------------------------------------------------------------------------- 1 | {% load i18n %} 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /mainapp/fixtures/test_report_basecases.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "pk": 1, 4 | "model": "mainapp.report", 5 | "fields": { 6 | "category": 2, 7 | "is_hate": false, 8 | "sent_at": "2010-02-02 15:18:43", 9 | "is_confirmed": true, 10 | "title": "An issue on rideau", 11 | "photo": "", 12 | "created_at": "2010-02-02 15:11:49", 13 | "point": "POINT (-75.6824648380000014 45.4301269580000024)", 14 | "updated_at": "2010-02-09 19:35:16", 15 | "email_sent_to": "311@testcity.com", 16 | "author": "Report Creator", 17 | "fixed_at": "2010-02-09 19:35:16", 18 | "reminded_at": "2010-02-02 15:11:49", 19 | "ward": 4, 20 | "is_fixed": true, 21 | "desc": "Parks!" 22 | } 23 | }, 24 | { 25 | "pk": 2, 26 | "model": "mainapp.report", 27 | "fields": { 28 | "category": 5, 29 | "is_hate": false, 30 | "sent_at": "2010-02-02 16:58:06", 31 | "is_confirmed": true, 32 | "title": "A new 'problem' report", 33 | "photo": "", 34 | "created_at": "2010-02-02 16:47:06", 35 | "point": "POINT (-75.6965517998000053 45.4187415580000007)", 36 | "updated_at": "2010-02-02 16:47:06", 37 | "email_sent_to": "311@test_city.com", 38 | "author": "Report Creator", 39 | "fixed_at": null, 40 | "reminded_at": "2010-02-02 16:47:06", 41 | "ward": 3, 42 | "is_fixed": false, 43 | "desc": "Here's a description with a lot of 'escapes' in it.\r\n\r\nAnd linebreaks!" 44 | } 45 | }, 46 | { 47 | "pk": 1, 48 | "model": "mainapp.reportupdate", 49 | "fields": { 50 | "confirm_token": "9ad32cbb2a73bb31a046c7e7ff4ceca1", 51 | "is_confirmed": true, 52 | "author": "Report Creator", 53 | "created_at": "2010-02-02 15:11:54", 54 | "first_update": true, 55 | "phone": "514-513-0475", 56 | "report": 1, 57 | "is_fixed": false, 58 | "email": "reportcreator@test.com", 59 | "desc": "Parks!" 60 | } 61 | }, 62 | { 63 | "pk": 2, 64 | "model": "mainapp.reportupdate", 65 | "fields": { 66 | "confirm_token": "e7600210761099f24015c86b592d5aed", 67 | "is_confirmed": true, 68 | "author": "Report Creator", 69 | "created_at": "2010-02-02 16:47:10", 70 | "first_update": true, 71 | "phone": "514-513-0475", 72 | "report": 2, 73 | "is_fixed": false, 74 | "email": "reportcreator@test.com", 75 | "desc": "Here's a description with a lot of 'escapes' in it.\r\n\r\nAnd linebreaks!" 76 | } 77 | }, 78 | { 79 | "pk": 3, 80 | "model": "mainapp.reportupdate", 81 | "fields": { 82 | "confirm_token": "df9172f6c0582fb807dd50b9fe64914a", 83 | "is_confirmed": true, 84 | "author": "Report Updater", 85 | "created_at": "2010-02-09 19:35:16", 86 | "first_update": false, 87 | "phone": "514-513-0475", 88 | "report": 1, 89 | "is_fixed": true, 90 | "email": "reportupdater@test.com", 91 | "desc": "An update." 92 | } 93 | } 94 | 95 | ] 96 | -------------------------------------------------------------------------------- /mainapp/fixtures/test_stats.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "pk": 1, 4 | "model": "mainapp.report", 5 | "fields": { 6 | "category": 5, 7 | "is_hate": false, 8 | "sent_at": "2009-02-02 16:58:06", 9 | "is_confirmed": true, 10 | "title": "Unfixed 1", 11 | "photo": "", 12 | "created_at": "2009-02-02 16:47:06", 13 | "point": "POINT (-75.6965517998000053 45.4187415580000007)", 14 | "updated_at": "2010-02-02 16:47:06", 15 | "email_sent_to": "jennifer@visiblegovernment.ca", 16 | "author": "Jennifer Bell", 17 | "fixed_at": null, 18 | "reminded_at": "2009-02-02 16:47:06", 19 | "ward": 3, 20 | "is_fixed": false, 21 | "desc": "Here's a description with a lot of 'escapes' in it.\r\n\r\nAnd linebreaks!" 22 | } 23 | }, 24 | 25 | { 26 | "pk": 2, 27 | "model": "mainapp.report", 28 | "fields": { 29 | "category": 1, 30 | "is_hate": false, 31 | "sent_at": "2009-02-02 16:58:06", 32 | "is_confirmed": true, 33 | "title": "Unfixed 2", 34 | "photo": "", 35 | "created_at": "2009-02-02 16:47:06", 36 | "point": "POINT (-75.6965517998000053 45.4187415580000007)", 37 | "updated_at": "2010-02-02 16:47:06", 38 | "email_sent_to": "jennifer@visiblegovernment.ca", 39 | "author": "Jennifer Bell", 40 | "fixed_at": null, 41 | "reminded_at": "2009-02-02 16:47:06", 42 | "ward": 3, 43 | "is_fixed": false, 44 | "desc": "Here's a description with a lot of 'escapes' in it.\r\n\r\nAnd linebreaks!" 45 | } 46 | }, 47 | 48 | { 49 | "pk": 3, 50 | "model": "mainapp.report", 51 | "fields": { 52 | "category": 1, 53 | "is_hate": false, 54 | "sent_at": "2009-02-02 16:58:06", 55 | "is_confirmed": true, 56 | "title": "Fixed in Two Days", 57 | "photo": "", 58 | "created_at": "2009-02-02 16:47:06", 59 | "point": "POINT (-75.6965517998000053 45.4187415580000007)", 60 | "updated_at": "2009-02-02 16:47:06", 61 | "email_sent_to": "jennifer@visiblegovernment.ca", 62 | "author": "Jennifer Bell", 63 | "fixed_at": "2009-02-04 16:58:06", 64 | "reminded_at": "2009-02-02 16:47:06", 65 | "ward": 3, 66 | "is_fixed": true, 67 | "desc": "Here's a description with a lot of 'escapes' in it.\r\n\r\nAnd linebreaks!" 68 | } 69 | }, 70 | 71 | { 72 | "pk": 4, 73 | "model": "mainapp.report", 74 | "fields": { 75 | "category": 5, 76 | "is_hate": false, 77 | "sent_at": "2009-02-02 15:18:43", 78 | "is_confirmed": true, 79 | "title": "Fixed in 16 Days", 80 | "photo": "", 81 | "created_at": "2009-02-02 15:11:49", 82 | "point": "POINT (-75.6824648380000014 45.4301269580000024)", 83 | "updated_at": "2009-02-09 19:35:16", 84 | "email_sent_to": "jennifer@visiblegovernment.ca", 85 | "author": "Jennifer Bell", 86 | "fixed_at": "2009-02-18 19:35:16", 87 | "reminded_at": "2009-02-02 15:11:49", 88 | "ward": 4, 89 | "is_fixed": true, 90 | "desc": "Parks!" 91 | } 92 | } 93 | 94 | ] 95 | -------------------------------------------------------------------------------- /mainapp/middleware/SSLMiddleware.py: -------------------------------------------------------------------------------- 1 | """ 2 | SSL Middleware 3 | Stephen Zabel 4 | 5 | This middleware answers the problem of redirecting to (and from) a SSL secured path 6 | by stating what paths should be secured in urls.py file. To secure a path, add the 7 | additional view_kwarg 'SSL':True to the view_kwargs. 8 | 9 | For example 10 | 11 | urlpatterns = patterns('some_site.some_app.views', 12 | (r'^test/secure/$','test_secure',{'SSL':True}), 13 | ) 14 | 15 | All paths where 'SSL':False or where the kwarg of 'SSL' is not specified are routed 16 | to an unsecure path. 17 | 18 | For example 19 | 20 | urlpatterns = patterns('some_site.some_app.views', 21 | (r'^test/unsecure1/$','test_unsecure',{'SSL':False}), 22 | (r'^test/unsecure2/$','test_unsecure'), 23 | ) 24 | 25 | Gotcha's : Redirects should only occur during GETs; this is due to the fact that 26 | POST data will get lost in the redirect. 27 | 28 | A major benefit of this approach is that it allows you to secure django.contrib views 29 | and generic views without having to modify the base code or wrapping the view. 30 | 31 | This method is also better than the two alternative approaches of adding to the 32 | settings file or using a decorator. 33 | 34 | It is better than the tactic of creating a list of paths to secure in the settings 35 | file, because you DRY. You are also not forced to consider all paths in a single 36 | location. Instead you can address the security of a path in the urls file that it 37 | is resolved in. 38 | 39 | It is better than the tactic of using a @secure or @unsecure decorator, because 40 | it prevents decorator build up on your view methods. Having a bunch of decorators 41 | makes views cumbersome to read and looks pretty redundant. Also because the all 42 | views pass through the middleware you can specify the only secure paths and the 43 | remaining paths can be assumed to be unsecure and handled by the middleware. 44 | 45 | This package is inspired by Antonio Cavedoni's SSL Middleware 46 | """ 47 | 48 | __license__ = "Python" 49 | __copyright__ = "Copyright (C) 2007, Stephen Zabel" 50 | __author__ = "Stephen Zabel" 51 | 52 | 53 | from django.conf import settings 54 | from django.http import HttpResponseRedirect, get_host 55 | 56 | SSL = 'SSL' 57 | 58 | class SSLRedirect: 59 | def process_view(self, request, view_func, view_args, view_kwargs): 60 | if SSL in view_kwargs: 61 | # FMS modification: open311 requires SSL only on 62 | # post for 'requests' url. 63 | # In that case, SSL is set as ['POST'], 64 | # instead of True/False 65 | if getattr(view_kwargs[SSL],'__iter__',False): 66 | secure = request.method in view_kwargs[SSL] 67 | else: 68 | secure = view_kwargs[SSL] 69 | 70 | del view_kwargs[SSL] 71 | else: 72 | secure = False 73 | 74 | if not settings.DEBUG and secure and not request.is_secure(): 75 | return self._redirect(request, secure) 76 | 77 | def _redirect(self, request, secure): 78 | protocol = secure and "https" or "http" 79 | newurl = "%s://%s%s" % (protocol, 80 | get_host(request), 81 | request.get_full_path()) 82 | 83 | if settings.DEBUG and request.method == 'POST': 84 | raise RuntimeError, \ 85 | """Django can't perform a SSL redirect while maintaining POST data. 86 | Please structure your views so that redirects only occur during GETs.""" 87 | 88 | return HttpResponseRedirect(newurl) 89 | -------------------------------------------------------------------------------- /templates/reports/new.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | {% block title %}{% trans "New Report" %}{% endblock %} 4 | {% block script %} 5 | 6 | 7 | {% include '_fixmystreetmap.js' %} 8 | 47 | {% endblock %} 48 | {% block content %} 49 | 50 | 57 |
58 |
59 |

{% trans "Submitting a report" %}

60 | 61 |
{% csrf_token %} 62 | 63 | {{ report_form.as_table }} 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | {{ update_form.as_table }} 73 | 74 | 75 | 86 | 87 | 88 | 89 | 90 | 91 |
{% trans "* Optional" %}
76 |

{% trans "Please Note" %} :

77 |
    78 |
  • {% trans "Please be polite, concise and to the point." %}
  • 79 |
  • {% trans "Please do not be abusive - abusing the service devalues the service for all users." %}
  • 80 |
  • {% trans "Writing your message entirely in block capitals makes it hard to read, as does a lack of punctuation." %}
  • 81 |
  • {% trans "Remember that FixMyStreet is primarily for reporting physical problems that can be fixed. If your problem is not appropriate for submission via this site please contact city officials directly." %}
  • 82 |
83 |

84 |

85 |
92 |
93 |
94 |
95 |
96 |
97 | {% trans "Where will my report be sent?" %} 98 |
    99 | {% for rule in ward.get_rule_descriptions %} 100 |
  • {{rule}}
  • 101 | {% endfor %} 102 |
103 |
104 |
105 |
106 | {% endblock %} --------------------------------------------------------------------------------