.
9 |
10 | .list-group {
11 | // No need to set list-style: none; since .list-group-item is block level
12 | margin-bottom: 20px;
13 | padding-left: 0; // reset padding because ul and ol
14 | }
15 |
16 |
17 | // Individual list items
18 | //
19 | // Use on `li`s or `div`s within the `.list-group` parent.
20 |
21 | .list-group-item {
22 | position: relative;
23 | display: block;
24 | padding: 10px 15px;
25 | // Place the border on the list items and negative margin up for better styling
26 | margin-bottom: -1px;
27 | background-color: $list-group-bg;
28 | border: 1px solid $list-group-border;
29 |
30 | // Round the first and last items
31 | &:first-child {
32 | @include border-top-radius($list-group-border-radius);
33 | }
34 | &:last-child {
35 | margin-bottom: 0;
36 | @include border-bottom-radius($list-group-border-radius);
37 | }
38 | }
39 |
40 |
41 | // Linked list items
42 | //
43 | // Use anchor elements instead of `li`s or `div`s to create linked list items.
44 | // Includes an extra `.active` modifier class for showing selected items.
45 |
46 | a.list-group-item {
47 | color: $list-group-link-color;
48 |
49 | .list-group-item-heading {
50 | color: $list-group-link-heading-color;
51 | }
52 |
53 | // Hover state
54 | &:hover,
55 | &:focus {
56 | text-decoration: none;
57 | color: $list-group-link-hover-color;
58 | background-color: $list-group-hover-bg;
59 | }
60 | }
61 |
62 | .list-group-item {
63 | // Disabled state
64 | &.disabled,
65 | &.disabled:hover,
66 | &.disabled:focus {
67 | background-color: $list-group-disabled-bg;
68 | color: $list-group-disabled-color;
69 | cursor: $cursor-disabled;
70 |
71 | // Force color to inherit for custom content
72 | .list-group-item-heading {
73 | color: inherit;
74 | }
75 | .list-group-item-text {
76 | color: $list-group-disabled-text-color;
77 | }
78 | }
79 |
80 | // Active class on item itself, not parent
81 | &.active,
82 | &.active:hover,
83 | &.active:focus {
84 | z-index: 2; // Place active items above their siblings for proper border styling
85 | color: $list-group-active-color;
86 | background-color: $list-group-active-bg;
87 | border-color: $list-group-active-border;
88 |
89 | // Force color to inherit for custom content
90 | .list-group-item-heading,
91 | .list-group-item-heading > small,
92 | .list-group-item-heading > .small {
93 | color: inherit;
94 | }
95 | .list-group-item-text {
96 | color: $list-group-active-text-color;
97 | }
98 | }
99 | }
100 |
101 |
102 | // Contextual variants
103 | //
104 | // Add modifier classes to change text and background color on individual items.
105 | // Organizationally, this must come after the `:hover` states.
106 |
107 | @include list-group-item-variant(success, $state-success-bg, $state-success-text);
108 | @include list-group-item-variant(info, $state-info-bg, $state-info-text);
109 | @include list-group-item-variant(warning, $state-warning-bg, $state-warning-text);
110 | @include list-group-item-variant(danger, $state-danger-bg, $state-danger-text);
111 |
112 |
113 | // Custom content options
114 | //
115 | // Extra classes for creating well-formatted content within `.list-group-item`s.
116 |
117 | .list-group-item-heading {
118 | margin-top: 0;
119 | margin-bottom: 5px;
120 | }
121 | .list-group-item-text {
122 | margin-bottom: 0;
123 | line-height: 1.3;
124 | }
125 |
--------------------------------------------------------------------------------
/static/jade/about/pycontest.jade:
--------------------------------------------------------------------------------
1 | extends ../base
2 |
3 | block vars
4 | - var pageClass = "page-pycontest"
5 |
6 | block viewport
7 | .container
8 | h1 #PyConTest
9 |
10 | .row
11 | img.col-sm-6(src=pageUrl("/static/images/pycontest/prizes.jpg"), alt="#PyConTest prizes")
12 | img.col-sm-6(src=pageUrl("/static/images/pycontest/prizes-2.jpg"), alt="#PyConTest prizes")
13 |
14 | p.lead.pycontest-email.alert.alert-info.
15 | Send all submissions to #[a(href="mailto:pycontestcz@gmail.com") pycontestcz@gmail.com]
16 |
17 | ul
18 | li
19 | a(href="https://drive.google.com/folderview?id=0B76bfeqN4RF2VTdsay1Scmpac3c&usp=sharing") 1st challenge: 10:00 CET
20 | li
21 | a(href="https://drive.google.com/folderview?id=0B76bfeqN4RF2eVZNNlpwUDhFLTA&usp=sharing") 2nd challenge: 11:00 CET
22 | li
23 | a(href="https://drive.google.com/folderview?id=0B76bfeqN4RF2OG5waVJ2WWNrLW8&usp=sharing") 3rd challenge: 12:00 CET
24 | li
25 | a(href="https://drive.google.com/folderview?id=0B76bfeqN4RF2TzVsNWJqbnpMU0U&usp=sharing") 4th challenge: 13:00 CET
26 | li
27 | a(href="https://drive.google.com/folderview?id=0B76bfeqN4RF2bXBCUjB0VHJkb28&usp=sharing") 5th challenge: 14:00 CET
28 | li
29 | strong End of Challenge - 15th November at 10:00 CET
30 |
31 | h2 What is #PyConTest?
32 |
33 | p.
34 | PYCONTEST is a special programming challenge tailored for pycon.cz audience.
35 | The challenge is organized with help from pycon.cz official sponsors (Red Hat,
36 | Skypicker and Twisto) and Fedora.
37 |
38 | h2 What challenges can I expect?
39 |
40 | p.
41 | You will be presented with 5 challenges, 4 of which were created by our sponsors
42 | and will consist of solving specific tasks using Python. The 5th challenge will be a special
43 | social challenge. Please bear in mind that you can submit only one solution for each
44 | challenge, resubmitions are not allowed.
45 |
46 | h2 Where can I find assignments?
47 |
48 | p.
49 | Each challenge along with the description how to submit it will be announced every hour
50 | at the official @pyconcz twitter account with hashtag #pycontest,
51 | at the official #[a(href="https://cz.pycon.org/2015/") PyCon CZ] website
52 | and during the pycon.cz conference starting at 10:00am.
53 | Follow #[a(href="https://twitter.com/pyconcz") @pyconcz] now!
54 |
55 | h2 Conditions
56 |
57 | p.
58 | To be eligible for winning you must fullfil the following conditions:
59 |
60 | ol
61 | li you are a registered visitor of pycon.cz conference
62 | li you must solve and submit all challenges and they must be correct
63 |
64 | p.
65 | Also please note that by submitting your solutions you accept the fact
66 | that your code examples will be shared and that you can be contacted (now
67 | or in the future) by any of the sponsors (Red Hat, Skypicker, Twisto) for job offers.
68 |
69 | h2 What can I win?
70 |
71 | p Apart from cool job offers you may win the following prizes:
72 |
73 | ul
74 | li Garmin Fenix 3 Sapphire Performer
75 | li Nexus 5x Black 32GB
76 | li Audio-technica ATH-M50x
77 | li Kindle Paperwhite 3
78 |
79 | h2 How will winners be chosen?
80 |
81 | p.
82 | Winners will be determined by the results of the 5th challenge (don't be afraid,
83 | it won't be a 'like'ing race) but bear in mind that you still need to have the first
84 | four challenges submitted and they must all be correct. Winners will be
85 | announced during the lunch break at workshops on Sunday, November 15th.
86 |
--------------------------------------------------------------------------------
/static/scss/bootstrap/mixins/_grid.scss:
--------------------------------------------------------------------------------
1 | // Grid system
2 | //
3 | // Generate semantic grid columns with these mixins.
4 |
5 | // Centered container element
6 | @mixin container-fixed($gutter: $grid-gutter-width) {
7 | margin-right: auto;
8 | margin-left: auto;
9 | padding-left: ($gutter / 2);
10 | padding-right: ($gutter / 2);
11 | @include clearfix;
12 | }
13 |
14 | // Creates a wrapper for a series of columns
15 | @mixin make-row($gutter: $grid-gutter-width) {
16 | margin-left: ($gutter / -2);
17 | margin-right: ($gutter / -2);
18 | @include clearfix;
19 | }
20 |
21 | // Generate the extra small columns
22 | @mixin make-xs-column($columns, $gutter: $grid-gutter-width) {
23 | position: relative;
24 | float: left;
25 | width: percentage(($columns / $grid-columns));
26 | min-height: 1px;
27 | padding-left: ($gutter / 2);
28 | padding-right: ($gutter / 2);
29 | }
30 | @mixin make-xs-column-offset($columns) {
31 | margin-left: percentage(($columns / $grid-columns));
32 | }
33 | @mixin make-xs-column-push($columns) {
34 | left: percentage(($columns / $grid-columns));
35 | }
36 | @mixin make-xs-column-pull($columns) {
37 | right: percentage(($columns / $grid-columns));
38 | }
39 |
40 | // Generate the small columns
41 | @mixin make-sm-column($columns, $gutter: $grid-gutter-width) {
42 | position: relative;
43 | min-height: 1px;
44 | padding-left: ($gutter / 2);
45 | padding-right: ($gutter / 2);
46 |
47 | @media (min-width: $screen-sm-min) {
48 | float: left;
49 | width: percentage(($columns / $grid-columns));
50 | }
51 | }
52 | @mixin make-sm-column-offset($columns) {
53 | @media (min-width: $screen-sm-min) {
54 | margin-left: percentage(($columns / $grid-columns));
55 | }
56 | }
57 | @mixin make-sm-column-push($columns) {
58 | @media (min-width: $screen-sm-min) {
59 | left: percentage(($columns / $grid-columns));
60 | }
61 | }
62 | @mixin make-sm-column-pull($columns) {
63 | @media (min-width: $screen-sm-min) {
64 | right: percentage(($columns / $grid-columns));
65 | }
66 | }
67 |
68 | // Generate the medium columns
69 | @mixin make-md-column($columns, $gutter: $grid-gutter-width) {
70 | position: relative;
71 | min-height: 1px;
72 | padding-left: ($gutter / 2);
73 | padding-right: ($gutter / 2);
74 |
75 | @media (min-width: $screen-md-min) {
76 | float: left;
77 | width: percentage(($columns / $grid-columns));
78 | }
79 | }
80 | @mixin make-md-column-offset($columns) {
81 | @media (min-width: $screen-md-min) {
82 | margin-left: percentage(($columns / $grid-columns));
83 | }
84 | }
85 | @mixin make-md-column-push($columns) {
86 | @media (min-width: $screen-md-min) {
87 | left: percentage(($columns / $grid-columns));
88 | }
89 | }
90 | @mixin make-md-column-pull($columns) {
91 | @media (min-width: $screen-md-min) {
92 | right: percentage(($columns / $grid-columns));
93 | }
94 | }
95 |
96 | // Generate the large columns
97 | @mixin make-lg-column($columns, $gutter: $grid-gutter-width) {
98 | position: relative;
99 | min-height: 1px;
100 | padding-left: ($gutter / 2);
101 | padding-right: ($gutter / 2);
102 |
103 | @media (min-width: $screen-lg-min) {
104 | float: left;
105 | width: percentage(($columns / $grid-columns));
106 | }
107 | }
108 | @mixin make-lg-column-offset($columns) {
109 | @media (min-width: $screen-lg-min) {
110 | margin-left: percentage(($columns / $grid-columns));
111 | }
112 | }
113 | @mixin make-lg-column-push($columns) {
114 | @media (min-width: $screen-lg-min) {
115 | left: percentage(($columns / $grid-columns));
116 | }
117 | }
118 | @mixin make-lg-column-pull($columns) {
119 | @media (min-width: $screen-lg-min) {
120 | right: percentage(($columns / $grid-columns));
121 | }
122 | }
123 |
--------------------------------------------------------------------------------
/static/jade/workshops/index.jade:
--------------------------------------------------------------------------------
1 | extends ../base
2 |
3 | //- render single speaker
4 | mixin talk(workshop)
5 | .workshop
6 | //- img.avatar(src=avatar(workshop.avatar), alt='Photo of ' + workshop.name)
7 |
8 | h3
9 | = workshop.title
10 | small
11 | | by
12 | = workshop.name
13 |
14 | .misc
15 | small
16 | = workshop.time
17 | if workshop.github
18 | a.social.github(href="https://github.com/" + workshop.github)
19 | .fa.fa-github
20 | if workshop.twitter
21 | a.social.twitter(href="https://twitter.com/" + workshop.twitter)
22 | .fa.fa-twitter
23 |
24 | != md(workshop.abstract)
25 |
26 | if workshop.requirements
27 | .requirements
28 | h4 Requirements
29 | ul
30 | each requirement, index in workshop.requirements
31 | li!= md(requirement)
32 |
33 | block vars
34 | - var pageClass = "page-workshops"
35 | - var activePage = "workshops"
36 |
37 | block viewport
38 | .container
39 | h1 Sprints & Workshops
40 |
41 | h2
42 | | Breakfast
43 | small.workshop-time.
44 | 8:00
45 | p.
46 | Good morning, everyone!
47 | Let's start with something pleasant. Join us for delicious breakfast before the coding madness begins.
48 |
49 | h2 Workshops
50 | p.
51 | There will be six workshops in 3 rooms. One block of
52 | workshops before lunch and one after it.
53 |
54 | p.
55 | Please bring a laptop with a working Python interpreter and
56 | #[a(href="https://pip.readthedocs.org") pip].
57 | Some workshops have additional requirements.
58 |
59 | //- Iterate over workshops object (loaded in gulpfile from data/workshops.json)
60 | //- and render mixin talk() (see above)
61 | each workshop, index in workshops
62 | +talk(workshop)
63 |
64 | h2
65 | | Sprints
66 | small.workshop-time.
67 | 8:30 – 18:00
68 | p.
69 | Along workshops listed above, there's going to be an ongoing hacking &
70 | coding atmosphere. If you don't have your project you want to work on
71 | with other developers, you can join some of our pre-announced sprints:
72 |
73 | h3 Python 3 Porting
74 | p.
75 | Make your project Python 3 compatible or help a project that you like!
76 | Experienced porters can help you on your way, with guidance through porting
77 | strategies, best practices, libraries and automation. They can even
78 | give you advice how to convince the management/upstream that supporting
79 | Python 3 is a good idea.
80 |
81 | h3 The Docs Sprint
82 | p.
83 | The Doc-tors will focus mainly on Django, DjangoGirls, or Python
84 | documentation, but any open-source project is fair game.
85 | Come sprint with us – you can make your first open-source contribution,
86 | improve the docs of your successful library, or anything in between!
87 |
88 | h3 Your Sprint Here
89 | p.
90 | Additional sprints will be announced after lightning talks on Saturday.
91 |
92 | h2
93 | | Closing
94 | small.workshop-time.
95 | 18:00
96 | p.
97 | It was a looong weekend and it's time to go home. #[br]
98 | The first PyCon CZ is over. See you next year!
99 |
100 | hr
101 | a.anchor#directions
102 | h2 The venue
103 |
104 | p.lead.
105 | Spaces for sprints and workshops are provided by #[a(href="http://www.hubbrno.cz/en/") Impact Hub Brno].
106 |
107 | .map
108 | address
109 | p.strong Impact Hub Brno
110 | p 49°13'34.5"N 16°35'49.0"E
111 | p Cyrilská 7
112 | p 602 00 Brno
113 | p Czech Republic
114 |
115 | #map.impact
116 |
--------------------------------------------------------------------------------
/static/scss/bootstrap/_scaffolding.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Scaffolding
3 | // --------------------------------------------------
4 |
5 |
6 | // Reset the box-sizing
7 | //
8 | // Heads up! This reset may cause conflicts with some third-party widgets.
9 | // For recommendations on resolving such conflicts, see
10 | // http://getbootstrap.com/getting-started/#third-box-sizing
11 | * {
12 | @include box-sizing(border-box);
13 | }
14 | *:before,
15 | *:after {
16 | @include box-sizing(border-box);
17 | }
18 |
19 |
20 | // Body reset
21 |
22 | html {
23 | font-size: 10px;
24 | -webkit-tap-highlight-color: rgba(0,0,0,0);
25 | }
26 |
27 | body {
28 | font-family: $font-family-base;
29 | font-size: $font-size-base;
30 | line-height: $line-height-base;
31 | color: $text-color;
32 | background-color: $body-bg;
33 | }
34 |
35 | // Reset fonts for relevant elements
36 | input,
37 | button,
38 | select,
39 | textarea {
40 | font-family: inherit;
41 | font-size: inherit;
42 | line-height: inherit;
43 | }
44 |
45 |
46 | // Links
47 |
48 | a {
49 | color: $link-color;
50 | text-decoration: none;
51 |
52 | &:hover,
53 | &:focus {
54 | color: $link-hover-color;
55 | text-decoration: $link-hover-decoration;
56 | }
57 |
58 | &:focus {
59 | @include tab-focus;
60 | }
61 | }
62 |
63 |
64 | // Figures
65 | //
66 | // We reset this here because previously Normalize had no `figure` margins. This
67 | // ensures we don't break anyone's use of the element.
68 |
69 | figure {
70 | margin: 0;
71 | }
72 |
73 |
74 | // Images
75 |
76 | img {
77 | vertical-align: middle;
78 | }
79 |
80 | // Responsive images (ensure images don't scale beyond their parents)
81 | .img-responsive {
82 | @include img-responsive;
83 | }
84 |
85 | // Rounded corners
86 | .img-rounded {
87 | border-radius: $border-radius-large;
88 | }
89 |
90 | // Image thumbnails
91 | //
92 | // Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.
93 | .img-thumbnail {
94 | padding: $thumbnail-padding;
95 | line-height: $line-height-base;
96 | background-color: $thumbnail-bg;
97 | border: 1px solid $thumbnail-border;
98 | border-radius: $thumbnail-border-radius;
99 | @include transition(all .2s ease-in-out);
100 |
101 | // Keep them at most 100% wide
102 | @include img-responsive(inline-block);
103 | }
104 |
105 | // Perfect circle
106 | .img-circle {
107 | border-radius: 50%; // set radius in percents
108 | }
109 |
110 |
111 | // Horizontal rules
112 |
113 | hr {
114 | margin-top: $line-height-computed;
115 | margin-bottom: $line-height-computed;
116 | border: 0;
117 | border-top: 1px solid $hr-border;
118 | }
119 |
120 |
121 | // Only display content to screen readers
122 | //
123 | // See: http://a11yproject.com/posts/how-to-hide-content/
124 |
125 | .sr-only {
126 | position: absolute;
127 | width: 1px;
128 | height: 1px;
129 | margin: -1px;
130 | padding: 0;
131 | overflow: hidden;
132 | clip: rect(0,0,0,0);
133 | border: 0;
134 | }
135 |
136 | // Use in conjunction with .sr-only to only display content when it's focused.
137 | // Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
138 | // Credit: HTML5 Boilerplate
139 |
140 | .sr-only-focusable {
141 | &:active,
142 | &:focus {
143 | position: static;
144 | width: auto;
145 | height: auto;
146 | margin: 0;
147 | overflow: visible;
148 | clip: auto;
149 | }
150 | }
151 |
152 |
153 | // iOS "clickable elements" fix for role="button"
154 | //
155 | // Fixes "clickability" issue (and more generally, the firing of events such as focus as well)
156 | // for traditionally non-focusable elements with role="button"
157 | // see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
158 | // Upstream patch for normalize.css submitted: https://github.com/necolas/normalize.css/pull/379 - remove this fix once that is merged
159 |
160 | [role="button"] {
161 | cursor: pointer;
162 | }
--------------------------------------------------------------------------------
/static/jade/about/team.jade:
--------------------------------------------------------------------------------
1 | extends ../base
2 |
3 | block vars
4 | - var pageClass = "page-team"
5 |
6 | block viewport
7 | .container
8 | h1 Who is behind this?
9 |
10 | p.lead.
11 | PyCon is a community event. There are more than 30 people on our Slack
12 | channel and even more volunteers helped us by sending PR on #[a(href="https://github.com/pyvec/cz.pycon.org-2015") GitHub].
13 | If you drew the organization structure of the PyCon CZ team,
14 | #[strong you — the attendee] would be at the top. The incredible amount of
15 | volunteers would follow. There's little or no difference between organizers
16 | and volunteers, because we all do it in our free time without any claim
17 | for wage. Below is a list of our core team members.
18 |
19 | p.call-to-action.
20 | We are here for #[strong you].
21 |
22 | p.lead.
23 | .team-member
24 | img(src='https://pbs.twimg.com/profile_images/528237673563959297/yYJxmlNO.png', alt='Photo of Tomáš Ehrlich')
25 | p.name
26 | a(href="https://twitter.com/tomas_ehrlich") Tomáš Ehrlich
27 | p.description C3PO & Sponsors
28 |
29 | .team-member
30 | img(src='https://djangogirls.org/uploads/event/coaches/ja.jpg', alt='')
31 | p.name
32 | a(href="https://twitter.com/honzajavorek") Honza Javorek
33 | p.description Media & Promotion
34 |
35 | .team-member
36 | img(src='https://pbs.twimg.com/profile_images/598803746722816000/htcvwi8Z.jpg', alt='')
37 | p.name
38 | a(href="https://twitter.com/thatdocslady") Mikey Ariel
39 | p.description Tickets & Mentoring
40 |
41 | .team-member
42 | img(src='/'+year+'/static/images/team/natali.jpg', alt='')
43 | p.name
44 | a(href="https://www.facebook.com/natali.debosque") Natália Sedláková
45 | p.description DjangoGirls organizer
46 |
47 | .team-member
48 | img(src='https://sk.gravatar.com/userimage/8116216/d3c0082d1cc96ed303565970e447b254.jpg?size=400', alt='')
49 | p.name
50 | a(href="https://twitter.com/netman92") Stanislav Komanec
51 | p.description Website administrator
52 |
53 | .team-member
54 | img(src='https://scontent-vie1-1.xx.fbcdn.net/hphotos-xat1/t31.0-8/11536487_10206028010931663_6339000516200778558_o.jpg', alt='')
55 | p.name
56 | a(href="https://www.facebook.com/martin.matuszek") Martin Matuszek
57 | p.description Swag & Collectables
58 |
59 | .team-member
60 | img(src='https://scontent-vie1-1.xx.fbcdn.net/hphotos-xpt1/t31.0-8/10463609_10205508922336237_4028946742293895321_o.jpg', alt='')
61 | p.name
62 | a(href="https://twitter.com/styrax_raveon") Martin Hořák
63 | p.description Events manager
64 |
65 | .team-member
66 | img(src='https://scontent-fra3-1.xx.fbcdn.net/hprofile-xfa1/l/t31.0-1/c84.0.749.749/265598_10150223402570824_5262769_o.jpg', alt='')
67 | p.name
68 | a(href="https://twitter.com/honzakral") Honza Král
69 | p.description Speakers
70 |
71 | .team-member
72 | img(src='/'+year+'/static/images/team/petr.jpg', alt='')
73 | p.name
74 | a(href="http://encukou.cz") Petr Viktorin
75 | p.description Sprints & Workshops
76 |
77 | .team-member
78 | img(src='/'+year+'/static/images/team/vehrlich.jpg', alt='')
79 | p.name
80 | a(href="https://twitter.com/melront") Václav Ehrlich
81 | p.description Photographer
82 |
83 | .team-member
84 | img(src='/'+year+'/static/images/team/chris.jpg', alt='')
85 | p.name
86 | a(href="https://twitter.com/kejbaly2") Chris Ward
87 | p.description Sponsors
88 |
89 | .team-member
90 | img(src='https://pbs.twimg.com/profile_images/656421052692766720/0D5jHooY_400x400.jpg', alt='')
91 | p.name
92 | a(href="https://twitter.com/BaraDrb") Bára Drbohlavová
93 | p.description English proofreading
94 |
95 | .container
96 | p.call-to-action.
97 | Wanna become part of our team or just offer a hand?
98 | #[a(href="mailto:info@pycon.cz?subject=Please, add me to your Slack!") Join us] on Slack!
99 |
--------------------------------------------------------------------------------
/static/.scss-lint.yml:
--------------------------------------------------------------------------------
1 | # Default application configuration that all configurations inherit from.
2 | linters:
3 | BorderZero:
4 | enabled: true
5 |
6 | CapitalizationInSelector:
7 | enabled: false
8 |
9 | ColorKeyword:
10 | enabled: true
11 |
12 | Comment:
13 | enabled: false
14 |
15 | DebugStatement:
16 | enabled: true
17 |
18 | DeclarationOrder:
19 | enabled: true
20 |
21 | DuplicateProperty:
22 | enabled: false
23 |
24 | EmptyLineBetweenBlocks:
25 | enabled: true
26 | ignore_single_line_blocks: true
27 |
28 | EmptyRule:
29 | enabled: false
30 |
31 | FinalNewline:
32 | enabled: true
33 | present: true
34 |
35 | HexFormat:
36 | enabled: true
37 |
38 | IdSelector:
39 | enabled: false
40 |
41 | IdWithExtraneousSelector:
42 | enabled: true
43 |
44 | ImportantRule:
45 | enabled: false
46 |
47 | Indentation:
48 | enabled: false
49 |
50 | LeadingZero:
51 | enabled: false
52 |
53 | MergeableSelector:
54 | enabled: true
55 | force_nesting: true
56 |
57 | NameFormat:
58 | enabled: false
59 | convention: hyphenated_lowercase # or 'BEM', or a regex pattern
60 |
61 | NestingDepth:
62 | enabled: false
63 |
64 | PlaceholderInExtend:
65 | enabled: false
66 |
67 | PropertySortOrder:
68 | enabled: true
69 | order: ["position", "top", "right", "bottom", "left", "z-index", "display", "visibility", "overflow", "overflow-x", "overflow-y", "float", "clear", "table-layout", "border-collapse", "empty-cells", "box-sizing", "width", "min-width", "max-width", "height", "min-height", "max-height", "margin", "margin-top", "margin-right", "margin-bottom", "margin-left", "padding", "padding-top", "padding-right", "padding-bottom", "padding-left", "border", "border-width", "border-style", "border-color", "border-radius", "border-top", "border-top-width", "border-top-style", "border-top-color", "border-right", "border-right-width", "border-right-style", "border-right-color", "border-bottom", "border-bottom-width", "border-bottom-style", "border-bottom-color", "border-left", "border-left-width", "border-left-style", "border-left-color", "border-top-left-radius", "border-top-right-radius", "border-bottom-right-radius", "border-bottom-left-radius", "white-space", "content", "color", "background", "background-color", "background-image", "background-repeat", "background-attachment", "background-position", "background-size", "opacity", "font", "font-weight", "font-style", "font-variant", "font-size", "font-family", "letter-spacing", "line-height", "list-style", "list-style-type", "list-style-position", "list-style-image", "outline", "outline-width", "outline-style", "outline-color", "text-align", "text-decoration", "text-indent", "text-transform", "text-shadow", "animation", "transform", "transition", "box-shadow"]
70 | ignore_unspecified: true
71 |
72 | PropertySpelling:
73 | enabled: true
74 | extra_properties: ['*behavior']
75 |
76 | QualifyingElement:
77 | enabled: false
78 |
79 | SelectorDepth:
80 | enabled: true
81 | max_depth: 3
82 |
83 | SelectorFormat:
84 | enabled: false
85 |
86 | Shorthand:
87 | enabled: true
88 |
89 | SingleLinePerProperty:
90 | enabled: false
91 |
92 | SingleLinePerSelector:
93 | enabled: true
94 |
95 | SpaceAfterComma:
96 | enabled: true
97 |
98 | SpaceAfterPropertyColon:
99 | enabled: true
100 | allow_extra_spaces: false
101 |
102 | SpaceAfterPropertyName:
103 | enabled: true
104 |
105 | SpaceBeforeBrace:
106 | enabled: true
107 | allow_single_line_padding: false
108 |
109 | SpaceBetweenParens:
110 | enabled: false
111 |
112 | StringQuotes:
113 | enabled: true
114 | style: double_quotes
115 |
116 | TrailingSemicolonAfterPropertyValue:
117 | enabled: true
118 |
119 | UnnecessaryMantissa:
120 | enabled: true
121 |
122 | UrlFormat:
123 | enabled: true
124 |
125 | UrlQuotes:
126 | enabled: true
127 |
128 | VendorPrefixes:
129 | enabled: false
130 |
131 | ZeroUnit:
132 | enabled: true
133 |
134 | Compass::*:
135 | enabled: false
136 |
--------------------------------------------------------------------------------
/static/scss/bootstrap/_popovers.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Popovers
3 | // --------------------------------------------------
4 |
5 |
6 | .popover {
7 | position: absolute;
8 | top: 0;
9 | left: 0;
10 | z-index: $zindex-popover;
11 | display: none;
12 | max-width: $popover-max-width;
13 | padding: 1px;
14 | // Reset font and text properties given new insertion method
15 | font-family: $font-family-base;
16 | font-size: $font-size-base;
17 | font-weight: normal;
18 | line-height: $line-height-base;
19 | text-align: left;
20 | background-color: $popover-bg;
21 | background-clip: padding-box;
22 | border: 1px solid $popover-fallback-border-color;
23 | border: 1px solid $popover-border-color;
24 | border-radius: $border-radius-large;
25 | @include box-shadow(0 5px 10px rgba(0,0,0,.2));
26 |
27 | // Overrides for proper insertion
28 | white-space: normal;
29 |
30 | // Offset the popover to account for the popover arrow
31 | &.top { margin-top: -$popover-arrow-width; }
32 | &.right { margin-left: $popover-arrow-width; }
33 | &.bottom { margin-top: $popover-arrow-width; }
34 | &.left { margin-left: -$popover-arrow-width; }
35 | }
36 |
37 | .popover-title {
38 | margin: 0; // reset heading margin
39 | padding: 8px 14px;
40 | font-size: $font-size-base;
41 | background-color: $popover-title-bg;
42 | border-bottom: 1px solid darken($popover-title-bg, 5%);
43 | border-radius: ($border-radius-large - 1) ($border-radius-large - 1) 0 0;
44 | }
45 |
46 | .popover-content {
47 | padding: 9px 14px;
48 | }
49 |
50 | // Arrows
51 | //
52 | // .arrow is outer, .arrow:after is inner
53 |
54 | .popover > .arrow {
55 | &,
56 | &:after {
57 | position: absolute;
58 | display: block;
59 | width: 0;
60 | height: 0;
61 | border-color: transparent;
62 | border-style: solid;
63 | }
64 | }
65 | .popover > .arrow {
66 | border-width: $popover-arrow-outer-width;
67 | }
68 | .popover > .arrow:after {
69 | border-width: $popover-arrow-width;
70 | content: "";
71 | }
72 |
73 | .popover {
74 | &.top > .arrow {
75 | left: 50%;
76 | margin-left: -$popover-arrow-outer-width;
77 | border-bottom-width: 0;
78 | border-top-color: $popover-arrow-outer-fallback-color; // IE8 fallback
79 | border-top-color: $popover-arrow-outer-color;
80 | bottom: -$popover-arrow-outer-width;
81 | &:after {
82 | content: " ";
83 | bottom: 1px;
84 | margin-left: -$popover-arrow-width;
85 | border-bottom-width: 0;
86 | border-top-color: $popover-arrow-color;
87 | }
88 | }
89 | &.right > .arrow {
90 | top: 50%;
91 | left: -$popover-arrow-outer-width;
92 | margin-top: -$popover-arrow-outer-width;
93 | border-left-width: 0;
94 | border-right-color: $popover-arrow-outer-fallback-color; // IE8 fallback
95 | border-right-color: $popover-arrow-outer-color;
96 | &:after {
97 | content: " ";
98 | left: 1px;
99 | bottom: -$popover-arrow-width;
100 | border-left-width: 0;
101 | border-right-color: $popover-arrow-color;
102 | }
103 | }
104 | &.bottom > .arrow {
105 | left: 50%;
106 | margin-left: -$popover-arrow-outer-width;
107 | border-top-width: 0;
108 | border-bottom-color: $popover-arrow-outer-fallback-color; // IE8 fallback
109 | border-bottom-color: $popover-arrow-outer-color;
110 | top: -$popover-arrow-outer-width;
111 | &:after {
112 | content: " ";
113 | top: 1px;
114 | margin-left: -$popover-arrow-width;
115 | border-top-width: 0;
116 | border-bottom-color: $popover-arrow-color;
117 | }
118 | }
119 |
120 | &.left > .arrow {
121 | top: 50%;
122 | right: -$popover-arrow-outer-width;
123 | margin-top: -$popover-arrow-outer-width;
124 | border-right-width: 0;
125 | border-left-color: $popover-arrow-outer-fallback-color; // IE8 fallback
126 | border-left-color: $popover-arrow-outer-color;
127 | &:after {
128 | content: " ";
129 | right: 1px;
130 | border-right-width: 0;
131 | border-left-color: $popover-arrow-color;
132 | bottom: -$popover-arrow-width;
133 | }
134 | }
135 | }
136 |
--------------------------------------------------------------------------------
/static/scss/bootstrap/_modals.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Modals
3 | // --------------------------------------------------
4 |
5 | // .modal-open - body class for killing the scroll
6 | // .modal - container to scroll within
7 | // .modal-dialog - positioning shell for the actual modal
8 | // .modal-content - actual modal w/ bg and corners and shit
9 |
10 | // Kill the scroll on the body
11 | .modal-open {
12 | overflow: hidden;
13 | }
14 |
15 | // Container that the modal scrolls within
16 | .modal {
17 | display: none;
18 | overflow: hidden;
19 | position: fixed;
20 | top: 0;
21 | right: 0;
22 | bottom: 0;
23 | left: 0;
24 | z-index: $zindex-modal;
25 | -webkit-overflow-scrolling: touch;
26 |
27 | // Prevent Chrome on Windows from adding a focus outline. For details, see
28 | // https://github.com/twbs/bootstrap/pull/10951.
29 | outline: 0;
30 |
31 | // When fading in the modal, animate it to slide down
32 | &.fade .modal-dialog {
33 | @include translate(0, -25%);
34 | @include transition-transform(0.3s ease-out);
35 | }
36 | &.in .modal-dialog { @include translate(0, 0) }
37 | }
38 | .modal-open .modal {
39 | overflow-x: hidden;
40 | overflow-y: auto;
41 | }
42 |
43 | // Shell div to position the modal with bottom padding
44 | .modal-dialog {
45 | position: relative;
46 | width: auto;
47 | margin: 10px;
48 | }
49 |
50 | // Actual modal
51 | .modal-content {
52 | position: relative;
53 | background-color: $modal-content-bg;
54 | border: 1px solid $modal-content-fallback-border-color; //old browsers fallback (ie8 etc)
55 | border: 1px solid $modal-content-border-color;
56 | border-radius: $border-radius-large;
57 | @include box-shadow(0 3px 9px rgba(0,0,0,.5));
58 | background-clip: padding-box;
59 | // Remove focus outline from opened modal
60 | outline: 0;
61 | }
62 |
63 | // Modal background
64 | .modal-backdrop {
65 | position: fixed;
66 | top: 0;
67 | right: 0;
68 | bottom: 0;
69 | left: 0;
70 | z-index: $zindex-modal-background;
71 | background-color: $modal-backdrop-bg;
72 | // Fade for backdrop
73 | &.fade { @include opacity(0); }
74 | &.in { @include opacity($modal-backdrop-opacity); }
75 | }
76 |
77 | // Modal header
78 | // Top section of the modal w/ title and dismiss
79 | .modal-header {
80 | padding: $modal-title-padding;
81 | border-bottom: 1px solid $modal-header-border-color;
82 | min-height: ($modal-title-padding + $modal-title-line-height);
83 | }
84 | // Close icon
85 | .modal-header .close {
86 | margin-top: -2px;
87 | }
88 |
89 | // Title text within header
90 | .modal-title {
91 | margin: 0;
92 | line-height: $modal-title-line-height;
93 | }
94 |
95 | // Modal body
96 | // Where all modal content resides (sibling of .modal-header and .modal-footer)
97 | .modal-body {
98 | position: relative;
99 | padding: $modal-inner-padding;
100 | }
101 |
102 | // Footer (for actions)
103 | .modal-footer {
104 | padding: $modal-inner-padding;
105 | text-align: right; // right align buttons
106 | border-top: 1px solid $modal-footer-border-color;
107 | @include clearfix; // clear it in case folks use .pull-* classes on buttons
108 |
109 | // Properly space out buttons
110 | .btn + .btn {
111 | margin-left: 5px;
112 | margin-bottom: 0; // account for input[type="submit"] which gets the bottom margin like all other inputs
113 | }
114 | // but override that for button groups
115 | .btn-group .btn + .btn {
116 | margin-left: -1px;
117 | }
118 | // and override it for block buttons as well
119 | .btn-block + .btn-block {
120 | margin-left: 0;
121 | }
122 | }
123 |
124 | // Measure scrollbar width for padding body during modal show/hide
125 | .modal-scrollbar-measure {
126 | position: absolute;
127 | top: -9999px;
128 | width: 50px;
129 | height: 50px;
130 | overflow: scroll;
131 | }
132 |
133 | // Scale up the modal
134 | @media (min-width: $screen-sm-min) {
135 | // Automatically set modal's width for larger viewports
136 | .modal-dialog {
137 | width: $modal-md;
138 | margin: 30px auto;
139 | }
140 | .modal-content {
141 | @include box-shadow(0 5px 15px rgba(0,0,0,.5));
142 | }
143 |
144 | // Modal sizes
145 | .modal-sm { width: $modal-sm; }
146 | }
147 |
148 | @media (min-width: $screen-md-min) {
149 | .modal-lg { width: $modal-lg; }
150 | }
151 |
--------------------------------------------------------------------------------
/static/scss/bootstrap/_buttons.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Buttons
3 | // --------------------------------------------------
4 |
5 |
6 | // Base styles
7 | // --------------------------------------------------
8 |
9 | .btn {
10 | display: inline-block;
11 | margin-bottom: 0; // For input.btn
12 | font-weight: $btn-font-weight;
13 | text-align: center;
14 | vertical-align: middle;
15 | touch-action: manipulation;
16 | cursor: pointer;
17 | background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
18 | border: 1px solid transparent;
19 | white-space: nowrap;
20 | @include button-size($padding-base-vertical, $padding-base-horizontal, $font-size-base, $line-height-base, $border-radius-base);
21 | @include user-select(none);
22 |
23 | &,
24 | &:active,
25 | &.active {
26 | &:focus,
27 | &.focus {
28 | @include tab-focus;
29 | }
30 | }
31 |
32 | &:hover,
33 | &:focus,
34 | &.focus {
35 | color: $btn-default-color;
36 | text-decoration: none;
37 | }
38 |
39 | &:active,
40 | &.active {
41 | outline: 0;
42 | background-image: none;
43 | @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
44 | }
45 |
46 | &.disabled,
47 | &[disabled],
48 | fieldset[disabled] & {
49 | cursor: $cursor-disabled;
50 | pointer-events: none; // Future-proof disabling of clicks
51 | @include opacity(.65);
52 | @include box-shadow(none);
53 | }
54 | }
55 |
56 |
57 | // Alternate buttons
58 | // --------------------------------------------------
59 |
60 | .btn-default {
61 | @include button-variant($btn-default-color, $btn-default-bg, $btn-default-border);
62 | }
63 | .btn-primary {
64 | @include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border);
65 | }
66 | // Success appears as green
67 | .btn-success {
68 | @include button-variant($btn-success-color, $btn-success-bg, $btn-success-border);
69 | }
70 | // Info appears as blue-green
71 | .btn-info {
72 | @include button-variant($btn-info-color, $btn-info-bg, $btn-info-border);
73 | }
74 | // Warning appears as orange
75 | .btn-warning {
76 | @include button-variant($btn-warning-color, $btn-warning-bg, $btn-warning-border);
77 | }
78 | // Danger and error appear as red
79 | .btn-danger {
80 | @include button-variant($btn-danger-color, $btn-danger-bg, $btn-danger-border);
81 | }
82 |
83 |
84 | // Link buttons
85 | // -------------------------
86 |
87 | // Make a button look and behave like a link
88 | .btn-link {
89 | color: $link-color;
90 | font-weight: normal;
91 | border-radius: 0;
92 |
93 | &,
94 | &:active,
95 | &.active,
96 | &[disabled],
97 | fieldset[disabled] & {
98 | background-color: transparent;
99 | @include box-shadow(none);
100 | }
101 | &,
102 | &:hover,
103 | &:focus,
104 | &:active {
105 | border-color: transparent;
106 | }
107 | &:hover,
108 | &:focus {
109 | color: $link-hover-color;
110 | text-decoration: $link-hover-decoration;
111 | background-color: transparent;
112 | }
113 | &[disabled],
114 | fieldset[disabled] & {
115 | &:hover,
116 | &:focus {
117 | color: $btn-link-disabled-color;
118 | text-decoration: none;
119 | }
120 | }
121 | }
122 |
123 |
124 | // Button Sizes
125 | // --------------------------------------------------
126 |
127 | .btn-lg {
128 | // line-height: ensure even-numbered height of button next to large input
129 | @include button-size($padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $border-radius-large);
130 | }
131 | .btn-sm {
132 | // line-height: ensure proper height of button next to small input
133 | @include button-size($padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $border-radius-small);
134 | }
135 | .btn-xs {
136 | @include button-size($padding-xs-vertical, $padding-xs-horizontal, $font-size-small, $line-height-small, $border-radius-small);
137 | }
138 |
139 |
140 | // Block button
141 | // --------------------------------------------------
142 |
143 | .btn-block {
144 | display: block;
145 | width: 100%;
146 | }
147 |
148 | // Vertically space out multiple block buttons
149 | .btn-block + .btn-block {
150 | margin-top: 5px;
151 | }
152 |
153 | // Specificity overrides
154 | input[type="submit"],
155 | input[type="reset"],
156 | input[type="button"] {
157 | &.btn-block {
158 | width: 100%;
159 | }
160 | }
161 |
--------------------------------------------------------------------------------
/static/scss/bootstrap/mixins/_gradients.scss:
--------------------------------------------------------------------------------
1 | // Gradients
2 |
3 |
4 |
5 | // Horizontal gradient, from left to right
6 | //
7 | // Creates two color stops, start and end, by specifying a color and position for each color stop.
8 | // Color stops are not available in IE9 and below.
9 | @mixin gradient-horizontal($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) {
10 | background-image: -webkit-linear-gradient(left, $start-color $start-percent, $end-color $end-percent); // Safari 5.1-6, Chrome 10+
11 | background-image: -o-linear-gradient(left, $start-color $start-percent, $end-color $end-percent); // Opera 12
12 | background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
13 | background-repeat: repeat-x;
14 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=1); // IE9 and down
15 | }
16 |
17 | // Vertical gradient, from top to bottom
18 | //
19 | // Creates two color stops, start and end, by specifying a color and position for each color stop.
20 | // Color stops are not available in IE9 and below.
21 | @mixin gradient-vertical($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) {
22 | background-image: -webkit-linear-gradient(top, $start-color $start-percent, $end-color $end-percent); // Safari 5.1-6, Chrome 10+
23 | background-image: -o-linear-gradient(top, $start-color $start-percent, $end-color $end-percent); // Opera 12
24 | background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
25 | background-repeat: repeat-x;
26 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=0); // IE9 and down
27 | }
28 |
29 | @mixin gradient-directional($start-color: #555, $end-color: #333, $deg: 45deg) {
30 | background-repeat: repeat-x;
31 | background-image: -webkit-linear-gradient($deg, $start-color, $end-color); // Safari 5.1-6, Chrome 10+
32 | background-image: -o-linear-gradient($deg, $start-color, $end-color); // Opera 12
33 | background-image: linear-gradient($deg, $start-color, $end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
34 | }
35 | @mixin gradient-horizontal-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) {
36 | background-image: -webkit-linear-gradient(left, $start-color, $mid-color $color-stop, $end-color);
37 | background-image: -o-linear-gradient(left, $start-color, $mid-color $color-stop, $end-color);
38 | background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);
39 | background-repeat: no-repeat;
40 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=1); // IE9 and down, gets no color-stop at all for proper fallback
41 | }
42 | @mixin gradient-vertical-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) {
43 | background-image: -webkit-linear-gradient($start-color, $mid-color $color-stop, $end-color);
44 | background-image: -o-linear-gradient($start-color, $mid-color $color-stop, $end-color);
45 | background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);
46 | background-repeat: no-repeat;
47 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=0); // IE9 and down, gets no color-stop at all for proper fallback
48 | }
49 | @mixin gradient-radial($inner-color: #555, $outer-color: #333) {
50 | background-image: -webkit-radial-gradient(circle, $inner-color, $outer-color);
51 | background-image: radial-gradient(circle, $inner-color, $outer-color);
52 | background-repeat: no-repeat;
53 | }
54 | @mixin gradient-striped($color: rgba(255,255,255,.15), $angle: 45deg) {
55 | background-image: -webkit-linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);
56 | background-image: -o-linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);
57 | background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);
58 | }
59 |
--------------------------------------------------------------------------------
/code-of-conduct.md:
--------------------------------------------------------------------------------
1 | PyCon CZ is a community conference intended for networking and collaboration in the developer community.
2 |
3 | We value the participation of each member of the Python community and want all attendees to have an enjoyable and fulfilling experience. Accordingly, all attendees are expected to show respect and courtesy to other attendees throughout the conference and at all conference events, whether officially sponsored by PyCon or not.
4 |
5 | To make clear what is expected, all delegates/attendees, speakers, exhibitors, organizers and volunteers at any PyCon event are required to conform to the following Code of Conduct. Organizers will enforce this code throughout the event.
6 |
7 | The Short Version
8 | -----------------
9 |
10 | PyCon is dedicated to providing a harassment-free conference experience for everyone, regardless of gender, sexual orientation, disability, physical appearance, body size, race, or religion. We do not tolerate harassment of conference participants in any form.
11 |
12 | All communication should be appropriate for a professional audience including people of many different backgrounds. Sexual language and imagery is not appropriate for any conference venue, including talks.
13 |
14 | Be kind to others. Do not insult or put down other attendees. Behave professionally. Remember that harassment and sexist, racist, or exclusionary jokes are not appropriate for PyCon.
15 |
16 | Attendees violating these rules may be asked to leave the conference without a refund at the sole discretion of the conference organizers.
17 |
18 | Thank you for helping make this a welcoming, friendly event for all.
19 |
20 | The Longer Version
21 | ------------------
22 |
23 | Harassment includes offensive verbal comments related to gender, sexual orientation, disability, physical appearance, body size, race, religion, sexual images in public spaces, deliberate intimidation, stalking, following, harassing photography or recording, sustained disruption of talks or other events, inappropriate physical contact, and unwelcome sexual attention.
24 |
25 | Participants asked to stop any harassing behavior are expected to comply immediately.
26 |
27 | Exhibitors in the expo hall, sponsor or vendor booths, or similar activities are also subject to the anti-harassment policy. In particular, exhibitors should not use sexualized images, activities, or other material. Booth staff (including volunteers) should not use sexualized clothing/uniforms/costumes, or otherwise create a sexualized environment.
28 |
29 | Be careful in the words that you choose. Remember that sexist, racist, and other exclusionary jokes can be offensive to those around you. Excessive swearing and offensive jokes are not appropriate for PyCon.
30 |
31 | If a participant engages in behavior that violates this code of conduct, the conference organizers may take any action they deem appropriate, including warning the offender or expulsion from the conference with no refund.
32 |
33 | Contact Information
34 | -------------------
35 |
36 | If you are being harassed, notice that someone else is being harassed, or have any other concerns, please contact a member of conference staff. Conference staff will be wearing "Staff" t-shirts.
37 |
38 | If the matter is especially urgent, please call/contact any of these individuals:
39 |
40 | - Tomáš Ehrlich at +420 608 219 889
41 |
42 | Conference staff will be happy to help participants contact venue security or local law enforcement, provide escorts, or otherwise assist those experiencing harassment to feel safe for the duration of the conference. We value your attendance.
43 |
44 | Procedure for Handling Harassment
45 | ------------------------------------------
46 | - [Attendee Procedure for incident handling](/2013/about/code-of-conduct/harassment-incidents/)
47 | - [Staff Procedure for incident handling](https://us.pycon.org/2013/about/code-of-conduct/harassment-incidents-staff/)
48 |
49 | License
50 | -------
51 |
52 | This Code of Conduct was forked from the example policy from the [Geek Feminism wiki, created by the Ada Initiative and other volunteers.](http://geekfeminism.wikia.com/wiki/Conference_anti-harassment/Policy) which is under a Creative Commons Zero license.
53 |
54 |
Conference Code of Conduct by
https://us.pycon.org/2013/about/code-of-conduct/ is licensed under a
Creative Commons Attribution 3.0 Unported License.
55 |
--------------------------------------------------------------------------------
/static/scss/pycon/_navbar.scss:
--------------------------------------------------------------------------------
1 | // size if PyCon logo (not displayed on homepage)
2 | $brand-size: 45px;
3 |
4 | .navbar {
5 | position: fixed;
6 | top: 0;
7 | right: 0;
8 | left: 0;
9 | z-index: 1000;
10 | height: $navbar-height;
11 |
12 | border-bottom: 1px solid $brand-silent;
13 | background-color: $navbar-bg;
14 |
15 |
16 | .pycon-logo {
17 | position: absolute;
18 | top: 50%;
19 | right: 0;
20 | width: $brand-size;
21 | height: $brand-size;
22 | transform: translate(-$brand-size/2, -$brand-size/2);
23 |
24 | .home & {
25 | display: none;
26 | }
27 |
28 | @media (min-width: $screen-xs) {
29 | left: 50%;
30 | }
31 | }
32 | }
33 |
34 | .canvas {
35 | transition: all .2s ease;
36 |
37 | .overlay {
38 | position: fixed;
39 | top: 0;
40 | right: 0;
41 | bottom: 0;
42 | left: 0;
43 | z-index: 999;
44 | display: none;
45 | background-color: rgba(0, 0, 0, 1);
46 | opacity: 0;
47 | // pointer-events: none;
48 | transition: opacity 0.2s ease;
49 |
50 | .open & {
51 | display: block;
52 | opacity: 0.8;
53 | // pointer-events: all;
54 | }
55 | }
56 | }
57 |
58 | .navbar-nav {
59 | position: absolute;
60 | top: $navbar-height;
61 | margin: 0;
62 | padding: 0;
63 | list-style: none;
64 |
65 | a {
66 | color: $text-color;
67 | text-decoration: none;
68 |
69 | &:hover,
70 | &:focus {
71 | text-decoration: none;
72 | }
73 | }
74 |
75 | .date {
76 | display: block;
77 | font-size: 12px;
78 | }
79 | }
80 |
81 | .navbar-toggle {
82 | $toggle-size: 36px;
83 | position: absolute;
84 | top: ($navbar-height - $toggle-size) / 2;
85 | left: 10px;
86 | width: $toggle-size;
87 | height: $toggle-size;
88 | padding: 0;
89 | border: 1px solid $brand-silent;
90 | background-color: $body-bg;
91 | }
92 |
93 | @media (max-width: $screen-xs-max) {
94 | .navbar-nav {
95 | position: fixed;
96 | bottom: 0;
97 | width: $offcanvas-navbar-width;
98 | border-right: 1px solid $brand-silent;
99 | background-color: $body-bg;
100 | transform: translateX(-100%);
101 | transition: all .2s ease;
102 |
103 | .open & {
104 | transform: translateX(0);
105 | }
106 |
107 | a {
108 | display: block;
109 | padding: 15px 10px;
110 | border-bottom: 1px solid $brand-silent;
111 | color: $text-color;
112 | text-decoration: none;
113 |
114 | &:hover,
115 | &:focus,
116 | &:active {
117 | color: $text-inverted;
118 | background-color: $brand-primary;
119 | text-decoration: none;
120 | }
121 | }
122 | }
123 | }
124 |
125 | @media (min-width: $screen-sm) {
126 | .navbar-nav {
127 | // space between items
128 | $item-padding: 40px;
129 | // enlarged space between middle items (placeholder for brand-logo)
130 | $brand-placeholder: 25px + ($item-padding + $brand-size) / 2;
131 |
132 | position: relative;
133 | top: 0;
134 |
135 | // Custom offset for "visual" centering of menu
136 | left: 45px;
137 |
138 | padding: 0;
139 | // asymetric padding to make navbar items in visual middle
140 | // (two-lines items shift visualy whole menu a bit up)
141 | padding-top: 12px;
142 | padding-bottom: 8px;
143 | text-align: center;
144 |
145 | li {
146 | display: inline-block;
147 | margin: 0 $item-padding/2;
148 |
149 | font-size: 18px;
150 | line-height: 1.3;
151 |
152 | text-align: left;
153 | vertical-align: middle;
154 |
155 | &:after {
156 | display: block;
157 | width: 0;
158 | height: 2px;
159 | // margin: auto;
160 | content: " ";
161 | transition: width .2s ease, background-color .2s ease;
162 | }
163 |
164 | &.active:after,
165 | &:active:after,
166 | &:hover:after {
167 | width: 100%;
168 | background-color: $brand-secondary;
169 | transition: width .4s ease, background-color .4s ease;
170 | }
171 | }
172 |
173 | .videos {
174 | margin-right: $brand-placeholder;
175 |
176 | // a {
177 | // padding: 8px 20px;
178 | // border: 1px solid $brand-primary;
179 | // border-radius: 8px;
180 | // color: $text-inverted;
181 | // background-color: $brand-primary;
182 | //
183 | // &:hover,
184 | // &:active {
185 | // background-color: lighten($brand-primary, 10%);
186 | // }
187 | // }
188 | }
189 |
190 | .photos {
191 | margin-left: $brand-placeholder;
192 | }
193 |
194 | .videos,
195 | .photos {
196 | a {
197 | color: $brand-secondary;
198 | }
199 | }
200 | }
201 |
202 | .navbar-toggle {
203 | display: none;
204 | }
205 | }
206 |
--------------------------------------------------------------------------------
/static/scss/bootstrap/_input-groups.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Input groups
3 | // --------------------------------------------------
4 |
5 | // Base styles
6 | // -------------------------
7 | .input-group {
8 | position: relative; // For dropdowns
9 | display: table;
10 | border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table
11 |
12 | // Undo padding and float of grid classes
13 | &[class*="col-"] {
14 | float: none;
15 | padding-left: 0;
16 | padding-right: 0;
17 | }
18 |
19 | .form-control {
20 | // Ensure that the input is always above the *appended* addon button for
21 | // proper border colors.
22 | position: relative;
23 | z-index: 2;
24 |
25 | // IE9 fubars the placeholder attribute in text inputs and the arrows on
26 | // select elements in input groups. To fix it, we float the input. Details:
27 | // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855
28 | float: left;
29 |
30 | width: 100%;
31 | margin-bottom: 0;
32 | }
33 | }
34 |
35 | // Sizing options
36 | //
37 | // Remix the default form control sizing classes into new ones for easier
38 | // manipulation.
39 |
40 | .input-group-lg > .form-control,
41 | .input-group-lg > .input-group-addon,
42 | .input-group-lg > .input-group-btn > .btn {
43 | @extend .input-lg;
44 | }
45 | .input-group-sm > .form-control,
46 | .input-group-sm > .input-group-addon,
47 | .input-group-sm > .input-group-btn > .btn {
48 | @extend .input-sm;
49 | }
50 |
51 |
52 | // Display as table-cell
53 | // -------------------------
54 | .input-group-addon,
55 | .input-group-btn,
56 | .input-group .form-control {
57 | display: table-cell;
58 |
59 | &:not(:first-child):not(:last-child) {
60 | border-radius: 0;
61 | }
62 | }
63 | // Addon and addon wrapper for buttons
64 | .input-group-addon,
65 | .input-group-btn {
66 | width: 1%;
67 | white-space: nowrap;
68 | vertical-align: middle; // Match the inputs
69 | }
70 |
71 | // Text input groups
72 | // -------------------------
73 | .input-group-addon {
74 | padding: $padding-base-vertical $padding-base-horizontal;
75 | font-size: $font-size-base;
76 | font-weight: normal;
77 | line-height: 1;
78 | color: $input-color;
79 | text-align: center;
80 | background-color: $input-group-addon-bg;
81 | border: 1px solid $input-group-addon-border-color;
82 | border-radius: $border-radius-base;
83 |
84 | // Sizing
85 | &.input-sm {
86 | padding: $padding-small-vertical $padding-small-horizontal;
87 | font-size: $font-size-small;
88 | border-radius: $border-radius-small;
89 | }
90 | &.input-lg {
91 | padding: $padding-large-vertical $padding-large-horizontal;
92 | font-size: $font-size-large;
93 | border-radius: $border-radius-large;
94 | }
95 |
96 | // Nuke default margins from checkboxes and radios to vertically center within.
97 | input[type="radio"],
98 | input[type="checkbox"] {
99 | margin-top: 0;
100 | }
101 | }
102 |
103 | // Reset rounded corners
104 | .input-group .form-control:first-child,
105 | .input-group-addon:first-child,
106 | .input-group-btn:first-child > .btn,
107 | .input-group-btn:first-child > .btn-group > .btn,
108 | .input-group-btn:first-child > .dropdown-toggle,
109 | .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
110 | .input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
111 | @include border-right-radius(0);
112 | }
113 | .input-group-addon:first-child {
114 | border-right: 0;
115 | }
116 | .input-group .form-control:last-child,
117 | .input-group-addon:last-child,
118 | .input-group-btn:last-child > .btn,
119 | .input-group-btn:last-child > .btn-group > .btn,
120 | .input-group-btn:last-child > .dropdown-toggle,
121 | .input-group-btn:first-child > .btn:not(:first-child),
122 | .input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
123 | @include border-left-radius(0);
124 | }
125 | .input-group-addon:last-child {
126 | border-left: 0;
127 | }
128 |
129 | // Button input groups
130 | // -------------------------
131 | .input-group-btn {
132 | position: relative;
133 | // Jankily prevent input button groups from wrapping with `white-space` and
134 | // `font-size` in combination with `inline-block` on buttons.
135 | font-size: 0;
136 | white-space: nowrap;
137 |
138 | // Negative margin for spacing, position for bringing hovered/focused/actived
139 | // element above the siblings.
140 | > .btn {
141 | position: relative;
142 | + .btn {
143 | margin-left: -1px;
144 | }
145 | // Bring the "active" button to the front
146 | &:hover,
147 | &:focus,
148 | &:active {
149 | z-index: 2;
150 | }
151 | }
152 |
153 | // Negative margin to only have a 1px border between the two
154 | &:first-child {
155 | > .btn,
156 | > .btn-group {
157 | margin-right: -1px;
158 | }
159 | }
160 | &:last-child {
161 | > .btn,
162 | > .btn-group {
163 | margin-left: -1px;
164 | }
165 | }
166 | }
167 |
--------------------------------------------------------------------------------
/static/jade/talks/index.jade:
--------------------------------------------------------------------------------
1 | extends ../base
2 |
3 | //- render single speaker
4 | mixin talk(speaker)
5 | .talk-description
6 | h3.speaker
7 | = speaker.name
8 |
9 | .misc
10 | small=speaker.time
11 | small.track
12 | = speaker.track
13 | | branch
14 | a.social.github(href="https://github.com/" + speaker.github)
15 | .fa.fa-github
16 | a.social.twitter(href="https://twitter.com/" + speaker.twitter)
17 | .fa.fa-twitter
18 |
19 | p= speaker.title
20 |
21 |
22 | .commit-holder
23 | .commit
24 | img.avatar(src=avatar(speaker.avatar), alt='Photo of ' + speaker.name)
25 |
26 | mixin branch-out()
27 | .branch.out
28 | img(
29 | src="/2015/static/images/ui/branch-out.svg",
30 | onerror="this.onerror = null; this.src = '/2015/static/images/ui/branch-out.png'"
31 | )
32 |
33 | block vars
34 | - var pageClass = "page-talks"
35 | - var activePage = "talks"
36 |
37 | block viewport
38 | .container
39 | h1 Talks & Keynotes
40 |
41 | .event-full.general
42 | h2.title Registration #[small 8:00]
43 | .talk-description
44 | p.
45 | Grab your lanyard, swag bag and coffee. #[br]
46 | Meet our sponsors and get ready for a day full of awesome talks!
47 |
48 | .commit.empty.first
49 | .dot
50 |
51 | .event-full.general
52 | h2.title The grand opening #[small 8:55]
53 | .talk-description
54 | p.
55 | Welcome to the first #[strong PyCon CZ]. #[br]
56 | Applause, introduction, jokes and meanwhile we lock the main door…
57 |
58 | .commit.empty
59 | .dot
60 |
61 | .event-full
62 | h2.title.amber Keynote #1 #[br] The future of Twisted #[small 9:00]
63 | .talk-description
64 | .speaker Amber Brown
65 | p.
66 | Amber, better known as HawkOwl, is a core developer and release
67 | manager of the Twisted project.
68 | a.social.github(href="https://github.com/hawkowl")
69 | .fa.fa-github
70 | a.social.twitter(href="https://twitter.com/hawkieowl")
71 | .fa.fa-twitter
72 |
73 | .commit
74 | img.avatar(
75 | src=avatar("amber_brown.jpg"),
76 | alt='Photo of Amber Brown'
77 | )
78 |
79 | .event-full
80 | h2.title.russell Keynote #2 #[br] The secret sauce behind #[br] Open Source #[small 10:00]
81 | .talk-description
82 | .speaker Russell-Keith Magee
83 | p.
84 | Dr Russell Keith-Magee is a 9 year veteran of the Django core team,
85 | and President of the DSF.
86 | a.social.github(href="https://github.com/freakboy3742")
87 | .fa.fa-github
88 | a.social.twitter(href="https://twitter.com/freakboy3742")
89 | .fa.fa-twitter
90 |
91 | .commit
92 | img.avatar(
93 | src=avatar("russell_keith_magee.png"),
94 | alt='Photo of Russell Keith-Magee'
95 | )
96 |
97 | .branch-description
98 | .branch-name
99 | .master Master branch
100 | .branch.in
101 | img(
102 | src="/2015/static/images/ui/branch-in.svg",
103 | onerror="this.onerror = null; this.src = '/2015/static/images/ui/branch-in.png'"
104 | )
105 | .branch-name
106 | .practical Practical branch
107 |
108 | h2.visible-xs-block Talks
109 | p.visible-xs-block.
110 | Two parallel branches of talks are going to be held in two rooms: D105 and
111 | D0206. The #[strong Master branch] in D105 will be about general topics,
112 | while the #[strong Practical branch] in D0206 will present more specific ones.
113 |
114 | //- Iterate over speakers object (loaded in gulpfile from data/speakers.json)
115 | //- and render mixin talk() (see above)
116 | each speaker, index in speakers
117 | .talk-block
118 | .event.master
119 | +talk(speaker[0])
120 |
121 | .event.practical
122 | +talk(speaker[1])
123 |
124 | +branch-out()
125 |
126 | .event-full.general
127 | .title
128 | h2 Lightning talks #[small 18:30]
129 | .talk-description
130 | p.
131 | There is only one rule of lightning talks: #[br]
132 | 5 mins and hard cut. Get on stage and share your experience!
133 |
134 | .commit.empty
135 | .dot
136 |
137 | .event-full.general
138 | .title
139 | h2 Thank you #[small 19:00]
140 | .talk-description
141 | p.
142 | The first day of PyCon CZ is over.
143 | Wrap it up and enjoy the evening party.
144 | See you tomorrow at the sprint venue!
145 |
146 | .commit.empty.last
147 | .dot
148 |
149 | a.anchor#directions
150 | h2 The venue
151 |
152 | p.lead.
153 | The conference is going to be held at Brno University of Technology.
154 |
155 | .map
156 | address
157 | p.strong VUT FIT
158 | p 49°11'25.8"N 16°37'13.1"E
159 | p Building D
160 | p Božetěchova 1/2
161 | p 612 66 Brno
162 | p Czech Republic
163 |
164 | #map.vut
165 |
--------------------------------------------------------------------------------
/static/scss/bootstrap/_responsive-utilities.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Responsive: Utility classes
3 | // --------------------------------------------------
4 |
5 |
6 | // IE10 in Windows (Phone) 8
7 | //
8 | // Support for responsive views via media queries is kind of borked in IE10, for
9 | // Surface/desktop in split view and for Windows Phone 8. This particular fix
10 | // must be accompanied by a snippet of JavaScript to sniff the user agent and
11 | // apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at
12 | // our Getting Started page for more information on this bug.
13 | //
14 | // For more information, see the following:
15 | //
16 | // Issue: https://github.com/twbs/bootstrap/issues/10497
17 | // Docs: http://getbootstrap.com/getting-started/#support-ie10-width
18 | // Source: http://timkadlec.com/2013/01/windows-phone-8-and-device-width/
19 | // Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/
20 |
21 | @-ms-viewport {
22 | width: device-width;
23 | }
24 |
25 |
26 | // Visibility utilities
27 | // Note: Deprecated .visible-xs, .visible-sm, .visible-md, and .visible-lg as of v3.2.0
28 |
29 | @include responsive-invisibility('.visible-xs');
30 | @include responsive-invisibility('.visible-sm');
31 | @include responsive-invisibility('.visible-md');
32 | @include responsive-invisibility('.visible-lg');
33 |
34 | .visible-xs-block,
35 | .visible-xs-inline,
36 | .visible-xs-inline-block,
37 | .visible-sm-block,
38 | .visible-sm-inline,
39 | .visible-sm-inline-block,
40 | .visible-md-block,
41 | .visible-md-inline,
42 | .visible-md-inline-block,
43 | .visible-lg-block,
44 | .visible-lg-inline,
45 | .visible-lg-inline-block {
46 | display: none !important;
47 | }
48 |
49 | @media (max-width: $screen-xs-max) {
50 | @include responsive-visibility('.visible-xs');
51 | }
52 | .visible-xs-block {
53 | @media (max-width: $screen-xs-max) {
54 | display: block !important;
55 | }
56 | }
57 | .visible-xs-inline {
58 | @media (max-width: $screen-xs-max) {
59 | display: inline !important;
60 | }
61 | }
62 | .visible-xs-inline-block {
63 | @media (max-width: $screen-xs-max) {
64 | display: inline-block !important;
65 | }
66 | }
67 |
68 | @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {
69 | @include responsive-visibility('.visible-sm');
70 | }
71 | .visible-sm-block {
72 | @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {
73 | display: block !important;
74 | }
75 | }
76 | .visible-sm-inline {
77 | @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {
78 | display: inline !important;
79 | }
80 | }
81 | .visible-sm-inline-block {
82 | @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {
83 | display: inline-block !important;
84 | }
85 | }
86 |
87 | @media (min-width: $screen-md-min) and (max-width: $screen-md-max) {
88 | @include responsive-visibility('.visible-md');
89 | }
90 | .visible-md-block {
91 | @media (min-width: $screen-md-min) and (max-width: $screen-md-max) {
92 | display: block !important;
93 | }
94 | }
95 | .visible-md-inline {
96 | @media (min-width: $screen-md-min) and (max-width: $screen-md-max) {
97 | display: inline !important;
98 | }
99 | }
100 | .visible-md-inline-block {
101 | @media (min-width: $screen-md-min) and (max-width: $screen-md-max) {
102 | display: inline-block !important;
103 | }
104 | }
105 |
106 | @media (min-width: $screen-lg-min) {
107 | @include responsive-visibility('.visible-lg');
108 | }
109 | .visible-lg-block {
110 | @media (min-width: $screen-lg-min) {
111 | display: block !important;
112 | }
113 | }
114 | .visible-lg-inline {
115 | @media (min-width: $screen-lg-min) {
116 | display: inline !important;
117 | }
118 | }
119 | .visible-lg-inline-block {
120 | @media (min-width: $screen-lg-min) {
121 | display: inline-block !important;
122 | }
123 | }
124 |
125 | @media (max-width: $screen-xs-max) {
126 | @include responsive-invisibility('.hidden-xs');
127 | }
128 |
129 | @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {
130 | @include responsive-invisibility('.hidden-sm');
131 | }
132 |
133 | @media (min-width: $screen-md-min) and (max-width: $screen-md-max) {
134 | @include responsive-invisibility('.hidden-md');
135 | }
136 |
137 | @media (min-width: $screen-lg-min) {
138 | @include responsive-invisibility('.hidden-lg');
139 | }
140 |
141 |
142 | // Print utilities
143 | //
144 | // Media queries are placed on the inside to be mixin-friendly.
145 |
146 | // Note: Deprecated .visible-print as of v3.2.0
147 |
148 | @include responsive-invisibility('.visible-print');
149 |
150 | @media print {
151 | @include responsive-visibility('.visible-print');
152 | }
153 | .visible-print-block {
154 | display: none !important;
155 |
156 | @media print {
157 | display: block !important;
158 | }
159 | }
160 | .visible-print-inline {
161 | display: none !important;
162 |
163 | @media print {
164 | display: inline !important;
165 | }
166 | }
167 | .visible-print-inline-block {
168 | display: none !important;
169 |
170 | @media print {
171 | display: inline-block !important;
172 | }
173 | }
174 |
175 | @media print {
176 | @include responsive-invisibility('.hidden-print');
177 | }
178 |
--------------------------------------------------------------------------------
/static/files/static/images/sponsors/pycharm.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 | ]>
7 |
60 |
--------------------------------------------------------------------------------
/static/jade/about/code-of-conduct.jade:
--------------------------------------------------------------------------------
1 | extends ../base
2 |
3 | block vars
4 | - var pageClass = "page-coc"
5 |
6 | block viewport
7 | .container
8 | :markdown
9 | # Code of conduct
10 |
11 | **PyCon CZ** is a community conference intended for networking and
12 | collaboration in the developer community. We value the participation of
13 | **each member** of the **Python community** and want all attendees to have
14 | an enjoyable and fulfilling experience. Accordingly, all attendees are
15 | expected to show **respect** and **courtesy** to other attendees throughout the
16 | conference and at all conference events, whether officially sponsored by
17 | PyCon CZ or not.
18 |
19 | To make clear what is expected:
20 |
21 | > All delegates, attendees, speakers, exhibitors, organizers and volunteers
22 | at any **PyCon CZ** event are required to conform to the following Code of Conduct.
23 |
24 | Organizers will **enforce** this code throughout the event.
25 |
26 | The Short Version
27 | -----------------
28 |
29 | **PyCon** is dedicated to providing a harassment-free conference
30 | experience for everyone, regardless of gender, sexual orientation,
31 | disability, physical appearance, body size, race, or religion.
32 |
33 | We do not tolerate harassment of conference participants in any form.
34 |
35 | All communication should be appropriate for a professional audience including
36 | people of many different backgrounds. Sexual language and imagery is not
37 | appropriate for any conference venue, including talks. Be kind to others.
38 | Do not insult or put down other attendees. Behave professionally.
39 | Remember that harassment and sexist, racist, or exclusionary jokes are not
40 | appropriate for PyCon.
41 |
42 | > Attendees violating these rules may be asked to
43 | leave the conference without a refund at the sole discretion of the
44 | conference organizers.
45 |
46 | Thank you for helping make this a welcoming, friendly event for all.
47 |
48 | The Longer Version
49 | ------------------
50 |
51 | Harassment includes offensive verbal comments related to gender, sexual
52 | orientation, disability, physical appearance, body size, race, religion,
53 | sexual images in public spaces, deliberate intimidation, stalking,
54 | following, harassing photography or recording, sustained disruption
55 | of talks or other events, inappropriate physical contact, and unwelcome
56 | sexual attention.
57 |
58 | > Participants asked to stop any harassing behavior are expected to comply immediately.
59 |
60 | Exhibitors in the expo hall, sponsor or vendor booths, or similar
61 | activities are also subject to the anti-harassment policy. In particular,
62 | exhibitors should not use sexualized images, activities, or other material.
63 | Booth staff (including volunteers) should not use sexualized
64 | clothing/uniforms/costumes, or otherwise create a sexualized environment.
65 |
66 | Be careful in the words that you choose. Remember that sexist, racist,
67 | and other exclusionary jokes can be offensive to those around you.
68 | Excessive swearing and offensive jokes are not appropriate for PyCon.
69 |
70 | If a participant engages in behavior that violates this code of conduct,
71 | the conference organizers may take any action they deem appropriate,
72 | including warning the offender or expulsion from the conference with no refund.
73 |
74 | Contact Information
75 | -------------------
76 |
77 | If you are being harassed, notice that someone else is being harassed,
78 | or have any other concerns, please contact a member of conference staff.
79 | Conference staff will be wearing "Staff" t-shirts.
80 |
81 | If the matter is especially urgent, please call/contact any of these individuals:
82 |
83 | ul
84 | li Mikey Ariel at
85 | a(href="tel:+420702131141") +420 702 131 141
86 | li Tomáš Ehrlich at
87 | a(href="tel:+420608219889") +420 608 219 889
88 |
89 | p.
90 | Conference staff will be happy to help participants contact venue security
91 | or local law enforcement, provide escorts, or otherwise assist those
92 | experiencing harassment to feel safe for the duration of the conference.
93 |
94 | p.
95 | We value your attendance.
96 |
97 | h2#license License
98 |
99 | | This Code of Conduct was forked from the example policy from the
100 | a(href="http://geekfeminism.wikia.com/wiki/Conference_anti-harassment/Policy").
101 | Geek Feminism wiki, created by the Ada Initiative and other volunteers
102 | | which is under a
103 | a(rel="licence", href="http://creativecommons.org/licenses/by/3.0/").
104 | Creative Commons Zero license.
105 |
106 | br
107 |
108 | span(xmlns:dct="http://purl.org/dc/terms/", href="http://purl.org/dc/dcmitype/Text", property="dct:title", rel="dct:type")
109 | | Conference Code of Conduct
110 | | by
111 | a(xmlns:cc="http://creativecommons.org/ns#", href="https://us.pycon.org/2013/about/code-of-conduct/", property="cc:attributionName", rel="cc:attributionURL")
112 | | https://us.pycon.org/2013/about/code-of-conduct/
113 | | is licensed under a
114 | a(rel="license", href="http://creativecommons.org/licenses/by/3.0/")
115 | | Creative Commons Attribution 3.0 Unported License
116 | | .
117 |
--------------------------------------------------------------------------------
/static/scss/bootstrap/_tables.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Tables
3 | // --------------------------------------------------
4 |
5 |
6 | table {
7 | background-color: $table-bg;
8 | }
9 | caption {
10 | padding-top: $table-cell-padding;
11 | padding-bottom: $table-cell-padding;
12 | color: $text-muted;
13 | text-align: left;
14 | }
15 | th {
16 | text-align: left;
17 | }
18 |
19 |
20 | // Baseline styles
21 |
22 | .table {
23 | width: 100%;
24 | max-width: 100%;
25 | margin-bottom: $line-height-computed;
26 | // Cells
27 | > thead,
28 | > tbody,
29 | > tfoot {
30 | > tr {
31 | > th,
32 | > td {
33 | padding: $table-cell-padding;
34 | line-height: $line-height-base;
35 | vertical-align: top;
36 | border-top: 1px solid $table-border-color;
37 | }
38 | }
39 | }
40 | // Bottom align for column headings
41 | > thead > tr > th {
42 | vertical-align: bottom;
43 | border-bottom: 2px solid $table-border-color;
44 | }
45 | // Remove top border from thead by default
46 | > caption + thead,
47 | > colgroup + thead,
48 | > thead:first-child {
49 | > tr:first-child {
50 | > th,
51 | > td {
52 | border-top: 0;
53 | }
54 | }
55 | }
56 | // Account for multiple tbody instances
57 | > tbody + tbody {
58 | border-top: 2px solid $table-border-color;
59 | }
60 |
61 | // Nesting
62 | .table {
63 | background-color: $body-bg;
64 | }
65 | }
66 |
67 |
68 | // Condensed table w/ half padding
69 |
70 | .table-condensed {
71 | > thead,
72 | > tbody,
73 | > tfoot {
74 | > tr {
75 | > th,
76 | > td {
77 | padding: $table-condensed-cell-padding;
78 | }
79 | }
80 | }
81 | }
82 |
83 |
84 | // Bordered version
85 | //
86 | // Add borders all around the table and between all the columns.
87 |
88 | .table-bordered {
89 | border: 1px solid $table-border-color;
90 | > thead,
91 | > tbody,
92 | > tfoot {
93 | > tr {
94 | > th,
95 | > td {
96 | border: 1px solid $table-border-color;
97 | }
98 | }
99 | }
100 | > thead > tr {
101 | > th,
102 | > td {
103 | border-bottom-width: 2px;
104 | }
105 | }
106 | }
107 |
108 |
109 | // Zebra-striping
110 | //
111 | // Default zebra-stripe styles (alternating gray and transparent backgrounds)
112 |
113 | .table-striped {
114 | > tbody > tr:nth-of-type(odd) {
115 | background-color: $table-bg-accent;
116 | }
117 | }
118 |
119 |
120 | // Hover effect
121 | //
122 | // Placed here since it has to come after the potential zebra striping
123 |
124 | .table-hover {
125 | > tbody > tr:hover {
126 | background-color: $table-bg-hover;
127 | }
128 | }
129 |
130 |
131 | // Table cell sizing
132 | //
133 | // Reset default table behavior
134 |
135 | table col[class*="col-"] {
136 | position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)
137 | float: none;
138 | display: table-column;
139 | }
140 | table {
141 | td,
142 | th {
143 | &[class*="col-"] {
144 | position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)
145 | float: none;
146 | display: table-cell;
147 | }
148 | }
149 | }
150 |
151 |
152 | // Table backgrounds
153 | //
154 | // Exact selectors below required to override `.table-striped` and prevent
155 | // inheritance to nested tables.
156 |
157 | // Generate the contextual variants
158 | @include table-row-variant('active', $table-bg-active);
159 | @include table-row-variant('success', $state-success-bg);
160 | @include table-row-variant('info', $state-info-bg);
161 | @include table-row-variant('warning', $state-warning-bg);
162 | @include table-row-variant('danger', $state-danger-bg);
163 |
164 |
165 | // Responsive tables
166 | //
167 | // Wrap your tables in `.table-responsive` and we'll make them mobile friendly
168 | // by enabling horizontal scrolling. Only applies <768px. Everything above that
169 | // will display normally.
170 |
171 | .table-responsive {
172 | overflow-x: auto;
173 | min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)
174 |
175 | @media screen and (max-width: $screen-xs-max) {
176 | width: 100%;
177 | margin-bottom: ($line-height-computed * 0.75);
178 | overflow-y: hidden;
179 | -ms-overflow-style: -ms-autohiding-scrollbar;
180 | border: 1px solid $table-border-color;
181 |
182 | // Tighten up spacing
183 | > .table {
184 | margin-bottom: 0;
185 |
186 | // Ensure the content doesn't wrap
187 | > thead,
188 | > tbody,
189 | > tfoot {
190 | > tr {
191 | > th,
192 | > td {
193 | white-space: nowrap;
194 | }
195 | }
196 | }
197 | }
198 |
199 | // Special overrides for the bordered tables
200 | > .table-bordered {
201 | border: 0;
202 |
203 | // Nuke the appropriate borders so that the parent can handle them
204 | > thead,
205 | > tbody,
206 | > tfoot {
207 | > tr {
208 | > th:first-child,
209 | > td:first-child {
210 | border-left: 0;
211 | }
212 | > th:last-child,
213 | > td:last-child {
214 | border-right: 0;
215 | }
216 | }
217 | }
218 |
219 | // Only nuke the last row's bottom-border in `tbody` and `tfoot` since
220 | // chances are there will be only one `tr` in a `thead` and that would
221 | // remove the border altogether.
222 | > tbody,
223 | > tfoot {
224 | > tr:last-child {
225 | > th,
226 | > td {
227 | border-bottom: 0;
228 | }
229 | }
230 | }
231 |
232 | }
233 | }
234 | }
235 |
--------------------------------------------------------------------------------
/static/scss/bootstrap/_dropdowns.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Dropdown menus
3 | // --------------------------------------------------
4 |
5 |
6 | // Dropdown arrow/caret
7 | .caret {
8 | display: inline-block;
9 | width: 0;
10 | height: 0;
11 | margin-left: 2px;
12 | vertical-align: middle;
13 | border-top: $caret-width-base dashed;
14 | border-right: $caret-width-base solid transparent;
15 | border-left: $caret-width-base solid transparent;
16 | }
17 |
18 | // The dropdown wrapper (div)
19 | .dropup,
20 | .dropdown {
21 | position: relative;
22 | }
23 |
24 | // Prevent the focus on the dropdown toggle when closing dropdowns
25 | .dropdown-toggle:focus {
26 | outline: 0;
27 | }
28 |
29 | // The dropdown menu (ul)
30 | .dropdown-menu {
31 | position: absolute;
32 | top: 100%;
33 | left: 0;
34 | z-index: $zindex-dropdown;
35 | display: none; // none by default, but block on "open" of the menu
36 | float: left;
37 | min-width: 160px;
38 | padding: 5px 0;
39 | margin: 2px 0 0; // override default ul
40 | list-style: none;
41 | font-size: $font-size-base;
42 | text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)
43 | background-color: $dropdown-bg;
44 | border: 1px solid $dropdown-fallback-border; // IE8 fallback
45 | border: 1px solid $dropdown-border;
46 | border-radius: $border-radius-base;
47 | @include box-shadow(0 6px 12px rgba(0,0,0,.175));
48 | background-clip: padding-box;
49 |
50 | // Aligns the dropdown menu to right
51 | //
52 | // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`
53 | &.pull-right {
54 | right: 0;
55 | left: auto;
56 | }
57 |
58 | // Dividers (basically an hr) within the dropdown
59 | .divider {
60 | @include nav-divider($dropdown-divider-bg);
61 | }
62 |
63 | // Links within the dropdown menu
64 | > li > a {
65 | display: block;
66 | padding: 3px 20px;
67 | clear: both;
68 | font-weight: normal;
69 | line-height: $line-height-base;
70 | color: $dropdown-link-color;
71 | white-space: nowrap; // prevent links from randomly breaking onto new lines
72 | }
73 | }
74 |
75 | // Hover/Focus state
76 | .dropdown-menu > li > a {
77 | &:hover,
78 | &:focus {
79 | text-decoration: none;
80 | color: $dropdown-link-hover-color;
81 | background-color: $dropdown-link-hover-bg;
82 | }
83 | }
84 |
85 | // Active state
86 | .dropdown-menu > .active > a {
87 | &,
88 | &:hover,
89 | &:focus {
90 | color: $dropdown-link-active-color;
91 | text-decoration: none;
92 | outline: 0;
93 | background-color: $dropdown-link-active-bg;
94 | }
95 | }
96 |
97 | // Disabled state
98 | //
99 | // Gray out text and ensure the hover/focus state remains gray
100 |
101 | .dropdown-menu > .disabled > a {
102 | &,
103 | &:hover,
104 | &:focus {
105 | color: $dropdown-link-disabled-color;
106 | }
107 |
108 | // Nuke hover/focus effects
109 | &:hover,
110 | &:focus {
111 | text-decoration: none;
112 | background-color: transparent;
113 | background-image: none; // Remove CSS gradient
114 | @include reset-filter;
115 | cursor: $cursor-disabled;
116 | }
117 | }
118 |
119 | // Open state for the dropdown
120 | .open {
121 | // Show the menu
122 | > .dropdown-menu {
123 | display: block;
124 | }
125 |
126 | // Remove the outline when :focus is triggered
127 | > a {
128 | outline: 0;
129 | }
130 | }
131 |
132 | // Menu positioning
133 | //
134 | // Add extra class to `.dropdown-menu` to flip the alignment of the dropdown
135 | // menu with the parent.
136 | .dropdown-menu-right {
137 | left: auto; // Reset the default from `.dropdown-menu`
138 | right: 0;
139 | }
140 | // With v3, we enabled auto-flipping if you have a dropdown within a right
141 | // aligned nav component. To enable the undoing of that, we provide an override
142 | // to restore the default dropdown menu alignment.
143 | //
144 | // This is only for left-aligning a dropdown menu within a `.navbar-right` or
145 | // `.pull-right` nav component.
146 | .dropdown-menu-left {
147 | left: 0;
148 | right: auto;
149 | }
150 |
151 | // Dropdown section headers
152 | .dropdown-header {
153 | display: block;
154 | padding: 3px 20px;
155 | font-size: $font-size-small;
156 | line-height: $line-height-base;
157 | color: $dropdown-header-color;
158 | white-space: nowrap; // as with > li > a
159 | }
160 |
161 | // Backdrop to catch body clicks on mobile, etc.
162 | .dropdown-backdrop {
163 | position: fixed;
164 | left: 0;
165 | right: 0;
166 | bottom: 0;
167 | top: 0;
168 | z-index: ($zindex-dropdown - 10);
169 | }
170 |
171 | // Right aligned dropdowns
172 | .pull-right > .dropdown-menu {
173 | right: 0;
174 | left: auto;
175 | }
176 |
177 | // Allow for dropdowns to go bottom up (aka, dropup-menu)
178 | //
179 | // Just add .dropup after the standard .dropdown class and you're set, bro.
180 | // TODO: abstract this so that the navbar fixed styles are not placed here?
181 |
182 | .dropup,
183 | .navbar-fixed-bottom .dropdown {
184 | // Reverse the caret
185 | .caret {
186 | border-top: 0;
187 | border-bottom: $caret-width-base solid;
188 | content: "";
189 | }
190 | // Different positioning for bottom up menu
191 | .dropdown-menu {
192 | top: auto;
193 | bottom: 100%;
194 | margin-bottom: 2px;
195 | }
196 | }
197 |
198 |
199 | // Component alignment
200 | //
201 | // Reiterate per navbar.less and the modified component alignment there.
202 |
203 | @media (min-width: $grid-float-breakpoint) {
204 | .navbar-right {
205 | .dropdown-menu {
206 | right: 0; left: auto;
207 | }
208 | // Necessary for overrides of the default right aligned menu.
209 | // Will remove come v4 in all likelihood.
210 | .dropdown-menu-left {
211 | left: 0; right: auto;
212 | }
213 | }
214 | }
215 |
--------------------------------------------------------------------------------
/static/scss/bootstrap/_navs.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Navs
3 | // --------------------------------------------------
4 |
5 |
6 | // Base class
7 | // --------------------------------------------------
8 |
9 | .nav {
10 | margin-bottom: 0;
11 | padding-left: 0; // Override default ul/ol
12 | list-style: none;
13 | @include clearfix;
14 |
15 | > li {
16 | position: relative;
17 | display: block;
18 |
19 | > a {
20 | position: relative;
21 | display: block;
22 | padding: $nav-link-padding;
23 | &:hover,
24 | &:focus {
25 | text-decoration: none;
26 | background-color: $nav-link-hover-bg;
27 | }
28 | }
29 |
30 | // Disabled state sets text to gray and nukes hover/tab effects
31 | &.disabled > a {
32 | color: $nav-disabled-link-color;
33 |
34 | &:hover,
35 | &:focus {
36 | color: $nav-disabled-link-hover-color;
37 | text-decoration: none;
38 | background-color: transparent;
39 | cursor: $cursor-disabled;
40 | }
41 | }
42 | }
43 |
44 | // Open dropdowns
45 | .open > a {
46 | &,
47 | &:hover,
48 | &:focus {
49 | background-color: $nav-link-hover-bg;
50 | border-color: $link-color;
51 | }
52 | }
53 |
54 | // Nav dividers (deprecated with v3.0.1)
55 | //
56 | // This should have been removed in v3 with the dropping of `.nav-list`, but
57 | // we missed it. We don't currently support this anywhere, but in the interest
58 | // of maintaining backward compatibility in case you use it, it's deprecated.
59 | .nav-divider {
60 | @include nav-divider;
61 | }
62 |
63 | // Prevent IE8 from misplacing imgs
64 | //
65 | // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989
66 | > li > a > img {
67 | max-width: none;
68 | }
69 | }
70 |
71 |
72 | // Tabs
73 | // -------------------------
74 |
75 | // Give the tabs something to sit on
76 | .nav-tabs {
77 | border-bottom: 1px solid $nav-tabs-border-color;
78 | > li {
79 | float: left;
80 | // Make the list-items overlay the bottom border
81 | margin-bottom: -1px;
82 |
83 | // Actual tabs (as links)
84 | > a {
85 | margin-right: 2px;
86 | line-height: $line-height-base;
87 | border: 1px solid transparent;
88 | border-radius: $border-radius-base $border-radius-base 0 0;
89 | &:hover {
90 | border-color: $nav-tabs-link-hover-border-color $nav-tabs-link-hover-border-color $nav-tabs-border-color;
91 | }
92 | }
93 |
94 | // Active state, and its :hover to override normal :hover
95 | &.active > a {
96 | &,
97 | &:hover,
98 | &:focus {
99 | color: $nav-tabs-active-link-hover-color;
100 | background-color: $nav-tabs-active-link-hover-bg;
101 | border: 1px solid $nav-tabs-active-link-hover-border-color;
102 | border-bottom-color: transparent;
103 | cursor: default;
104 | }
105 | }
106 | }
107 | // pulling this in mainly for less shorthand
108 | &.nav-justified {
109 | @extend .nav-justified;
110 | @extend .nav-tabs-justified;
111 | }
112 | }
113 |
114 |
115 | // Pills
116 | // -------------------------
117 | .nav-pills {
118 | > li {
119 | float: left;
120 |
121 | // Links rendered as pills
122 | > a {
123 | border-radius: $nav-pills-border-radius;
124 | }
125 | + li {
126 | margin-left: 2px;
127 | }
128 |
129 | // Active state
130 | &.active > a {
131 | &,
132 | &:hover,
133 | &:focus {
134 | color: $nav-pills-active-link-hover-color;
135 | background-color: $nav-pills-active-link-hover-bg;
136 | }
137 | }
138 | }
139 | }
140 |
141 |
142 | // Stacked pills
143 | .nav-stacked {
144 | > li {
145 | float: none;
146 | + li {
147 | margin-top: 2px;
148 | margin-left: 0; // no need for this gap between nav items
149 | }
150 | }
151 | }
152 |
153 |
154 | // Nav variations
155 | // --------------------------------------------------
156 |
157 | // Justified nav links
158 | // -------------------------
159 |
160 | .nav-justified {
161 | width: 100%;
162 |
163 | > li {
164 | float: none;
165 | > a {
166 | text-align: center;
167 | margin-bottom: 5px;
168 | }
169 | }
170 |
171 | > .dropdown .dropdown-menu {
172 | top: auto;
173 | left: auto;
174 | }
175 |
176 | @media (min-width: $screen-sm-min) {
177 | > li {
178 | display: table-cell;
179 | width: 1%;
180 | > a {
181 | margin-bottom: 0;
182 | }
183 | }
184 | }
185 | }
186 |
187 | // Move borders to anchors instead of bottom of list
188 | //
189 | // Mixin for adding on top the shared `.nav-justified` styles for our tabs
190 | .nav-tabs-justified {
191 | border-bottom: 0;
192 |
193 | > li > a {
194 | // Override margin from .nav-tabs
195 | margin-right: 0;
196 | border-radius: $border-radius-base;
197 | }
198 |
199 | > .active > a,
200 | > .active > a:hover,
201 | > .active > a:focus {
202 | border: 1px solid $nav-tabs-justified-link-border-color;
203 | }
204 |
205 | @media (min-width: $screen-sm-min) {
206 | > li > a {
207 | border-bottom: 1px solid $nav-tabs-justified-link-border-color;
208 | border-radius: $border-radius-base $border-radius-base 0 0;
209 | }
210 | > .active > a,
211 | > .active > a:hover,
212 | > .active > a:focus {
213 | border-bottom-color: $nav-tabs-justified-active-link-border-color;
214 | }
215 | }
216 | }
217 |
218 |
219 | // Tabbable tabs
220 | // -------------------------
221 |
222 | // Hide tabbable panes to start, show them when `.active`
223 | .tab-content {
224 | > .tab-pane {
225 | display: none;
226 | }
227 | > .active {
228 | display: block;
229 | }
230 | }
231 |
232 |
233 | // Dropdowns
234 | // -------------------------
235 |
236 | // Specific dropdowns
237 | .nav-tabs .dropdown-menu {
238 | // make dropdown border overlap tab border
239 | margin-top: -1px;
240 | // Remove the top rounded corners here since there is a hard edge above the menu
241 | @include border-top-radius(0);
242 | }
243 |
--------------------------------------------------------------------------------