├── static ├── files │ ├── zohoverify │ │ └── verifyforzoho.html │ └── static │ │ └── images │ │ ├── team │ │ ├── chris.jpg │ │ ├── natali.jpg │ │ ├── petr.jpg │ │ └── vehrlich.jpg │ │ ├── pycon-cz-logo.png │ │ ├── sponsors │ │ ├── psf.png │ │ ├── imper.png │ │ ├── inuits.png │ │ ├── pycharm.png │ │ ├── redhat.png │ │ ├── twisto.png │ │ ├── skypicker.png │ │ └── pycharm.svg │ │ ├── ui │ │ ├── branch-in.png │ │ ├── branch-out.png │ │ ├── branch-out.svg │ │ ├── branch-in.svg │ │ └── branch.svg │ │ ├── pycon-cz-logo-fb.png │ │ ├── pycontest │ │ ├── prizes.jpg │ │ └── prizes-2.jpg │ │ ├── pycon-cz-logo-icon.png │ │ └── speakers │ │ ├── amber_brown.jpg │ │ ├── default_male.png │ │ ├── jan_cermak.jpg │ │ ├── jessiva_rose.jpg │ │ ├── nischal_hp.jpg │ │ ├── piotr_dyba.jpg │ │ ├── veros_kaplan.jpg │ │ ├── jachym_cepicky.jpg │ │ ├── peter_inglesby.jpg │ │ ├── robert_kuska.jpeg │ │ ├── tobas_bedrich.png │ │ ├── elyezer_rezende.jpg │ │ ├── jarka_schovancova.jpg │ │ ├── michal_horejsek.jpg │ │ ├── viktor_stiskala.png │ │ ├── anastassiya_zidkova.jpg │ │ ├── radomir_dopieralski.jpg │ │ ├── russell_keith_magee.png │ │ ├── svetlana_margetova.jpg │ │ └── valentina_mukhamedzhanova.png ├── scss │ ├── pycon │ │ ├── _twitter.scss │ │ ├── _coc.scss │ │ ├── _tickets.scss │ │ ├── _map.scss │ │ ├── _team.scss │ │ ├── _sponsors.scss │ │ ├── _footer.scss │ │ ├── _home.scss │ │ └── _navbar.scss │ ├── bootstrap │ │ ├── mixins │ │ │ ├── _center-block.scss │ │ │ ├── _opacity.scss │ │ │ ├── _size.scss │ │ │ ├── _text-overflow.scss │ │ │ ├── _tab-focus.scss │ │ │ ├── _resize.scss │ │ │ ├── _labels.scss │ │ │ ├── _text-emphasis.scss │ │ │ ├── _progress-bar.scss │ │ │ ├── _background-variant.scss │ │ │ ├── _reset-filter.scss │ │ │ ├── _nav-divider.scss │ │ │ ├── _alerts.scss │ │ │ ├── _nav-vertical-align.scss │ │ │ ├── _pagination.scss │ │ │ ├── _border-radius.scss │ │ │ ├── _responsive-visibility.scss │ │ │ ├── _panels.scss │ │ │ ├── _hide-text.scss │ │ │ ├── _clearfix.scss │ │ │ ├── _list-group.scss │ │ │ ├── _table-row.scss │ │ │ ├── _buttons.scss │ │ │ ├── _image.scss │ │ │ ├── _grid-framework.scss │ │ │ ├── _forms.scss │ │ │ ├── _grid.scss │ │ │ └── _gradients.scss │ │ ├── _wells.scss │ │ ├── _breadcrumbs.scss │ │ ├── _responsive-embed.scss │ │ ├── _close.scss │ │ ├── _component-animations.scss │ │ ├── _utilities.scss │ │ ├── _media.scss │ │ ├── _thumbnails.scss │ │ ├── _pager.scss │ │ ├── _mixins.scss │ │ ├── _jumbotron.scss │ │ ├── _labels.scss │ │ ├── _badges.scss │ │ ├── _code.scss │ │ ├── _grid.scss │ │ ├── _alerts.scss │ │ ├── _progress-bars.scss │ │ ├── _pagination.scss │ │ ├── _print.scss │ │ ├── _tooltip.scss │ │ ├── _list-group.scss │ │ ├── _scaffolding.scss │ │ ├── _popovers.scss │ │ ├── _modals.scss │ │ ├── _buttons.scss │ │ ├── _input-groups.scss │ │ ├── _responsive-utilities.scss │ │ ├── _tables.scss │ │ ├── _dropdowns.scss │ │ └── _navs.scss │ ├── _variables.scss │ ├── _bootstrap.scss │ └── pyconcz.scss ├── jade │ ├── components │ │ ├── vars.jade │ │ ├── js.jade │ │ ├── navbar.jade │ │ ├── twitter.jade │ │ └── footer.jade │ ├── about │ │ ├── speakers.jade │ │ ├── tickets.jade │ │ ├── sponsorship.jade │ │ ├── pycontest.jade │ │ ├── team.jade │ │ └── code-of-conduct.jade │ ├── base.jade │ ├── pages │ │ └── timeline.jade │ ├── index.jade │ ├── workshops │ │ └── index.jade │ └── talks │ │ └── index.jade ├── coffee │ └── main.coffee ├── package.json └── .scss-lint.yml ├── .gitignore ├── .editorconfig ├── circle.yml ├── emails ├── 03_events.md ├── 02_final_keynotes.txt └── 04_summary.md ├── texts ├── invite-cs.md ├── invite-en.md └── invite-de.md ├── scripts └── jetbrains-coupons.py ├── README.md └── code-of-conduct.md /static/files/zohoverify/verifyforzoho.html: -------------------------------------------------------------------------------- 1 | 1441223238575 -------------------------------------------------------------------------------- /static/files/static/images/team/chris.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/HEAD/static/files/static/images/team/chris.jpg -------------------------------------------------------------------------------- /static/files/static/images/team/natali.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/HEAD/static/files/static/images/team/natali.jpg -------------------------------------------------------------------------------- /static/files/static/images/team/petr.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/HEAD/static/files/static/images/team/petr.jpg -------------------------------------------------------------------------------- /static/files/static/images/pycon-cz-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/HEAD/static/files/static/images/pycon-cz-logo.png -------------------------------------------------------------------------------- /static/files/static/images/sponsors/psf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/HEAD/static/files/static/images/sponsors/psf.png -------------------------------------------------------------------------------- /static/files/static/images/team/vehrlich.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/HEAD/static/files/static/images/team/vehrlich.jpg -------------------------------------------------------------------------------- /static/files/static/images/ui/branch-in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/HEAD/static/files/static/images/ui/branch-in.png -------------------------------------------------------------------------------- /static/files/static/images/ui/branch-out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/HEAD/static/files/static/images/ui/branch-out.png -------------------------------------------------------------------------------- /static/files/static/images/pycon-cz-logo-fb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/HEAD/static/files/static/images/pycon-cz-logo-fb.png -------------------------------------------------------------------------------- /static/files/static/images/pycontest/prizes.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/HEAD/static/files/static/images/pycontest/prizes.jpg -------------------------------------------------------------------------------- /static/files/static/images/sponsors/imper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/HEAD/static/files/static/images/sponsors/imper.png -------------------------------------------------------------------------------- /static/files/static/images/sponsors/inuits.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/HEAD/static/files/static/images/sponsors/inuits.png -------------------------------------------------------------------------------- /static/files/static/images/sponsors/pycharm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/HEAD/static/files/static/images/sponsors/pycharm.png -------------------------------------------------------------------------------- /static/files/static/images/sponsors/redhat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/HEAD/static/files/static/images/sponsors/redhat.png -------------------------------------------------------------------------------- /static/files/static/images/sponsors/twisto.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/HEAD/static/files/static/images/sponsors/twisto.png -------------------------------------------------------------------------------- /static/scss/pycon/_twitter.scss: -------------------------------------------------------------------------------- 1 | .twitter-list { 2 | @include make-row(); 3 | } 4 | 5 | .twitter-content { 6 | @include make-sm-column(6); 7 | } 8 | -------------------------------------------------------------------------------- /static/files/static/images/pycon-cz-logo-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/HEAD/static/files/static/images/pycon-cz-logo-icon.png -------------------------------------------------------------------------------- /static/files/static/images/pycontest/prizes-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/HEAD/static/files/static/images/pycontest/prizes-2.jpg -------------------------------------------------------------------------------- /static/files/static/images/sponsors/skypicker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/HEAD/static/files/static/images/sponsors/skypicker.png -------------------------------------------------------------------------------- /static/scss/pycon/_coc.scss: -------------------------------------------------------------------------------- 1 | .page-coc { 2 | font-size: 18px; 3 | 4 | blockquote { 5 | font-style: italic; 6 | font-size: 1.5em; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /static/files/static/images/speakers/amber_brown.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/HEAD/static/files/static/images/speakers/amber_brown.jpg -------------------------------------------------------------------------------- /static/files/static/images/speakers/default_male.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/HEAD/static/files/static/images/speakers/default_male.png -------------------------------------------------------------------------------- /static/files/static/images/speakers/jan_cermak.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/HEAD/static/files/static/images/speakers/jan_cermak.jpg -------------------------------------------------------------------------------- /static/files/static/images/speakers/jessiva_rose.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/HEAD/static/files/static/images/speakers/jessiva_rose.jpg -------------------------------------------------------------------------------- /static/files/static/images/speakers/nischal_hp.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/HEAD/static/files/static/images/speakers/nischal_hp.jpg -------------------------------------------------------------------------------- /static/files/static/images/speakers/piotr_dyba.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/HEAD/static/files/static/images/speakers/piotr_dyba.jpg -------------------------------------------------------------------------------- /static/files/static/images/speakers/veros_kaplan.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/HEAD/static/files/static/images/speakers/veros_kaplan.jpg -------------------------------------------------------------------------------- /static/files/static/images/speakers/jachym_cepicky.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/HEAD/static/files/static/images/speakers/jachym_cepicky.jpg -------------------------------------------------------------------------------- /static/files/static/images/speakers/peter_inglesby.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/HEAD/static/files/static/images/speakers/peter_inglesby.jpg -------------------------------------------------------------------------------- /static/files/static/images/speakers/robert_kuska.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/HEAD/static/files/static/images/speakers/robert_kuska.jpeg -------------------------------------------------------------------------------- /static/files/static/images/speakers/tobas_bedrich.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/HEAD/static/files/static/images/speakers/tobas_bedrich.png -------------------------------------------------------------------------------- /static/files/static/images/speakers/elyezer_rezende.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/HEAD/static/files/static/images/speakers/elyezer_rezende.jpg -------------------------------------------------------------------------------- /static/files/static/images/speakers/jarka_schovancova.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/HEAD/static/files/static/images/speakers/jarka_schovancova.jpg -------------------------------------------------------------------------------- /static/files/static/images/speakers/michal_horejsek.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/HEAD/static/files/static/images/speakers/michal_horejsek.jpg -------------------------------------------------------------------------------- /static/files/static/images/speakers/viktor_stiskala.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/HEAD/static/files/static/images/speakers/viktor_stiskala.png -------------------------------------------------------------------------------- /static/files/static/images/speakers/anastassiya_zidkova.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/HEAD/static/files/static/images/speakers/anastassiya_zidkova.jpg -------------------------------------------------------------------------------- /static/files/static/images/speakers/radomir_dopieralski.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/HEAD/static/files/static/images/speakers/radomir_dopieralski.jpg -------------------------------------------------------------------------------- /static/files/static/images/speakers/russell_keith_magee.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/HEAD/static/files/static/images/speakers/russell_keith_magee.png -------------------------------------------------------------------------------- /static/files/static/images/speakers/svetlana_margetova.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/HEAD/static/files/static/images/speakers/svetlana_margetova.jpg -------------------------------------------------------------------------------- /static/files/static/images/speakers/valentina_mukhamedzhanova.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/HEAD/static/files/static/images/speakers/valentina_mukhamedzhanova.png -------------------------------------------------------------------------------- /static/scss/bootstrap/mixins/_center-block.scss: -------------------------------------------------------------------------------- 1 | // Center-align a block level element 2 | 3 | @mixin center-block() { 4 | display: block; 5 | margin-left: auto; 6 | margin-right: auto; 7 | } 8 | -------------------------------------------------------------------------------- /static/jade/components/vars.jade: -------------------------------------------------------------------------------- 1 | - var contactEmail = "info@pycon.cz" 2 | - var year = "2015" 3 | - var ticketsLink = "https://ti.to/pyvec/pycon-cz-2015/" 4 | - var urlBase = "https://cz.pycon.org/" + year + "/" 5 | -------------------------------------------------------------------------------- /static/scss/bootstrap/mixins/_opacity.scss: -------------------------------------------------------------------------------- 1 | // Opacity 2 | 3 | @mixin opacity($opacity) { 4 | opacity: $opacity; 5 | // IE8 filter 6 | $opacity-ie: ($opacity * 100); 7 | filter: alpha(opacity=$opacity-ie); 8 | } 9 | -------------------------------------------------------------------------------- /static/scss/bootstrap/mixins/_size.scss: -------------------------------------------------------------------------------- 1 | // Sizing shortcuts 2 | 3 | @mixin size($width, $height) { 4 | width: $width; 5 | height: $height; 6 | } 7 | 8 | @mixin square($size) { 9 | @include size($size, $size); 10 | } 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Build files 2 | # stack/cf_templates/ 3 | 4 | # AWS IAM credentials 5 | static/aws.json 6 | static/build/ 7 | 8 | node_modules/ 9 | .idea/ 10 | 11 | # Cache 12 | static/.awspublish-* 13 | static/rev-manifest.json 14 | -------------------------------------------------------------------------------- /static/scss/bootstrap/mixins/_text-overflow.scss: -------------------------------------------------------------------------------- 1 | // Text overflow 2 | // Requires inline-block or block for proper styling 3 | 4 | @mixin text-overflow() { 5 | overflow: hidden; 6 | text-overflow: ellipsis; 7 | white-space: nowrap; 8 | } 9 | -------------------------------------------------------------------------------- /static/scss/bootstrap/mixins/_tab-focus.scss: -------------------------------------------------------------------------------- 1 | // WebKit-style focus 2 | 3 | @mixin tab-focus() { 4 | // Default 5 | outline: thin dotted; 6 | // WebKit 7 | outline: 5px auto -webkit-focus-ring-color; 8 | outline-offset: -2px; 9 | } 10 | -------------------------------------------------------------------------------- /static/scss/bootstrap/mixins/_resize.scss: -------------------------------------------------------------------------------- 1 | // Resize anything 2 | 3 | @mixin resizable($direction) { 4 | resize: $direction; // Options: horizontal, vertical, both 5 | overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible` 6 | } 7 | -------------------------------------------------------------------------------- /static/scss/bootstrap/mixins/_labels.scss: -------------------------------------------------------------------------------- 1 | // Labels 2 | 3 | @mixin label-variant($color) { 4 | background-color: $color; 5 | 6 | &[href] { 7 | &:hover, 8 | &:focus { 9 | background-color: darken($color, 10%); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /static/scss/bootstrap/mixins/_text-emphasis.scss: -------------------------------------------------------------------------------- 1 | // Typography 2 | 3 | // [converter] $parent hack 4 | @mixin text-emphasis-variant($parent, $color) { 5 | #{$parent} { 6 | color: $color; 7 | } 8 | a#{$parent}:hover { 9 | color: darken($color, 10%); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /static/scss/bootstrap/mixins/_progress-bar.scss: -------------------------------------------------------------------------------- 1 | // Progress bars 2 | 3 | @mixin progress-bar-variant($color) { 4 | background-color: $color; 5 | 6 | // Deprecated parent class requirement as of v3.2.0 7 | .progress-striped & { 8 | @include gradient-striped; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /static/scss/bootstrap/mixins/_background-variant.scss: -------------------------------------------------------------------------------- 1 | // Contextual backgrounds 2 | 3 | // [converter] $parent hack 4 | @mixin bg-variant($parent, $color) { 5 | #{$parent} { 6 | background-color: $color; 7 | } 8 | a#{$parent}:hover { 9 | background-color: darken($color, 10%); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /static/scss/bootstrap/mixins/_reset-filter.scss: -------------------------------------------------------------------------------- 1 | // Reset filters for IE 2 | // 3 | // When you need to remove a gradient background, do not forget to use this to reset 4 | // the IE filter for IE9 and below. 5 | 6 | @mixin reset-filter() { 7 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); 8 | } 9 | -------------------------------------------------------------------------------- /static/scss/bootstrap/mixins/_nav-divider.scss: -------------------------------------------------------------------------------- 1 | // Horizontal dividers 2 | // 3 | // Dividers (basically an hr) within dropdowns and nav lists 4 | 5 | @mixin nav-divider($color: #e5e5e5) { 6 | height: 1px; 7 | margin: (($line-height-computed / 2) - 1) 0; 8 | overflow: hidden; 9 | background-color: $color; 10 | } 11 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # top-most EditorConfig file 2 | root = true 3 | 4 | # Unix-style newlines with a newline ending every file 5 | [*] 6 | charset = utf-8 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | indent_size = 2 11 | 12 | [*.py] 13 | indent_style = space 14 | indent_size = 4 15 | -------------------------------------------------------------------------------- /static/scss/bootstrap/mixins/_alerts.scss: -------------------------------------------------------------------------------- 1 | // Alerts 2 | 3 | @mixin alert-variant($background, $border, $text-color) { 4 | background-color: $background; 5 | border-color: $border; 6 | color: $text-color; 7 | 8 | hr { 9 | border-top-color: darken($border, 5%); 10 | } 11 | .alert-link { 12 | color: darken($text-color, 10%); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /circle.yml: -------------------------------------------------------------------------------- 1 | dependencies: 2 | pre: 3 | - gem install scss-lint 4 | override: 5 | - npm install -g gulp 6 | - cd static && npm install 7 | 8 | test: 9 | override: 10 | - cd static && gulp ci 11 | 12 | deployment: 13 | production: 14 | branch: master 15 | commands: 16 | - cd static && gulp publish --production 17 | staging: 18 | branch: dev 19 | commands: 20 | - cd static && gulp publish 21 | -------------------------------------------------------------------------------- /static/scss/pycon/_tickets.scss: -------------------------------------------------------------------------------- 1 | @media (min-width: $screen-sm) { 2 | .ticket-overview { 3 | @include make-row(); 4 | padding: 0; 5 | list-style: none; 6 | 7 | li { 8 | @include make-sm-column(2); 9 | text-align: center; 10 | 11 | .number { 12 | display: block; 13 | color: $brand-secondary; 14 | font-weight: bold; 15 | font-size: 56px; 16 | } 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /static/scss/bootstrap/mixins/_nav-vertical-align.scss: -------------------------------------------------------------------------------- 1 | // Navbar vertical align 2 | // 3 | // Vertically center elements in the navbar. 4 | // Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin. 5 | 6 | @mixin navbar-vertical-align($element-height) { 7 | margin-top: (($navbar-height - $element-height) / 2); 8 | margin-bottom: (($navbar-height - $element-height) / 2); 9 | } 10 | -------------------------------------------------------------------------------- /static/scss/bootstrap/mixins/_pagination.scss: -------------------------------------------------------------------------------- 1 | // Pagination 2 | 3 | @mixin pagination-size($padding-vertical, $padding-horizontal, $font-size, $border-radius) { 4 | > li { 5 | > a, 6 | > span { 7 | padding: $padding-vertical $padding-horizontal; 8 | font-size: $font-size; 9 | } 10 | &:first-child { 11 | > a, 12 | > span { 13 | @include border-left-radius($border-radius); 14 | } 15 | } 16 | &:last-child { 17 | > a, 18 | > span { 19 | @include border-right-radius($border-radius); 20 | } 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /static/scss/bootstrap/mixins/_border-radius.scss: -------------------------------------------------------------------------------- 1 | // Single side border-radius 2 | 3 | @mixin border-top-radius($radius) { 4 | border-top-right-radius: $radius; 5 | border-top-left-radius: $radius; 6 | } 7 | @mixin border-right-radius($radius) { 8 | border-bottom-right-radius: $radius; 9 | border-top-right-radius: $radius; 10 | } 11 | @mixin border-bottom-radius($radius) { 12 | border-bottom-right-radius: $radius; 13 | border-bottom-left-radius: $radius; 14 | } 15 | @mixin border-left-radius($radius) { 16 | border-bottom-left-radius: $radius; 17 | border-top-left-radius: $radius; 18 | } 19 | -------------------------------------------------------------------------------- /static/scss/bootstrap/mixins/_responsive-visibility.scss: -------------------------------------------------------------------------------- 1 | // Responsive utilities 2 | 3 | // 4 | // More easily include all the states for responsive-utilities.less. 5 | // [converter] $parent hack 6 | @mixin responsive-visibility($parent) { 7 | #{$parent} { 8 | display: block !important; 9 | } 10 | table#{$parent} { display: table; } 11 | tr#{$parent} { display: table-row !important; } 12 | th#{$parent}, 13 | td#{$parent} { display: table-cell !important; } 14 | } 15 | 16 | // [converter] $parent hack 17 | @mixin responsive-invisibility($parent) { 18 | #{$parent} { 19 | display: none !important; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /static/scss/bootstrap/mixins/_panels.scss: -------------------------------------------------------------------------------- 1 | // Panels 2 | 3 | @mixin panel-variant($border, $heading-text-color, $heading-bg-color, $heading-border) { 4 | border-color: $border; 5 | 6 | & > .panel-heading { 7 | color: $heading-text-color; 8 | background-color: $heading-bg-color; 9 | border-color: $heading-border; 10 | 11 | + .panel-collapse > .panel-body { 12 | border-top-color: $border; 13 | } 14 | .badge { 15 | color: $heading-bg-color; 16 | background-color: $heading-text-color; 17 | } 18 | } 19 | & > .panel-footer { 20 | + .panel-collapse > .panel-body { 21 | border-bottom-color: $border; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /static/scss/bootstrap/_wells.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Wells 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base class 7 | .well { 8 | min-height: 20px; 9 | padding: 19px; 10 | margin-bottom: 20px; 11 | background-color: $well-bg; 12 | border: 1px solid $well-border; 13 | border-radius: $border-radius-base; 14 | @include box-shadow(inset 0 1px 1px rgba(0,0,0,.05)); 15 | blockquote { 16 | border-color: #ddd; 17 | border-color: rgba(0,0,0,.15); 18 | } 19 | } 20 | 21 | // Sizes 22 | .well-lg { 23 | padding: 24px; 24 | border-radius: $border-radius-large; 25 | } 26 | .well-sm { 27 | padding: 9px; 28 | border-radius: $border-radius-small; 29 | } 30 | -------------------------------------------------------------------------------- /static/scss/pycon/_map.scss: -------------------------------------------------------------------------------- 1 | $map-height: 250px; 2 | 3 | .map { 4 | position: relative; 5 | 6 | address { 7 | display: block; 8 | background-color: rgba(255, 255, 255, 0.9); 9 | text-align: left; 10 | padding: 0 $padding-base-horizontal; 11 | 12 | @media (min-width: $screen-sm) { 13 | position: absolute; 14 | bottom: 20px; 15 | left: 120px; 16 | z-index: 1000; 17 | width: 250px; 18 | padding: 20px; 19 | } 20 | 21 | .strong { 22 | margin-bottom: 10px; 23 | font-weight: bold; 24 | } 25 | 26 | p { 27 | margin: 5px; 28 | } 29 | } 30 | } 31 | 32 | #map { 33 | width: 100%; 34 | height: $map-height; 35 | } 36 | -------------------------------------------------------------------------------- /static/scss/bootstrap/mixins/_hide-text.scss: -------------------------------------------------------------------------------- 1 | // CSS image replacement 2 | // 3 | // Heads up! v3 launched with with only `.hide-text()`, but per our pattern for 4 | // mixins being reused as classes with the same name, this doesn't hold up. As 5 | // of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`. 6 | // 7 | // Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 8 | 9 | // Deprecated as of v3.0.1 (will be removed in v4) 10 | @mixin hide-text() { 11 | font: 0/0 a; 12 | color: transparent; 13 | text-shadow: none; 14 | background-color: transparent; 15 | border: 0; 16 | } 17 | 18 | // New mixin to use as of v3.0.1 19 | @mixin text-hide() { 20 | @include hide-text; 21 | } 22 | -------------------------------------------------------------------------------- /static/scss/pycon/_team.scss: -------------------------------------------------------------------------------- 1 | .page-team { 2 | h1 { 3 | text-align: center; 4 | } 5 | 6 | .lead { 7 | width: 80%; 8 | margin: 0 auto 3em; 9 | } 10 | } 11 | 12 | .team-member { 13 | @include make-xs-column(6); 14 | @include make-sm-column(3); 15 | 16 | text-align: center; 17 | 18 | a { 19 | text-decoration: none; 20 | } 21 | 22 | img { 23 | width: $images-size; 24 | height: $images-size; 25 | border: 1px solid $brand-silent; 26 | border-radius: $images-size / 2; 27 | } 28 | 29 | .name { 30 | padding: 0; 31 | margin: 0; 32 | font-size: 1.3em; 33 | } 34 | 35 | .description { 36 | width: 80%; 37 | margin: 0 auto; 38 | margin-bottom: 20px; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /static/scss/bootstrap/_breadcrumbs.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Breadcrumbs 3 | // -------------------------------------------------- 4 | 5 | 6 | .breadcrumb { 7 | padding: $breadcrumb-padding-vertical $breadcrumb-padding-horizontal; 8 | margin-bottom: $line-height-computed; 9 | list-style: none; 10 | background-color: $breadcrumb-bg; 11 | border-radius: $border-radius-base; 12 | 13 | > li { 14 | display: inline-block; 15 | 16 | + li:before { 17 | content: "#{$breadcrumb-separator}\00a0"; // Unicode space added since inline-block means non-collapsing white-space 18 | padding: 0 5px; 19 | color: $breadcrumb-color; 20 | } 21 | } 22 | 23 | > .active { 24 | color: $breadcrumb-active-color; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /static/scss/bootstrap/_responsive-embed.scss: -------------------------------------------------------------------------------- 1 | // Embeds responsive 2 | // 3 | // Credit: Nicolas Gallagher and SUIT CSS. 4 | 5 | .embed-responsive { 6 | position: relative; 7 | display: block; 8 | height: 0; 9 | padding: 0; 10 | overflow: hidden; 11 | 12 | .embed-responsive-item, 13 | iframe, 14 | embed, 15 | object, 16 | video { 17 | position: absolute; 18 | top: 0; 19 | left: 0; 20 | bottom: 0; 21 | height: 100%; 22 | width: 100%; 23 | border: 0; 24 | } 25 | } 26 | 27 | // Modifier class for 16:9 aspect ratio 28 | .embed-responsive-16by9 { 29 | padding-bottom: 56.25%; 30 | } 31 | 32 | // Modifier class for 4:3 aspect ratio 33 | .embed-responsive-4by3 { 34 | padding-bottom: 75%; 35 | } 36 | -------------------------------------------------------------------------------- /static/scss/bootstrap/mixins/_clearfix.scss: -------------------------------------------------------------------------------- 1 | // Clearfix 2 | // 3 | // For modern browsers 4 | // 1. The space content is one way to avoid an Opera bug when the 5 | // contenteditable attribute is included anywhere else in the document. 6 | // Otherwise it causes space to appear at the top and bottom of elements 7 | // that are clearfixed. 8 | // 2. The use of `table` rather than `block` is only necessary if using 9 | // `:before` to contain the top-margins of child elements. 10 | // 11 | // Source: http://nicolasgallagher.com/micro-clearfix-hack/ 12 | 13 | @mixin clearfix() { 14 | &:before, 15 | &:after { 16 | content: " "; // 1 17 | display: table; // 2 18 | } 19 | &:after { 20 | clear: both; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /static/scss/bootstrap/mixins/_list-group.scss: -------------------------------------------------------------------------------- 1 | // List Groups 2 | 3 | @mixin list-group-item-variant($state, $background, $color) { 4 | .list-group-item-#{$state} { 5 | color: $color; 6 | background-color: $background; 7 | 8 | // [converter] extracted a& to a.list-group-item-#{$state} 9 | } 10 | 11 | a.list-group-item-#{$state} { 12 | color: $color; 13 | 14 | .list-group-item-heading { 15 | color: inherit; 16 | } 17 | 18 | &:hover, 19 | &:focus { 20 | color: $color; 21 | background-color: darken($background, 5%); 22 | } 23 | &.active, 24 | &.active:hover, 25 | &.active:focus { 26 | color: #fff; 27 | background-color: $color; 28 | border-color: $color; 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /static/scss/_variables.scss: -------------------------------------------------------------------------------- 1 | @import "bootstrap/variables"; 2 | 3 | // Grid 4 | 5 | $grid-gutter-width: 20px; 6 | $container-desktop: (940px + $grid-gutter-width); 7 | $container-large-desktop: $container-desktop; 8 | $container-lg: $container-desktop; 9 | $container-md: $container-desktop; 10 | $screen-lg: $screen-md; 11 | 12 | // Color theme 13 | 14 | $twitter-color: #55acee; 15 | $github-color: #333; 16 | 17 | $brand-primary: #1e5493; 18 | $brand-secondary: #d52034; 19 | $brand-silent: #d1d1d1; 20 | 21 | $text-color: #646464; 22 | $text-inverted: #fff; 23 | 24 | $commit-line: #dfdfdf; 25 | 26 | $bg: #fff; 27 | $navbar-bg: rgba(255, 255, 255, 0.97); 28 | 29 | // Dimensions 30 | 31 | $navbar-height: 60px; 32 | $footer-height: 350px; 33 | $offcanvas-navbar-width: 230px; 34 | $images-size: 96px; 35 | 36 | // Theme overrides 37 | 38 | $font-size-base: 16px; 39 | -------------------------------------------------------------------------------- /static/scss/bootstrap/mixins/_table-row.scss: -------------------------------------------------------------------------------- 1 | // Tables 2 | 3 | @mixin table-row-variant($state, $background) { 4 | // Exact selectors below required to override `.table-striped` and prevent 5 | // inheritance to nested tables. 6 | .table > thead > tr, 7 | .table > tbody > tr, 8 | .table > tfoot > tr { 9 | > td.#{$state}, 10 | > th.#{$state}, 11 | &.#{$state} > td, 12 | &.#{$state} > th { 13 | background-color: $background; 14 | } 15 | } 16 | 17 | // Hover states for `.table-hover` 18 | // Note: this is not available for cells or rows within `thead` or `tfoot`. 19 | .table-hover > tbody > tr { 20 | > td.#{$state}:hover, 21 | > th.#{$state}:hover, 22 | &.#{$state}:hover > td, 23 | &:hover > .#{$state}, 24 | &.#{$state}:hover > th { 25 | background-color: darken($background, 5%); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /static/coffee/main.coffee: -------------------------------------------------------------------------------- 1 | $ -> 2 | if $("#map.vut").length 3 | talks = 4 | lng: 16.596936 5 | lat: 49.226245 6 | 7 | mapVut = new GMaps { 8 | div: '#map' 9 | zoom: 17 10 | lat: talks.lat 11 | lng: talks.lng 12 | scrollwheel: false 13 | draggable: false 14 | } 15 | 16 | mapVut.addMarker { 17 | lat: talks.lat, 18 | lng: talks.lng, 19 | title: 'PyCon CZ 2015 - Talks & Keynotes' 20 | } 21 | 22 | if $("#map.impact").length 23 | workshops = 24 | lng: 16.620317 25 | lat: 49.190492 26 | 27 | mapImpact = new GMaps { 28 | div: "#map" 29 | zoom: 15 30 | lat: workshops.lat 31 | lng: workshops.lng 32 | scrollwheel: false 33 | draggable: false 34 | } 35 | 36 | mapImpact.addMarker { 37 | lat: workshops.lat, 38 | lng: workshops.lng, 39 | title: 'PyCon CZ 2015 - Sprints & Workshops' 40 | } 41 | -------------------------------------------------------------------------------- /static/jade/components/js.jade: -------------------------------------------------------------------------------- 1 | script(type='text/javascript', src='https://code.jquery.com/jquery-2.1.4.min.js') 2 | script(type='text/javascript', src='https://maps.google.com/maps/api/js?sensor=true') 3 | script(type='text/javascript', src='https://cdnjs.cloudflare.com/ajax/libs/gmaps.js/0.4.12/gmaps.js') 4 | script(type='text/javascript', src=pageUrl('/static/js/main.min.js')) 5 | 6 | unless debug 7 | script. 8 | (function (i, s, o, g, r, a, m) { 9 | i['GoogleAnalyticsObject'] = r; 10 | i[r] = i[r] || function () { 11 | (i[r].q = i[r].q || []).push(arguments) 12 | }, i[r].l = 1 * new Date(); 13 | a = s.createElement(o), 14 | m = s.getElementsByTagName(o)[0]; 15 | a.async = 1; 16 | a.src = g; 17 | m.parentNode.insertBefore(a, m) 18 | })(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga'); 19 | 20 | ga('create', 'UA-62652331-2', 'auto'); 21 | ga('send', 'pageview'); 22 | -------------------------------------------------------------------------------- /static/scss/bootstrap/_close.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Close icons 3 | // -------------------------------------------------- 4 | 5 | 6 | .close { 7 | float: right; 8 | font-size: ($font-size-base * 1.5); 9 | font-weight: $close-font-weight; 10 | line-height: 1; 11 | color: $close-color; 12 | text-shadow: $close-text-shadow; 13 | @include opacity(.2); 14 | 15 | &:hover, 16 | &:focus { 17 | color: $close-color; 18 | text-decoration: none; 19 | cursor: pointer; 20 | @include opacity(.5); 21 | } 22 | 23 | // [converter] extracted button& to button.close 24 | } 25 | 26 | // Additional properties for button version 27 | // iOS requires the button element instead of an anchor tag. 28 | // If you want the anchor version, it requires `href="#"`. 29 | // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile 30 | button.close { 31 | padding: 0; 32 | cursor: pointer; 33 | background: transparent; 34 | border: 0; 35 | -webkit-appearance: none; 36 | } 37 | -------------------------------------------------------------------------------- /static/scss/bootstrap/_component-animations.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Component animations 3 | // -------------------------------------------------- 4 | 5 | // Heads up! 6 | // 7 | // We don't use the `.opacity()` mixin here since it causes a bug with text 8 | // fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552. 9 | 10 | .fade { 11 | opacity: 0; 12 | @include transition(opacity .15s linear); 13 | &.in { 14 | opacity: 1; 15 | } 16 | } 17 | 18 | .collapse { 19 | display: none; 20 | 21 | &.in { display: block; } 22 | // [converter] extracted tr&.in to tr.collapse.in 23 | // [converter] extracted tbody&.in to tbody.collapse.in 24 | } 25 | 26 | tr.collapse.in { display: table-row; } 27 | 28 | tbody.collapse.in { display: table-row-group; } 29 | 30 | .collapsing { 31 | position: relative; 32 | height: 0; 33 | overflow: hidden; 34 | @include transition-property(height, visibility); 35 | @include transition-duration(.35s); 36 | @include transition-timing-function(ease); 37 | } 38 | -------------------------------------------------------------------------------- /static/jade/about/speakers.jade: -------------------------------------------------------------------------------- 1 | extends ../base 2 | 3 | //- render single speaker 4 | mixin talk(workshop) 5 | .workshop 6 | h3 7 | = workshop.title 8 | small 9 | | by 10 | = workshop.name 11 | 12 | .misc 13 | small 14 | = workshop.time 15 | if workshop.github 16 | a.social.github(href="https://github.com/" + workshop.github) 17 | .fa.fa-github 18 | if workshop.twitter 19 | a.social.twitter(href="https://twitter.com/" + workshop.twitter) 20 | .fa.fa-twitter 21 | 22 | != md(workshop.abstract) 23 | 24 | block vars 25 | - var pageClass = "page-workshops" 26 | - var activePage = "workshops" 27 | 28 | block viewport 29 | .container 30 | h1 Our speakers 31 | 32 | //- Iterate over workshops object (loaded in gulpfile from data/workshops.json) 33 | //- and render mixin talk() (see above) 34 | each speaker, index in speakers 35 | +talk(speaker[0]) 36 | +talk(speaker[1]) 37 | 38 | -------------------------------------------------------------------------------- /static/scss/bootstrap/_utilities.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Utility classes 3 | // -------------------------------------------------- 4 | 5 | 6 | // Floats 7 | // ------------------------- 8 | 9 | .clearfix { 10 | @include clearfix; 11 | } 12 | .center-block { 13 | @include center-block; 14 | } 15 | .pull-right { 16 | float: right !important; 17 | } 18 | .pull-left { 19 | float: left !important; 20 | } 21 | 22 | 23 | // Toggling content 24 | // ------------------------- 25 | 26 | // Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1 27 | .hide { 28 | display: none !important; 29 | } 30 | .show { 31 | display: block !important; 32 | } 33 | .invisible { 34 | visibility: hidden; 35 | } 36 | .text-hide { 37 | @include text-hide; 38 | } 39 | 40 | 41 | // Hide from screenreaders and browsers 42 | // 43 | // Credit: HTML5 Boilerplate 44 | 45 | .hidden { 46 | display: none !important; 47 | } 48 | 49 | 50 | // For Affix plugin 51 | // ------------------------- 52 | 53 | .affix { 54 | position: fixed; 55 | } 56 | -------------------------------------------------------------------------------- /emails/03_events.md: -------------------------------------------------------------------------------- 1 | Hi {{ first_name }}, 2 | 3 | we've just added few more question to your ticket. None of them is required, but it help us with planning. 4 | 5 | # Workshop registration 6 | 7 | There will be 6 [workshops](https://cz.pycon.org/2015/workshops/) on Sunday in two blocks. One in the morning and one after lunch. Please pick one from the list so we know which room to assign to which workshop. 8 | 9 | # Social events 10 | 11 | A lot of pythonistas will be already in town on Friday. You can join organizers, speakers and DjangoGirls in [Molino Restaurant](http://www.molinorestaurant.cz) anytime after 7pm. 12 | 13 | On Saturday we prepare a special event and after-party in a local pub. The location will be announced during the day, but it'll be definitely in city center. 14 | 15 | # Thank you 16 | 17 | That's it. If you want to, you can also tell us where are you from. As it's the first edition of PyCon CZ, we're super curious from which country people came from. 18 | 19 | Looking forward to meet you in Brno! 20 | 21 | Cheers, 22 | 23 | Tom & PyCon CZ Team 24 | -------------------------------------------------------------------------------- /static/scss/bootstrap/_media.scss: -------------------------------------------------------------------------------- 1 | .media { 2 | // Proper spacing between instances of .media 3 | margin-top: 15px; 4 | 5 | &:first-child { 6 | margin-top: 0; 7 | } 8 | } 9 | 10 | .media, 11 | .media-body { 12 | zoom: 1; 13 | overflow: hidden; 14 | } 15 | 16 | .media-body { 17 | width: 10000px; 18 | } 19 | 20 | .media-object { 21 | display: block; 22 | } 23 | 24 | .media-right, 25 | .media > .pull-right { 26 | padding-left: 10px; 27 | } 28 | 29 | .media-left, 30 | .media > .pull-left { 31 | padding-right: 10px; 32 | } 33 | 34 | .media-left, 35 | .media-right, 36 | .media-body { 37 | display: table-cell; 38 | vertical-align: top; 39 | } 40 | 41 | .media-middle { 42 | vertical-align: middle; 43 | } 44 | 45 | .media-bottom { 46 | vertical-align: bottom; 47 | } 48 | 49 | // Reset margins on headings for tighter default spacing 50 | .media-heading { 51 | margin-top: 0; 52 | margin-bottom: 5px; 53 | } 54 | 55 | // Media list variation 56 | // 57 | // Undo default ul/ol styles 58 | .media-list { 59 | padding-left: 0; 60 | list-style: none; 61 | } 62 | -------------------------------------------------------------------------------- /static/scss/bootstrap/_thumbnails.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Thumbnails 3 | // -------------------------------------------------- 4 | 5 | 6 | // Mixin and adjust the regular image class 7 | .thumbnail { 8 | display: block; 9 | padding: $thumbnail-padding; 10 | margin-bottom: $line-height-computed; 11 | line-height: $line-height-base; 12 | background-color: $thumbnail-bg; 13 | border: 1px solid $thumbnail-border; 14 | border-radius: $thumbnail-border-radius; 15 | @include transition(border .2s ease-in-out); 16 | 17 | > img, 18 | a > img { 19 | @include img-responsive; 20 | margin-left: auto; 21 | margin-right: auto; 22 | } 23 | 24 | // [converter] extracted a&:hover, a&:focus, a&.active to a.thumbnail:hover, a.thumbnail:focus, a.thumbnail.active 25 | 26 | // Image captions 27 | .caption { 28 | padding: $thumbnail-caption-padding; 29 | color: $thumbnail-caption-color; 30 | } 31 | } 32 | 33 | // Add a hover state for linked versions only 34 | a.thumbnail:hover, 35 | a.thumbnail:focus, 36 | a.thumbnail.active { 37 | border-color: $link-color; 38 | } 39 | -------------------------------------------------------------------------------- /static/scss/bootstrap/_pager.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Pager pagination 3 | // -------------------------------------------------- 4 | 5 | 6 | .pager { 7 | padding-left: 0; 8 | margin: $line-height-computed 0; 9 | list-style: none; 10 | text-align: center; 11 | @include clearfix; 12 | li { 13 | display: inline; 14 | > a, 15 | > span { 16 | display: inline-block; 17 | padding: 5px 14px; 18 | background-color: $pager-bg; 19 | border: 1px solid $pager-border; 20 | border-radius: $pager-border-radius; 21 | } 22 | 23 | > a:hover, 24 | > a:focus { 25 | text-decoration: none; 26 | background-color: $pager-hover-bg; 27 | } 28 | } 29 | 30 | .next { 31 | > a, 32 | > span { 33 | float: right; 34 | } 35 | } 36 | 37 | .previous { 38 | > a, 39 | > span { 40 | float: left; 41 | } 42 | } 43 | 44 | .disabled { 45 | > a, 46 | > a:hover, 47 | > a:focus, 48 | > span { 49 | color: $pager-disabled-color; 50 | background-color: $pager-bg; 51 | cursor: $cursor-disabled; 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /static/scss/bootstrap/_mixins.scss: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------------------------------- 3 | 4 | // Utilities 5 | @import "mixins/hide-text"; 6 | @import "mixins/opacity"; 7 | @import "mixins/image"; 8 | @import "mixins/labels"; 9 | @import "mixins/reset-filter"; 10 | @import "mixins/resize"; 11 | @import "mixins/responsive-visibility"; 12 | @import "mixins/size"; 13 | @import "mixins/tab-focus"; 14 | @import "mixins/text-emphasis"; 15 | @import "mixins/text-overflow"; 16 | @import "mixins/vendor-prefixes"; 17 | 18 | // Components 19 | @import "mixins/alerts"; 20 | @import "mixins/buttons"; 21 | @import "mixins/panels"; 22 | @import "mixins/pagination"; 23 | @import "mixins/list-group"; 24 | @import "mixins/nav-divider"; 25 | @import "mixins/forms"; 26 | @import "mixins/progress-bar"; 27 | @import "mixins/table-row"; 28 | 29 | // Skins 30 | @import "mixins/background-variant"; 31 | @import "mixins/border-radius"; 32 | @import "mixins/gradients"; 33 | 34 | // Layout 35 | @import "mixins/clearfix"; 36 | @import "mixins/center-block"; 37 | @import "mixins/nav-vertical-align"; 38 | @import "mixins/grid-framework"; 39 | @import "mixins/grid"; 40 | -------------------------------------------------------------------------------- /static/scss/bootstrap/_jumbotron.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Jumbotron 3 | // -------------------------------------------------- 4 | 5 | 6 | .jumbotron { 7 | padding: $jumbotron-padding ($jumbotron-padding / 2); 8 | margin-bottom: $jumbotron-padding; 9 | color: $jumbotron-color; 10 | background-color: $jumbotron-bg; 11 | 12 | h1, 13 | .h1 { 14 | color: $jumbotron-heading-color; 15 | } 16 | 17 | p { 18 | margin-bottom: ($jumbotron-padding / 2); 19 | font-size: $jumbotron-font-size; 20 | font-weight: 200; 21 | } 22 | 23 | > hr { 24 | border-top-color: darken($jumbotron-bg, 10%); 25 | } 26 | 27 | .container &, 28 | .container-fluid & { 29 | border-radius: $border-radius-large; // Only round corners at higher resolutions if contained in a container 30 | } 31 | 32 | .container { 33 | max-width: 100%; 34 | } 35 | 36 | @media screen and (min-width: $screen-sm-min) { 37 | padding: ($jumbotron-padding * 1.6) 0; 38 | 39 | .container &, 40 | .container-fluid & { 41 | padding-left: ($jumbotron-padding * 2); 42 | padding-right: ($jumbotron-padding * 2); 43 | } 44 | 45 | h1, 46 | .h1 { 47 | font-size: ($font-size-base * 4.5); 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /emails/02_final_keynotes.txt: -------------------------------------------------------------------------------- 1 | Keynote speakers confirmed 2 | 3 | In the past two days we received valuable feedback from you and updated our website 4 | accordingly. New information was added, other information was 5 | clarified. Thank you all for your patience! 6 | 7 | The most important news: Our second keynote speaker, Amber Brown, is confirmed. 8 | She is the core developer and release manager of the Twisted project. As you 9 | already know, the other keynote speaker is Russell Keith-Magee, core developer 10 | of the Django web framework. We are very excited to have them both aboard! 11 | 12 | The rest of the speakers will be announced at the beginning of October because 13 | the Call for Papers is still open. Have you already submitted your talk? 14 | If not, you can do it at the following link: http://cz.pycon.org/#speakers 15 | 16 | PyCon CZ is a community-driven conference. Do you have ideas how to improve 17 | our site? Submit a pull request (https://github.com/pyvec/cz.pycon.org-2015)! 18 | Would you like to hear a talk about a specific topic? Contact us on 19 | twitter (@pyconcz), facebook (http://bit.ly/fb-pyconcz-2015) or by email. We are 20 | here for you and we care about your opinion. 21 | 22 | Cheers, 23 | Tomáš Ehrlich and PyCon CZ team 24 | -------------------------------------------------------------------------------- /static/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cz.pycon.org", 3 | "description": "PyCon CZ 2015 homepage", 4 | "main": "index.js", 5 | "scripts": { 6 | "test": "gulp ci" 7 | }, 8 | "author": "Tomáš Ehrlich", 9 | "license": "MIT", 10 | "devDependencies": { 11 | "browser-sync": "^2.7.1", 12 | "coffee-script": "^1.9.2", 13 | "del": "^2.0.1", 14 | "gulp": "^3.8.11", 15 | "gulp-autoprefixer": "^2.2.0", 16 | "gulp-awspublish": "^2.0.0", 17 | "gulp-awspublish-router": "^0.1.1", 18 | "gulp-bytediff": "^0.2.1", 19 | "gulp-coffee": "^2.3.1", 20 | "gulp-coffeelint": "^0.4.0", 21 | "gulp-concat": "^2.6.0", 22 | "gulp-if-else": "^1.0.3", 23 | "gulp-image-optimization": "^0.1.3", 24 | "gulp-jade": "^1.0.0", 25 | "gulp-minify": "0.0.5", 26 | "gulp-minify-css": "^1.1.1", 27 | "gulp-plumber": "^1.0.0", 28 | "gulp-rev": "^3.0.1", 29 | "gulp-rev-collector": "^0.1.4", 30 | "gulp-rev-replace": "^0.4.2", 31 | "gulp-s3": "^0.3.0", 32 | "gulp-sass": "^2.0.0", 33 | "gulp-scss-lint": "^0.1.12", 34 | "gulp-sourcemaps": "^1.5.2", 35 | "gulp-util": "^3.0.4", 36 | "jade": "^1.11.0", 37 | "lazypipe": "^0.2.3", 38 | "marked": "^0.3.5", 39 | "run-sequence": "^1.1.0", 40 | "yargs": "^3.8.0" 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /static/jade/components/navbar.jade: -------------------------------------------------------------------------------- 1 | header#top 2 | .navbar 3 | button.navbar-toggle(type="button", aria-expanded="false") 4 | .fa.fa-bars 5 | 6 | ul.nav.navbar-nav 7 | li.about 8 | a(href=pageUrl("#")) About 9 | li.getting-here(class=activePage == "getting-here" ? "active" : "") 10 | a(href=pageUrl("getting-here/")) Getting here 11 | //- li.tickets 12 | //- a(href=pageUrl("about/pycontest.html")) 13 | //- | #PyConTest 14 | li.videos 15 | a(href="http://www.superlectures.com/pycon2015/") 16 | | Videos 17 | li.photos 18 | a(href="https://goo.gl/photos/Sdpx5ZACzU9hsD9i8") 19 | | Photos 20 | li.talks(class=activePage == "talks" ? "active" : "") 21 | a(href=pageUrl("talks/")) 22 | | Talks 23 | span.date Saturday 14th 24 | li.sprints(class=activePage == "workshops" ? "active" : "") 25 | a(href=pageUrl("workshops/")) 26 | | Sprints & workshops 27 | span.date Sunday 15th 28 | 29 | a(href="/2015/") 30 | img.pycon-logo( 31 | alt="PyCon CZ", 32 | src='/'+year+"/static/images/pycon-cz-logo-icon.svg", 33 | onerror="this.onerror = null; this.src = '/2015/static/images/pycon-cz-logo.png'" 34 | ) 35 | -------------------------------------------------------------------------------- /static/scss/bootstrap/mixins/_buttons.scss: -------------------------------------------------------------------------------- 1 | // Button variants 2 | // 3 | // Easily pump out default styles, as well as :hover, :focus, :active, 4 | // and disabled options for all buttons 5 | 6 | @mixin button-variant($color, $background, $border) { 7 | color: $color; 8 | background-color: $background; 9 | border-color: $border; 10 | 11 | &:hover, 12 | &:focus, 13 | &.focus, 14 | &:active, 15 | &.active, 16 | .open > &.dropdown-toggle { 17 | color: $color; 18 | background-color: darken($background, 10%); 19 | border-color: darken($border, 12%); 20 | } 21 | &:active, 22 | &.active, 23 | .open > &.dropdown-toggle { 24 | background-image: none; 25 | } 26 | &.disabled, 27 | &[disabled], 28 | fieldset[disabled] & { 29 | &, 30 | &:hover, 31 | &:focus, 32 | &.focus, 33 | &:active, 34 | &.active { 35 | background-color: $background; 36 | border-color: $border; 37 | } 38 | } 39 | 40 | .badge { 41 | color: $background; 42 | background-color: $color; 43 | } 44 | } 45 | 46 | // Button sizes 47 | @mixin button-size($padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) { 48 | padding: $padding-vertical $padding-horizontal; 49 | font-size: $font-size; 50 | line-height: $line-height; 51 | border-radius: $border-radius; 52 | } 53 | -------------------------------------------------------------------------------- /static/scss/bootstrap/mixins/_image.scss: -------------------------------------------------------------------------------- 1 | // Image Mixins 2 | // - Responsive image 3 | // - Retina image 4 | 5 | 6 | // Responsive image 7 | // 8 | // Keep images from scaling beyond the width of their parents. 9 | @mixin img-responsive($display: block) { 10 | display: $display; 11 | max-width: 100%; // Part 1: Set a maximum relative to the parent 12 | height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching 13 | } 14 | 15 | 16 | // Retina image 17 | // 18 | // Short retina mixin for setting background-image and -size. Note that the 19 | // spelling of `min--moz-device-pixel-ratio` is intentional. 20 | @mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) { 21 | background-image: url(if($bootstrap-sass-asset-helper, twbs-image-path("#{$file-1x}"), "#{$file-1x}")); 22 | 23 | @media 24 | only screen and (-webkit-min-device-pixel-ratio: 2), 25 | only screen and ( min--moz-device-pixel-ratio: 2), 26 | only screen and ( -o-min-device-pixel-ratio: 2/1), 27 | only screen and ( min-device-pixel-ratio: 2), 28 | only screen and ( min-resolution: 192dpi), 29 | only screen and ( min-resolution: 2dppx) { 30 | background-image: url(if($bootstrap-sass-asset-helper, twbs-image-path("#{$file-2x}"), "#{$file-2x}")); 31 | background-size: $width-1x $height-1x; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /static/scss/bootstrap/_labels.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Labels 3 | // -------------------------------------------------- 4 | 5 | .label { 6 | display: inline; 7 | padding: .2em .6em .3em; 8 | font-size: 75%; 9 | font-weight: bold; 10 | line-height: 1; 11 | color: $label-color; 12 | text-align: center; 13 | white-space: nowrap; 14 | vertical-align: baseline; 15 | border-radius: .25em; 16 | 17 | // [converter] extracted a& to a.label 18 | 19 | // Empty labels collapse automatically (not available in IE8) 20 | &:empty { 21 | display: none; 22 | } 23 | 24 | // Quick fix for labels in buttons 25 | .btn & { 26 | position: relative; 27 | top: -1px; 28 | } 29 | } 30 | 31 | // Add hover effects, but only for links 32 | a.label { 33 | &:hover, 34 | &:focus { 35 | color: $label-link-hover-color; 36 | text-decoration: none; 37 | cursor: pointer; 38 | } 39 | } 40 | 41 | // Colors 42 | // Contextual variations (linked labels get darker on :hover) 43 | 44 | .label-default { 45 | @include label-variant($label-default-bg); 46 | } 47 | 48 | .label-primary { 49 | @include label-variant($label-primary-bg); 50 | } 51 | 52 | .label-success { 53 | @include label-variant($label-success-bg); 54 | } 55 | 56 | .label-info { 57 | @include label-variant($label-info-bg); 58 | } 59 | 60 | .label-warning { 61 | @include label-variant($label-warning-bg); 62 | } 63 | 64 | .label-danger { 65 | @include label-variant($label-danger-bg); 66 | } 67 | -------------------------------------------------------------------------------- /static/scss/bootstrap/_badges.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Badges 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base class 7 | .badge { 8 | display: inline-block; 9 | min-width: 10px; 10 | padding: 3px 7px; 11 | font-size: $font-size-small; 12 | font-weight: $badge-font-weight; 13 | color: $badge-color; 14 | line-height: $badge-line-height; 15 | vertical-align: baseline; 16 | white-space: nowrap; 17 | text-align: center; 18 | background-color: $badge-bg; 19 | border-radius: $badge-border-radius; 20 | 21 | // Empty badges collapse automatically (not available in IE8) 22 | &:empty { 23 | display: none; 24 | } 25 | 26 | // Quick fix for badges in buttons 27 | .btn & { 28 | position: relative; 29 | top: -1px; 30 | } 31 | 32 | .btn-xs &, 33 | .btn-group-xs > .btn & { 34 | top: 0; 35 | padding: 1px 5px; 36 | } 37 | 38 | // [converter] extracted a& to a.badge 39 | 40 | // Account for badges in navs 41 | .list-group-item.active > &, 42 | .nav-pills > .active > a > & { 43 | color: $badge-active-color; 44 | background-color: $badge-active-bg; 45 | } 46 | 47 | .list-group-item > & { 48 | float: right; 49 | } 50 | 51 | .list-group-item > & + & { 52 | margin-right: 5px; 53 | } 54 | 55 | .nav-pills > li > a > & { 56 | margin-left: 3px; 57 | } 58 | } 59 | 60 | // Hover state, but only for links 61 | a.badge { 62 | &:hover, 63 | &:focus { 64 | color: $badge-link-hover-color; 65 | text-decoration: none; 66 | cursor: pointer; 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /static/files/static/images/ui/branch-out.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | branch-out 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /static/scss/_bootstrap.scss: -------------------------------------------------------------------------------- 1 | // Core variables and mixins 2 | @import "variables"; 3 | @import "bootstrap/mixins"; 4 | 5 | // Reset and dependencies 6 | @import "bootstrap/normalize"; 7 | @import "bootstrap/print"; 8 | //@import "bootstrap/glyphicons"; 9 | 10 | // Core CSS 11 | @import "bootstrap/scaffolding"; 12 | @import "bootstrap/type"; 13 | //@import "bootstrap/code"; 14 | @import "bootstrap/grid"; 15 | //@import "bootstrap/tables"; 16 | @import "bootstrap/forms"; 17 | @import "bootstrap/buttons"; 18 | 19 | // Components 20 | @import "bootstrap/component-animations"; 21 | @import "bootstrap/dropdowns"; 22 | //@import "bootstrap/button-groups"; 23 | @import "bootstrap/input-groups"; 24 | @import "bootstrap/navs"; 25 | @import "bootstrap/navbar"; 26 | //@import "bootstrap/breadcrumbs"; 27 | //@import "bootstrap/pagination"; 28 | //@import "bootstrap/pager"; 29 | //@import "bootstrap/labels"; 30 | //@import "bootstrap/badges"; 31 | @import "bootstrap/jumbotron"; 32 | //@import "bootstrap/thumbnails"; 33 | @import "bootstrap/alerts"; 34 | //@import "bootstrap/progress-bars"; 35 | //@import "bootstrap/media"; 36 | @import "bootstrap/list-group"; 37 | @import "bootstrap/panels"; 38 | //@import "bootstrap/responsive-embed"; 39 | //@import "bootstrap/wells"; 40 | @import "bootstrap/close"; 41 | 42 | // Components w/ JavaScript 43 | //@import "bootstrap/modals"; 44 | //@import "bootstrap/tooltip"; 45 | //@import "bootstrap/popovers"; 46 | //@import "bootstrap/carousel"; 47 | 48 | // Utility classes 49 | @import "bootstrap/utilities"; 50 | @import "bootstrap/responsive-utilities"; 51 | -------------------------------------------------------------------------------- /static/files/static/images/ui/branch-in.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | branch-in 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /static/files/static/images/ui/branch.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Path 41 Copy 2 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /static/scss/pycon/_sponsors.scss: -------------------------------------------------------------------------------- 1 | .call-to-action { 2 | font-size: 1.3em; 3 | text-align: center; 4 | 5 | &:before { 6 | display: block; 7 | width: 300px; 8 | height: 1px; 9 | margin: 1em auto; 10 | content: " "; 11 | background-color: $brand-silent; 12 | } 13 | } 14 | 15 | .sponsors { 16 | text-align: center; 17 | 18 | h3 { 19 | color: $brand-primary; 20 | } 21 | 22 | .platinum { 23 | h3 { 24 | margin-bottom: -20px; 25 | } 26 | } 27 | } 28 | 29 | .djangogirls, 30 | .platinum, 31 | .gold, 32 | .silver { 33 | @include make-row(); 34 | } 35 | 36 | .djangogirls { 37 | margin-top: 3em; 38 | } 39 | 40 | .sponsor { 41 | .djangogirls &, 42 | .platinum & { 43 | @include make-sm-column(12); 44 | } 45 | 46 | .gold & { 47 | @include make-sm-column(6); 48 | } 49 | 50 | .silver & { 51 | @include make-sm-column(4); 52 | } 53 | 54 | img { 55 | width: 100%; 56 | height: auto; 57 | } 58 | 59 | .sponsor-twisto { 60 | position: relative; 61 | top: -10px; 62 | } 63 | 64 | .sponsor-redhat { 65 | position: relative; 66 | top: -30px; 67 | 68 | img { 69 | width: 90%; 70 | } 71 | } 72 | } 73 | 74 | .sponsor-placeholder { 75 | position: relative; 76 | top: 30px; 77 | font-size: 1.2em; 78 | 79 | &.alone { 80 | font-size: 2em; 81 | } 82 | } 83 | 84 | @media (max-width: $screen-sm) { 85 | .sponsors { 86 | h3 { 87 | margin-bottom: 0 !important; 88 | } 89 | .sponsor { 90 | margin-top: 15px; 91 | padding: 0 30px; 92 | .sponsor-redhat { 93 | top: auto !important; 94 | } 95 | } 96 | } 97 | } -------------------------------------------------------------------------------- /static/scss/bootstrap/_code.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Code (inline and block) 3 | // -------------------------------------------------- 4 | 5 | 6 | // Inline and block code styles 7 | code, 8 | kbd, 9 | pre, 10 | samp { 11 | font-family: $font-family-monospace; 12 | } 13 | 14 | // Inline code 15 | code { 16 | padding: 2px 4px; 17 | font-size: 90%; 18 | color: $code-color; 19 | background-color: $code-bg; 20 | border-radius: $border-radius-base; 21 | } 22 | 23 | // User input typically entered via keyboard 24 | kbd { 25 | padding: 2px 4px; 26 | font-size: 90%; 27 | color: $kbd-color; 28 | background-color: $kbd-bg; 29 | border-radius: $border-radius-small; 30 | box-shadow: inset 0 -1px 0 rgba(0,0,0,.25); 31 | 32 | kbd { 33 | padding: 0; 34 | font-size: 100%; 35 | font-weight: bold; 36 | box-shadow: none; 37 | } 38 | } 39 | 40 | // Blocks of code 41 | pre { 42 | display: block; 43 | padding: (($line-height-computed - 1) / 2); 44 | margin: 0 0 ($line-height-computed / 2); 45 | font-size: ($font-size-base - 1); // 14px to 13px 46 | line-height: $line-height-base; 47 | word-break: break-all; 48 | word-wrap: break-word; 49 | color: $pre-color; 50 | background-color: $pre-bg; 51 | border: 1px solid $pre-border-color; 52 | border-radius: $border-radius-base; 53 | 54 | // Account for some code outputs that place code tags in pre tags 55 | code { 56 | padding: 0; 57 | font-size: inherit; 58 | color: inherit; 59 | white-space: pre-wrap; 60 | background-color: transparent; 61 | border-radius: 0; 62 | } 63 | } 64 | 65 | // Enable scrollable blocks of code 66 | .pre-scrollable { 67 | max-height: $pre-scrollable-max-height; 68 | overflow-y: scroll; 69 | } 70 | -------------------------------------------------------------------------------- /texts/invite-cs.md: -------------------------------------------------------------------------------- 1 | # První česká Python konference představuje speakery, bude se konat v listopadu 2 | 3 | [PyCon CZ](http://cz.pycon.org/), první konference v ČR zaměřená čistě na **programovací jazyk [Python](http://python.cz/)**, se bude konat v **Brně** na [VUT FIT](http://www.fit.vutbr.cz/) a v [Impact Hubu](http://www.hubbrno.cz/), **14. až 15. listopadu**. Akce je organizována s podporou neziskovky [Pyvec](http://pyvec.org/), která se snaží již několik let v ČR propagovat Python a kultivovat jeho komunitu. 4 | 5 | ![PyCon CZ 2015](https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/master/static/files/static/images/pycon-cz-logo.png) 6 | 7 | První den je věnován přednáškám. Na programu je **14 příspěvků od českých i zahraničních speakerů**. Konferenci budou otevírat [Amber Brown](https://twitter.com/hawkieowl) (Twisted) a [Russell-Keith Magee](https://twitter.com/freakboy3742) (Django), následovat budou příspěvky z nejrůznějších prostředí, kde lze Python použít (genové inženýrství, webové frameworky, výzkum částic v CERNu, DevOps, embedded systémy, bankovnictví, ...). [Celý program soboty.](https://cz.pycon.org/2015/talks/) 8 | 9 | Konferenční neděle pak bude o **workshopech a sprintech**, kde může návštěvník přímo přiložit ruku k dílu. Těšit se lze na bezpečnost, kryptografii, cloud, scrapování webu, geografii, a další. [Program neděle.](https://cz.pycon.org/2015/workshops/) 10 | 11 | Před samotnou konferencí se odehrává další vydání **workshopu pro začátečnice v programování** - [Django Girls](http://djangogirls.org/brno/), kam je stále ještě možné [se přihlásit](https://djangogirls.org/brno/apply/). 12 | 13 | [Lístky lze koupit od **75 EUR (2000 Kč)**](https://cz.pycon.org/2015/about/tickets.html), pro studenty je zlevněná varianta **45 EUR (1200 Kč)**. 14 | -------------------------------------------------------------------------------- /texts/invite-en.md: -------------------------------------------------------------------------------- 1 | # The first Czech Python conference introduces the speakers. It will be held in November 2 | 3 | [PyCon CZ](http://cz.pycon.org/), the first conference in the Czech Republic focused on the **programming language [Python](http://python.cz/)**, will take place in **Brno** at [VUT FIT](http://www.fit.vutbr.cz/) and in [Impact Hub](http://www.hubbrno.cz/), on **Nov 14th - 15th**. The event is supported by NGO [Pyvec](http://pyvec.org/) which has been promoting Python and cultivating its Czech community for several years now. 4 | 5 | ![PyCon CZ 2015](https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/master/static/files/static/images/pycon-cz-logo.png) 6 | 7 | The first day is dedicated to talks. There are **14 talks from Czech and foreign speakers**. [Amber Brown](https://twitter.com/hawkieowl) (Twisted) a [Russell-Keith Magee](https://twitter.com/freakboy3742) (Django) will open the conference, followed by talks from various environments which can use Python (genetic engineering, web frameworks, particle physics research in CERN, DevOps, embedded systems, banking, ...). [Saturday programme.](https://cz.pycon.org/2015/talks/) 8 | 9 | Sunday programme will be about **workshops and sprints** where the visitors can pitch in. Look forward to security, cryptography, cloud, web scraping, geography, and other topics. [Sunday programme.](https://cz.pycon.org/2015/workshops/) 10 | 11 | Before the conference, another edition of a **workshop for female beginners in programming** - [Django Girls](http://djangogirls.org/brno/) will be organised. You can still [apply](https://djangogirls.org/brno/apply/). 12 | 13 | [Tickets are available at **EUR 75 (CZK 2000)**](https://cz.pycon.org/2015/about/tickets.html), with student discount at **EUR 45 (CZK 1200)**. 14 | -------------------------------------------------------------------------------- /static/scss/pycon/_footer.scss: -------------------------------------------------------------------------------- 1 | $divider-inverted: #527bac; 2 | 3 | .site-footer { 4 | position: relative; 5 | clear: both; 6 | width: 100%; 7 | padding: 1em 0 2em; 8 | color: $text-inverted; 9 | background-color: $brand-primary; 10 | font-size: 14px; 11 | 12 | @media (min-width: $screen-sm) { 13 | height: $footer-height; 14 | margin-top: -$footer-height + 80px; 15 | } 16 | 17 | a { 18 | color: $text-inverted; 19 | text-decoration: none; 20 | 21 | &:hover { 22 | text-decoration: underline; 23 | } 24 | } 25 | 26 | ul { 27 | padding: 0; 28 | list-style: none; 29 | } 30 | 31 | .nav-footer { 32 | @include make-row(); 33 | margin-bottom: 3em; 34 | line-height: 1.3; 35 | } 36 | 37 | .nav-title { 38 | display: block; 39 | margin-top: 10px; 40 | border-top: 1px solid $divider-inverted; 41 | font-weight: bold; 42 | font-size: 16px; 43 | 44 | @media (min-width: $screen-sm) { 45 | margin-top: 0; 46 | margin-bottom: 10px; 47 | border-top: 0; 48 | border-bottom: 1px solid $divider-inverted; 49 | 50 | &:hover { 51 | border-bottom: 1px solid $text-inverted; 52 | text-decoration: none; 53 | } 54 | } 55 | } 56 | 57 | .section { 58 | @include make-sm-column(3); 59 | } 60 | } 61 | 62 | .social-links { 63 | margin-bottom: 2em; 64 | 65 | li { 66 | display: inline; 67 | margin-right: 20px; 68 | font-size: 2em; 69 | } 70 | 71 | @media (min-width: $screen-sm) { 72 | text-align: center; 73 | 74 | li { 75 | margin-right: 10px; 76 | } 77 | } 78 | } 79 | 80 | .psf-trademark { 81 | @media (min-width: $screen-sm) { 82 | text-align: center; 83 | } 84 | 85 | a { 86 | font-weight: bold; 87 | } 88 | } 89 | -------------------------------------------------------------------------------- /static/scss/bootstrap/_grid.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Grid system 3 | // -------------------------------------------------- 4 | 5 | 6 | // Container widths 7 | // 8 | // Set the container width, and override it for fixed navbars in media queries. 9 | 10 | .container { 11 | @include container-fixed; 12 | 13 | @media (min-width: $screen-sm-min) { 14 | width: $container-sm; 15 | } 16 | @media (min-width: $screen-md-min) { 17 | width: $container-md; 18 | } 19 | @media (min-width: $screen-lg-min) { 20 | width: $container-lg; 21 | } 22 | } 23 | 24 | 25 | // Fluid container 26 | // 27 | // Utilizes the mixin meant for fixed width containers, but without any defined 28 | // width for fluid, full width layouts. 29 | 30 | .container-fluid { 31 | @include container-fixed; 32 | } 33 | 34 | 35 | // Row 36 | // 37 | // Rows contain and clear the floats of your columns. 38 | 39 | .row { 40 | @include make-row; 41 | } 42 | 43 | 44 | // Columns 45 | // 46 | // Common styles for small and large grid columns 47 | 48 | @include make-grid-columns; 49 | 50 | 51 | // Extra small grid 52 | // 53 | // Columns, offsets, pushes, and pulls for extra small devices like 54 | // smartphones. 55 | 56 | @include make-grid(xs); 57 | 58 | 59 | // Small grid 60 | // 61 | // Columns, offsets, pushes, and pulls for the small device range, from phones 62 | // to tablets. 63 | 64 | @media (min-width: $screen-sm-min) { 65 | @include make-grid(sm); 66 | } 67 | 68 | 69 | // Medium grid 70 | // 71 | // Columns, offsets, pushes, and pulls for the desktop device range. 72 | 73 | @media (min-width: $screen-md-min) { 74 | @include make-grid(md); 75 | } 76 | 77 | 78 | // Large grid 79 | // 80 | // Columns, offsets, pushes, and pulls for the large desktop device range. 81 | 82 | @media (min-width: $screen-lg-min) { 83 | @include make-grid(lg); 84 | } 85 | -------------------------------------------------------------------------------- /static/scss/bootstrap/_alerts.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Alerts 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base styles 7 | // ------------------------- 8 | 9 | .alert { 10 | padding: $alert-padding; 11 | margin-bottom: $line-height-computed; 12 | border: 1px solid transparent; 13 | border-radius: $alert-border-radius; 14 | 15 | // Headings for larger alerts 16 | h4 { 17 | margin-top: 0; 18 | // Specified for the h4 to prevent conflicts of changing $headings-color 19 | color: inherit; 20 | } 21 | 22 | // Provide class for links that match alerts 23 | .alert-link { 24 | font-weight: $alert-link-font-weight; 25 | } 26 | 27 | // Improve alignment and spacing of inner content 28 | > p, 29 | > ul { 30 | margin-bottom: 0; 31 | } 32 | 33 | > p + p { 34 | margin-top: 5px; 35 | } 36 | } 37 | 38 | // Dismissible alerts 39 | // 40 | // Expand the right padding and account for the close button's positioning. 41 | 42 | .alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0. 43 | .alert-dismissible { 44 | padding-right: ($alert-padding + 20); 45 | 46 | // Adjust close link position 47 | .close { 48 | position: relative; 49 | top: -2px; 50 | right: -21px; 51 | color: inherit; 52 | } 53 | } 54 | 55 | // Alternate styles 56 | // 57 | // Generate contextual modifier classes for colorizing the alert. 58 | 59 | .alert-success { 60 | @include alert-variant($alert-success-bg, $alert-success-border, $alert-success-text); 61 | } 62 | 63 | .alert-info { 64 | @include alert-variant($alert-info-bg, $alert-info-border, $alert-info-text); 65 | } 66 | 67 | .alert-warning { 68 | @include alert-variant($alert-warning-bg, $alert-warning-border, $alert-warning-text); 69 | } 70 | 71 | .alert-danger { 72 | @include alert-variant($alert-danger-bg, $alert-danger-border, $alert-danger-text); 73 | } 74 | -------------------------------------------------------------------------------- /texts/invite-de.md: -------------------------------------------------------------------------------- 1 | #Die erste Python Konferenz stellt Speakers vor, sie wird im November stattfinden 2 | 3 | [PyCon CZ](http://cz.pycon.org/), die erste Konferenz in der Tschechische Republik, gerichtet reinlich an die **Programmiersprache [Python](http://python.cz/)**, wird in **Brno** an [VUT FIT](http://www.fit.vutbr.cz/) und in [Impact Hub](http://www.hubbrno.cz/) **von 14. bis 15. November** stattfinden. Die Veranstaltung wurde mit Hilfe der ungewinnlichen Organisation [Pyvec](http://pyvec.org/) organisiert, die schon ein paar Jahren in Tschechien um die Propagierung Pythons und Kultivierung von seiner Gesellschaft bemüht. 4 | 5 | ![PyCon CZ 2015](https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/master/static/files/static/images/pycon-cz-logo.png) 6 | 7 | Der erste Tag wurde den Vortragen gewidmet. Am Programm steht **14 Beiträge von tschechischen und ausländischen Speakers**. Die Konferenz wurde von [Amber Brown](https://twitter.com/hawkieowl) (Twisted) a [Russell-Keith Magee](https://twitter.com/freakboy3742) (Django) geöffnet, dann folgen die Beiträge aus verschiedenen Milieuen, wo man Python benutzen kann (Genengineering, Web frameworks, Forschung der Teilchen in CERN, DevOps, Embedded System, Bankwesen, ...). [Samstags Programm](https://cz.pycon.org/2015/talks/) 8 | 9 | Am Sonntag werden **Workshops und Sprints** stattfinden, wo ein Besucher gerade die Hand ans Werk legen kann. Man kann auf die Sicherheit, Kryptographie, Cloud, Scrappers, Geographie und andere freuen. [Sonntags Programm](https://cz.pycon.org/2015/workshops/) 10 | 11 | Vor selbsten Konferenz spielt sich die weitere Ausgabe Workshops für die **Anfängerin in Programmierung** - [Django Girls](http://djangogirls.org/brno/), ab, wo man sich noch immer [anmelden kann](https://djangogirls.org/brno/apply/). 12 | 13 | [Eintrittskarten wurden von **75€** gekauft](https://cz.pycon.org/2015/about/tickets.html), für Studenten ist verbilligene Variante **45€**. 14 | -------------------------------------------------------------------------------- /static/jade/about/tickets.jade: -------------------------------------------------------------------------------- 1 | extends ../base 2 | 3 | block viewport 4 | .container 5 | h1 Tickets 6 | 7 | p.lead. 8 | Ticket sales are now closed. Looking forward to meet you all at 9 | the first year edition of #[strong PyCon CZ]. 10 | 11 | include ../components/twitter 12 | 13 | h2 What's included in the ticket price 14 | 15 | ul.ticket-overview 16 | li #[span.number 2] days of conference 17 | li #[span.number 2] tracks of talks 18 | li #[span.number 14] talks 19 | li #[span.number 2] delicious lunches 20 | li #[span.number 4+] finest coffee with Czech cakes 21 | li #[span.number ∞] pure awesomeness 22 | 23 | ul.ticket-features 24 | li all talks, sprints and workshops during the #[strong two days] of the event 25 | li lunch and refreshments on both days 26 | li the finest #[strong coffee] with awesome #[strong Czech cakes] during breaks 27 | li a t-shirt and a bag full of conference swag and gifts 28 | 29 | p. 30 | Accommodation and travel costs are not covered. However, we'll try to 31 | find you the best hotel deals in Brno. 32 | 33 | h2 What ticket is the right for me? 34 | 35 | p. 36 | We try to keep the ticket prices as low as possible. Every corporate 37 | ticket allows us to issue two #[strong Student] tickets. If you employer 38 | is paying for your ticket, please select a #[strong Corporate] rate. 39 | 40 | p. 41 | Do you want to buy more than 10 tickets for your employees? Contact us 42 | directly and also consider our #[a(href=pageUrl("about/sponsorship.html")) sponsorship] 43 | packages. 44 | 45 | h2 Where does all the money go? 46 | 47 | p. 48 | This is a non-profit event run by volunteers and driven by the community. 49 | The event is organized with the help of Czech Python/Django community 50 | – #[a(href="http://pyvec.org") Pyvec]. 51 | 52 | p. 53 | #[strong Everything] we receive from your ticket purchases goes 54 | directly towards the costs of running the event and making it enjoyable 55 | and memorable for all attendees. 56 | -------------------------------------------------------------------------------- /emails/04_summary.md: -------------------------------------------------------------------------------- 1 | Hi Tomáš, 2 | 3 | thank you again that you were so brave and came to the very first PyCon CZ in November 2015. 4 | 5 | 6 | ## Feedback 7 | 8 | First of all, we would like to encourage you to give us feedback on the conference. 9 | If you think something could be improved or you have ideas on what could be done next time, 10 | please let us know at our [GitHub repository](https://github.com/pyvec/cz.pycon.org-2016/) 11 | or privately just by replying to this e-mail. Also, don't hesitate to contact us 12 | in case you would like to join the team of organizers. 13 | 14 | ## Videos 15 | 16 | All recordings of talks are online at [SuperLectures](http://www.superlectures.com/pycon2015/). 17 | Check out what you missed! 18 | 19 | ## Photos 20 | 21 | Apart from photos we were posting to our [Twitter account](https://twitter.com/pyconcz) 22 | and [Facebook Event](https://www.facebook.com/events/1624916497723396/) during 23 | the action, we have also recently uploaded a [photo set by our professional 24 | photographer](https://goo.gl/photos/Sdpx5ZACzU9hsD9i8). Maybe you can find yourself 25 | or your friends! 26 | 27 | ## News 28 | 29 | Don't forget to follow [our Twitter account](https://twitter.com/pyconcz) as that's 30 | where we publish all important news. 31 | 32 | ## Czech Python User Group 33 | 34 | At the end of 2015, two new websites about the Czech Python community emerged. 35 | [Python.cz](http://python.cz/) is the main gateway for all sorts 36 | of information, while at [pyvo.cz](http://pyvo.cz) it's all about our meetups. 37 | You're always welcome to come and present at them! 38 | 39 | ## PyCon SK 40 | 41 | Enjoyed attending our very first PyCon? How about visiting another one organized by our friends in Slovakia in March? Check 42 | out [PyCon SK](https://pycon.sk/sk/) and their 43 | [Django Girls event](http://djangogirls.org/bratislava/). They are still looking 44 | for speakers, coaches, and of course, attendees. 45 | 46 | ## Thank you! 47 | 48 | We hope you enjoyed the end of 2015. We're looking forward to new challenges that 2016 will bring us and we hope you stay with us, as awesome and as supporting as you have always been. 49 | 50 | PyCon CZ Team 51 | -------------------------------------------------------------------------------- /scripts/jetbrains-coupons.py: -------------------------------------------------------------------------------- 1 | import csv 2 | import smtplib 3 | import time 4 | 5 | from email.mime.text import MIMEText 6 | from email.header import Header 7 | 8 | from collections import namedtuple 9 | 10 | # replace with real password 11 | password = '42' 12 | 13 | Promo = namedtuple("Promo", "first_name email discount_code") 14 | 15 | email_template = """ 16 | Hi {first_name}, 17 | last weekend was like a roller coaster ride! We've forgot to give you a nice 18 | gift from our silver sponsor PyCharm - the discount code for personal licenses. 19 | 20 | Here it is: 21 | 22 | {discount_code} 23 | 24 | The code gives you 20% discount from PyCharm personal license subscription, 25 | new or renewal. It's valid until 14th December 2015. 26 | 27 | You can buy or renew PyCharm here: https://www.jetbrains.com/pycharm/buy/#personal 28 | 29 | If you still have some questions, contact PyCharm support at promo@jetbrains.com. 30 | 31 | 32 | Cheers, 33 | PyCon CZ team 34 | 35 | 36 | Note: More info about PyCon CZ 2015 (photos, videos, report) coming soon. 37 | """ 38 | 39 | test_recipient = Promo("Tomas", "tomas.ehrlich@gmail.com", "ABCD-EFGH-IJKL") 40 | 41 | 42 | def send_email(recipient, smtp): 43 | body = email_template.format( 44 | first_name=recipient.first_name.capitalize(), 45 | discount_code=recipient.discount_code 46 | ) 47 | msg = MIMEText(body) 48 | msg['Subject'] = 'PyCharm discount code' 49 | msg['From'] = 'info@pycon.cz' 50 | msg['To'] = recipient.email 51 | return smtp.send_message(msg) 52 | 53 | 54 | def send_bulk_email(smtp): 55 | with open('jetbrains-codes.csv', newline='') as io: 56 | recipients = csv.reader(io, delimiter=',') 57 | for data in recipients: 58 | recipient = Promo(*data) 59 | print("Sending to {email}".format(email=recipient.email)) 60 | send_email(recipient, smtp) 61 | time.sleep(1) 62 | 63 | 64 | smtp = smtplib.SMTP_SSL('smtp.zoho.com') 65 | smtp.login('info@pycon.cz', password) 66 | 67 | send_email(test_recipient, smtp) 68 | yes = input("Testing email send. Check it. Do you want to send 250 emails now? [y/N]") 69 | 70 | if yes == "y": 71 | send_bulk_email(smtp) 72 | 73 | smtp.quit() 74 | -------------------------------------------------------------------------------- /static/scss/bootstrap/_progress-bars.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Progress bars 3 | // -------------------------------------------------- 4 | 5 | 6 | // Bar animations 7 | // ------------------------- 8 | 9 | // WebKit 10 | @-webkit-keyframes progress-bar-stripes { 11 | from { background-position: 40px 0; } 12 | to { background-position: 0 0; } 13 | } 14 | 15 | // Spec and IE10+ 16 | @keyframes progress-bar-stripes { 17 | from { background-position: 40px 0; } 18 | to { background-position: 0 0; } 19 | } 20 | 21 | 22 | // Bar itself 23 | // ------------------------- 24 | 25 | // Outer container 26 | .progress { 27 | overflow: hidden; 28 | height: $line-height-computed; 29 | margin-bottom: $line-height-computed; 30 | background-color: $progress-bg; 31 | border-radius: $progress-border-radius; 32 | @include box-shadow(inset 0 1px 2px rgba(0,0,0,.1)); 33 | } 34 | 35 | // Bar of progress 36 | .progress-bar { 37 | float: left; 38 | width: 0%; 39 | height: 100%; 40 | font-size: $font-size-small; 41 | line-height: $line-height-computed; 42 | color: $progress-bar-color; 43 | text-align: center; 44 | background-color: $progress-bar-bg; 45 | @include box-shadow(inset 0 -1px 0 rgba(0,0,0,.15)); 46 | @include transition(width .6s ease); 47 | } 48 | 49 | // Striped bars 50 | // 51 | // `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the 52 | // `.progress-bar-striped` class, which you just add to an existing 53 | // `.progress-bar`. 54 | .progress-striped .progress-bar, 55 | .progress-bar-striped { 56 | @include gradient-striped; 57 | background-size: 40px 40px; 58 | } 59 | 60 | // Call animation for the active one 61 | // 62 | // `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the 63 | // `.progress-bar.active` approach. 64 | .progress.active .progress-bar, 65 | .progress-bar.active { 66 | @include animation(progress-bar-stripes 2s linear infinite); 67 | } 68 | 69 | 70 | // Variations 71 | // ------------------------- 72 | 73 | .progress-bar-success { 74 | @include progress-bar-variant($progress-bar-success-bg); 75 | } 76 | 77 | .progress-bar-info { 78 | @include progress-bar-variant($progress-bar-info-bg); 79 | } 80 | 81 | .progress-bar-warning { 82 | @include progress-bar-variant($progress-bar-warning-bg); 83 | } 84 | 85 | .progress-bar-danger { 86 | @include progress-bar-variant($progress-bar-danger-bg); 87 | } 88 | -------------------------------------------------------------------------------- /static/scss/bootstrap/_pagination.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Pagination (multiple pages) 3 | // -------------------------------------------------- 4 | .pagination { 5 | display: inline-block; 6 | padding-left: 0; 7 | margin: $line-height-computed 0; 8 | border-radius: $border-radius-base; 9 | 10 | > li { 11 | display: inline; // Remove list-style and block-level defaults 12 | > a, 13 | > span { 14 | position: relative; 15 | float: left; // Collapse white-space 16 | padding: $padding-base-vertical $padding-base-horizontal; 17 | line-height: $line-height-base; 18 | text-decoration: none; 19 | color: $pagination-color; 20 | background-color: $pagination-bg; 21 | border: 1px solid $pagination-border; 22 | margin-left: -1px; 23 | } 24 | &:first-child { 25 | > a, 26 | > span { 27 | margin-left: 0; 28 | @include border-left-radius($border-radius-base); 29 | } 30 | } 31 | &:last-child { 32 | > a, 33 | > span { 34 | @include border-right-radius($border-radius-base); 35 | } 36 | } 37 | } 38 | 39 | > li > a, 40 | > li > span { 41 | &:hover, 42 | &:focus { 43 | color: $pagination-hover-color; 44 | background-color: $pagination-hover-bg; 45 | border-color: $pagination-hover-border; 46 | } 47 | } 48 | 49 | > .active > a, 50 | > .active > span { 51 | &, 52 | &:hover, 53 | &:focus { 54 | z-index: 2; 55 | color: $pagination-active-color; 56 | background-color: $pagination-active-bg; 57 | border-color: $pagination-active-border; 58 | cursor: default; 59 | } 60 | } 61 | 62 | > .disabled { 63 | > span, 64 | > span:hover, 65 | > span:focus, 66 | > a, 67 | > a:hover, 68 | > a:focus { 69 | color: $pagination-disabled-color; 70 | background-color: $pagination-disabled-bg; 71 | border-color: $pagination-disabled-border; 72 | cursor: $cursor-disabled; 73 | } 74 | } 75 | } 76 | 77 | // Sizing 78 | // -------------------------------------------------- 79 | 80 | // Large 81 | .pagination-lg { 82 | @include pagination-size($padding-large-vertical, $padding-large-horizontal, $font-size-large, $border-radius-large); 83 | } 84 | 85 | // Small 86 | .pagination-sm { 87 | @include pagination-size($padding-small-vertical, $padding-small-horizontal, $font-size-small, $border-radius-small); 88 | } 89 | -------------------------------------------------------------------------------- /static/jade/components/twitter.jade: -------------------------------------------------------------------------------- 1 | .twitter-list 2 | .twitter-content 3 | blockquote.twitter-tweet(lang="en") 4 | p(lang="en", dir="ltr"). 5 | Super impressed with #[a(href="https://twitter.com/pyconcz") @pyconcz]. 6 | For a first edition, they're doing a lot of things right. You should 7 | come too: #[a(href="https://t.co/TBT3ME854v") https:\/\/t.co\/TBT3ME854v] 8 | 9 | | — Baptiste Mispelon (@bmispelon) 10 | a(href="https://twitter.com/bmispelon/status/654613420797480960") October 15, 2015 11 | 12 | .twitter-content 13 | blockquote.twitter-tweet(lang="en") 14 | p(lang="en", dir="ltr"). 15 | Just a reminder that #[a(href="https://twitter.com/pyconcz") @pyconcz] team 16 | is absolutely killing it, and it’s their first! ⚡️You should go: 17 | #[a(href="https://t.co/iIioxCTQMd") https:\/\/t.co\/iIioxCTQMd] 18 | 19 | | — Ola Sitarska (@olasitarska) 20 | a(href="https://twitter.com/olasitarska/status/654705632327548928") October 15, 2015 21 | 22 | .twitter-list 23 | .twitter-content 24 | blockquote.twitter-tweet(lang="en") 25 | p(lang="en", dir="ltr"). 26 | Just bought a ticket for #[a(href="https://twitter.com/hashtag/pyconcz?src=hash") #pyconcz] 27 | #[a(href="https://t.co/w6NZ6CdCQ5") https:\/\/t.co\/w6NZ6CdCQ5] The list 28 | of talks looks really interesting. 29 | 30 | | — Jirka Vejrazka (@JirkaV) #[a(href="https://twitter.com/JirkaV/status/654931137463197696") October 16, 2015] 31 | 32 | .twitter-content 33 | blockquote.twitter-tweet(lang="en") 34 | p(lang="en", dir="ltr"). 35 | I just registered for PyCon CZ 2015 #[a(href="https://t.co/7CKwOXBi0D") https:\/\/t.co\/7CKwOXBi0D] 36 | See you all there! :) 37 | | — Honza Král (@HonzaKral) #[a(href="https://twitter.com/HonzaKral/status/654705298842628096") October 15, 2015] 38 | 39 | .twitter-list 40 | .twitter-content 41 | blockquote.twitter-tweet(lang="en") 42 | p(lang="en", dir="ltr"). 43 | Oh man, #[a(href="https://twitter.com/pyconcz") @pyconcz] looks 44 | promising - Czech, Python, great talks, affordable tickets, good beer 45 | - what more can a developer ask for? 46 | | — Žan Anderle (@z_anderle) #[a(href="https://twitter.com/z_anderle/status/656168108080668673") October 19, 2015] 47 | 48 | script(async, src="//platform.twitter.com/widgets.js", charset="utf-8") 49 | -------------------------------------------------------------------------------- /static/scss/pyconcz.scss: -------------------------------------------------------------------------------- 1 | @import "variables"; 2 | @import "bootstrap/normalize"; 3 | @import "bootstrap/mixins/clearfix"; 4 | @import "bootstrap/mixins/grid"; 5 | @import "bootstrap/mixins/grid-framework"; 6 | @import "bootstrap/mixins/responsive-visibility"; 7 | @import "bootstrap/mixins/clearfix"; 8 | @import "bootstrap/grid"; 9 | @import "bootstrap/responsive-utilities"; 10 | 11 | @import "pycon/navbar"; 12 | @import "pycon/footer"; 13 | @import "pycon/twitter"; 14 | 15 | @import "pycon/home"; 16 | @import "pycon/coc"; 17 | @import "pycon/map"; 18 | @import "pycon/talks"; 19 | @import "pycon/team"; 20 | @import "pycon/tickets"; 21 | @import "pycon/sponsors"; 22 | 23 | @import url(https://fonts.googleapis.com/css?family=Amatic+SC:700); 24 | 25 | @font-face { 26 | font-family: "Amatic"; 27 | font-style: normal; 28 | font-weight: 700; 29 | src: local("Amatic SC Bold"), local("AmaticSC-Bold"), url(https://fonts.gstatic.com/s/amaticsc/v7/IDnkRTPGcrSVo50UyYNK75S3E-kSBmtLoNJPDtbj2Pk.ttf) format("truetype"); 30 | } 31 | 32 | * { 33 | box-sizing: border-box; 34 | } 35 | 36 | html, 37 | body { 38 | width: 100%; 39 | height: 100%; 40 | } 41 | 42 | body { 43 | overflow-x: hidden; 44 | font-weight: 300; 45 | font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", Helvetica, sans-serif; 46 | line-height: 1.4; 47 | } 48 | 49 | a { 50 | color: $brand-primary; 51 | 52 | sup { 53 | display:inline-block; 54 | text-decoration: none; 55 | } 56 | } 57 | 58 | .canvas { 59 | height: 100%; 60 | } 61 | 62 | .viewport { 63 | min-height: 100%; 64 | padding-top: $navbar-height; 65 | padding-bottom: 40px; 66 | 67 | @media (min-width: $screen-sm) { 68 | padding-bottom: $footer-height; 69 | } 70 | } 71 | 72 | .clearfix { 73 | @include clearfix(); 74 | } 75 | 76 | .lead { 77 | font-size: 1.2em; 78 | } 79 | 80 | .anchor { 81 | position: relative; 82 | top: -$navbar-height; 83 | display: block; 84 | visibility: hidden; 85 | } 86 | 87 | h1 { 88 | color: $brand-secondary; 89 | } 90 | 91 | h2, 92 | h3 { 93 | margin: 2em 0 1em; 94 | color: $brand-primary; 95 | } 96 | 97 | hr { 98 | height: 1px; 99 | border: 0; 100 | background-color: $brand-primary; 101 | } 102 | 103 | .pycontest-email { 104 | color: $brand-secondary; 105 | font-size: 36px; 106 | text-align: center; 107 | font-weight: bold; 108 | } 109 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | > ⚠ This repository is archived 🗄 2 | > 3 | > [https://cz.pycon.org/2015/](https://cz.pycon.org/2015/) is now served as a static website. Look for it in the [repo for PyCon CZ 2019](https://github.com/pyvec/cz.pycon.org-2019/) (or further years). 4 | 5 | 6 | [![Circle CI](https://circleci.com/gh/pyvec/cz.pycon.org-2015.svg?style=svg)](https://circleci.com/gh/pyvec/cz.pycon.org-2015) 7 | 8 | PyCon CZ 2015 -- early adopters version 9 | ======================================= 10 | 11 | Welcome! It's really going to happen this year. The Czech PyCon, local Python conference for anyone interested in Python programming language. 12 | 13 | Join us 14 | ------- 15 | 16 | PyCons are community events. Everybody is welcome, anyone can contribute. You can join us on following channels: 17 | 18 | - Google Group -- [pycon-cs@googlegroups.com](https://groups.google.com/forum/#!forum/pycon-cs) 19 | - [Trello](https://trello.com/czechpycon2015) 20 | - [Slack](https://pyconcz.slack.com) -- request invite at tomas.ehrlich@gmail.com 21 | 22 | Google Group mailing list is available for everyone. Trello is read-only for public and Slack is private. Send email to tomas.ehrlich@gmail.com if you want access them. 23 | 24 | Contribute 25 | ---------- 26 | 27 | 1. Setup development environment: 28 | 29 | ``` 30 | npm install -g gulp bower 31 | 32 | cd static 33 | npm install 34 | bower install 35 | ``` 36 | 37 | (If you don't want to install system-wide, run e.g. `npm config set prefix ~/.local/npm_prefix` beforehand; then run the tools from `~/.local/npm_prefix/bin`.) 38 | 39 | 2. Run *watcher*: 40 | 41 | ``` 42 | cd static && gulp 43 | ``` 44 | 45 | 3. Visit http://localhost:3000/2015/ 46 | 47 | This is needed because the development version doesn't have the 2015 redirect set up. 48 | 49 | 4. Commit changes and submit pull-request 50 | 51 | Publish to AWS S3 (authorization required) 52 | ------------------------------------------ 53 | 54 | `master` branch is published automatically to [][cz.pycon.org] and `dev` branch 55 | to [][dev.pycon.cz] in CircleCI. If you want to do it manually, you need to: 56 | 57 | 1. Copy `aws.json.example` to `aws.json` and provide credentials for your 58 | AWS IAM role. 59 | 60 | 2. Build all static assets and publish them to S3 (domain [][dev.pycon.cz]): 61 | 62 | ``` 63 | gulp publish 64 | ``` 65 | 66 | Running `gulp publish --production` will publish static assets to 67 | [][cz.pycon.org]. 68 | 69 | License 70 | ------- 71 | 72 | MIT 73 | -------------------------------------------------------------------------------- /static/jade/base.jade: -------------------------------------------------------------------------------- 1 | include components/vars 2 | block vars 3 | 4 | doctype html 5 | html(lang='en-us') 6 | head 7 | block title 8 | title= "PyCon CZ " + year 9 | 10 | base(href='/'+year+'/') 11 | 12 | meta(charset='utf-8') 13 | meta(name='viewport', content='width=device-width, initial-scale=1.0') 14 | meta(name='keywords', content='Python, PyCon, Brno, Django, conference, Česká Republika, konference') 15 | meta(name='description', content='The very first Python conference in the Czech Republic') 16 | link(rel='shortcut icon', href='/'+year+'/static/images/pycon-cz-logo-icon.svg', type='image/svg+xml') 17 | link(rel='shortcut icon', href='/'+year+'/static/images/pycon-cz-logo-icon.png', type='image/png') 18 | //if lt IE 9 19 | script(src='https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js') 20 | link(href='https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css', rel='stylesheet') 21 | link(href='/'+year+'/static/css/pyconcz.css', rel='stylesheet') 22 | 23 | script(src='https://js.tito.io/v1', async) 24 | link(rel="stylesheet", type="text/css", href='https://css.tito.io/v1') 25 | 26 | //- Facebook Meta 27 | meta(property="og:title", content="PyCon CZ 2015" ) 28 | meta(property="og:site_name", content="cz.pycon.org" ) 29 | meta(property="og:description", content="The very first Python conference in the Czech Republic" ) 30 | meta(property="og:image", content=urlBase + "/static/images/pycon-cz-logo-fb.png" ) 31 | meta(property="og:url", content=urlBase) 32 | meta(property="og:type", content="website" ) 33 | 34 | body(class=pageClass, ontouchstart="") 35 | include components/navbar 36 | .canvas 37 | .overlay 38 | .viewport 39 | block viewport 40 | 41 | include components/footer 42 | include components/js 43 | 44 | script(type="text/javascript"). 45 | function closeNavbar() { 46 | $closer.unbind(); 47 | $body.toggleClass("open"); 48 | } 49 | 50 | var $body = $('body'); 51 | var $closer = $('.viewport, .canvas, .navbar a'); 52 | 53 | $('.navbar-toggle').click(function(ev) { 54 | ev.preventDefault(); 55 | 56 | if ($body.hasClass('open')) { 57 | closeNavbar(); 58 | } else { 59 | $body.toggleClass("open"); 60 | $closer.click(function(ev) { 61 | closeNavbar(); 62 | }) 63 | } 64 | }); 65 | -------------------------------------------------------------------------------- /static/scss/bootstrap/mixins/_grid-framework.scss: -------------------------------------------------------------------------------- 1 | // Framework grid generation 2 | // 3 | // Used only by Bootstrap to generate the correct number of grid classes given 4 | // any value of `$grid-columns`. 5 | 6 | // [converter] This is defined recursively in LESS, but Sass supports real loops 7 | @mixin make-grid-columns($i: 1, $list: ".col-xs-#{$i}, .col-sm-#{$i}, .col-md-#{$i}, .col-lg-#{$i}") { 8 | @for $i from (1 + 1) through $grid-columns { 9 | $list: "#{$list}, .col-xs-#{$i}, .col-sm-#{$i}, .col-md-#{$i}, .col-lg-#{$i}"; 10 | } 11 | #{$list} { 12 | position: relative; 13 | // Prevent columns from collapsing when empty 14 | min-height: 1px; 15 | // Inner gutter via padding 16 | padding-left: ($grid-gutter-width / 2); 17 | padding-right: ($grid-gutter-width / 2); 18 | } 19 | } 20 | 21 | 22 | // [converter] This is defined recursively in LESS, but Sass supports real loops 23 | @mixin float-grid-columns($class, $i: 1, $list: ".col-#{$class}-#{$i}") { 24 | @for $i from (1 + 1) through $grid-columns { 25 | $list: "#{$list}, .col-#{$class}-#{$i}"; 26 | } 27 | #{$list} { 28 | float: left; 29 | } 30 | } 31 | 32 | 33 | @mixin calc-grid-column($index, $class, $type) { 34 | @if ($type == width) and ($index > 0) { 35 | .col-#{$class}-#{$index} { 36 | width: percentage(($index / $grid-columns)); 37 | } 38 | } 39 | @if ($type == push) and ($index > 0) { 40 | .col-#{$class}-push-#{$index} { 41 | left: percentage(($index / $grid-columns)); 42 | } 43 | } 44 | @if ($type == push) and ($index == 0) { 45 | .col-#{$class}-push-0 { 46 | left: auto; 47 | } 48 | } 49 | @if ($type == pull) and ($index > 0) { 50 | .col-#{$class}-pull-#{$index} { 51 | right: percentage(($index / $grid-columns)); 52 | } 53 | } 54 | @if ($type == pull) and ($index == 0) { 55 | .col-#{$class}-pull-0 { 56 | right: auto; 57 | } 58 | } 59 | @if ($type == offset) { 60 | .col-#{$class}-offset-#{$index} { 61 | margin-left: percentage(($index / $grid-columns)); 62 | } 63 | } 64 | } 65 | 66 | // [converter] This is defined recursively in LESS, but Sass supports real loops 67 | @mixin loop-grid-columns($columns, $class, $type) { 68 | @for $i from 0 through $columns { 69 | @include calc-grid-column($i, $class, $type); 70 | } 71 | } 72 | 73 | 74 | // Create grid for specific class 75 | @mixin make-grid($class) { 76 | @include float-grid-columns($class); 77 | @include loop-grid-columns($grid-columns, $class, width); 78 | @include loop-grid-columns($grid-columns, $class, pull); 79 | @include loop-grid-columns($grid-columns, $class, push); 80 | @include loop-grid-columns($grid-columns, $class, offset); 81 | } 82 | -------------------------------------------------------------------------------- /static/scss/bootstrap/_print.scss: -------------------------------------------------------------------------------- 1 | /*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ 2 | 3 | // ========================================================================== 4 | // Print styles. 5 | // Inlined to avoid the additional HTTP request: h5bp.com/r 6 | // ========================================================================== 7 | 8 | @media print { 9 | *, 10 | *:before, 11 | *:after { 12 | background: transparent !important; 13 | color: #000 !important; // Black prints faster: h5bp.com/s 14 | box-shadow: none !important; 15 | text-shadow: none !important; 16 | } 17 | 18 | a, 19 | a:visited { 20 | text-decoration: underline; 21 | } 22 | 23 | a[href]:after { 24 | content: " (" attr(href) ")"; 25 | } 26 | 27 | abbr[title]:after { 28 | content: " (" attr(title) ")"; 29 | } 30 | 31 | // Don't show links that are fragment identifiers, 32 | // or use the `javascript:` pseudo protocol 33 | a[href^="#"]:after, 34 | a[href^="javascript:"]:after { 35 | content: ""; 36 | } 37 | 38 | pre, 39 | blockquote { 40 | border: 1px solid #999; 41 | page-break-inside: avoid; 42 | } 43 | 44 | thead { 45 | display: table-header-group; // h5bp.com/t 46 | } 47 | 48 | tr, 49 | img { 50 | page-break-inside: avoid; 51 | } 52 | 53 | img { 54 | max-width: 100% !important; 55 | } 56 | 57 | p, 58 | h2, 59 | h3 { 60 | orphans: 3; 61 | widows: 3; 62 | } 63 | 64 | h2, 65 | h3 { 66 | page-break-after: avoid; 67 | } 68 | 69 | // Bootstrap specific changes start 70 | // 71 | // Chrome (OSX) fix for https://github.com/twbs/bootstrap/issues/11245 72 | // Once fixed, we can just straight up remove this. 73 | select { 74 | background: #fff !important; 75 | } 76 | 77 | // Bootstrap components 78 | .navbar { 79 | display: none; 80 | } 81 | .btn, 82 | .dropup > .btn { 83 | > .caret { 84 | border-top-color: #000 !important; 85 | } 86 | } 87 | .label { 88 | border: 1px solid #000; 89 | } 90 | 91 | .table { 92 | border-collapse: collapse !important; 93 | 94 | td, 95 | th { 96 | background-color: #fff !important; 97 | } 98 | } 99 | .table-bordered { 100 | th, 101 | td { 102 | border: 1px solid #ddd !important; 103 | } 104 | } 105 | 106 | // Bootstrap specific changes end 107 | } 108 | -------------------------------------------------------------------------------- /static/jade/components/footer.jade: -------------------------------------------------------------------------------- 1 | footer.site-footer 2 | .container 3 | nav 4 | ul.nav-footer 5 | li.section 6 | a.nav-title(href=pageUrl("#")) About 7 | ul 8 | li 9 | a(href=pageUrl("about/team.html")) Team 10 | li 11 | a(href=pageUrl("about/speakers.html")) #[strong Speakers] 12 | li 13 | a(href=pageUrl("about/tickets.html")) Tickets 14 | li 15 | a(href=pageUrl("about/pycontest.html")) #PyConTest 16 | li 17 | a(href=pageUrl("about/sponsorship.html")) Sponsorship 18 | li 19 | a(href=pageUrl("about/code-of-conduct.html")) #[strong Code of Conduct] 20 | 21 | li.section 22 | a.nav-title(href=pageUrl("getting-here/")) Getting Here 23 | ul 24 | li 25 | a(href=pageUrl("getting-here/#travelling")) Travelling 26 | li 27 | a(href=pageUrl("getting-here/#accommodation")) Accommodation 28 | 29 | li.section 30 | a.nav-title(href=pageUrl("talks/")) Talks 31 | ul 32 | li 33 | a(href=pageUrl("talks/")) Schedule 34 | li 35 | a(href=pageUrl("talks/#directions")) Directions 36 | 37 | li.section 38 | a.nav-title(href=pageUrl("workshops/")) Sprints & Workshops 39 | ul 40 | li 41 | a(href=pageUrl("workshops/")) Schedule 42 | li 43 | a(href=pageUrl("workshops/#directions")) Directions 44 | //- li 45 | //- a(href=pageUrl("workshops/registration.html")) #[strong Registration] 46 | 47 | .social-links 48 | | Spread the word about #[strong PyCon CZ!] 49 | ul 50 | li 51 | a(href='https://twitter.com/pyconcz') 52 | i.fa.fa-twitter 53 | li 54 | a(href='https://www.facebook.com/events/1624916497723396/') 55 | i.fa.fa-facebook 56 | li 57 | a(href='http://lanyrd.com/2015/pyconcz/') 58 | i.fa.fa-calendar-check-o 59 | li 60 | a(href='https://github.com/pyvec/cz.pycon.org-2015') 61 | i.fa.fa-github 62 | li 63 | a(href='https://pyconcz.slack.com') 64 | i.fa.fa-slack 65 | li 66 | a(href='mailto:info@pycon.cz') 67 | i.fa.fa-envelope 68 | 69 | .psf-trademark 70 | p 71 | :markdown 72 | [PyCon™](href='https://www.python.org/psf/trademarks/pycon/') 73 | is a trademark for worldwide conference activities claimed by 74 | [Python Software foundation](href='https://www.python.org/psf-landing/'). 75 | -------------------------------------------------------------------------------- /static/jade/about/sponsorship.jade: -------------------------------------------------------------------------------- 1 | extends ../base 2 | 3 | block vars 4 | - var pageClass = "page-sponsors" 5 | 6 | block viewport 7 | .container 8 | h1.text-center Become our partner 9 | 10 | p.lead. 11 | #[a(href=pageUrl("")) PyCon CZ] is a two-day conference organized by 12 | the Python community for the Python community. The conference will include 13 | 1 full day of talks featuring 2 international keynote speakers (all 14 | sessions will be held in English), and 1 day of sprints and workshops 15 | where Pythonistas can get together and work on their open source projects. 16 | 17 | p. 18 | This year is the first edition of PyCon CZ, and we are looking forward 19 | to bringing the tradition of diverse and insightful speakers, top-quality 20 | venues, and a great atmosphere to the Czech Republic. Regional PyCons are 21 | well-known for attracting developers, sysadmins, writers, designers, and 22 | community members from all over. 23 | 24 | p. 25 | These packages are recommendations for your company or organization. If 26 | you would like to contribute a different amount or an alternative sponsorship 27 | format, please let us know and we’ll be happy to discuss custom packages. 28 | 29 | h2 Sponsorship Packages 30 | 31 | .row 32 | .col-md-4 33 | h3 #[strike Platinum €3,000] #[small Sold out] 34 | p As a Platinum sponsor, you will receive the following benefits: 35 | ul 36 | li Full width logo on the event website 37 | li 3 tickets 38 | li Display unlimited promotional (“Swag”) items 39 | li Your own booth in the venue hall 40 | li Address audience during a sponsorship lightning talk (5 minutes) 41 | li Space for copy in welcome/goodbye emails to attendees 42 | 43 | .col-md-4 44 | h3 Gold €1,500 45 | p As a Gold sponsor, you will receive the following benefits: 46 | ul.text-left 47 | li Large logo on the event website 48 | li 2 tickets 49 | li Physical logo at the event (eg. banners, badge, stickers, etc) 50 | li Your own booth in the venue hall 51 | li Sponsorship branding, one of the following 52 | ul 53 | li Name the lunch 54 | li Name the pre-registration social 55 | li Name the main conference party 56 | li #[strike Lanyards] #[small sold out] 57 | 58 | .col-md-4 59 | h3 Silver €750 60 | p As a Silver sponsor, you will receive the following benefits: 61 | ul.text-left 62 | li Small logo on the event website 63 | li 1 ticket 64 | li Display 1 promotional (“Swag”) item 65 | 66 | p.call-to-action. 67 | Please direct all inquiries to #[a(href="mailto:info@pycon.cz") info@pycon.cz] 68 | -------------------------------------------------------------------------------- /static/scss/pycon/_home.scss: -------------------------------------------------------------------------------- 1 | %centered-content { 2 | text-align: center; 3 | } 4 | 5 | %section-margin { 6 | margin-top: 50px; 7 | margin-bottom: 60px; 8 | } 9 | 10 | %divider { 11 | &:after { 12 | position: relative; 13 | top: 30px; 14 | width: 300px; 15 | height: 1px; 16 | margin: 0 auto; 17 | background-color: $brand-silent; 18 | } 19 | } 20 | 21 | // Global style overrides 22 | .home { 23 | h1 { 24 | color: $brand-primary; 25 | } 26 | 27 | h2 { 28 | margin: 0; 29 | color: $brand-secondary; 30 | font-size: 30px; 31 | } 32 | 33 | .lead { 34 | font-size: 24px; 35 | } 36 | } 37 | 38 | // Pycon Logo jumbotron 39 | .pycon { 40 | @extend %section-margin; 41 | @extend %centered-content; 42 | 43 | font-family: Amatic, "Helvetica Neue"; 44 | line-height: 1; 45 | 46 | .pycon-logo { 47 | display: inline-block; 48 | vertical-align: middle; 49 | width: 250px; 50 | height: 250px; 51 | } 52 | 53 | h1 { 54 | display: inline-block; 55 | margin: 0; 56 | font-size: 96px; 57 | text-align: left; 58 | vertical-align: middle; 59 | } 60 | 61 | .year { 62 | display: block; 63 | margin-left: 60px; 64 | color: $brand-secondary; 65 | } 66 | 67 | @media (min-width: $screen-xs) { 68 | .year { 69 | margin-left: 0; 70 | } 71 | } 72 | } 73 | 74 | .pycon-info { 75 | position: relative; 76 | font-size: 60px; 77 | font-family: Amatic, "Helvetica Neue"; 78 | 79 | .pycon-location, 80 | .pycon-date { 81 | display: block; 82 | margin: 0; 83 | margin-top: 20px; 84 | padding: 0 20px; 85 | } 86 | 87 | @media (min-width: $screen-sm) { 88 | left: -40px; 89 | 90 | .pycon-location, 91 | .pycon-date { 92 | display: inline-block; 93 | padding: 0 20px; 94 | } 95 | } 96 | } 97 | 98 | .claim { 99 | padding: 15px 0; 100 | color: $text-inverted; 101 | background-color: $brand-primary; 102 | 103 | font-size: 28px; 104 | text-align: center; 105 | } 106 | 107 | // Program at homepage 108 | .program { 109 | @extend %section-margin; 110 | @extend %divider; 111 | @include make-row(); 112 | } 113 | 114 | .program-item:first-child { 115 | @include make-sm-column-offset(2); 116 | } 117 | 118 | .program-item { 119 | @extend %centered-content; 120 | @include make-sm-column(4); 121 | 122 | font-size: 18px; 123 | 124 | .date { 125 | color: $brand-primary; 126 | } 127 | .venue { 128 | margin-top: 1em; 129 | font-size: 16px; 130 | i { 131 | padding: 0 .25em; 132 | } 133 | } 134 | } 135 | 136 | // Registration 137 | .registration { 138 | @extend %centered-content; 139 | @extend %section-margin; 140 | @extend %divider; 141 | } 142 | 143 | .tito { 144 | font-size: 20px; 145 | text-align: left; 146 | } 147 | -------------------------------------------------------------------------------- /static/scss/bootstrap/mixins/_forms.scss: -------------------------------------------------------------------------------- 1 | // Form validation states 2 | // 3 | // Used in forms.less to generate the form validation CSS for warnings, errors, 4 | // and successes. 5 | 6 | @mixin form-control-validation($text-color: #555, $border-color: #ccc, $background-color: #f5f5f5) { 7 | // Color the label and help text 8 | .help-block, 9 | .control-label, 10 | .radio, 11 | .checkbox, 12 | .radio-inline, 13 | .checkbox-inline, 14 | &.radio label, 15 | &.checkbox label, 16 | &.radio-inline label, 17 | &.checkbox-inline label { 18 | color: $text-color; 19 | } 20 | // Set the border and box shadow on specific inputs to match 21 | .form-control { 22 | border-color: $border-color; 23 | @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work 24 | &:focus { 25 | border-color: darken($border-color, 10%); 26 | $shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten($border-color, 20%); 27 | @include box-shadow($shadow); 28 | } 29 | } 30 | // Set validation states also for addons 31 | .input-group-addon { 32 | color: $text-color; 33 | border-color: $border-color; 34 | background-color: $background-color; 35 | } 36 | // Optional feedback icon 37 | .form-control-feedback { 38 | color: $text-color; 39 | } 40 | } 41 | 42 | 43 | // Form control focus state 44 | // 45 | // Generate a customized focus state and for any input with the specified color, 46 | // which defaults to the `$input-border-focus` variable. 47 | // 48 | // We highly encourage you to not customize the default value, but instead use 49 | // this to tweak colors on an as-needed basis. This aesthetic change is based on 50 | // WebKit's default styles, but applicable to a wider range of browsers. Its 51 | // usability and accessibility should be taken into account with any change. 52 | // 53 | // Example usage: change the default blue border and shadow to white for better 54 | // contrast against a dark gray background. 55 | @mixin form-control-focus($color: $input-border-focus) { 56 | $color-rgba: rgba(red($color), green($color), blue($color), .6); 57 | &:focus { 58 | border-color: $color; 59 | outline: 0; 60 | @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px $color-rgba); 61 | } 62 | } 63 | 64 | // Form control sizing 65 | // 66 | // Relative text size, padding, and border-radii changes for form controls. For 67 | // horizontal sizing, wrap controls in the predefined grid classes. `