diff --git a/fixtures/sitetree.json b/fixtures/sitetree.json index d344ec0..d7b5424 100644 --- a/fixtures/sitetree.json +++ b/fixtures/sitetree.json @@ -1,148 +1,154 @@ [ - { - "pk": 1, - "model": "sitetree.tree", - "fields": { - "alias": "main", - "title": "main" - } - }, - { - "pk": 1, - "model": "sitetree.treeitem", - "fields": { - "parent": null, - "access_restricted": false, - "access_permissions": [], - "description": "", - "insitetree": true, - "hint": "", - "url": "page_about", - "inbreadcrumbs": true, - "title": "About", - "tree": 1, - "access_perm_type": 1, - "alias": null, - "sort_order": 2, - "inmenu": true, - "access_loggedin": false, - "hidden": false, - "urlaspattern": true - } - }, - { - "pk": 2, - "model": "sitetree.treeitem", - "fields": { - "parent": null, - "access_restricted": false, - "access_permissions": [], - "description": "", - "insitetree": true, - "hint": "", - "url": "page_venue", - "inbreadcrumbs": true, - "title": "Venue", - "tree": 1, - "access_perm_type": 1, - "alias": null, - "sort_order": 3, - "inmenu": true, - "access_loggedin": false, - "hidden": false, - "urlaspattern": true - } - }, - { - "pk": 3, - "model": "sitetree.treeitem", - "fields": { - "parent": null, - "access_restricted": false, - "access_permissions": [], - "description": "", - "insitetree": true, - "hint": "", - "url": "#", - "inbreadcrumbs": true, - "title": "Sponsors", - "tree": 1, - "access_perm_type": 1, - "alias": null, - "sort_order": 4, - "inmenu": true, - "access_loggedin": false, - "hidden": false, - "urlaspattern": false - } - }, - { - "pk": 4, - "model": "sitetree.treeitem", - "fields": { - "parent": null, - "access_restricted": false, - "access_permissions": [], - "description": "", - "insitetree": true, - "hint": "", - "url": "home", - "inbreadcrumbs": true, - "title": "Home", - "tree": 1, - "access_perm_type": 1, - "alias": null, - "sort_order": 1, - "inmenu": true, - "access_loggedin": false, - "hidden": false, - "urlaspattern": true - } - }, - { - "pk": 5, - "model": "sitetree.treeitem", - "fields": { - "parent": 3, - "access_restricted": false, - "access_permissions": [], - "description": "", - "insitetree": true, - "hint": "", - "url": "page_sponsor_info", - "inbreadcrumbs": true, - "title": "Prospectus", - "tree": 1, - "access_perm_type": 1, - "alias": null, - "sort_order": 6, - "inmenu": true, - "access_loggedin": false, - "hidden": false, - "urlaspattern": true - } - }, - { - "pk": 6, - "model": "sitetree.treeitem", - "fields": { - "parent": 3, - "access_restricted": false, - "access_permissions": [], - "description": "", - "insitetree": true, - "hint": "", - "url": "sponsor_list", - "inbreadcrumbs": true, - "title": "{{ SITE_NAME }} Sponsors", - "tree": 1, - "access_perm_type": 1, - "alias": null, - "sort_order": 5, - "inmenu": true, - "access_loggedin": false, - "hidden": false, - "urlaspattern": true - } +{ + "model": "sitetree.tree", + "pk": 1, + "fields": { + "title": "main", + "alias": "main" } +}, +{ + "model": "sitetree.treeitem", + "pk": 1, + "fields": { + "title": "About", + "hint": "", + "url": "about", + "urlaspattern": true, + "tree": 1, + "hidden": false, + "alias": null, + "description": "", + "inmenu": true, + "inbreadcrumbs": true, + "insitetree": true, + "access_loggedin": false, + "access_guest": false, + "access_restricted": false, + "access_perm_type": 1, + "parent": null, + "sort_order": 2, + "access_permissions": [] + } +}, +{ + "model": "sitetree.treeitem", + "pk": 3, + "fields": { + "title": "Call for Sponsors", + "hint": "", + "url": "sponsors", + "urlaspattern": false, + "tree": 1, + "hidden": false, + "alias": null, + "description": "", + "inmenu": true, + "inbreadcrumbs": true, + "insitetree": true, + "access_loggedin": false, + "access_guest": false, + "access_restricted": false, + "access_perm_type": 1, + "parent": null, + "sort_order": 7, + "access_permissions": [] + } +}, +{ + "model": "sitetree.treeitem", + "pk": 4, + "fields": { + "title": "Home", + "hint": "", + "url": "home", + "urlaspattern": true, + "tree": 1, + "hidden": false, + "alias": null, + "description": "", + "inmenu": true, + "inbreadcrumbs": true, + "insitetree": true, + "access_loggedin": false, + "access_guest": false, + "access_restricted": false, + "access_perm_type": 1, + "parent": null, + "sort_order": 1, + "access_permissions": [] + } +}, +{ + "model": "sitetree.treeitem", + "pk": 7, + "fields": { + "title": "Call for Proposals", + "hint": "", + "url": "proposals", + "urlaspattern": false, + "tree": 1, + "hidden": false, + "alias": null, + "description": "", + "inmenu": true, + "inbreadcrumbs": true, + "insitetree": true, + "access_loggedin": false, + "access_guest": false, + "access_restricted": false, + "access_perm_type": 1, + "parent": null, + "sort_order": 4, + "access_permissions": [] + } +}, +{ + "model": "sitetree.treeitem", + "pk": 8, + "fields": { + "title": "Code of Conduct", + "hint": "", + "url": "code-of-conduct", + "urlaspattern": false, + "tree": 1, + "hidden": false, + "alias": null, + "description": "", + "inmenu": true, + "inbreadcrumbs": true, + "insitetree": true, + "access_loggedin": false, + "access_guest": false, + "access_restricted": false, + "access_perm_type": 1, + "parent": null, + "sort_order": 8, + "access_permissions": [] + } +}, +{ + "model": "sitetree.treeitem", + "pk": 9, + "fields": { + "title": "News", + "hint": "", + "url": "news", + "urlaspattern": false, + "tree": 1, + "hidden": false, + "alias": null, + "description": "", + "inmenu": true, + "inbreadcrumbs": true, + "insitetree": true, + "access_loggedin": false, + "access_guest": false, + "access_restricted": false, + "access_perm_type": 1, + "parent": null, + "sort_order": 9, + "access_permissions": [] + } +} ] diff --git a/pinaxcon/settings.py b/pinaxcon/settings.py index 74166f1..b78e7ac 100644 --- a/pinaxcon/settings.py +++ b/pinaxcon/settings.py @@ -278,3 +278,9 @@ NOSE_ARGS = [ '--with-coverage', '--cover-package=registrasion.controllers,registrasion.models', ] + +MARKDOWN_DEUX_STYLES = { + "default": { + "safe_mode": False, + }, +} diff --git a/pinaxcon/templates/_default_sidebar.html b/pinaxcon/templates/_default_sidebar.html index 22486ad..a1936f1 100644 --- a/pinaxcon/templates/_default_sidebar.html +++ b/pinaxcon/templates/_default_sidebar.html @@ -13,9 +13,13 @@ {% for sponsor in level.sponsors %}
{% endfor %} {% endif %} diff --git a/pinaxcon/templates/static_pages/about.html b/pinaxcon/templates/static_pages/about.html index b8b5c5f..13a6269 100644 --- a/pinaxcon/templates/static_pages/about.html +++ b/pinaxcon/templates/static_pages/about.html @@ -1,11 +1,13 @@ -{% extends "site_base.html" %} +{% extends "page_with_title_and_lede.html" %} {% load i18n %} -{% block head_title %}{% trans "Welcome" %}{% endblock %} +{% block head_title %}About North Bay Python{% endblock %} -{% block body_class %}home{% endblock %} +{% block heading %}About North Bay Python{% endblock %} -{% block body %} +{% block body_class %}about{% endblock %} + +{% block content %} {% endblock %} diff --git a/pinaxcon/templates/static_pages/code-of-conduct.html b/pinaxcon/templates/static_pages/code-of-conduct.html index b8b5c5f..e177d36 100644 --- a/pinaxcon/templates/static_pages/code-of-conduct.html +++ b/pinaxcon/templates/static_pages/code-of-conduct.html @@ -1,11 +1,13 @@ -{% extends "site_base.html" %} +{% extends "page_with_title_and_lede.html" %} {% load i18n %} -{% block head_title %}{% trans "Welcome" %}{% endblock %} +{% block head_title %}Code of Conduct{% endblock %} -{% block body_class %}home{% endblock %} +{% block heading %}Code of Conduct{% endblock %} -{% block body %} +{% block body_class %}code-of-conduct{% endblock %} + +{% block content %} {% endblock %} diff --git a/pinaxcon/templates/static_pages/homepage.html b/pinaxcon/templates/static_pages/homepage.html index b8b5c5f..4eec449 100644 --- a/pinaxcon/templates/static_pages/homepage.html +++ b/pinaxcon/templates/static_pages/homepage.html @@ -2,7 +2,7 @@ {% load i18n %} -{% block head_title %}{% trans "Welcome" %}{% endblock %} +{% block head_title %}Welcome{% endblock %} {% block body_class %}home{% endblock %} diff --git a/pinaxcon/templates/static_pages/news.html b/pinaxcon/templates/static_pages/news.html index b8b5c5f..bc0a04f 100644 --- a/pinaxcon/templates/static_pages/news.html +++ b/pinaxcon/templates/static_pages/news.html @@ -1,11 +1,13 @@ -{% extends "site_base.html" %} +{% extends "page_with_title_and_lede.html" %} {% load i18n %} -{% block head_title %}{% trans "Welcome" %}{% endblock %} +{% block head_title %}News{% endblock %} -{% block body_class %}home{% endblock %} +{% block heading %}News{% endblock %} -{% block body %} +{% block body_class %}news{% endblock %} + +{% block content %} {% endblock %} diff --git a/pinaxcon/templates/static_pages/proposals.html b/pinaxcon/templates/static_pages/proposals.html index b8b5c5f..2c4f1a0 100644 --- a/pinaxcon/templates/static_pages/proposals.html +++ b/pinaxcon/templates/static_pages/proposals.html @@ -1,11 +1,18 @@ -{% extends "site_base.html" %} +{% extends "page_with_title_and_lede.html" %} {% load i18n %} +{% load markdown_deux_tags %} -{% block head_title %}{% trans "Welcome" %}{% endblock %} +{% block head_title %}Call for Proposals{% endblock %} -{% block body_class %}home{% endblock %} +{% block heading %}Call for Proposals{% endblock %} -{% block body %} +{% block body_class %}proposals{% endblock %} +{% block content %} + {% markdown %} + +{% include "static_pages/proposals.md" %} + + {% endmarkdown %} {% endblock %} diff --git a/pinaxcon/templates/static_pages/proposals.md b/pinaxcon/templates/static_pages/proposals.md new file mode 100644 index 0000000..8adb8fa --- /dev/null +++ b/pinaxcon/templates/static_pages/proposals.md @@ -0,0 +1,91 @@ +*Portions of this page were drawn from ideas seen on [DjangoCon EU](https://djangocon.eu), [SeaGL](https://seagl.org), [Fog City Ruby](http://www.fogcityruby.com/speak/), and others. Thanks to all for their inspiration and permission to borrow!* + +### The North Bay Python 2017 CFP is open! + +North Bay Python is seeking speakers of all experience levels, especially first-timers, to contribute to our first-ever conference program! If you use Python professionally or as a hobbyist, or are even just excited about Python or programming and open source in general, we'd love to hear from you. + +If you've never presented at a conference before and think you might like to try it, we want to hear from you! The program committee is *very* much interested in encouraging and supporting new speakers, and we will be able to provide detailed feedback and work with you to develop your proposal and talk content so you can give the best talk possible. + +In the interest of transparency, we have documented our [Selection Process](./selection-process). + +## Dates + ++ **August 21, 2017**: CFP opens ++ **September 29, 2017**: CFP closes ++ **Week of October 9**: Acceptance notifications sent ++ **Week of October 16**: Speaker confirmations due; program finalized and announced ++ **December 2–3, 2017**: Conference happens! + +## Speakers + +North Bay Python is dedicated to featuring a diverse and inclusive speaker lineup. + +**All speakers will be expected to have read and adhere to the conference [Code of Conduct](./code-of-conduct). In particular for speakers: slide contents and spoken material should be appropriate for a professional audience including people of many different backgrounds. Sexual language and imagery is not appropriate, and neither are language or imagery that denigrate or demean people based on race, gender, religion, sexual orientation, physical appearance, disability, or body size.** + +We will make every effort to provide accommodations for speakers and attendees of all abilities — all we ask is that you let us know so we can prepare accordingly. + +North Bay Python is a conference in support of the local programmer community outside of the core San Francisco Bay Area tech scene. We aim to feature a mix of local and non-local speakers to offer a program with broad appeal. **All speakers will receive complimentary registration to the conference, and requests for further financial compensation to assist with travel will be considered on a case-by-case basis independent of the proposal's merits.** + +## Talk formats + +**Most of the talk slots will be short** — approximately 25 to 30 minutes, including Q&A. If your ideas would benefit from a longer slot, please explain in your submission how you would use the additional time. + +## Topics + +**We are a single track conference. This means that your talk needs to hold the attention of beginners to experienced developers alike.** + +This doesn’t mean that every talk needs to be a beginner’s talk: if you’re talking about advanced concepts, people who are new to Python – or new to your library – should come away excited about the possibilities, and know how to learn the concepts that they need to get there. + +This is a list of topics we think might go well in the North Bay Python program, but it is by no means exhaustive. If you have a talk idea on a subject not listed here and you think it fits well with our community and mission, we would love to hear about it! + ++ The Python community ++ Python fundamentals ++ Useful libraries and tools ++ Testing in Python ++ Deploying, operating, or scaling Python ++ Organization and communication skills for software development ++ What Python can learn from other communities ++ Unexpected places Python gets used (Embedded systems! Health science!) ++ ... and anything else we might not have thought of! + +## Resources + +The [Public Speaking](https://github.com/vmbrasseur/Public_Speaking) repository has collected many useful resources to help you polish your proposals and talks. + +### Office Hours and Mentorship + +The Program Committee will be holding regularly-scheduled office hours during the CFP period to help you organize proposals. + +We're happy to help with any of the following: + ++ Exploring and brainstorming your interests to help you identify hidden things that would make great talks ++ Connecting you with experienced speakers to help build your proposal and talk ++ Reviewing your outline, slide deck, or presenter notes ++ Connecting you with rehearsal audiences or even just watching you present over a video conference as practice ++ Anything else that'd help you be at ease and excited about bringing your ideas to our audience! + + + +## Submitting + +To help us evaluate proposals and build our program, we would like as much detail as you can provide on your talk. At a minimum this should include: **a brief abstract (~500 characters) suitable for inclusion in a schedule page; a detailed prose summary (intended as the content for a talk detail page on the program site); and at least a rough outline of the structure including estimated timings for each section of your talk.** + +If you've given your talk before, links to video or slides would be excellent, or if you've blogged about this topic links to your blog posts would be of use as well. + +Your speaker profile includes a space for you to describe your prior experience giving talks — this is your chance to talk yourself up and explain why you're the best person in the world to bring us your amazing ideas, so take advantage of it! + +Please click the invitingly large button below to submit a proposal. + + + +## Feedback and mentorship + +**First time speakers are welcomed and encouraged; if you've never done this before but have an idea please contact the program committee to be connected with a mentor and receive guidance structuring your proposal and talk. Above all we want you to be successful and have a good time telling other attendees about your amazing ideas!** + +If you have an idea (or don't!) and want to speak, here's a very rough process of what you should do next: + ++ Brainstorm or [mind map](https://en.wikipedia.org/wiki/Mind_map) to expand upon your ideas or knowledge in search of a general topic ++ Write a paragraph or two, or some bullet points, to outline the core concepts you want to communicate and what people might learn from your talk ++ Get someone you trust to read your notes and tell you what they think they'd learn ++ Attend our office hours to get help building up your submission ++ Practice! \ No newline at end of file diff --git a/pinaxcon/templates/static_pages/selection-process.html b/pinaxcon/templates/static_pages/selection-process.html new file mode 100644 index 0000000..e91219d --- /dev/null +++ b/pinaxcon/templates/static_pages/selection-process.html @@ -0,0 +1,18 @@ +{% extends "page_with_title_and_lede.html" %} + +{% load i18n %} +{% load markdown_deux_tags %} + +{% block head_title %}Selection Process{% endblock %} + +{% block heading %}Selection Process{% endblock %} + +{% block body_class %}selection-process{% endblock %} + +{% block content %} + {% markdown %} + +{% include "static_pages/selection-process.md" %} + + {% endmarkdown %} +{% endblock %} diff --git a/pinaxcon/templates/static_pages/selection-process.md b/pinaxcon/templates/static_pages/selection-process.md new file mode 100644 index 0000000..5b02361 --- /dev/null +++ b/pinaxcon/templates/static_pages/selection-process.md @@ -0,0 +1,14 @@ +## Phase one: ranking of anonymized proposal contents + +During this phase, the program committee will score each proposal solely on the merits of its contents, without any identifying information or other knowledge about the speaker(s) proposing the talk. + + +## Phase two: identify-aware ranking and curation + +The program committee will use the scored proposals in conjunction with speaker profiles to rank and organize a program meeting our goals for diversity of speakers and topics. + +## North Bay Python's diversity goals + ++ At least one-third (33%) of speakers should be not-men, and ideally at least half (50%). ++ As North Bay Python aims to serve the "tech-adjacent" and client services industries, at least one-fifth (20%) of speakers should be from professional backgrounds that are not the Silicon Valley or San Francisco startup/software industry. ++ Racial demographics of the speaker lineup should ideally reflect US and Bay Area demographics within some margin of error. \ No newline at end of file diff --git a/pinaxcon/templates/static_pages/sponsors.html b/pinaxcon/templates/static_pages/sponsors.html index b8b5c5f..c994e20 100644 --- a/pinaxcon/templates/static_pages/sponsors.html +++ b/pinaxcon/templates/static_pages/sponsors.html @@ -1,11 +1,13 @@ -{% extends "site_base.html" %} +{% extends "page_with_title_and_lede.html" %} {% load i18n %} -{% block head_title %}{% trans "Welcome" %}{% endblock %} +{% block head_title %}Call for Sponsors{% endblock %} -{% block body_class %}home{% endblock %} +{% block heading %}Call for Sponsors{% endblock %} -{% block body %} +{% block body_class %}sponsors{% endblock %} + +{% block content %} {% endblock %} diff --git a/pinaxcon/urls.py b/pinaxcon/urls.py index 5717611..8837448 100644 --- a/pinaxcon/urls.py +++ b/pinaxcon/urls.py @@ -10,9 +10,9 @@ import symposion.views urlpatterns = [ url(r"^$", TemplateView.as_view(template_name="static_pages/homepage.html"), name="home"), - url(r"^code-of-conduct$", TemplateView.as_view(template_name="static_pages/proposals.html"), name="code-of-conduct"), - url(r"^about$", TemplateView.as_view(template_name="static_pages/proposals.html"), name="about"), - url(r"^news$", TemplateView.as_view(template_name="static_pages/proposals.html"), name="news"), + url(r"^code-of-conduct$", TemplateView.as_view(template_name="static_pages/code-of-conduct.html"), name="code-of-conduct"), + url(r"^about$", TemplateView.as_view(template_name="static_pages/about.html"), name="about"), + url(r"^news$", TemplateView.as_view(template_name="static_pages/news.html"), name="news"), url(r"^admin/", include(admin.site.urls)), url(r"^account/", include("account.urls")), @@ -22,8 +22,9 @@ urlpatterns = [ url(r"^speaker/", include("symposion.speakers.urls")), url(r"^proposals/", include("symposion.proposals.urls")), url(r"^proposals$", TemplateView.as_view(template_name="static_pages/proposals.html"), name="proposals"), + url(r"^selection-process$", TemplateView.as_view(template_name="static_pages/selection-process.html"), name="selection-process"), url(r"^sponsors/", include("symposion.sponsorship.urls")), - url(r"^sponsors$", TemplateView.as_view(template_name="static_pages/proposals.html"), name="sponsors"), + url(r"^sponsors$", TemplateView.as_view(template_name="static_pages/sponsors.html"), name="sponsors"), url(r"^reviews/", include("symposion.reviews.urls")), url(r"^schedule/", include("symposion.schedule.urls")),