├── .editorconfig ├── .gitignore ├── README.md ├── circle.yml ├── code-of-conduct.md ├── emails ├── 02_final_keynotes.txt ├── 03_events.md └── 04_summary.md ├── scripts └── jetbrains-coupons.py ├── static ├── .scss-lint.yml ├── coffee │ └── main.coffee ├── data │ ├── speakers.json │ └── workshops.json ├── files │ ├── static │ │ └── images │ │ │ ├── pycon-cz-logo-fb.png │ │ │ ├── pycon-cz-logo-icon.png │ │ │ ├── pycon-cz-logo-icon.svg │ │ │ ├── pycon-cz-logo.png │ │ │ ├── pycon-cz-logo.svg │ │ │ ├── pycontest │ │ │ ├── prizes-2.jpg │ │ │ └── prizes.jpg │ │ │ ├── speakers │ │ │ ├── amber_brown.jpg │ │ │ ├── anastassiya_zidkova.jpg │ │ │ ├── default_male.png │ │ │ ├── elyezer_rezende.jpg │ │ │ ├── jachym_cepicky.jpg │ │ │ ├── jan_cermak.jpg │ │ │ ├── jarka_schovancova.jpg │ │ │ ├── jessiva_rose.jpg │ │ │ ├── michal_horejsek.jpg │ │ │ ├── nischal_hp.jpg │ │ │ ├── peter_inglesby.jpg │ │ │ ├── piotr_dyba.jpg │ │ │ ├── radomir_dopieralski.jpg │ │ │ ├── robert_kuska.jpeg │ │ │ ├── russell_keith_magee.png │ │ │ ├── svetlana_margetova.jpg │ │ │ ├── tobas_bedrich.png │ │ │ ├── valentina_mukhamedzhanova.png │ │ │ ├── veros_kaplan.jpg │ │ │ └── viktor_stiskala.png │ │ │ ├── sponsors │ │ │ ├── imper.png │ │ │ ├── inuits.png │ │ │ ├── psf.png │ │ │ ├── pycharm.png │ │ │ ├── pycharm.svg │ │ │ ├── redhat.png │ │ │ ├── skypicker.png │ │ │ └── twisto.png │ │ │ ├── team │ │ │ ├── chris.jpg │ │ │ ├── natali.jpg │ │ │ ├── petr.jpg │ │ │ └── vehrlich.jpg │ │ │ └── ui │ │ │ ├── branch-in.png │ │ │ ├── branch-in.svg │ │ │ ├── branch-out.png │ │ │ ├── branch-out.svg │ │ │ └── branch.svg │ └── zohoverify │ │ └── verifyforzoho.html ├── gulpfile.litcoffee ├── jade │ ├── about │ │ ├── code-of-conduct.jade │ │ ├── pycontest.jade │ │ ├── speakers.jade │ │ ├── sponsorship.jade │ │ ├── team.jade │ │ └── tickets.jade │ ├── base.jade │ ├── components │ │ ├── footer.jade │ │ ├── js.jade │ │ ├── navbar.jade │ │ ├── twitter.jade │ │ └── vars.jade │ ├── getting-here │ │ └── index.jade │ ├── index.jade │ ├── pages │ │ └── timeline.jade │ ├── talks │ │ └── index.jade │ └── workshops │ │ └── index.jade ├── package.json └── scss │ ├── _bootstrap.scss │ ├── _variables.scss │ ├── bootstrap │ ├── _alerts.scss │ ├── _badges.scss │ ├── _breadcrumbs.scss │ ├── _button-groups.scss │ ├── _buttons.scss │ ├── _carousel.scss │ ├── _close.scss │ ├── _code.scss │ ├── _component-animations.scss │ ├── _dropdowns.scss │ ├── _forms.scss │ ├── _glyphicons.scss │ ├── _grid.scss │ ├── _input-groups.scss │ ├── _jumbotron.scss │ ├── _labels.scss │ ├── _list-group.scss │ ├── _media.scss │ ├── _mixins.scss │ ├── _modals.scss │ ├── _navbar.scss │ ├── _navs.scss │ ├── _normalize.scss │ ├── _pager.scss │ ├── _pagination.scss │ ├── _panels.scss │ ├── _popovers.scss │ ├── _print.scss │ ├── _progress-bars.scss │ ├── _responsive-embed.scss │ ├── _responsive-utilities.scss │ ├── _scaffolding.scss │ ├── _tables.scss │ ├── _theme.scss │ ├── _thumbnails.scss │ ├── _tooltip.scss │ ├── _type.scss │ ├── _utilities.scss │ ├── _variables.scss │ ├── _wells.scss │ └── mixins │ │ ├── _alerts.scss │ │ ├── _background-variant.scss │ │ ├── _border-radius.scss │ │ ├── _buttons.scss │ │ ├── _center-block.scss │ │ ├── _clearfix.scss │ │ ├── _forms.scss │ │ ├── _gradients.scss │ │ ├── _grid-framework.scss │ │ ├── _grid.scss │ │ ├── _hide-text.scss │ │ ├── _image.scss │ │ ├── _labels.scss │ │ ├── _list-group.scss │ │ ├── _nav-divider.scss │ │ ├── _nav-vertical-align.scss │ │ ├── _opacity.scss │ │ ├── _pagination.scss │ │ ├── _panels.scss │ │ ├── _progress-bar.scss │ │ ├── _reset-filter.scss │ │ ├── _resize.scss │ │ ├── _responsive-visibility.scss │ │ ├── _size.scss │ │ ├── _tab-focus.scss │ │ ├── _table-row.scss │ │ ├── _text-emphasis.scss │ │ ├── _text-overflow.scss │ │ └── _vendor-prefixes.scss │ ├── pycon │ ├── _coc.scss │ ├── _footer.scss │ ├── _home.scss │ ├── _map.scss │ ├── _navbar.scss │ ├── _sponsors.scss │ ├── _talks.scss │ ├── _team.scss │ ├── _tickets.scss │ └── _twitter.scss │ └── pyconcz.scss └── texts ├── invite-cs.md ├── invite-de.md └── invite-en.md /.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 | -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /code-of-conduct.md: -------------------------------------------------------------------------------- 1 | PyCon CZ is a community conference intended for networking and collaboration in the developer community. 2 | 3 | We value the participation of each member of the Python community and want all attendees to have an enjoyable and fulfilling experience. Accordingly, all attendees are expected to show respect and courtesy to other attendees throughout the conference and at all conference events, whether officially sponsored by PyCon or not. 4 | 5 | To make clear what is expected, all delegates/attendees, speakers, exhibitors, organizers and volunteers at any PyCon event are required to conform to the following Code of Conduct. Organizers will enforce this code throughout the event. 6 | 7 | The Short Version 8 | ----------------- 9 | 10 | PyCon is dedicated to providing a harassment-free conference experience for everyone, regardless of gender, sexual orientation, disability, physical appearance, body size, race, or religion. We do not tolerate harassment of conference participants in any form. 11 | 12 | All communication should be appropriate for a professional audience including people of many different backgrounds. Sexual language and imagery is not appropriate for any conference venue, including talks. 13 | 14 | Be kind to others. Do not insult or put down other attendees. Behave professionally. Remember that harassment and sexist, racist, or exclusionary jokes are not appropriate for PyCon. 15 | 16 | Attendees violating these rules may be asked to leave the conference without a refund at the sole discretion of the conference organizers. 17 | 18 | Thank you for helping make this a welcoming, friendly event for all. 19 | 20 | The Longer Version 21 | ------------------ 22 | 23 | Harassment includes offensive verbal comments related to gender, sexual orientation, disability, physical appearance, body size, race, religion, sexual images in public spaces, deliberate intimidation, stalking, following, harassing photography or recording, sustained disruption of talks or other events, inappropriate physical contact, and unwelcome sexual attention. 24 | 25 | Participants asked to stop any harassing behavior are expected to comply immediately. 26 | 27 | Exhibitors in the expo hall, sponsor or vendor booths, or similar activities are also subject to the anti-harassment policy. In particular, exhibitors should not use sexualized images, activities, or other material. Booth staff (including volunteers) should not use sexualized clothing/uniforms/costumes, or otherwise create a sexualized environment. 28 | 29 | Be careful in the words that you choose. Remember that sexist, racist, and other exclusionary jokes can be offensive to those around you. Excessive swearing and offensive jokes are not appropriate for PyCon. 30 | 31 | If a participant engages in behavior that violates this code of conduct, the conference organizers may take any action they deem appropriate, including warning the offender or expulsion from the conference with no refund. 32 | 33 | Contact Information 34 | ------------------- 35 | 36 | If you are being harassed, notice that someone else is being harassed, or have any other concerns, please contact a member of conference staff. Conference staff will be wearing "Staff" t-shirts. 37 | 38 | If the matter is especially urgent, please call/contact any of these individuals: 39 | 40 | - Tomáš Ehrlich at +420 608 219 889 41 | 42 | Conference staff will be happy to help participants contact venue security or local law enforcement, provide escorts, or otherwise assist those experiencing harassment to feel safe for the duration of the conference. We value your attendance. 43 | 44 | Procedure for Handling Harassment 45 | ------------------------------------------ 46 | - [Attendee Procedure for incident handling](/2013/about/code-of-conduct/harassment-incidents/) 47 | - [Staff Procedure for incident handling](https://us.pycon.org/2013/about/code-of-conduct/harassment-incidents-staff/) 48 | 49 | License 50 | ------- 51 | 52 | This Code of Conduct was forked from the example policy from the [Geek Feminism wiki, created by the Ada Initiative and other volunteers.](http://geekfeminism.wikia.com/wiki/Conference_anti-harassment/Policy) which is under a Creative Commons Zero license. 53 | 54 | Creative Commons License
Conference Code of Conduct by https://us.pycon.org/2013/about/code-of-conduct/ is licensed under a Creative Commons Attribution 3.0 Unported License. 55 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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-lint.yml: -------------------------------------------------------------------------------- 1 | # Default application configuration that all configurations inherit from. 2 | linters: 3 | BorderZero: 4 | enabled: true 5 | 6 | CapitalizationInSelector: 7 | enabled: false 8 | 9 | ColorKeyword: 10 | enabled: true 11 | 12 | Comment: 13 | enabled: false 14 | 15 | DebugStatement: 16 | enabled: true 17 | 18 | DeclarationOrder: 19 | enabled: true 20 | 21 | DuplicateProperty: 22 | enabled: false 23 | 24 | EmptyLineBetweenBlocks: 25 | enabled: true 26 | ignore_single_line_blocks: true 27 | 28 | EmptyRule: 29 | enabled: false 30 | 31 | FinalNewline: 32 | enabled: true 33 | present: true 34 | 35 | HexFormat: 36 | enabled: true 37 | 38 | IdSelector: 39 | enabled: false 40 | 41 | IdWithExtraneousSelector: 42 | enabled: true 43 | 44 | ImportantRule: 45 | enabled: false 46 | 47 | Indentation: 48 | enabled: false 49 | 50 | LeadingZero: 51 | enabled: false 52 | 53 | MergeableSelector: 54 | enabled: true 55 | force_nesting: true 56 | 57 | NameFormat: 58 | enabled: false 59 | convention: hyphenated_lowercase # or 'BEM', or a regex pattern 60 | 61 | NestingDepth: 62 | enabled: false 63 | 64 | PlaceholderInExtend: 65 | enabled: false 66 | 67 | PropertySortOrder: 68 | enabled: true 69 | order: ["position", "top", "right", "bottom", "left", "z-index", "display", "visibility", "overflow", "overflow-x", "overflow-y", "float", "clear", "table-layout", "border-collapse", "empty-cells", "box-sizing", "width", "min-width", "max-width", "height", "min-height", "max-height", "margin", "margin-top", "margin-right", "margin-bottom", "margin-left", "padding", "padding-top", "padding-right", "padding-bottom", "padding-left", "border", "border-width", "border-style", "border-color", "border-radius", "border-top", "border-top-width", "border-top-style", "border-top-color", "border-right", "border-right-width", "border-right-style", "border-right-color", "border-bottom", "border-bottom-width", "border-bottom-style", "border-bottom-color", "border-left", "border-left-width", "border-left-style", "border-left-color", "border-top-left-radius", "border-top-right-radius", "border-bottom-right-radius", "border-bottom-left-radius", "white-space", "content", "color", "background", "background-color", "background-image", "background-repeat", "background-attachment", "background-position", "background-size", "opacity", "font", "font-weight", "font-style", "font-variant", "font-size", "font-family", "letter-spacing", "line-height", "list-style", "list-style-type", "list-style-position", "list-style-image", "outline", "outline-width", "outline-style", "outline-color", "text-align", "text-decoration", "text-indent", "text-transform", "text-shadow", "animation", "transform", "transition", "box-shadow"] 70 | ignore_unspecified: true 71 | 72 | PropertySpelling: 73 | enabled: true 74 | extra_properties: ['*behavior'] 75 | 76 | QualifyingElement: 77 | enabled: false 78 | 79 | SelectorDepth: 80 | enabled: true 81 | max_depth: 3 82 | 83 | SelectorFormat: 84 | enabled: false 85 | 86 | Shorthand: 87 | enabled: true 88 | 89 | SingleLinePerProperty: 90 | enabled: false 91 | 92 | SingleLinePerSelector: 93 | enabled: true 94 | 95 | SpaceAfterComma: 96 | enabled: true 97 | 98 | SpaceAfterPropertyColon: 99 | enabled: true 100 | allow_extra_spaces: false 101 | 102 | SpaceAfterPropertyName: 103 | enabled: true 104 | 105 | SpaceBeforeBrace: 106 | enabled: true 107 | allow_single_line_padding: false 108 | 109 | SpaceBetweenParens: 110 | enabled: false 111 | 112 | StringQuotes: 113 | enabled: true 114 | style: double_quotes 115 | 116 | TrailingSemicolonAfterPropertyValue: 117 | enabled: true 118 | 119 | UnnecessaryMantissa: 120 | enabled: true 121 | 122 | UrlFormat: 123 | enabled: true 124 | 125 | UrlQuotes: 126 | enabled: true 127 | 128 | VendorPrefixes: 129 | enabled: false 130 | 131 | ZeroUnit: 132 | enabled: true 133 | 134 | Compass::*: 135 | enabled: false 136 | -------------------------------------------------------------------------------- /static/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/files/static/images/pycon-cz-logo-fb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/ee4c874522abcb271d5af2b4baae626945bb43fb/static/files/static/images/pycon-cz-logo-fb.png -------------------------------------------------------------------------------- /static/files/static/images/pycon-cz-logo-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/ee4c874522abcb271d5af2b4baae626945bb43fb/static/files/static/images/pycon-cz-logo-icon.png -------------------------------------------------------------------------------- /static/files/static/images/pycon-cz-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/ee4c874522abcb271d5af2b4baae626945bb43fb/static/files/static/images/pycon-cz-logo.png -------------------------------------------------------------------------------- /static/files/static/images/pycontest/prizes-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/ee4c874522abcb271d5af2b4baae626945bb43fb/static/files/static/images/pycontest/prizes-2.jpg -------------------------------------------------------------------------------- /static/files/static/images/pycontest/prizes.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/ee4c874522abcb271d5af2b4baae626945bb43fb/static/files/static/images/pycontest/prizes.jpg -------------------------------------------------------------------------------- /static/files/static/images/speakers/amber_brown.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/ee4c874522abcb271d5af2b4baae626945bb43fb/static/files/static/images/speakers/amber_brown.jpg -------------------------------------------------------------------------------- /static/files/static/images/speakers/anastassiya_zidkova.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/ee4c874522abcb271d5af2b4baae626945bb43fb/static/files/static/images/speakers/anastassiya_zidkova.jpg -------------------------------------------------------------------------------- /static/files/static/images/speakers/default_male.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/ee4c874522abcb271d5af2b4baae626945bb43fb/static/files/static/images/speakers/default_male.png -------------------------------------------------------------------------------- /static/files/static/images/speakers/elyezer_rezende.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/ee4c874522abcb271d5af2b4baae626945bb43fb/static/files/static/images/speakers/elyezer_rezende.jpg -------------------------------------------------------------------------------- /static/files/static/images/speakers/jachym_cepicky.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/ee4c874522abcb271d5af2b4baae626945bb43fb/static/files/static/images/speakers/jachym_cepicky.jpg -------------------------------------------------------------------------------- /static/files/static/images/speakers/jan_cermak.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/ee4c874522abcb271d5af2b4baae626945bb43fb/static/files/static/images/speakers/jan_cermak.jpg -------------------------------------------------------------------------------- /static/files/static/images/speakers/jarka_schovancova.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/ee4c874522abcb271d5af2b4baae626945bb43fb/static/files/static/images/speakers/jarka_schovancova.jpg -------------------------------------------------------------------------------- /static/files/static/images/speakers/jessiva_rose.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/ee4c874522abcb271d5af2b4baae626945bb43fb/static/files/static/images/speakers/jessiva_rose.jpg -------------------------------------------------------------------------------- /static/files/static/images/speakers/michal_horejsek.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/ee4c874522abcb271d5af2b4baae626945bb43fb/static/files/static/images/speakers/michal_horejsek.jpg -------------------------------------------------------------------------------- /static/files/static/images/speakers/nischal_hp.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/ee4c874522abcb271d5af2b4baae626945bb43fb/static/files/static/images/speakers/nischal_hp.jpg -------------------------------------------------------------------------------- /static/files/static/images/speakers/peter_inglesby.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/ee4c874522abcb271d5af2b4baae626945bb43fb/static/files/static/images/speakers/peter_inglesby.jpg -------------------------------------------------------------------------------- /static/files/static/images/speakers/piotr_dyba.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/ee4c874522abcb271d5af2b4baae626945bb43fb/static/files/static/images/speakers/piotr_dyba.jpg -------------------------------------------------------------------------------- /static/files/static/images/speakers/radomir_dopieralski.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/ee4c874522abcb271d5af2b4baae626945bb43fb/static/files/static/images/speakers/radomir_dopieralski.jpg -------------------------------------------------------------------------------- /static/files/static/images/speakers/robert_kuska.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/ee4c874522abcb271d5af2b4baae626945bb43fb/static/files/static/images/speakers/robert_kuska.jpeg -------------------------------------------------------------------------------- /static/files/static/images/speakers/russell_keith_magee.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/ee4c874522abcb271d5af2b4baae626945bb43fb/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/ee4c874522abcb271d5af2b4baae626945bb43fb/static/files/static/images/speakers/svetlana_margetova.jpg -------------------------------------------------------------------------------- /static/files/static/images/speakers/tobas_bedrich.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/ee4c874522abcb271d5af2b4baae626945bb43fb/static/files/static/images/speakers/tobas_bedrich.png -------------------------------------------------------------------------------- /static/files/static/images/speakers/valentina_mukhamedzhanova.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/ee4c874522abcb271d5af2b4baae626945bb43fb/static/files/static/images/speakers/valentina_mukhamedzhanova.png -------------------------------------------------------------------------------- /static/files/static/images/speakers/veros_kaplan.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/ee4c874522abcb271d5af2b4baae626945bb43fb/static/files/static/images/speakers/veros_kaplan.jpg -------------------------------------------------------------------------------- /static/files/static/images/speakers/viktor_stiskala.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/ee4c874522abcb271d5af2b4baae626945bb43fb/static/files/static/images/speakers/viktor_stiskala.png -------------------------------------------------------------------------------- /static/files/static/images/sponsors/imper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/ee4c874522abcb271d5af2b4baae626945bb43fb/static/files/static/images/sponsors/imper.png -------------------------------------------------------------------------------- /static/files/static/images/sponsors/inuits.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/ee4c874522abcb271d5af2b4baae626945bb43fb/static/files/static/images/sponsors/inuits.png -------------------------------------------------------------------------------- /static/files/static/images/sponsors/psf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/ee4c874522abcb271d5af2b4baae626945bb43fb/static/files/static/images/sponsors/psf.png -------------------------------------------------------------------------------- /static/files/static/images/sponsors/pycharm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/ee4c874522abcb271d5af2b4baae626945bb43fb/static/files/static/images/sponsors/pycharm.png -------------------------------------------------------------------------------- /static/files/static/images/sponsors/pycharm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | ]> 7 | 9 | 10 | 11 | 15 | 19 | 22 | 25 | 30 | 33 | 38 | 39 | 40 | 46 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /static/files/static/images/sponsors/redhat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/ee4c874522abcb271d5af2b4baae626945bb43fb/static/files/static/images/sponsors/redhat.png -------------------------------------------------------------------------------- /static/files/static/images/sponsors/skypicker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/ee4c874522abcb271d5af2b4baae626945bb43fb/static/files/static/images/sponsors/skypicker.png -------------------------------------------------------------------------------- /static/files/static/images/sponsors/twisto.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/ee4c874522abcb271d5af2b4baae626945bb43fb/static/files/static/images/sponsors/twisto.png -------------------------------------------------------------------------------- /static/files/static/images/team/chris.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/ee4c874522abcb271d5af2b4baae626945bb43fb/static/files/static/images/team/chris.jpg -------------------------------------------------------------------------------- /static/files/static/images/team/natali.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/ee4c874522abcb271d5af2b4baae626945bb43fb/static/files/static/images/team/natali.jpg -------------------------------------------------------------------------------- /static/files/static/images/team/petr.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/ee4c874522abcb271d5af2b4baae626945bb43fb/static/files/static/images/team/petr.jpg -------------------------------------------------------------------------------- /static/files/static/images/team/vehrlich.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/ee4c874522abcb271d5af2b4baae626945bb43fb/static/files/static/images/team/vehrlich.jpg -------------------------------------------------------------------------------- /static/files/static/images/ui/branch-in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/ee4c874522abcb271d5af2b4baae626945bb43fb/static/files/static/images/ui/branch-in.png -------------------------------------------------------------------------------- /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-out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2015/ee4c874522abcb271d5af2b4baae626945bb43fb/static/files/static/images/ui/branch-out.png -------------------------------------------------------------------------------- /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/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/files/zohoverify/verifyforzoho.html: -------------------------------------------------------------------------------- 1 | 1441223238575 -------------------------------------------------------------------------------- /static/jade/about/code-of-conduct.jade: -------------------------------------------------------------------------------- 1 | extends ../base 2 | 3 | block vars 4 | - var pageClass = "page-coc" 5 | 6 | block viewport 7 | .container 8 | :markdown 9 | # Code of conduct 10 | 11 | **PyCon CZ** is a community conference intended for networking and 12 | collaboration in the developer community. We value the participation of 13 | **each member** of the **Python community** and want all attendees to have 14 | an enjoyable and fulfilling experience. Accordingly, all attendees are 15 | expected to show **respect** and **courtesy** to other attendees throughout the 16 | conference and at all conference events, whether officially sponsored by 17 | PyCon CZ or not. 18 | 19 | To make clear what is expected: 20 | 21 | > All delegates, attendees, speakers, exhibitors, organizers and volunteers 22 | at any **PyCon CZ** event are required to conform to the following Code of Conduct. 23 | 24 | Organizers will **enforce** this code throughout the event. 25 | 26 | The Short Version 27 | ----------------- 28 | 29 | **PyCon** is dedicated to providing a harassment-free conference 30 | experience for everyone, regardless of gender, sexual orientation, 31 | disability, physical appearance, body size, race, or religion. 32 | 33 | We do not tolerate harassment of conference participants in any form. 34 | 35 | All communication should be appropriate for a professional audience including 36 | people of many different backgrounds. Sexual language and imagery is not 37 | appropriate for any conference venue, including talks. Be kind to others. 38 | Do not insult or put down other attendees. Behave professionally. 39 | Remember that harassment and sexist, racist, or exclusionary jokes are not 40 | appropriate for PyCon. 41 | 42 | > Attendees violating these rules may be asked to 43 | leave the conference without a refund at the sole discretion of the 44 | conference organizers. 45 | 46 | Thank you for helping make this a welcoming, friendly event for all. 47 | 48 | The Longer Version 49 | ------------------ 50 | 51 | Harassment includes offensive verbal comments related to gender, sexual 52 | orientation, disability, physical appearance, body size, race, religion, 53 | sexual images in public spaces, deliberate intimidation, stalking, 54 | following, harassing photography or recording, sustained disruption 55 | of talks or other events, inappropriate physical contact, and unwelcome 56 | sexual attention. 57 | 58 | > Participants asked to stop any harassing behavior are expected to comply immediately. 59 | 60 | Exhibitors in the expo hall, sponsor or vendor booths, or similar 61 | activities are also subject to the anti-harassment policy. In particular, 62 | exhibitors should not use sexualized images, activities, or other material. 63 | Booth staff (including volunteers) should not use sexualized 64 | clothing/uniforms/costumes, or otherwise create a sexualized environment. 65 | 66 | Be careful in the words that you choose. Remember that sexist, racist, 67 | and other exclusionary jokes can be offensive to those around you. 68 | Excessive swearing and offensive jokes are not appropriate for PyCon. 69 | 70 | If a participant engages in behavior that violates this code of conduct, 71 | the conference organizers may take any action they deem appropriate, 72 | including warning the offender or expulsion from the conference with no refund. 73 | 74 | Contact Information 75 | ------------------- 76 | 77 | If you are being harassed, notice that someone else is being harassed, 78 | or have any other concerns, please contact a member of conference staff. 79 | Conference staff will be wearing "Staff" t-shirts. 80 | 81 | If the matter is especially urgent, please call/contact any of these individuals: 82 | 83 | ul 84 | li Mikey Ariel at 85 | a(href="tel:+420702131141") +420 702 131 141 86 | li Tomáš Ehrlich at 87 | a(href="tel:+420608219889") +420 608 219 889 88 | 89 | p. 90 | Conference staff will be happy to help participants contact venue security 91 | or local law enforcement, provide escorts, or otherwise assist those 92 | experiencing harassment to feel safe for the duration of the conference. 93 | 94 | p. 95 | We value your attendance. 96 | 97 | h2#license License 98 | 99 | | This Code of Conduct was forked from the example policy from the 100 | a(href="http://geekfeminism.wikia.com/wiki/Conference_anti-harassment/Policy"). 101 | Geek Feminism wiki, created by the Ada Initiative and other volunteers 102 | | which is under a 103 | a(rel="licence", href="http://creativecommons.org/licenses/by/3.0/"). 104 | Creative Commons Zero license. 105 | 106 | br 107 | 108 | span(xmlns:dct="http://purl.org/dc/terms/", href="http://purl.org/dc/dcmitype/Text", property="dct:title", rel="dct:type") 109 | | Conference Code of Conduct 110 | | by 111 | a(xmlns:cc="http://creativecommons.org/ns#", href="https://us.pycon.org/2013/about/code-of-conduct/", property="cc:attributionName", rel="cc:attributionURL") 112 | | https://us.pycon.org/2013/about/code-of-conduct/ 113 | | is licensed under a  114 | a(rel="license", href="http://creativecommons.org/licenses/by/3.0/") 115 | | Creative Commons Attribution 3.0 Unported License 116 | | . 117 | -------------------------------------------------------------------------------- /static/jade/about/pycontest.jade: -------------------------------------------------------------------------------- 1 | extends ../base 2 | 3 | block vars 4 | - var pageClass = "page-pycontest" 5 | 6 | block viewport 7 | .container 8 | h1 #PyConTest 9 | 10 | .row 11 | img.col-sm-6(src=pageUrl("/static/images/pycontest/prizes.jpg"), alt="#PyConTest prizes") 12 | img.col-sm-6(src=pageUrl("/static/images/pycontest/prizes-2.jpg"), alt="#PyConTest prizes") 13 | 14 | p.lead.pycontest-email.alert.alert-info. 15 | Send all submissions to #[a(href="mailto:pycontestcz@gmail.com") pycontestcz@gmail.com] 16 | 17 | ul 18 | li 19 | a(href="https://drive.google.com/folderview?id=0B76bfeqN4RF2VTdsay1Scmpac3c&usp=sharing") 1st challenge: 10:00 CET 20 | li 21 | a(href="https://drive.google.com/folderview?id=0B76bfeqN4RF2eVZNNlpwUDhFLTA&usp=sharing") 2nd challenge: 11:00 CET 22 | li 23 | a(href="https://drive.google.com/folderview?id=0B76bfeqN4RF2OG5waVJ2WWNrLW8&usp=sharing") 3rd challenge: 12:00 CET 24 | li 25 | a(href="https://drive.google.com/folderview?id=0B76bfeqN4RF2TzVsNWJqbnpMU0U&usp=sharing") 4th challenge: 13:00 CET 26 | li 27 | a(href="https://drive.google.com/folderview?id=0B76bfeqN4RF2bXBCUjB0VHJkb28&usp=sharing") 5th challenge: 14:00 CET 28 | li 29 | strong End of Challenge - 15th November at 10:00 CET 30 | 31 | h2 What is #PyConTest? 32 | 33 | p. 34 | PYCONTEST is a special programming challenge tailored for pycon.cz audience. 35 | The challenge is organized with help from pycon.cz official sponsors (Red Hat, 36 | Skypicker and Twisto) and Fedora. 37 | 38 | h2 What challenges can I expect? 39 | 40 | p. 41 | You will be presented with 5 challenges, 4 of which were created by our sponsors 42 | and will consist of solving specific tasks using Python. The 5th challenge will be a special 43 | social challenge. Please bear in mind that you can submit only one solution for each 44 | challenge, resubmitions are not allowed. 45 | 46 | h2 Where can I find assignments? 47 | 48 | p. 49 | Each challenge along with the description how to submit it will be announced every hour 50 | at the official @pyconcz twitter account with hashtag #pycontest, 51 | at the official #[a(href="https://cz.pycon.org/2015/") PyCon CZ] website 52 | and during the pycon.cz conference starting at 10:00am. 53 | Follow #[a(href="https://twitter.com/pyconcz") @pyconcz] now! 54 | 55 | h2 Conditions 56 | 57 | p. 58 | To be eligible for winning you must fullfil the following conditions: 59 | 60 | ol 61 | li you are a registered visitor of pycon.cz conference 62 | li you must solve and submit all challenges and they must be correct 63 | 64 | p. 65 | Also please note that by submitting your solutions you accept the fact 66 | that your code examples will be shared and that you can be contacted (now 67 | or in the future) by any of the sponsors (Red Hat, Skypicker, Twisto) for job offers. 68 | 69 | h2 What can I win? 70 | 71 | p Apart from cool job offers you may win the following prizes: 72 | 73 | ul 74 | li Garmin Fenix 3 Sapphire Performer 75 | li Nexus 5x Black 32GB 76 | li Audio-technica ATH-M50x 77 | li Kindle Paperwhite 3 78 | 79 | h2 How will winners be chosen? 80 | 81 | p. 82 | Winners will be determined by the results of the 5th challenge (don't be afraid, 83 | it won't be a 'like'ing race) but bear in mind that you still need to have the first 84 | four challenges submitted and they must all be correct. Winners will be 85 | announced during the lunch break at workshops on Sunday, November 15th. 86 | -------------------------------------------------------------------------------- /static/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/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/jade/about/team.jade: -------------------------------------------------------------------------------- 1 | extends ../base 2 | 3 | block vars 4 | - var pageClass = "page-team" 5 | 6 | block viewport 7 | .container 8 | h1 Who is behind this? 9 | 10 | p.lead. 11 | PyCon is a community event. There are more than 30 people on our Slack 12 | channel and even more volunteers helped us by sending PR on #[a(href="https://github.com/pyvec/cz.pycon.org-2015") GitHub]. 13 | If you drew the organization structure of the PyCon CZ team, 14 | #[strong you — the attendee] would be at the top. The incredible amount of 15 | volunteers would follow. There's little or no difference between organizers 16 | and volunteers, because we all do it in our free time without any claim 17 | for wage. Below is a list of our core team members. 18 | 19 | p.call-to-action. 20 | We are here for #[strong you]. 21 | 22 | p.lead. 23 | .team-member 24 | img(src='https://pbs.twimg.com/profile_images/528237673563959297/yYJxmlNO.png', alt='Photo of Tomáš Ehrlich') 25 | p.name 26 | a(href="https://twitter.com/tomas_ehrlich") Tomáš Ehrlich 27 | p.description C3PO & Sponsors 28 | 29 | .team-member 30 | img(src='https://djangogirls.org/uploads/event/coaches/ja.jpg', alt='') 31 | p.name 32 | a(href="https://twitter.com/honzajavorek") Honza Javorek 33 | p.description Media & Promotion 34 | 35 | .team-member 36 | img(src='https://pbs.twimg.com/profile_images/598803746722816000/htcvwi8Z.jpg', alt='') 37 | p.name 38 | a(href="https://twitter.com/thatdocslady") Mikey Ariel 39 | p.description Tickets & Mentoring 40 | 41 | .team-member 42 | img(src='/'+year+'/static/images/team/natali.jpg', alt='') 43 | p.name 44 | a(href="https://www.facebook.com/natali.debosque") Natália Sedláková 45 | p.description DjangoGirls organizer 46 | 47 | .team-member 48 | img(src='https://sk.gravatar.com/userimage/8116216/d3c0082d1cc96ed303565970e447b254.jpg?size=400', alt='') 49 | p.name 50 | a(href="https://twitter.com/netman92") Stanislav Komanec 51 | p.description Website administrator 52 | 53 | .team-member 54 | img(src='https://scontent-vie1-1.xx.fbcdn.net/hphotos-xat1/t31.0-8/11536487_10206028010931663_6339000516200778558_o.jpg', alt='') 55 | p.name 56 | a(href="https://www.facebook.com/martin.matuszek") Martin Matuszek 57 | p.description Swag & Collectables 58 | 59 | .team-member 60 | img(src='https://scontent-vie1-1.xx.fbcdn.net/hphotos-xpt1/t31.0-8/10463609_10205508922336237_4028946742293895321_o.jpg', alt='') 61 | p.name 62 | a(href="https://twitter.com/styrax_raveon") Martin Hořák 63 | p.description Events manager 64 | 65 | .team-member 66 | img(src='https://scontent-fra3-1.xx.fbcdn.net/hprofile-xfa1/l/t31.0-1/c84.0.749.749/265598_10150223402570824_5262769_o.jpg', alt='') 67 | p.name 68 | a(href="https://twitter.com/honzakral") Honza Král 69 | p.description Speakers 70 | 71 | .team-member 72 | img(src='/'+year+'/static/images/team/petr.jpg', alt='') 73 | p.name 74 | a(href="http://encukou.cz") Petr Viktorin 75 | p.description Sprints & Workshops 76 | 77 | .team-member 78 | img(src='/'+year+'/static/images/team/vehrlich.jpg', alt='') 79 | p.name 80 | a(href="https://twitter.com/melront") Václav Ehrlich 81 | p.description Photographer 82 | 83 | .team-member 84 | img(src='/'+year+'/static/images/team/chris.jpg', alt='') 85 | p.name 86 | a(href="https://twitter.com/kejbaly2") Chris Ward 87 | p.description Sponsors 88 | 89 | .team-member 90 | img(src='https://pbs.twimg.com/profile_images/656421052692766720/0D5jHooY_400x400.jpg', alt='') 91 | p.name 92 | a(href="https://twitter.com/BaraDrb") Bára Drbohlavová 93 | p.description English proofreading 94 | 95 | .container 96 | p.call-to-action. 97 | Wanna become part of our team or just offer a hand? 98 | #[a(href="mailto:info@pycon.cz?subject=Please, add me to your Slack!") Join us] on Slack! 99 | -------------------------------------------------------------------------------- /static/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 | -------------------------------------------------------------------------------- /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/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/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/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/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/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/jade/index.jade: -------------------------------------------------------------------------------- 1 | extends base 2 | 3 | block vars 4 | - var pageClass = "home" 5 | 6 | block viewport 7 | .pycon 8 | img.pycon-logo( 9 | alt="PyCon CZ", 10 | src='/'+year+"/static/images/pycon-cz-logo-icon.svg", 11 | onerror="this.onerror = null; this.src = '/2015/static/images/pycon-cz-logo.png'" 12 | ) 13 | 14 | h1 15 | | PyCon CZ 16 | span.year= year 17 | 18 | .pycon-info 19 | p.pycon-location Brno, Czech Republic 20 | p.pycon-date November 14-15 21 | 22 | .claim 23 | .container 24 | p. 25 | The very first #[strong PyCon] in the #[strong Czech Republic]. Join us 26 | for a fun weekend full of talks, sprints and workshops about Python. 27 | 28 | .container 29 | .program 30 | .program-item 31 | h2 Talks 32 | .date Saturday 14th 33 | .venue 34 | i.fa.fa-map-marker 35 | span. 36 | #[a(href=pageUrl("talks/#directions")) Faculty of Information Technology,#[br] Božetěchova 1/2] 37 | p. 38 | #[strong One] day, #[strong two] parallel tracks, #[strong two] keynotes 39 | and #[strong ten] awesome talks. Community, web, hardware, science, devops and more. 40 | 41 | .program-item 42 | h2 Sprints & workshops 43 | .date Sunday 15th 44 | .venue 45 | i.fa.fa-map-marker 46 | span. 47 | #[a(href=pageUrl("workshops/#directions")) Impact Hub Brno,#[br] Cyrilská 7] 48 | p. 49 | #[strong Six] workshops in #[strong two] blocks and sprinting all day long. Hack on 50 | open-source projects together with other Python community members. 51 | 52 | .registration 53 | h2 PyCon CZ 2015 is over 54 | p.lead. 55 | See you all at the next PyCon CZ! 56 | 57 | h2 What people think about PyCon CZ? 58 | 59 | include components/twitter 60 | 61 | .sponsors 62 | h2 Our sponsors 63 | 64 | .platinum 65 | h3 Platinum sponsor 66 | .sponsor 67 | a.sponsor-skypicker(href="https://skypicker.com") 68 | img(src=pageUrl("/static/images/sponsors/skypicker.png")) 69 | 70 | .gold 71 | h3 Gold sponsors 72 | .sponsor 73 | a.sponsor-psf(href="https://www.python.org/psf/") 74 | img(src=pageUrl("/static/images/sponsors/psf.png")) 75 | .sponsor 76 | a.sponsor-twisto(href="https://www.twisto.cz") 77 | img(src=pageUrl("/static/images/sponsors/twisto.png")) 78 | 79 | .silver 80 | h3 Silver sponsors 81 | .sponsor 82 | a.sponsor-imper(href="https://imper.cz") 83 | img(src=pageUrl("/static/images/sponsors/imper.png")) 84 | .sponsor 85 | a.sponsor-pycharm(href="https://www.jetbrains.com/pycharm/") 86 | img(src=pageUrl("/static/images/sponsors/pycharm.png")) 87 | .sponsor 88 | a.sponsor-inuits(href="https://inuits.eu") 89 | img(src=pageUrl("/static/images/sponsors/inuits.png")) 90 | //- 91 | //- a.alone.sponsor-placeholder(href=pageUrl("about/sponsorship.html")). 92 | //- Become our partner! 93 | 94 | .djangogirls 95 | h3 DjangoGirls workshop sponsor 96 | .sponsor 97 | a.sponsor-redhat(href="http://www.redhat.com/en/global/czech-republic") 98 | img(src=pageUrl("/static/images/sponsors/redhat.png")) 99 | -------------------------------------------------------------------------------- /static/jade/pages/timeline.jade: -------------------------------------------------------------------------------- 1 | h2.text-center Schedule 2 | 3 | div.container 4 | div.row 5 | ul.ul-timeline.col-md-10.col-md-offset-1 6 | li 7 | .timeline-badge.warning 8 | i.glyphicon.glyphicon-check 9 | .timeline-panel 10 | .timeline-heading 11 | h4.timeline-title Django Girls Workshop 12 | p 13 | small.text-muted 14 | i.glyphicon.glyphicon Friday, Nov 13 - Daytime 15 | 16 | .timeline-body 17 | p. 18 | The world famous Django Girls workshop is coming back to Brno! 19 | This one-day workshop aims to introduce women to the world of technology 20 | and open source. This workshop requires advance registration. For details, 21 | check out the #[a(href="https://djangogirls.org/brno/", target="_blank") Django Girls Brno] website. 22 | 23 | li.timeline-inverted 24 | .timeline-badge.info 25 | i.glyphicon.glyphicon-credit-card 26 | .timeline-panel 27 | .timeline-heading 28 | h4.timeline-title Pre-Registration Welcome Social 29 | p 30 | small.text-muted 31 | i.glyphicon.glyphicon Friday, Nov 13 - Evening 32 | .timeline-body 33 | p. 34 | If you are in Brno, stop by and pick up your conference badge, meet other 35 | attendees, and say hello. Exact time and location to be announced soon. 36 | 37 | li 38 | .timeline-badge.danger 39 | i.glyphicon.glyphicon-credit-card 40 | .timeline-panel 41 | .timeline-heading 42 | h4.timeline-title Day 1 - Talks 43 | p 44 | small.text-muted 45 | i.glyphicon.glyphicon Saturday, Nov 14 - Daytime 46 | .timeline-body 47 | p. 48 | Keynotes and talks about Python and how it's used in different environments. 49 | From building beautiful Django-pony websites to analyzing terabytes of 50 | data in science institutes, we're going to select the most diverse talks 51 | from all possible fields. 52 | 53 | li.timeline-inverted 54 | .timeline-badge.info 55 | i.glyphicon.glyphicon-credit-card 56 | .timeline-panel 57 | .timeline-heading 58 | h4.timeline-title Conference Party 59 | p 60 | small.text-muted 61 | i.glyphicon.glyphicon Saturday, Nov 14 - Evening 62 | .timeline-body 63 | p. 64 | Our main conference party! Time and location will be announced soon. 65 | 66 | li 67 | .timeline-badge 68 | i.glyphicon.glyphicon-credit-card 69 | .timeline-panel 70 | .timeline-heading 71 | h4.timeline-title Day 2 - Sprints 72 | p 73 | small.text-muted 74 | i.glyphicon.glyphicon Sunday, Nov 15 - Daytime 75 | .timeline-body 76 | p. 77 | Project sprints and hackfests for all things Python. Sprints are a great 78 | way to work together with like-minded people towards shared goals. You can 79 | fix bugs, create new and interesting tools, write documentation, or even 80 | run a mini-workshop! We will publish a Wiki to coordinate sprints closer 81 | to the conference day. Stay tuned! 82 | -------------------------------------------------------------------------------- /static/jade/talks/index.jade: -------------------------------------------------------------------------------- 1 | extends ../base 2 | 3 | //- render single speaker 4 | mixin talk(speaker) 5 | .talk-description 6 | h3.speaker 7 | = speaker.name 8 | 9 | .misc 10 | small=speaker.time 11 | small.track 12 | = speaker.track 13 | | branch 14 | a.social.github(href="https://github.com/" + speaker.github) 15 | .fa.fa-github 16 | a.social.twitter(href="https://twitter.com/" + speaker.twitter) 17 | .fa.fa-twitter 18 | 19 | p= speaker.title 20 | 21 | 22 | .commit-holder 23 | .commit 24 | img.avatar(src=avatar(speaker.avatar), alt='Photo of ' + speaker.name) 25 | 26 | mixin branch-out() 27 | .branch.out 28 | img( 29 | src="/2015/static/images/ui/branch-out.svg", 30 | onerror="this.onerror = null; this.src = '/2015/static/images/ui/branch-out.png'" 31 | ) 32 | 33 | block vars 34 | - var pageClass = "page-talks" 35 | - var activePage = "talks" 36 | 37 | block viewport 38 | .container 39 | h1 Talks & Keynotes 40 | 41 | .event-full.general 42 | h2.title Registration #[small 8:00] 43 | .talk-description 44 | p. 45 | Grab your lanyard, swag bag and coffee. #[br] 46 | Meet our sponsors and get ready for a day full of awesome talks! 47 | 48 | .commit.empty.first 49 | .dot 50 | 51 | .event-full.general 52 | h2.title The grand opening #[small 8:55] 53 | .talk-description 54 | p. 55 | Welcome to the first #[strong PyCon CZ]. #[br] 56 | Applause, introduction, jokes and meanwhile we lock the main door… 57 | 58 | .commit.empty 59 | .dot 60 | 61 | .event-full 62 | h2.title.amber Keynote #1 #[br] The future of Twisted #[small 9:00] 63 | .talk-description 64 | .speaker Amber Brown 65 | p. 66 | Amber, better known as HawkOwl, is a core developer and release 67 | manager of the Twisted project. 68 | a.social.github(href="https://github.com/hawkowl") 69 | .fa.fa-github 70 | a.social.twitter(href="https://twitter.com/hawkieowl") 71 | .fa.fa-twitter 72 | 73 | .commit 74 | img.avatar( 75 | src=avatar("amber_brown.jpg"), 76 | alt='Photo of Amber Brown' 77 | ) 78 | 79 | .event-full 80 | h2.title.russell Keynote #2 #[br] The secret sauce behind #[br] Open Source #[small 10:00] 81 | .talk-description 82 | .speaker Russell-Keith Magee 83 | p. 84 | Dr Russell Keith-Magee is a 9 year veteran of the Django core team, 85 | and President of the DSF. 86 | a.social.github(href="https://github.com/freakboy3742") 87 | .fa.fa-github 88 | a.social.twitter(href="https://twitter.com/freakboy3742") 89 | .fa.fa-twitter 90 | 91 | .commit 92 | img.avatar( 93 | src=avatar("russell_keith_magee.png"), 94 | alt='Photo of Russell Keith-Magee' 95 | ) 96 | 97 | .branch-description 98 | .branch-name 99 | .master Master branch 100 | .branch.in 101 | img( 102 | src="/2015/static/images/ui/branch-in.svg", 103 | onerror="this.onerror = null; this.src = '/2015/static/images/ui/branch-in.png'" 104 | ) 105 | .branch-name 106 | .practical Practical branch 107 | 108 | h2.visible-xs-block Talks 109 | p.visible-xs-block. 110 | Two parallel branches of talks are going to be held in two rooms: D105 and 111 | D0206. The #[strong Master branch] in D105 will be about general topics, 112 | while the #[strong Practical branch] in D0206 will present more specific ones. 113 | 114 | //- Iterate over speakers object (loaded in gulpfile from data/speakers.json) 115 | //- and render mixin talk() (see above) 116 | each speaker, index in speakers 117 | .talk-block 118 | .event.master 119 | +talk(speaker[0]) 120 | 121 | .event.practical 122 | +talk(speaker[1]) 123 | 124 | +branch-out() 125 | 126 | .event-full.general 127 | .title 128 | h2 Lightning talks #[small 18:30] 129 | .talk-description 130 | p. 131 | There is only one rule of lightning talks: #[br] 132 | 5 mins and hard cut. Get on stage and share your experience! 133 | 134 | .commit.empty 135 | .dot 136 | 137 | .event-full.general 138 | .title 139 | h2 Thank you #[small 19:00] 140 | .talk-description 141 | p. 142 | The first day of PyCon CZ is over. 143 | Wrap it up and enjoy the evening party. 144 | See you tomorrow at the sprint venue! 145 | 146 | .commit.empty.last 147 | .dot 148 | 149 | a.anchor#directions 150 | h2 The venue 151 | 152 | p.lead. 153 | The conference is going to be held at Brno University of Technology. 154 | 155 | .map 156 | address 157 | p.strong VUT FIT 158 | p 49°11'25.8"N 16°37'13.1"E 159 | p Building D 160 | p Božetěchova 1/2 161 | p 612 66 Brno 162 | p Czech Republic 163 | 164 | #map.vut 165 | -------------------------------------------------------------------------------- /static/jade/workshops/index.jade: -------------------------------------------------------------------------------- 1 | extends ../base 2 | 3 | //- render single speaker 4 | mixin talk(workshop) 5 | .workshop 6 | //- img.avatar(src=avatar(workshop.avatar), alt='Photo of ' + workshop.name) 7 | 8 | h3 9 | = workshop.title 10 | small 11 | | by 12 | = workshop.name 13 | 14 | .misc 15 | small 16 | = workshop.time 17 | if workshop.github 18 | a.social.github(href="https://github.com/" + workshop.github) 19 | .fa.fa-github 20 | if workshop.twitter 21 | a.social.twitter(href="https://twitter.com/" + workshop.twitter) 22 | .fa.fa-twitter 23 | 24 | != md(workshop.abstract) 25 | 26 | if workshop.requirements 27 | .requirements 28 | h4 Requirements 29 | ul 30 | each requirement, index in workshop.requirements 31 | li!= md(requirement) 32 | 33 | block vars 34 | - var pageClass = "page-workshops" 35 | - var activePage = "workshops" 36 | 37 | block viewport 38 | .container 39 | h1 Sprints & Workshops 40 | 41 | h2 42 | | Breakfast 43 | small.workshop-time. 44 | 8:00 45 | p. 46 | Good morning, everyone! 47 | Let's start with something pleasant. Join us for delicious breakfast before the coding madness begins. 48 | 49 | h2 Workshops 50 | p. 51 | There will be six workshops in 3 rooms. One block of 52 | workshops before lunch and one after it. 53 | 54 | p. 55 | Please bring a laptop with a working Python interpreter and 56 | #[a(href="https://pip.readthedocs.org") pip]. 57 | Some workshops have additional requirements. 58 | 59 | //- Iterate over workshops object (loaded in gulpfile from data/workshops.json) 60 | //- and render mixin talk() (see above) 61 | each workshop, index in workshops 62 | +talk(workshop) 63 | 64 | h2 65 | | Sprints 66 | small.workshop-time. 67 | 8:30 – 18:00 68 | p. 69 | Along workshops listed above, there's going to be an ongoing hacking & 70 | coding atmosphere. If you don't have your project you want to work on 71 | with other developers, you can join some of our pre-announced sprints: 72 | 73 | h3 Python 3 Porting 74 | p. 75 | Make your project Python 3 compatible or help a project that you like! 76 | Experienced porters can help you on your way, with guidance through porting 77 | strategies, best practices, libraries and automation. They can even 78 | give you advice how to convince the management/upstream that supporting 79 | Python 3 is a good idea. 80 | 81 | h3 The Docs Sprint 82 | p. 83 | The Doc-tors will focus mainly on Django, DjangoGirls, or Python 84 | documentation, but any open-source project is fair game. 85 | Come sprint with us – you can make your first open-source contribution, 86 | improve the docs of your successful library, or anything in between! 87 | 88 | h3 Your Sprint Here 89 | p. 90 | Additional sprints will be announced after lightning talks on Saturday. 91 | 92 | h2 93 | | Closing 94 | small.workshop-time. 95 | 18:00 96 | p. 97 | It was a looong weekend and it's time to go home. #[br] 98 | The first PyCon CZ is over. See you next year! 99 | 100 | hr 101 | a.anchor#directions 102 | h2 The venue 103 | 104 | p.lead. 105 | Spaces for sprints and workshops are provided by #[a(href="http://www.hubbrno.cz/en/") Impact Hub Brno]. 106 | 107 | .map 108 | address 109 | p.strong Impact Hub Brno 110 | p 49°13'34.5"N 16°35'49.0"E 111 | p Cyrilská 7 112 | p 602 00 Brno 113 | p Czech Republic 114 | 115 | #map.impact 116 | -------------------------------------------------------------------------------- /static/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/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/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/_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 | -------------------------------------------------------------------------------- /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/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/_buttons.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Buttons 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base styles 7 | // -------------------------------------------------- 8 | 9 | .btn { 10 | display: inline-block; 11 | margin-bottom: 0; // For input.btn 12 | font-weight: $btn-font-weight; 13 | text-align: center; 14 | vertical-align: middle; 15 | touch-action: manipulation; 16 | cursor: pointer; 17 | background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 18 | border: 1px solid transparent; 19 | white-space: nowrap; 20 | @include button-size($padding-base-vertical, $padding-base-horizontal, $font-size-base, $line-height-base, $border-radius-base); 21 | @include user-select(none); 22 | 23 | &, 24 | &:active, 25 | &.active { 26 | &:focus, 27 | &.focus { 28 | @include tab-focus; 29 | } 30 | } 31 | 32 | &:hover, 33 | &:focus, 34 | &.focus { 35 | color: $btn-default-color; 36 | text-decoration: none; 37 | } 38 | 39 | &:active, 40 | &.active { 41 | outline: 0; 42 | background-image: none; 43 | @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); 44 | } 45 | 46 | &.disabled, 47 | &[disabled], 48 | fieldset[disabled] & { 49 | cursor: $cursor-disabled; 50 | pointer-events: none; // Future-proof disabling of clicks 51 | @include opacity(.65); 52 | @include box-shadow(none); 53 | } 54 | } 55 | 56 | 57 | // Alternate buttons 58 | // -------------------------------------------------- 59 | 60 | .btn-default { 61 | @include button-variant($btn-default-color, $btn-default-bg, $btn-default-border); 62 | } 63 | .btn-primary { 64 | @include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border); 65 | } 66 | // Success appears as green 67 | .btn-success { 68 | @include button-variant($btn-success-color, $btn-success-bg, $btn-success-border); 69 | } 70 | // Info appears as blue-green 71 | .btn-info { 72 | @include button-variant($btn-info-color, $btn-info-bg, $btn-info-border); 73 | } 74 | // Warning appears as orange 75 | .btn-warning { 76 | @include button-variant($btn-warning-color, $btn-warning-bg, $btn-warning-border); 77 | } 78 | // Danger and error appear as red 79 | .btn-danger { 80 | @include button-variant($btn-danger-color, $btn-danger-bg, $btn-danger-border); 81 | } 82 | 83 | 84 | // Link buttons 85 | // ------------------------- 86 | 87 | // Make a button look and behave like a link 88 | .btn-link { 89 | color: $link-color; 90 | font-weight: normal; 91 | border-radius: 0; 92 | 93 | &, 94 | &:active, 95 | &.active, 96 | &[disabled], 97 | fieldset[disabled] & { 98 | background-color: transparent; 99 | @include box-shadow(none); 100 | } 101 | &, 102 | &:hover, 103 | &:focus, 104 | &:active { 105 | border-color: transparent; 106 | } 107 | &:hover, 108 | &:focus { 109 | color: $link-hover-color; 110 | text-decoration: $link-hover-decoration; 111 | background-color: transparent; 112 | } 113 | &[disabled], 114 | fieldset[disabled] & { 115 | &:hover, 116 | &:focus { 117 | color: $btn-link-disabled-color; 118 | text-decoration: none; 119 | } 120 | } 121 | } 122 | 123 | 124 | // Button Sizes 125 | // -------------------------------------------------- 126 | 127 | .btn-lg { 128 | // line-height: ensure even-numbered height of button next to large input 129 | @include button-size($padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $border-radius-large); 130 | } 131 | .btn-sm { 132 | // line-height: ensure proper height of button next to small input 133 | @include button-size($padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $border-radius-small); 134 | } 135 | .btn-xs { 136 | @include button-size($padding-xs-vertical, $padding-xs-horizontal, $font-size-small, $line-height-small, $border-radius-small); 137 | } 138 | 139 | 140 | // Block button 141 | // -------------------------------------------------- 142 | 143 | .btn-block { 144 | display: block; 145 | width: 100%; 146 | } 147 | 148 | // Vertically space out multiple block buttons 149 | .btn-block + .btn-block { 150 | margin-top: 5px; 151 | } 152 | 153 | // Specificity overrides 154 | input[type="submit"], 155 | input[type="reset"], 156 | input[type="button"] { 157 | &.btn-block { 158 | width: 100%; 159 | } 160 | } 161 | -------------------------------------------------------------------------------- /static/scss/bootstrap/_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/_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 | -------------------------------------------------------------------------------- /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/scss/bootstrap/_dropdowns.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Dropdown menus 3 | // -------------------------------------------------- 4 | 5 | 6 | // Dropdown arrow/caret 7 | .caret { 8 | display: inline-block; 9 | width: 0; 10 | height: 0; 11 | margin-left: 2px; 12 | vertical-align: middle; 13 | border-top: $caret-width-base dashed; 14 | border-right: $caret-width-base solid transparent; 15 | border-left: $caret-width-base solid transparent; 16 | } 17 | 18 | // The dropdown wrapper (div) 19 | .dropup, 20 | .dropdown { 21 | position: relative; 22 | } 23 | 24 | // Prevent the focus on the dropdown toggle when closing dropdowns 25 | .dropdown-toggle:focus { 26 | outline: 0; 27 | } 28 | 29 | // The dropdown menu (ul) 30 | .dropdown-menu { 31 | position: absolute; 32 | top: 100%; 33 | left: 0; 34 | z-index: $zindex-dropdown; 35 | display: none; // none by default, but block on "open" of the menu 36 | float: left; 37 | min-width: 160px; 38 | padding: 5px 0; 39 | margin: 2px 0 0; // override default ul 40 | list-style: none; 41 | font-size: $font-size-base; 42 | text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer) 43 | background-color: $dropdown-bg; 44 | border: 1px solid $dropdown-fallback-border; // IE8 fallback 45 | border: 1px solid $dropdown-border; 46 | border-radius: $border-radius-base; 47 | @include box-shadow(0 6px 12px rgba(0,0,0,.175)); 48 | background-clip: padding-box; 49 | 50 | // Aligns the dropdown menu to right 51 | // 52 | // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]` 53 | &.pull-right { 54 | right: 0; 55 | left: auto; 56 | } 57 | 58 | // Dividers (basically an hr) within the dropdown 59 | .divider { 60 | @include nav-divider($dropdown-divider-bg); 61 | } 62 | 63 | // Links within the dropdown menu 64 | > li > a { 65 | display: block; 66 | padding: 3px 20px; 67 | clear: both; 68 | font-weight: normal; 69 | line-height: $line-height-base; 70 | color: $dropdown-link-color; 71 | white-space: nowrap; // prevent links from randomly breaking onto new lines 72 | } 73 | } 74 | 75 | // Hover/Focus state 76 | .dropdown-menu > li > a { 77 | &:hover, 78 | &:focus { 79 | text-decoration: none; 80 | color: $dropdown-link-hover-color; 81 | background-color: $dropdown-link-hover-bg; 82 | } 83 | } 84 | 85 | // Active state 86 | .dropdown-menu > .active > a { 87 | &, 88 | &:hover, 89 | &:focus { 90 | color: $dropdown-link-active-color; 91 | text-decoration: none; 92 | outline: 0; 93 | background-color: $dropdown-link-active-bg; 94 | } 95 | } 96 | 97 | // Disabled state 98 | // 99 | // Gray out text and ensure the hover/focus state remains gray 100 | 101 | .dropdown-menu > .disabled > a { 102 | &, 103 | &:hover, 104 | &:focus { 105 | color: $dropdown-link-disabled-color; 106 | } 107 | 108 | // Nuke hover/focus effects 109 | &:hover, 110 | &:focus { 111 | text-decoration: none; 112 | background-color: transparent; 113 | background-image: none; // Remove CSS gradient 114 | @include reset-filter; 115 | cursor: $cursor-disabled; 116 | } 117 | } 118 | 119 | // Open state for the dropdown 120 | .open { 121 | // Show the menu 122 | > .dropdown-menu { 123 | display: block; 124 | } 125 | 126 | // Remove the outline when :focus is triggered 127 | > a { 128 | outline: 0; 129 | } 130 | } 131 | 132 | // Menu positioning 133 | // 134 | // Add extra class to `.dropdown-menu` to flip the alignment of the dropdown 135 | // menu with the parent. 136 | .dropdown-menu-right { 137 | left: auto; // Reset the default from `.dropdown-menu` 138 | right: 0; 139 | } 140 | // With v3, we enabled auto-flipping if you have a dropdown within a right 141 | // aligned nav component. To enable the undoing of that, we provide an override 142 | // to restore the default dropdown menu alignment. 143 | // 144 | // This is only for left-aligning a dropdown menu within a `.navbar-right` or 145 | // `.pull-right` nav component. 146 | .dropdown-menu-left { 147 | left: 0; 148 | right: auto; 149 | } 150 | 151 | // Dropdown section headers 152 | .dropdown-header { 153 | display: block; 154 | padding: 3px 20px; 155 | font-size: $font-size-small; 156 | line-height: $line-height-base; 157 | color: $dropdown-header-color; 158 | white-space: nowrap; // as with > li > a 159 | } 160 | 161 | // Backdrop to catch body clicks on mobile, etc. 162 | .dropdown-backdrop { 163 | position: fixed; 164 | left: 0; 165 | right: 0; 166 | bottom: 0; 167 | top: 0; 168 | z-index: ($zindex-dropdown - 10); 169 | } 170 | 171 | // Right aligned dropdowns 172 | .pull-right > .dropdown-menu { 173 | right: 0; 174 | left: auto; 175 | } 176 | 177 | // Allow for dropdowns to go bottom up (aka, dropup-menu) 178 | // 179 | // Just add .dropup after the standard .dropdown class and you're set, bro. 180 | // TODO: abstract this so that the navbar fixed styles are not placed here? 181 | 182 | .dropup, 183 | .navbar-fixed-bottom .dropdown { 184 | // Reverse the caret 185 | .caret { 186 | border-top: 0; 187 | border-bottom: $caret-width-base solid; 188 | content: ""; 189 | } 190 | // Different positioning for bottom up menu 191 | .dropdown-menu { 192 | top: auto; 193 | bottom: 100%; 194 | margin-bottom: 2px; 195 | } 196 | } 197 | 198 | 199 | // Component alignment 200 | // 201 | // Reiterate per navbar.less and the modified component alignment there. 202 | 203 | @media (min-width: $grid-float-breakpoint) { 204 | .navbar-right { 205 | .dropdown-menu { 206 | right: 0; left: auto; 207 | } 208 | // Necessary for overrides of the default right aligned menu. 209 | // Will remove come v4 in all likelihood. 210 | .dropdown-menu-left { 211 | left: 0; right: auto; 212 | } 213 | } 214 | } 215 | -------------------------------------------------------------------------------- /static/scss/bootstrap/_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/_input-groups.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Input groups 3 | // -------------------------------------------------- 4 | 5 | // Base styles 6 | // ------------------------- 7 | .input-group { 8 | position: relative; // For dropdowns 9 | display: table; 10 | border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table 11 | 12 | // Undo padding and float of grid classes 13 | &[class*="col-"] { 14 | float: none; 15 | padding-left: 0; 16 | padding-right: 0; 17 | } 18 | 19 | .form-control { 20 | // Ensure that the input is always above the *appended* addon button for 21 | // proper border colors. 22 | position: relative; 23 | z-index: 2; 24 | 25 | // IE9 fubars the placeholder attribute in text inputs and the arrows on 26 | // select elements in input groups. To fix it, we float the input. Details: 27 | // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855 28 | float: left; 29 | 30 | width: 100%; 31 | margin-bottom: 0; 32 | } 33 | } 34 | 35 | // Sizing options 36 | // 37 | // Remix the default form control sizing classes into new ones for easier 38 | // manipulation. 39 | 40 | .input-group-lg > .form-control, 41 | .input-group-lg > .input-group-addon, 42 | .input-group-lg > .input-group-btn > .btn { 43 | @extend .input-lg; 44 | } 45 | .input-group-sm > .form-control, 46 | .input-group-sm > .input-group-addon, 47 | .input-group-sm > .input-group-btn > .btn { 48 | @extend .input-sm; 49 | } 50 | 51 | 52 | // Display as table-cell 53 | // ------------------------- 54 | .input-group-addon, 55 | .input-group-btn, 56 | .input-group .form-control { 57 | display: table-cell; 58 | 59 | &:not(:first-child):not(:last-child) { 60 | border-radius: 0; 61 | } 62 | } 63 | // Addon and addon wrapper for buttons 64 | .input-group-addon, 65 | .input-group-btn { 66 | width: 1%; 67 | white-space: nowrap; 68 | vertical-align: middle; // Match the inputs 69 | } 70 | 71 | // Text input groups 72 | // ------------------------- 73 | .input-group-addon { 74 | padding: $padding-base-vertical $padding-base-horizontal; 75 | font-size: $font-size-base; 76 | font-weight: normal; 77 | line-height: 1; 78 | color: $input-color; 79 | text-align: center; 80 | background-color: $input-group-addon-bg; 81 | border: 1px solid $input-group-addon-border-color; 82 | border-radius: $border-radius-base; 83 | 84 | // Sizing 85 | &.input-sm { 86 | padding: $padding-small-vertical $padding-small-horizontal; 87 | font-size: $font-size-small; 88 | border-radius: $border-radius-small; 89 | } 90 | &.input-lg { 91 | padding: $padding-large-vertical $padding-large-horizontal; 92 | font-size: $font-size-large; 93 | border-radius: $border-radius-large; 94 | } 95 | 96 | // Nuke default margins from checkboxes and radios to vertically center within. 97 | input[type="radio"], 98 | input[type="checkbox"] { 99 | margin-top: 0; 100 | } 101 | } 102 | 103 | // Reset rounded corners 104 | .input-group .form-control:first-child, 105 | .input-group-addon:first-child, 106 | .input-group-btn:first-child > .btn, 107 | .input-group-btn:first-child > .btn-group > .btn, 108 | .input-group-btn:first-child > .dropdown-toggle, 109 | .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), 110 | .input-group-btn:last-child > .btn-group:not(:last-child) > .btn { 111 | @include border-right-radius(0); 112 | } 113 | .input-group-addon:first-child { 114 | border-right: 0; 115 | } 116 | .input-group .form-control:last-child, 117 | .input-group-addon:last-child, 118 | .input-group-btn:last-child > .btn, 119 | .input-group-btn:last-child > .btn-group > .btn, 120 | .input-group-btn:last-child > .dropdown-toggle, 121 | .input-group-btn:first-child > .btn:not(:first-child), 122 | .input-group-btn:first-child > .btn-group:not(:first-child) > .btn { 123 | @include border-left-radius(0); 124 | } 125 | .input-group-addon:last-child { 126 | border-left: 0; 127 | } 128 | 129 | // Button input groups 130 | // ------------------------- 131 | .input-group-btn { 132 | position: relative; 133 | // Jankily prevent input button groups from wrapping with `white-space` and 134 | // `font-size` in combination with `inline-block` on buttons. 135 | font-size: 0; 136 | white-space: nowrap; 137 | 138 | // Negative margin for spacing, position for bringing hovered/focused/actived 139 | // element above the siblings. 140 | > .btn { 141 | position: relative; 142 | + .btn { 143 | margin-left: -1px; 144 | } 145 | // Bring the "active" button to the front 146 | &:hover, 147 | &:focus, 148 | &:active { 149 | z-index: 2; 150 | } 151 | } 152 | 153 | // Negative margin to only have a 1px border between the two 154 | &:first-child { 155 | > .btn, 156 | > .btn-group { 157 | margin-right: -1px; 158 | } 159 | } 160 | &:last-child { 161 | > .btn, 162 | > .btn-group { 163 | margin-left: -1px; 164 | } 165 | } 166 | } 167 | -------------------------------------------------------------------------------- /static/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 | -------------------------------------------------------------------------------- /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/_list-group.scss: -------------------------------------------------------------------------------- 1 | // 2 | // List groups 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base class 7 | // 8 | // Easily usable on