├── .gitignore ├── LICENSE.md ├── README.md ├── manage.py ├── package.json ├── pyconcz_2016 ├── __init__.py ├── announcements │ ├── __init__.py │ ├── admin.py │ ├── apps.py │ ├── migrations │ │ ├── 0001_initial.py │ │ └── __init__.py │ ├── models.py │ ├── templatetags │ │ ├── __init__.py │ │ └── announcement_tags.py │ ├── urls.py │ └── views.py ├── common │ ├── __init__.py │ ├── templatetags │ │ ├── __init__.py │ │ └── menu_tags.py │ ├── urls.py │ └── views.py ├── formats │ ├── __init__.py │ └── en │ │ ├── __init__.py │ │ └── formats.py ├── proposals │ ├── __init__.py │ ├── admin.py │ ├── apps.py │ ├── config.py │ ├── management │ │ ├── __init__.py │ │ └── commands │ │ │ ├── __init__.py │ │ │ ├── copy_proposals.py │ │ │ └── copy_workshops.py │ ├── migrations │ │ ├── 0001_initial.py │ │ ├── 0002_auto_20160801_1020_squashed_0004_auto_20160801_1021.py │ │ ├── 0003_auto_20160809_2345.py │ │ ├── 0004_auto_20160811_0816.py │ │ ├── 0005_auto_20160812_0805.py │ │ ├── 0006_auto_20160812_1127.py │ │ ├── 0007_auto_20160812_1142.py │ │ ├── 0008_financialaid.py │ │ ├── 0009_auto_20160908_1357.py │ │ ├── 0010_auto_20160908_1412.py │ │ ├── 0011_auto_20160918_2246.py │ │ ├── 0012_auto_20160919_0020.py │ │ ├── 0013_auto_20160919_0021.py │ │ ├── 0014_auto_20160919_0116.py │ │ ├── 0015_auto_20160926_0944.py │ │ └── __init__.py │ ├── models.py │ ├── pyconcz2016_config.py │ ├── slack.py │ ├── urls.py │ └── views.py ├── settings.py ├── settings_dev.py ├── speakers │ ├── __init__.py │ ├── admin.py │ ├── apps.py │ ├── management │ │ ├── __init__.py │ │ └── commands │ │ │ ├── __init__.py │ │ │ ├── load_speakers_csv.py │ │ │ ├── load_workshops_csv.py │ │ │ └── schedule_to_csv.py │ ├── migrations │ │ ├── 0001_initial.py │ │ ├── 0002_auto_20160926_2239.py │ │ ├── 0003_auto_20160926_2240.py │ │ ├── 0004_speaker_email.py │ │ ├── 0005_auto_20160926_2242.py │ │ ├── 0006_auto_20160927_1007.py │ │ ├── 0007_auto_20161005_1335.py │ │ ├── 0007_slot.py │ │ ├── 0008_auto_20161006_0929.py │ │ ├── 0009_merge.py │ │ ├── 0010_auto_20161010_0944.py │ │ ├── 0011_auto_20161011_1110.py │ │ ├── 0012_auto_20161011_1110.py │ │ ├── 0013_remove_slot_talk.py │ │ ├── 0014_auto_20161011_2055.py │ │ ├── 0015_speaker_keynote.py │ │ ├── 0016_auto_20161028_1039.py │ │ └── __init__.py │ ├── models.py │ ├── templatetags │ │ ├── __init__.py │ │ └── slot_tags.py │ ├── urls.py │ └── views.py ├── sponsors │ ├── __init__.py │ ├── admin.py │ ├── apps.py │ ├── migrations │ │ ├── 0001_initial.py │ │ ├── 0002_sponsor_published.py │ │ ├── 0003_auto_20160908_1412.py │ │ ├── 0004_auto_20160929_1206.py │ │ ├── 0005_auto_20160929_1210.py │ │ ├── 0006_auto_20160929_1218.py │ │ ├── 0007_auto_20161019_1700.py │ │ ├── 0008_auto_20161019_1705.py │ │ └── __init__.py │ ├── models.py │ ├── templatetags │ │ ├── __init__.py │ │ └── sponsors_tags.py │ ├── urls.py │ └── views.py ├── static │ ├── img │ │ ├── brno_14834083423_2bc176e489_k.jpg │ │ ├── brno_15778378112_a79544ff4d_k.jpg │ │ ├── brno_25821436212_da9fbe39a7_k.jpg │ │ ├── brno_25821782382_ea9bae695a_k.jpg │ │ ├── brno_3049514881_73229e4fc5_b.jpg │ │ ├── brno_6009296353_6c35a6a3ae_b.jpg │ │ ├── brno_9596330111_db788bcdc0_k.jpg │ │ ├── favicon.ico │ │ ├── grid.svg │ │ ├── icon.png │ │ ├── pyconlogo.png │ │ ├── pyconlogo.svg │ │ ├── pyconlogo_grid.svg │ │ └── use_it_brno.png │ ├── index.js │ └── scss │ │ ├── _base.scss │ │ ├── _footer.scss │ │ ├── _forms.scss │ │ ├── _header.scss │ │ ├── _homepage.scss │ │ ├── _layout.scss │ │ ├── _mixins.scss │ │ ├── _sponsors.scss │ │ ├── _team.scss │ │ ├── _variables.scss │ │ ├── pyconcz.scss │ │ └── speakers │ │ ├── _schedule.scss │ │ └── _speakers.scss ├── static_build │ ├── css │ │ ├── styles-01b66386d6bc18ef0ff1.css │ │ ├── styles-07097abd86b86ff52a2d.css │ │ ├── styles-07d2bec342fc1c2b112c.css │ │ ├── styles-21fe7643969a6161278c.css │ │ ├── styles-2682f411ab136e3c9cb0.css │ │ ├── styles-277894458f1f7406bf76.css │ │ ├── styles-2a2dd4d11b9472348825.css │ │ ├── styles-34047339f8d0008714cb.css │ │ ├── styles-3fb82382006a904991e6.css │ │ ├── styles-45f748e46b128b9e2f4c.css │ │ ├── styles-4dde079ae5e73b54e415.css │ │ ├── styles-4f09144b17e7b6eeaadd.css │ │ ├── styles-511d96600675df665253.css │ │ ├── styles-525e8a2a0e765263b402.css │ │ ├── styles-54686c964da5bc06a469.css │ │ ├── styles-61a74ec143ed69061bcb.css │ │ ├── styles-6eae4eb0d619b15487b6.css │ │ ├── styles-724a9d664496e9a26d5a.css │ │ ├── styles-748446da6336048e2e84.css │ │ ├── styles-8629fc59941050a769a6.css │ │ ├── styles-87bddfdc6855a32ccfc9.css │ │ ├── styles-8a6ae31bd9954a62f393.css │ │ ├── styles-92af4579c303baab746a.css │ │ ├── styles-97572c87e733ee0c0c4d.css │ │ ├── styles-a365891b136e59d27334.css │ │ ├── styles-b75a235948766a6211a4.css │ │ ├── styles-c2d9c761c272ef8b7b00.css │ │ ├── styles-c3aaaddeb589e4e5f8ae.css │ │ ├── styles-c9de73f6980b5d45d850.css │ │ ├── styles-ca8900b25c6819122caf.css │ │ ├── styles-cb5a5715897e86b5bc79.css │ │ ├── styles-d3385e9ebf0a6a3010c9.css │ │ ├── styles-ddcca72215bbc54697c2.css │ │ ├── styles-f6b4a3ab0593c8eb5bd1.css │ │ ├── styles-f9a13e78a90c6e190f65.css │ │ └── styles.css │ ├── img │ │ ├── brno_14710167758_2c03da0e5b_k.jpg │ │ ├── brno_14834083423_2bc176e489_k.jpg │ │ ├── brno_15778378112_a79544ff4d_k.jpg │ │ ├── brno_25821436212_da9fbe39a7_k.jpg │ │ ├── brno_25821782382_ea9bae695a_k.jpg │ │ ├── brno_3049514881_73229e4fc5_b.jpg │ │ ├── brno_6009296353_6c35a6a3ae_b.jpg │ │ ├── brno_9572984119_426018666c_k.jpg │ │ ├── brno_9596330111_db788bcdc0_k.jpg │ │ ├── favicon.ico │ │ ├── grid.svg │ │ ├── icon.png │ │ ├── pyconlogo.png │ │ ├── pyconlogo.svg │ │ ├── pyconlogo_grid.svg │ │ └── use_it_brno.png │ ├── js │ │ ├── main-01b66386d6bc18ef0ff1.js │ │ ├── main-07097abd86b86ff52a2d.js │ │ ├── main-07d2bec342fc1c2b112c.js │ │ ├── main-21fe7643969a6161278c.js │ │ ├── main-2682f411ab136e3c9cb0.js │ │ ├── main-277894458f1f7406bf76.js │ │ ├── main-2a2dd4d11b9472348825.js │ │ ├── main-34047339f8d0008714cb.js │ │ ├── main-3641ccdd5bc95a33b881.js │ │ ├── main-3fb82382006a904991e6.js │ │ ├── main-45f748e46b128b9e2f4c.js │ │ ├── main-4dde079ae5e73b54e415.js │ │ ├── main-4f09144b17e7b6eeaadd.js │ │ ├── main-511d96600675df665253.js │ │ ├── main-525e8a2a0e765263b402.js │ │ ├── main-54686c964da5bc06a469.js │ │ ├── main-61a74ec143ed69061bcb.js │ │ ├── main-6eae4eb0d619b15487b6.js │ │ ├── main-724a9d664496e9a26d5a.js │ │ ├── main-748446da6336048e2e84.js │ │ ├── main-8629fc59941050a769a6.js │ │ ├── main-87bddfdc6855a32ccfc9.js │ │ ├── main-89c3ea9de0d52a89e403.js │ │ ├── main-8a6ae31bd9954a62f393.js │ │ ├── main-92af4579c303baab746a.js │ │ ├── main-97572c87e733ee0c0c4d.js │ │ ├── main-a365891b136e59d27334.js │ │ ├── main-b27ae8c1e046e8c29d87.js │ │ ├── main-b41c05d3e88c09b975fd.js │ │ ├── main-b59308c0e4c47cb355f0.js │ │ ├── main-b75a235948766a6211a4.js │ │ ├── main-c2d9c761c272ef8b7b00.js │ │ ├── main-c3aaaddeb589e4e5f8ae.js │ │ ├── main-c9de73f6980b5d45d850.js │ │ ├── main-ca8900b25c6819122caf.js │ │ ├── main-cb5a5715897e86b5bc79.js │ │ ├── main-d3385e9ebf0a6a3010c9.js │ │ ├── main-ddcca72215bbc54697c2.js │ │ ├── main-e80e12914c67331d4084.js │ │ ├── main-f6b4a3ab0593c8eb5bd1.js │ │ └── main-f9a13e78a90c6e190f65.js │ └── webpack-stats.json ├── team │ ├── __init__.py │ ├── admin.py │ ├── apps.py │ ├── migrations │ │ ├── 0001_initial.py │ │ ├── 0002_organizer_published.py │ │ ├── 0003_auto_20160823_0743.py │ │ ├── 0004_remove_organizer_bio.py │ │ └── __init__.py │ ├── models.py │ ├── urls.py │ └── views.py ├── templates │ ├── _base.html │ ├── admin │ │ └── proposals │ │ │ ├── add_score.html │ │ │ ├── change_form.html │ │ │ └── change_list.html │ ├── announcements │ │ ├── archive.html │ │ └── latest.html │ ├── menu.html │ ├── pages │ │ ├── about.html │ │ ├── brno.html │ │ ├── code.html │ │ ├── homepage.html │ │ ├── sponsors_offer.html │ │ └── transparency.html │ ├── proposals │ │ ├── _base.html │ │ ├── financial_aid_about.html │ │ ├── proposal_after.html │ │ ├── proposal_before.html │ │ ├── proposal_form.html │ │ ├── proposal_success.html │ │ └── talks_about.html │ ├── speakers │ │ ├── base_list.html │ │ ├── slot_schedule.html │ │ ├── talks_list.html │ │ └── workshops_list.html │ ├── sponsors │ │ ├── sponsors_inline.html │ │ └── sponsors_list.html │ └── team │ │ └── organizers_list.html ├── urls.py └── wsgi.py ├── requirements-dev.in ├── requirements-dev.txt ├── requirements.in ├── requirements.txt ├── webpack.config.js └── webpack.js /.gitignore: -------------------------------------------------------------------------------- 1 | # Python cache 2 | *.pyc 3 | __pycache__/ 4 | 5 | db.sqlite3 6 | 7 | # Node packages, tmp files 8 | node_modules/ 9 | npm-debug.log 10 | pyconcz_2016/static_build/webpack-stats-dev.json 11 | tmp/ 12 | 13 | # Virtualenv 14 | env/ 15 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | ===================== 3 | 4 | Copyright © `2016` `Pyvec o.s.` 5 | 6 | Permission is hereby granted, free of charge, to any person 7 | obtaining a copy of this software and associated documentation 8 | files (the “Software”), to deal in the Software without 9 | restriction, including without limitation the rights to use, 10 | copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the 12 | Software is furnished to do so, subject to the following 13 | conditions: 14 | 15 | The above copyright notice and this permission notice shall be 16 | included in all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, 19 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 20 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 21 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 22 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 23 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 24 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 25 | OTHER DEALINGS IN THE SOFTWARE. 26 | 27 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | > ⚠ This repository is archived 🗄 2 | > 3 | > [https://cz.pycon.org/2016/](https://cz.pycon.org/2016/) 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 | PyConCZ 2016 6 | ============ 7 | 8 | PyCon CZ is coming back to Brno for it's second edition on 28-30th October 2016. 9 | 10 | Contributing 11 | ------------ 12 | 13 | PyCon CZ website is using Python 3.5/Django for the backend, NodeJS/webpack for 14 | bundling frontend assets and Postgresql as a database. 15 | 16 | ### Setup dev environment 17 | 18 | #### Manually 19 | 20 | Inside `pyconcz_2016` directory, 21 | run following commands to setup project for local development: 22 | 23 | 1. Prepare postgresql database: user `pyconcz`, password empty, database `pyconcz` 24 | 25 | E.g. on Mac: 26 | 27 | ``` 28 | $ createuser --pwprompt pyconcz 29 | $ createdb -Opyconcz -Eutf8 pyconcz 30 | ``` 31 | 32 | 2. `python3 -m venv env` 33 | 3. `pip install -r requirements-dev.txt` 34 | 4. `./manage.py migrate` 35 | 5. `./manage.py runserver` 36 | 6. Open [http://localhost:8000]() 37 | 38 | If and **only if** you also want to work with styles and javascript, you need to have `node.js`. 39 | Inside root directory (the same directory where `manage.py` is) run following commands: 40 | 41 | 1. Add following line to your `/etc/hosts` file: `127.0.0.1 lan.pycon.cz`. 42 | 2. `npm install` 43 | 3. `npm start` 44 | 45 | Now open [http://lan.pycon.cz:8000]() and you should have development version of 46 | website with webpack hot reloading enabled. 47 | 48 | ### Building 49 | 50 | **You only need this when you changed styles**. Webpack creates static files with unique filenames (appending file hash). After 51 | each production build, you have to commit new files. Don't care about the old 52 | ones at the moment. 53 | 54 | 1. `npm run build` (or `docker-compose run webpack npm run build` when using docker) 55 | 2. `git add pyconcz_2016/static_build` 56 | 57 | 58 | License 59 | ------- 60 | 61 | This work is licensed under a [MIT](./LICENSE.md) 62 | -------------------------------------------------------------------------------- /manage.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | import os 3 | import sys 4 | 5 | if __name__ == "__main__": 6 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "pyconcz_2016.settings_dev") 7 | 8 | from django.core.management import execute_from_command_line 9 | 10 | execute_from_command_line(sys.argv) 11 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cz.pycon.org-2016", 3 | "version": "0.0.1", 4 | "description": "Frontend of PyCon CZ 2016 website", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "start": "node webpack.js", 9 | "build": "webpack --config webpack.config.js --release" 10 | }, 11 | "repository": { 12 | "type": "git", 13 | "url": "git+https://github.com/pyvec/cz.pycon.org-2016.git" 14 | }, 15 | "author": "Pyvec", 16 | "license": "MIT", 17 | "bugs": { 18 | "url": "https://github.com/pyvec/cz.pycon.org-2016/issues" 19 | }, 20 | "homepage": "https://github.com/pyvec/cz.pycon.org-2016#readme", 21 | "devDependencies": { 22 | "copy-webpack-plugin": "^3.0.1", 23 | "css-loader": "^0.23.1", 24 | "extract-text-webpack-plugin": "^1.0.1", 25 | "node-sass": "^3.8.0", 26 | "normalize.css": "^4.1.1", 27 | "react-hot-loader": "^1.3.0", 28 | "sass-loader": "^3.2.1", 29 | "style-loader": "^0.13.1", 30 | "voidcss-vertical-rhythm": "^1.0.0", 31 | "webpack": "^1.13.1", 32 | "webpack-bundle-tracker": "0.0.93", 33 | "webpack-dev-server": "^1.14.1" 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /pyconcz_2016/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/__init__.py -------------------------------------------------------------------------------- /pyconcz_2016/announcements/__init__.py: -------------------------------------------------------------------------------- 1 | default_app_config = 'pyconcz_2016.announcements.apps.AnnouncementsConfig' 2 | -------------------------------------------------------------------------------- /pyconcz_2016/announcements/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | from pyconcz_2016.announcements.models import Announcement 4 | 5 | admin.site.register(Announcement) 6 | -------------------------------------------------------------------------------- /pyconcz_2016/announcements/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class AnnouncementsConfig(AppConfig): 5 | name = 'pyconcz_2016.announcements' 6 | -------------------------------------------------------------------------------- /pyconcz_2016/announcements/migrations/0001_initial.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.3 on 2016-09-19 16:46 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | initial = True 11 | 12 | dependencies = [ 13 | ] 14 | 15 | operations = [ 16 | migrations.CreateModel( 17 | name='Announcement', 18 | fields=[ 19 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 20 | ('message', models.TextField()), 21 | ('link', models.URLField(blank=True, default='')), 22 | ('date_created', models.DateTimeField(auto_now_add=True)), 23 | ], 24 | options={ 25 | 'ordering': ['-date_created'], 26 | 'get_latest_by': 'date_created', 27 | }, 28 | ), 29 | ] 30 | -------------------------------------------------------------------------------- /pyconcz_2016/announcements/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/announcements/migrations/__init__.py -------------------------------------------------------------------------------- /pyconcz_2016/announcements/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | 4 | class Announcement(models.Model): 5 | message = models.TextField() 6 | link = models.URLField(blank=True, default='') 7 | date_created = models.DateTimeField(auto_now_add=True) 8 | 9 | class Meta: 10 | get_latest_by = 'date_created' 11 | ordering = ['-date_created'] 12 | 13 | def __str__(self): 14 | if len(self.message) > 30: 15 | return self.message[:30] + '…' 16 | else: 17 | return self.message 18 | -------------------------------------------------------------------------------- /pyconcz_2016/announcements/templatetags/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/announcements/templatetags/__init__.py -------------------------------------------------------------------------------- /pyconcz_2016/announcements/templatetags/announcement_tags.py: -------------------------------------------------------------------------------- 1 | from django import template 2 | 3 | from pyconcz_2016.announcements.models import Announcement 4 | 5 | register = template.Library() 6 | 7 | 8 | @register.inclusion_tag('announcements/latest.html') 9 | def latest_announcement(): 10 | try: 11 | item = Announcement.objects.all().latest() 12 | except Announcement.DoesNotExist: 13 | item = None 14 | 15 | return {'item': item} 16 | -------------------------------------------------------------------------------- /pyconcz_2016/announcements/urls.py: -------------------------------------------------------------------------------- 1 | from django.conf.urls import url 2 | 3 | from pyconcz_2016.announcements.views import announcement_list 4 | 5 | urlpatterns = [ 6 | url('^$', announcement_list, name='announcements_list'), 7 | ] 8 | -------------------------------------------------------------------------------- /pyconcz_2016/announcements/views.py: -------------------------------------------------------------------------------- 1 | from django.shortcuts import render 2 | from django.template.response import TemplateResponse 3 | 4 | from pyconcz_2016.announcements.models import Announcement 5 | 6 | 7 | def announcement_list(request): 8 | items = Announcement.objects.all() 9 | return TemplateResponse( 10 | request, 'announcements/archive.html', {'items': items} 11 | ) 12 | -------------------------------------------------------------------------------- /pyconcz_2016/common/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/common/__init__.py -------------------------------------------------------------------------------- /pyconcz_2016/common/templatetags/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/common/templatetags/__init__.py -------------------------------------------------------------------------------- /pyconcz_2016/common/templatetags/menu_tags.py: -------------------------------------------------------------------------------- 1 | from django import template 2 | from django.urls import reverse 3 | 4 | register = template.Library() 5 | 6 | 7 | @register.inclusion_tag('menu.html', takes_context=True) 8 | def show_menu(context): 9 | menu_items = [ 10 | { 11 | 'path': '/2016/', 12 | 'icon': 'fa-home', 13 | 'title': 'Homepage', 14 | }, { 15 | 'path': reverse('about'), 16 | 'title': 'Event', 17 | 'menu': [ 18 | { 19 | 'path': reverse('about'), 20 | 'title': 'About' 21 | }, { 22 | 'path': reverse('team_list'), 23 | 'title': 'Team' 24 | }, { 25 | 'path': reverse('sponsors_list'), 26 | 'title': 'Sponsors' 27 | }, { 28 | 'path': reverse('about_code'), 29 | 'title': 'Code of Conduct' 30 | }, 31 | ] 32 | }, { 33 | 'path': reverse('about_brno'), 34 | 'title': 'Brno', 35 | 'menu': [ 36 | { 37 | 'path': reverse('about_brno'), 38 | 'title': 'Guide', 39 | }, { 40 | 'path': reverse('about_brno') + "#how-to-get-to-brno", 41 | 'title': 'Travelling', 42 | }, { 43 | 'path': reverse('about_brno') + "#accommodation-tips", 44 | 'title': 'Accommodation', 45 | }, 46 | ] 47 | }, { 48 | 'path': reverse('speakers_schedule'), 49 | 'title': 'Program', 50 | 'menu': [ 51 | { 52 | 'path': reverse('speakers_schedule'), 53 | 'title': 'Schedule', 54 | }, { 55 | 'path': reverse('speakers_list', kwargs={'type': 'talks'}), 56 | 'title': 'Speakers', 57 | }, { 58 | 'path': reverse('speakers_list', kwargs={'type': 'workshops'}), 59 | 'title': 'Workshops', 60 | }, 61 | ] 62 | }, { 63 | 'path': 'https://ti.to/pyvec/pycon-cz-2016', 64 | 'title': 'Tickets', 65 | 'highlight': True 66 | } 67 | ] 68 | 69 | path = context['request'].path 70 | 71 | for root in menu_items: 72 | if 'menu' not in root: 73 | continue 74 | 75 | for child in root['menu']: 76 | if child['path'] == path: 77 | root['selected'] = child['selected'] = True 78 | 79 | return { 80 | 'menu_items': menu_items 81 | } 82 | -------------------------------------------------------------------------------- /pyconcz_2016/common/urls.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/common/urls.py -------------------------------------------------------------------------------- /pyconcz_2016/common/views.py: -------------------------------------------------------------------------------- 1 | from django.template.response import TemplateResponse 2 | 3 | from pyconcz_2016.speakers.models import Speaker 4 | 5 | 6 | def homepage(request): 7 | keynoters = Speaker.objects.filter(keynote=True) 8 | 9 | return TemplateResponse( 10 | request, 'pages/homepage.html', {'keynoters': keynoters}) 11 | -------------------------------------------------------------------------------- /pyconcz_2016/formats/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/formats/__init__.py -------------------------------------------------------------------------------- /pyconcz_2016/formats/en/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/formats/en/__init__.py -------------------------------------------------------------------------------- /pyconcz_2016/formats/en/formats.py: -------------------------------------------------------------------------------- 1 | TIME_FORMAT = 'H:i' 2 | -------------------------------------------------------------------------------- /pyconcz_2016/proposals/__init__.py: -------------------------------------------------------------------------------- 1 | default_app_config = 'pyconcz_2016.proposals.apps.ProposalsConfig' 2 | -------------------------------------------------------------------------------- /pyconcz_2016/proposals/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class ProposalsConfig(AppConfig): 5 | name = "pyconcz_2016.proposals" 6 | verbose_name = "Conference Proposals" 7 | 8 | def ready(self): 9 | # Register proposal forms 10 | from pyconcz_2016.proposals.config import proposals 11 | from pyconcz_2016.proposals.pyconcz2016_config import ( 12 | TalksConfig, WorkshopsConfig, FinancialAidConfig) 13 | proposals.register(TalksConfig) 14 | proposals.register(WorkshopsConfig) 15 | proposals.register(FinancialAidConfig) 16 | 17 | # Register signals 18 | from django.db.models.signals import post_save 19 | from pyconcz_2016.proposals.models import Talk, Workshop, FinancialAid 20 | from pyconcz_2016.proposals.slack import notify_slack 21 | post_save.connect(notify_slack, sender=Talk) 22 | post_save.connect(notify_slack, sender=Workshop) 23 | post_save.connect(notify_slack, sender=FinancialAid) 24 | -------------------------------------------------------------------------------- /pyconcz_2016/proposals/config.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | from pyconcz_2016.proposals.admin import EntryAdmin 4 | 5 | 6 | class Proposals: 7 | configs = {} 8 | 9 | def register(self, config): 10 | self.configs[config.key] = config 11 | 12 | admin.site.register( 13 | config.model, 14 | getattr(config, 'admin', EntryAdmin) 15 | ) 16 | 17 | def get_config(self, key): 18 | return self.configs[key] 19 | 20 | 21 | proposals = Proposals() 22 | 23 | -------------------------------------------------------------------------------- /pyconcz_2016/proposals/management/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/proposals/management/__init__.py -------------------------------------------------------------------------------- /pyconcz_2016/proposals/management/commands/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/proposals/management/commands/__init__.py -------------------------------------------------------------------------------- /pyconcz_2016/proposals/management/commands/copy_proposals.py: -------------------------------------------------------------------------------- 1 | from django.core.management.base import BaseCommand, CommandError 2 | 3 | from pyconcz_2016.proposals.models import Talk as ProposalTalk 4 | from pyconcz_2016.speakers.models import Speaker, Talk 5 | 6 | 7 | class Command(BaseCommand): 8 | def handle(self, *args, **options): 9 | for proposal in ProposalTalk.objects.all().filter(accepted=True): 10 | talk, _ = Talk.objects.get_or_create( 11 | title=proposal.title, 12 | defaults=dict( 13 | abstract=proposal.abstract, 14 | language=proposal.language, 15 | difficulty=proposal.difficulty 16 | ) 17 | ) 18 | 19 | speaker, _ = Speaker.objects.get_or_create( 20 | email=proposal.email, 21 | defaults=dict( 22 | full_name=proposal.full_name, 23 | bio=proposal.bio, 24 | twitter=proposal.twitter, 25 | github=proposal.github, 26 | photo=proposal.photo 27 | ) 28 | ) 29 | 30 | speaker.talks.add(talk) 31 | -------------------------------------------------------------------------------- /pyconcz_2016/proposals/management/commands/copy_workshops.py: -------------------------------------------------------------------------------- 1 | from django.core.management.base import BaseCommand, CommandError 2 | 3 | from pyconcz_2016.proposals.models import Workshop as ProposalWorkshop 4 | from pyconcz_2016.speakers.models import Speaker, Workshop 5 | 6 | 7 | class Command(BaseCommand): 8 | def handle(self, *args, **options): 9 | for proposal in ProposalWorkshop.objects.all().filter(accepted=True): 10 | workshop, _ = Workshop.objects.get_or_create( 11 | title=proposal.title, 12 | defaults=dict( 13 | abstract=proposal.abstract, 14 | language=proposal.language, 15 | difficulty=proposal.difficulty, 16 | type=proposal.type, 17 | length=proposal.length 18 | ) 19 | ) 20 | 21 | speaker, _ = Speaker.objects.get_or_create( 22 | email=proposal.email, 23 | defaults=dict( 24 | full_name=proposal.full_name, 25 | bio=proposal.bio, 26 | twitter=proposal.twitter, 27 | github=proposal.github, 28 | photo=proposal.photo 29 | ) 30 | ) 31 | 32 | speaker.workshops.add(workshop) 33 | -------------------------------------------------------------------------------- /pyconcz_2016/proposals/migrations/0001_initial.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.3 on 2016-07-25 07:03 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | import django.db.models.deletion 7 | import django.utils.timezone 8 | 9 | 10 | class Migration(migrations.Migration): 11 | 12 | initial = True 13 | 14 | dependencies = [ 15 | ('contenttypes', '0002_remove_content_type_name'), 16 | ] 17 | 18 | operations = [ 19 | migrations.CreateModel( 20 | name='Proposal', 21 | fields=[ 22 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 23 | ('object_id', models.PositiveIntegerField()), 24 | ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType')), 25 | ], 26 | ), 27 | migrations.CreateModel( 28 | name='Talk', 29 | fields=[ 30 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 31 | ('note', models.TextField()), 32 | ('date', models.DateTimeField(default=django.utils.timezone.now)), 33 | ('full_name', models.CharField(max_length=200)), 34 | ('email', models.EmailField(max_length=254)), 35 | ('bio', models.TextField()), 36 | ('twitter', models.CharField(blank=True, max_length=20)), 37 | ('github', models.CharField(blank=True, max_length=20)), 38 | ('title', models.CharField(max_length=200)), 39 | ('abstract', models.TextField()), 40 | ('difficulty', models.CharField(choices=[('all', 'All'), ('beginner', 'Beginner'), ('advanced', 'Advanced')], default='all', max_length=10)), 41 | ], 42 | options={ 43 | 'abstract': False, 44 | }, 45 | ), 46 | migrations.CreateModel( 47 | name='Workshop', 48 | fields=[ 49 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 50 | ('note', models.TextField()), 51 | ('date', models.DateTimeField(default=django.utils.timezone.now)), 52 | ('full_name', models.CharField(max_length=200)), 53 | ('email', models.EmailField(max_length=254)), 54 | ('bio', models.TextField()), 55 | ('twitter', models.CharField(blank=True, max_length=20)), 56 | ('github', models.CharField(blank=True, max_length=20)), 57 | ('title', models.CharField(max_length=200)), 58 | ('description', models.TextField()), 59 | ('difficulty', models.CharField(choices=[('all', 'All'), ('beginner', 'Beginner'), ('advanced', 'Advanced')], default='all', max_length=10)), 60 | ], 61 | options={ 62 | 'abstract': False, 63 | }, 64 | ), 65 | ] 66 | -------------------------------------------------------------------------------- /pyconcz_2016/proposals/migrations/0002_auto_20160801_1020_squashed_0004_auto_20160801_1021.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.3 on 2016-08-01 08:25 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | replaces = [('proposals', '0002_auto_20160801_1020'), ('proposals', '0003_auto_20160801_1020'), ('proposals', '0004_auto_20160801_1021')] 11 | 12 | dependencies = [ 13 | ('proposals', '0001_initial'), 14 | ] 15 | 16 | operations = [ 17 | migrations.AlterField( 18 | model_name='talk', 19 | name='github', 20 | field=models.CharField(blank=True, max_length=255), 21 | ), 22 | migrations.AlterField( 23 | model_name='talk', 24 | name='twitter', 25 | field=models.CharField(blank=True, max_length=255), 26 | ), 27 | migrations.AlterField( 28 | model_name='talk', 29 | name='difficulty', 30 | field=models.CharField(choices=[('beginner', 'Beginner'), ('advanced', 'Advanced')], default='all', max_length=10), 31 | ), 32 | migrations.AlterField( 33 | model_name='workshop', 34 | name='difficulty', 35 | field=models.CharField(choices=[('beginner', 'Beginner'), ('advanced', 'Advanced')], default='all', max_length=10), 36 | ), 37 | migrations.AlterField( 38 | model_name='workshop', 39 | name='github', 40 | field=models.CharField(blank=True, max_length=255), 41 | ), 42 | migrations.AlterField( 43 | model_name='workshop', 44 | name='twitter', 45 | field=models.CharField(blank=True, max_length=255), 46 | ), 47 | ] 48 | -------------------------------------------------------------------------------- /pyconcz_2016/proposals/migrations/0004_auto_20160811_0816.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.3 on 2016-08-11 06:16 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('proposals', '0003_auto_20160809_2345'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AlterField( 16 | model_name='workshop', 17 | name='abstract', 18 | field=models.TextField(help_text='Full description of your workshop or sprint. Please also describe requirements: libraries and Python version to be installed, required experience with topics/libraries, etc.'), 19 | ), 20 | migrations.AlterField( 21 | model_name='workshop', 22 | name='difficulty', 23 | field=models.CharField(choices=[('beginner', 'Beginner'), ('advanced', 'Advanced')], default='beginner', help_text='Does you audience require high level of specialized knowledge (of Python, a library, etc.), or is it suitable for everyone?', max_length=10), 24 | ), 25 | migrations.AlterField( 26 | model_name='workshop', 27 | name='length', 28 | field=models.CharField(blank=True, choices=[('1h', '1 hour'), ('2h', '2 hours'), ('2h', '3 hours'), ('1d', 'Full day (most sprints go here!)'), ('xx', 'Something else! (Please leave a note in the abstract!)')], help_text='How much time does your workshop take? Sprints usually take the whole day, but workshops are organized in smaller blocks. You can also have a full-day workshop with lunch break, but keep in mind that the length could discourage attendees!', max_length=2), 29 | ), 30 | migrations.AlterField( 31 | model_name='workshop', 32 | name='type', 33 | field=models.CharField(choices=[('sprint', 'Sprint'), ('workshop', 'Workshop')], default='sprint', help_text="At a workshop, you should present hands-on excercises for participants to learn from. You'll get a room and a slot in the agenda, and participants will need to register.\n At a sprint, participants help an open-source project -- usually by cloning the repo and trying to fix beginner-level issues, while you'll provide one-to-one mentorship. If several experienced developers are around, sprints are also a good place for serious design discussions. Sprinters only need a table to sit around, reliable wifi, and dedication to do great things!", max_length=10), 34 | ), 35 | ] 36 | -------------------------------------------------------------------------------- /pyconcz_2016/proposals/migrations/0005_auto_20160812_0805.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.3 on 2016-08-12 06:05 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('proposals', '0004_auto_20160811_0816'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AlterField( 16 | model_name='talk', 17 | name='github', 18 | field=models.CharField(blank=True, help_text='Optional', max_length=255, verbose_name='GitHub username'), 19 | ), 20 | migrations.AlterField( 21 | model_name='talk', 22 | name='twitter', 23 | field=models.CharField(blank=True, help_text='Optional', max_length=255, verbose_name='Twitter handle'), 24 | ), 25 | migrations.AlterField( 26 | model_name='workshop', 27 | name='github', 28 | field=models.CharField(blank=True, help_text='Optional', max_length=255, verbose_name='GitHub username'), 29 | ), 30 | migrations.AlterField( 31 | model_name='workshop', 32 | name='twitter', 33 | field=models.CharField(blank=True, help_text='Optional', max_length=255, verbose_name='Twitter handle'), 34 | ), 35 | ] 36 | -------------------------------------------------------------------------------- /pyconcz_2016/proposals/migrations/0006_auto_20160812_1127.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.3 on 2016-08-12 09:27 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('proposals', '0005_auto_20160812_0805'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AddField( 16 | model_name='talk', 17 | name='language', 18 | field=models.CharField(choices=[('en', 'English (preferred)'), ('cs', 'Czech/Slovak')], default='en', max_length=2), 19 | ), 20 | migrations.AddField( 21 | model_name='workshop', 22 | name='language', 23 | field=models.CharField(choices=[('en', 'English (preferred)'), ('cs', 'Czech/Slovak')], default='en', max_length=2), 24 | ), 25 | migrations.AlterField( 26 | model_name='workshop', 27 | name='type', 28 | field=models.CharField(choices=[('workshop', 'Workshop'), ('sprint', 'Sprint')], default='sprint', help_text="At a workshop, you should present hands-on excercises for participants to learn from. You'll get a room and a slot in the agenda, and participants will need to register.\n At a sprint, participants help an open-source project -- usually by cloning the repo and trying to fix beginner-level issues, while you'll provide one-to-one mentorship. If several experienced developers are around, sprints are also a good place for serious design discussions. Sprinters only need a table to sit around, reliable wifi, and dedication to do great things!", max_length=10), 29 | ), 30 | ] 31 | -------------------------------------------------------------------------------- /pyconcz_2016/proposals/migrations/0007_auto_20160812_1142.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.3 on 2016-08-12 09:42 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('proposals', '0006_auto_20160812_1127'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AlterField( 16 | model_name='talk', 17 | name='language', 18 | field=models.CharField(choices=[('en', 'English (preferred)'), ('cs', 'Czechoslovak')], default='en', max_length=2), 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /pyconcz_2016/proposals/migrations/0008_financialaid.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.3 on 2016-09-08 11:56 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | import django.utils.timezone 7 | 8 | 9 | class Migration(migrations.Migration): 10 | 11 | dependencies = [ 12 | ('proposals', '0007_auto_20160812_1142'), 13 | ] 14 | 15 | operations = [ 16 | migrations.CreateModel( 17 | name='FinancialAid', 18 | fields=[ 19 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 20 | ('note', models.TextField()), 21 | ('date', models.DateTimeField(default=django.utils.timezone.now)), 22 | ('full_name', models.CharField(max_length=200, verbose_name='Your name')), 23 | ('email', models.EmailField(help_text="We'll keep it secret, for internal use only.", max_length=254)), 24 | ('bio', models.TextField(help_text='Tell us a bit about yourself! Who you are, where are you from, what are your experiences with Python. Also include how are you involved in Python community and how do you contribute or do you plan to contribute to community.')), 25 | ('amount', models.TextField(help_text='How much money would you like to get (please specify currency).')), 26 | ('purpose', models.TextField(help_text='How would you like to use granted money?')), 27 | ], 28 | options={ 29 | 'abstract': False, 30 | }, 31 | ), 32 | ] 33 | -------------------------------------------------------------------------------- /pyconcz_2016/proposals/migrations/0009_auto_20160908_1357.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.3 on 2016-09-08 11:57 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('proposals', '0008_financialaid'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AlterField( 16 | model_name='financialaid', 17 | name='amount', 18 | field=models.CharField(help_text='How much money would you like to get (please specify currency).', max_length=255), 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /pyconcz_2016/proposals/migrations/0010_auto_20160908_1412.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.3 on 2016-09-08 12:12 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('proposals', '0009_auto_20160908_1357'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AlterField( 16 | model_name='financialaid', 17 | name='bio', 18 | field=models.TextField(help_text='Tell us a bit about yourself! Who you are, where you are from, and what your experiences with Python are. Also include how you are involved in Python community and how you contribute or plan to contribute to the community.'), 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /pyconcz_2016/proposals/migrations/0011_auto_20160918_2246.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.3 on 2016-09-18 20:46 3 | from __future__ import unicode_literals 4 | 5 | from django.conf import settings 6 | from django.db import migrations, models 7 | import django.db.models.deletion 8 | 9 | 10 | class Migration(migrations.Migration): 11 | 12 | dependencies = [ 13 | migrations.swappable_dependency(settings.AUTH_USER_MODEL), 14 | ('proposals', '0010_auto_20160908_1412'), 15 | ] 16 | 17 | operations = [ 18 | migrations.CreateModel( 19 | name='Score', 20 | fields=[ 21 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 22 | ('value', models.PositiveSmallIntegerField()), 23 | ('note', models.TextField(help_text='Only you can see this')), 24 | ], 25 | options={ 26 | 'permissions': (('can_add_score', 'Can add score'),), 27 | }, 28 | ), 29 | migrations.RenameModel( 30 | old_name='Proposal', 31 | new_name='Ranking', 32 | ), 33 | migrations.AlterUniqueTogether( 34 | name='ranking', 35 | unique_together=set([('content_type', 'object_id')]), 36 | ), 37 | migrations.AddField( 38 | model_name='score', 39 | name='proposal', 40 | field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='scores', to='proposals.Ranking'), 41 | ), 42 | migrations.AddField( 43 | model_name='score', 44 | name='user', 45 | field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), 46 | ), 47 | ] 48 | -------------------------------------------------------------------------------- /pyconcz_2016/proposals/migrations/0012_auto_20160919_0020.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.3 on 2016-09-18 22:20 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('proposals', '0011_auto_20160918_2246'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AlterField( 16 | model_name='score', 17 | name='value', 18 | field=models.PositiveSmallIntegerField(help_text='1 is the worst, 4 is the best'), 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /pyconcz_2016/proposals/migrations/0013_auto_20160919_0021.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.3 on 2016-09-18 22:21 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('proposals', '0012_auto_20160919_0020'), 12 | ] 13 | 14 | operations = [ 15 | migrations.RenameField( 16 | model_name='score', 17 | old_name='proposal', 18 | new_name='ranking', 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /pyconcz_2016/proposals/migrations/0014_auto_20160919_0116.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.3 on 2016-09-18 23:16 3 | from __future__ import unicode_literals 4 | 5 | import django.core.validators 6 | from django.db import migrations, models 7 | 8 | 9 | class Migration(migrations.Migration): 10 | 11 | dependencies = [ 12 | ('proposals', '0013_auto_20160919_0021'), 13 | ] 14 | 15 | operations = [ 16 | migrations.AlterField( 17 | model_name='score', 18 | name='note', 19 | field=models.CharField(blank=True, default='', help_text='Only you can see this', max_length=255), 20 | ), 21 | migrations.AlterField( 22 | model_name='score', 23 | name='value', 24 | field=models.PositiveSmallIntegerField(help_text='4 = Must have!, 3 = Interesting talk, 2 = Meh, 1 = Definitely not!', validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(4)]), 25 | ), 26 | ] 27 | -------------------------------------------------------------------------------- /pyconcz_2016/proposals/migrations/0015_auto_20160926_0944.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.3 on 2016-09-26 07:44 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('proposals', '0014_auto_20160919_0116'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AddField( 16 | model_name='financialaid', 17 | name='accepted', 18 | field=models.BooleanField(default=False), 19 | ), 20 | migrations.AddField( 21 | model_name='talk', 22 | name='accepted', 23 | field=models.BooleanField(default=False), 24 | ), 25 | migrations.AddField( 26 | model_name='workshop', 27 | name='accepted', 28 | field=models.BooleanField(default=False), 29 | ), 30 | ] 31 | -------------------------------------------------------------------------------- /pyconcz_2016/proposals/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/proposals/migrations/__init__.py -------------------------------------------------------------------------------- /pyconcz_2016/proposals/pyconcz2016_config.py: -------------------------------------------------------------------------------- 1 | from datetime import datetime 2 | 3 | from django.utils.timezone import get_current_timezone 4 | 5 | from pyconcz_2016.proposals.models import Talk, Workshop, FinancialAid 6 | 7 | tz = get_current_timezone() 8 | 9 | 10 | class TalksConfig: 11 | model = Talk 12 | key = 'talks' 13 | title = 'Talks' 14 | cfp_title = 'Submit your talk' 15 | template_about = 'proposals/talks_about.html' 16 | date_start = datetime(year=2016, month=8, day=1, hour=12, minute=0, tzinfo=tz) 17 | date_end = datetime(year=2016, month=9, day=15, hour=23, minute=59, second=59, tzinfo=tz) 18 | 19 | 20 | class WorkshopsConfig: 21 | model = Workshop 22 | key = 'workshops' 23 | title = 'Workshops' 24 | cfp_title = 'Submit your workshop' 25 | template_about = 'proposals/workshops_about.html' 26 | date_start = datetime(year=2016, month=8, day=1, hour=12, minute=0, tzinfo=tz) 27 | date_end = datetime(year=2016, month=10, day=5, hour=12, minute=0, tzinfo=tz) 28 | 29 | 30 | class FinancialAidConfig: 31 | model = FinancialAid 32 | key = 'financial-aid' 33 | title = 'Financial Aid' 34 | cfp_title = 'Financial Aid Programme' 35 | template_about = 'proposals/financial_aid_about.html' 36 | date_start = datetime(year=2016, month=9, day=8, hour=12, minute=0, tzinfo=tz) 37 | date_end = datetime(year=2016, month=10, day=8, hour=12, minute=0, tzinfo=tz) 38 | -------------------------------------------------------------------------------- /pyconcz_2016/proposals/slack.py: -------------------------------------------------------------------------------- 1 | import json 2 | import urllib.request 3 | 4 | from django.conf import settings 5 | from django.core.urlresolvers import reverse 6 | from django.utils.timezone import now 7 | 8 | 9 | def notify_slack(sender, instance, created, *args, **kwargs): 10 | if not created or settings.DEBUG or not settings.SLACK_WEBHOOK: 11 | return 12 | 13 | title = instance.title 14 | author = instance.full_name 15 | t = sender.__name__.lower() 16 | fallback = ("New {type} proposal submitted by {author} ({title})" 17 | .format(author=author, title=title, type=t)) 18 | 19 | title_link = ( 20 | "https://cz.pycon.org/" + 21 | reverse('admin:proposals_{t}_change'.format(t=t), args=[instance.id])) 22 | 23 | payload = { 24 | "username": "PyCon Czechia Bot", 25 | "icon_emoji": ":loudspeaker:", 26 | "attachments": [ 27 | { 28 | "fallback": fallback, 29 | "color": "#36a64f", 30 | "pretext": "New {type} proposal submitted".format(type=t), 31 | "author_name": author, 32 | "title": title, 33 | "title_link": title_link, 34 | "footer": "PyCon CZ 2016", 35 | "ts": now().timestamp() 36 | } 37 | ] 38 | } 39 | 40 | try: 41 | details = json.dumps(payload).encode('UTF-8') 42 | url = urllib.request.Request( 43 | settings.SLACK_WEBHOOK, details, 44 | headers={'content-type': 'application/json'}) 45 | urllib.request.urlopen(url) 46 | except: 47 | "Yes, silence it! We don't want to abort user's request." 48 | -------------------------------------------------------------------------------- /pyconcz_2016/proposals/urls.py: -------------------------------------------------------------------------------- 1 | from django.conf.urls import url 2 | 3 | from pyconcz_2016.proposals.views import ( 4 | proposal_success, proposal_create, proposal_about) 5 | 6 | 7 | urlpatterns = [ 8 | url('^(?P[^/]*)/$', proposal_about, name='proposal_about'), 9 | url('^(?P[^/]*)/form/$', proposal_create, name='proposal_form'), 10 | url('^(?P[^/]*)/sent/$', proposal_success, name='proposal_success'), 11 | ] 12 | -------------------------------------------------------------------------------- /pyconcz_2016/proposals/views.py: -------------------------------------------------------------------------------- 1 | from django.forms import modelform_factory 2 | from django.http import Http404 3 | from django.shortcuts import redirect 4 | from django.template import RequestContext 5 | from django.template.response import TemplateResponse 6 | from django.utils.timezone import now 7 | 8 | from pyconcz_2016.proposals.config import proposals 9 | 10 | 11 | def proposal_create(request, *, key): 12 | try: 13 | config = proposals.get_config(key) 14 | except KeyError: 15 | raise Http404 16 | 17 | context = {'proposal_config': config} 18 | 19 | is_public = not request.user.is_superuser 20 | right_now = now() 21 | if is_public and config.date_start > right_now: 22 | return TemplateResponse(request, 'proposals/proposal_before.html', context) 23 | elif is_public and config.date_end < right_now: 24 | return TemplateResponse(request, 'proposals/proposal_after.html', context) 25 | 26 | ProposalForm = modelform_factory(config.model, exclude=['note', 'date']) 27 | 28 | if request.method.lower() == 'post': 29 | form = ProposalForm(request.POST, request.FILES) 30 | 31 | if form.is_valid(): 32 | form.save() 33 | return redirect(to='proposal_success', key=key) 34 | 35 | else: 36 | form = ProposalForm() 37 | 38 | context['form'] = form 39 | return TemplateResponse(request, 'proposals/proposal_form.html', context) 40 | 41 | 42 | def proposal_success(request, *, key): 43 | context = {'proposal_config_key': key} 44 | return TemplateResponse(request, 'proposals/proposal_success.html', context) 45 | 46 | 47 | def proposal_about(request, *, key): 48 | try: 49 | config = proposals.get_config(key) 50 | except KeyError: 51 | raise Http404 52 | 53 | context = {'proposal_config': config} 54 | return TemplateResponse(request, config.template_about, context) 55 | -------------------------------------------------------------------------------- /pyconcz_2016/settings_dev.py: -------------------------------------------------------------------------------- 1 | from .settings import * 2 | 3 | DEBUG = True 4 | SECRET_KEY = 42 5 | 6 | CSRF_COOKIE_SECURE = False 7 | SESSION_COOKIE_SECURE = False 8 | 9 | DATABASES = { 10 | 'default': { 11 | 'ENGINE': 'django.db.backends.postgresql_psycopg2', 12 | 'NAME': 'pyconcz', 13 | 'USER': 'pyconcz' 14 | } 15 | } 16 | 17 | 18 | def show_toolbar(request): 19 | return not request.is_ajax() 20 | 21 | 22 | DEBUG_TOOLBAR_CONFIG = { 23 | 'SHOW_TOOLBAR_CALLBACK': show_toolbar 24 | } 25 | DEBUG_TOOLBAR_PATCH_SETTINGS = False 26 | 27 | if 'debug_toolbar' not in INSTALLED_APPS: 28 | INSTALLED_APPS.append('debug_toolbar') 29 | MIDDLEWARE.insert( 30 | 0, 'debug_toolbar.middleware.DebugToolbarMiddleware' 31 | ) 32 | 33 | STATICFILES_DIRS = [ 34 | os.path.join(BASE_DIR, 'static') 35 | ] 36 | 37 | WEBPACK_STATS = os.path.join(BASE_DIR, 'static_build', 'webpack-stats-dev.json') 38 | if os.path.exists(WEBPACK_STATS): 39 | WEBPACK_LOADER['DEFAULT']['STATS_FILE'] = WEBPACK_STATS 40 | else: 41 | print("If you're editing frontend files, plase run `npm start` " 42 | "and restart Django.") 43 | -------------------------------------------------------------------------------- /pyconcz_2016/speakers/__init__.py: -------------------------------------------------------------------------------- 1 | default_app_config = 'pyconcz_2016.speakers.apps.SpeakersConfig' 2 | -------------------------------------------------------------------------------- /pyconcz_2016/speakers/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | from .models import Speaker, Talk, Slot, Workshop 3 | 4 | 5 | class SlotAdmin(admin.ModelAdmin): 6 | list_display = ['date', 'get_description', 'room'] 7 | list_filter = ['room'] 8 | date_hierarchy = 'date' 9 | 10 | def get_queryset(self, request): 11 | return super().get_queryset(request).prefetch_related('content_object') 12 | 13 | def get_description(self, obj): 14 | return obj.content_object or obj.description 15 | 16 | 17 | admin.site.register(Speaker) 18 | admin.site.register(Talk) 19 | admin.site.register(Workshop) 20 | admin.site.register(Slot, SlotAdmin) 21 | -------------------------------------------------------------------------------- /pyconcz_2016/speakers/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class SpeakersConfig(AppConfig): 5 | name = "pyconcz_2016.speakers" 6 | verbose_name = "Speakers" 7 | -------------------------------------------------------------------------------- /pyconcz_2016/speakers/management/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/speakers/management/__init__.py -------------------------------------------------------------------------------- /pyconcz_2016/speakers/management/commands/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/speakers/management/commands/__init__.py -------------------------------------------------------------------------------- /pyconcz_2016/speakers/management/commands/load_speakers_csv.py: -------------------------------------------------------------------------------- 1 | import csv 2 | 3 | from datetime import datetime 4 | from django.core.management.base import BaseCommand, CommandError 5 | from django.utils import timezone 6 | 7 | from pyconcz_2016.speakers.models import Slot, Talk 8 | 9 | 10 | def get_talk(title): 11 | try: 12 | return Talk.objects.get(title__iexact=title) 13 | except Talk.DoesNotExist: 14 | print('Not found ', title) 15 | 16 | 17 | class Command(BaseCommand): 18 | def add_arguments(self, parser): 19 | parser.add_argument('csv_file', nargs='+', type=str) 20 | 21 | def handle(self, *args, **options): 22 | for filename in options['csv_file']: 23 | Slot.objects.bulk_create(self.read_talks(filename)) 24 | 25 | def read_talks(self, filename): 26 | with open(filename, newline='') as csvfile: 27 | reader = csv.reader(csvfile, delimiter=',', quotechar='"') 28 | 29 | (day, *_) = next(reader) 30 | rooms = ['d105', 'd0206', 'd0207'] 31 | 32 | for (time, _, track1, track2, track3) in reader: 33 | date = datetime.strptime(" ".join([day, time]), 34 | '%Y-%m-%d %I:%M:%S %p') 35 | date = timezone.make_aware(date, timezone.get_current_timezone()) 36 | 37 | if not track2 or not track3 or track1.endswith('Break'): 38 | yield Slot(date=date, description=track1, room='foyer') 39 | else: 40 | talks = [get_talk(title) 41 | for title in [track1, track2, track3]] 42 | yield from (Slot(date=date, talk=talk, room=room) 43 | for (talk, room) in zip(talks, rooms)) 44 | -------------------------------------------------------------------------------- /pyconcz_2016/speakers/management/commands/load_workshops_csv.py: -------------------------------------------------------------------------------- 1 | import csv 2 | 3 | from datetime import datetime 4 | from django.core.management.base import BaseCommand, CommandError 5 | from django.utils import timezone 6 | 7 | from pyconcz_2016.speakers.models import Slot, Workshop 8 | 9 | 10 | def get_workshop(title): 11 | try: 12 | return Workshop.objects.get(title__iexact=title) 13 | except Workshop.DoesNotExist: 14 | print('Not found ', title) 15 | 16 | 17 | class Command(BaseCommand): 18 | def add_arguments(self, parser): 19 | parser.add_argument('csv_file', nargs='+', type=str) 20 | 21 | def handle(self, *args, **options): 22 | for filename in options['csv_file']: 23 | Slot.objects.bulk_create(self.read_workshops(filename)) 24 | 25 | def read_workshops(self, filename): 26 | with open(filename, newline='') as csvfile: 27 | reader = csv.reader(csvfile, delimiter=',', quotechar='"') 28 | 29 | for (time, room, speaker, title) in reader: 30 | date = datetime.strptime(" ".join(['2016-10-30', time]), 31 | '%Y-%m-%d %H:%M') 32 | date = timezone.make_aware(date, timezone.get_current_timezone()) 33 | 34 | if not title: 35 | yield Slot(date=date, description=speaker, room=room) 36 | else: 37 | workshop = get_workshop(title) 38 | yield Slot(date=date, content_object=workshop, room=room) 39 | -------------------------------------------------------------------------------- /pyconcz_2016/speakers/management/commands/schedule_to_csv.py: -------------------------------------------------------------------------------- 1 | import csv 2 | import sys 3 | from django.core.management import BaseCommand 4 | 5 | from pyconcz_2016.speakers.models import Slot, EndTime 6 | 7 | 8 | def slot2dict(slot): 9 | shared = { 10 | 'date_start': slot.date, 11 | 'date_end': slot.date_end, 12 | 13 | 'room': slot.room, 14 | } 15 | 16 | if slot.content_object: 17 | if slot.content_type.model == 'talk': 18 | speakers = slot.content_object.talks.all() 19 | else: 20 | speakers = slot.content_object.workshops.all() 21 | 22 | specific = { 23 | 'type': slot.content_type, 24 | 'title': slot.content_object.title, 25 | 'description': slot.content_object.abstract, 26 | 27 | 'speaker': ', '.join([speaker.full_name for speaker in speakers]), 28 | 'bio': speakers[0].bio, 29 | 'avatar': 'https://cz.pycon.org' + speakers[0].photo.url, 30 | 'twitter': speakers[0].twitter, 31 | 'github': speakers[0].github, 32 | } 33 | else: 34 | specific = { 35 | 'type': 'event', 36 | 'description': slot.description 37 | } 38 | 39 | return dict([*shared.items(), *specific.items()]) 40 | 41 | 42 | class Command(BaseCommand): 43 | def handle(self, *args, **options): 44 | items = ( 45 | Slot.objects.all() 46 | .prefetch_related('content_object') 47 | .annotate(date_end=EndTime()) 48 | .order_by('date', 'room') 49 | ) 50 | 51 | field_names = [ 52 | 'date_start', 'date_end', 53 | 'room', 'type', 54 | 'title', 'description', 55 | 'speaker', 'bio', 'avatar', 'twitter', 'github' 56 | ] 57 | writer = csv.DictWriter(sys.stdout, fieldnames=field_names) 58 | writer.writeheader() 59 | writer.writerows((slot2dict(item) for item in items)) 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /pyconcz_2016/speakers/migrations/0001_initial.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.3 on 2016-09-17 03:52 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | import django.db.models.deletion 7 | 8 | 9 | class Migration(migrations.Migration): 10 | 11 | initial = True 12 | 13 | dependencies = [ 14 | ] 15 | 16 | operations = [ 17 | migrations.CreateModel( 18 | name='Speaker', 19 | fields=[ 20 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 21 | ('full_name', models.CharField(max_length=200)), 22 | ('biography', models.CharField(blank=True, max_length=255)), 23 | ('twitter', models.CharField(blank=True, max_length=255)), 24 | ('github', models.CharField(blank=True, max_length=255)), 25 | ('photo', models.ImageField(upload_to='speakers/pyconcz2016/')), 26 | ('published', models.BooleanField(default=False)), 27 | ], 28 | ), 29 | migrations.CreateModel( 30 | name='Talk', 31 | fields=[ 32 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 33 | ('title', models.CharField(max_length=200)), 34 | ('description', models.CharField(blank=True, max_length=255)), 35 | ], 36 | ), 37 | migrations.AddField( 38 | model_name='speaker', 39 | name='talk', 40 | field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='speakers.Talk'), 41 | ), 42 | ] 43 | -------------------------------------------------------------------------------- /pyconcz_2016/speakers/migrations/0002_auto_20160926_2239.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.3 on 2016-09-26 20:39 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('speakers', '0001_initial'), 12 | ] 13 | 14 | operations = [ 15 | migrations.RemoveField( 16 | model_name='speaker', 17 | name='published', 18 | ), 19 | migrations.AddField( 20 | model_name='talk', 21 | name='difficulty', 22 | field=models.CharField(choices=[('beginner', 'Beginner'), ('advanced', 'Advanced')], default='beginner', help_text='Does you audience require high level of Python knowledgeor is it suitable for everyone?', max_length=10), 23 | ), 24 | migrations.AddField( 25 | model_name='talk', 26 | name='language', 27 | field=models.CharField(choices=[('en', 'English (preferred)'), ('cs', 'Czechoslovak')], default='en', max_length=2), 28 | ), 29 | ] 30 | -------------------------------------------------------------------------------- /pyconcz_2016/speakers/migrations/0003_auto_20160926_2240.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.3 on 2016-09-26 20:40 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('speakers', '0002_auto_20160926_2239'), 12 | ] 13 | 14 | operations = [ 15 | migrations.RemoveField( 16 | model_name='talk', 17 | name='description', 18 | ), 19 | migrations.AddField( 20 | model_name='talk', 21 | name='abstract', 22 | field=models.TextField(default='', help_text='Full description of your talk. How would you describe yourtalk to the audience?'), 23 | preserve_default=False, 24 | ), 25 | ] 26 | -------------------------------------------------------------------------------- /pyconcz_2016/speakers/migrations/0004_speaker_email.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.3 on 2016-09-26 20:41 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('speakers', '0003_auto_20160926_2240'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AddField( 16 | model_name='speaker', 17 | name='email', 18 | field=models.EmailField(default='', help_text="We'll keep it secret, for internal use only.", max_length=254), 19 | preserve_default=False, 20 | ), 21 | ] 22 | -------------------------------------------------------------------------------- /pyconcz_2016/speakers/migrations/0005_auto_20160926_2242.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.3 on 2016-09-26 20:42 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('speakers', '0004_speaker_email'), 12 | ] 13 | 14 | operations = [ 15 | migrations.RemoveField( 16 | model_name='speaker', 17 | name='biography', 18 | ), 19 | migrations.AddField( 20 | model_name='speaker', 21 | name='bio', 22 | field=models.TextField(default='', help_text='Tell us a bit about yourself! Who you are, where are you from, what are your experiences with Python. Be wild, be creative!'), 23 | preserve_default=False, 24 | ), 25 | ] 26 | -------------------------------------------------------------------------------- /pyconcz_2016/speakers/migrations/0006_auto_20160927_1007.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.3 on 2016-09-27 08:07 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('speakers', '0005_auto_20160926_2242'), 12 | ] 13 | 14 | operations = [ 15 | migrations.RemoveField( 16 | model_name='speaker', 17 | name='talk', 18 | ), 19 | migrations.AddField( 20 | model_name='speaker', 21 | name='talks', 22 | field=models.ManyToManyField(to='speakers.Talk'), 23 | ), 24 | ] 25 | -------------------------------------------------------------------------------- /pyconcz_2016/speakers/migrations/0007_auto_20161005_1335.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.3 on 2016-10-05 11:35 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('speakers', '0006_auto_20160927_1007'), 12 | ] 13 | 14 | operations = [ 15 | migrations.CreateModel( 16 | name='Workshop', 17 | fields=[ 18 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 19 | ('type', models.CharField(choices=[('workshop', 'Workshop'), ('sprint', 'Sprint')], default='sprint', help_text="At a workshop, you should present hands-on excercises for participants to learn from. You'll get a room and a slot in the agenda, and participants will need to register.\n At a sprint, participants help an open-source project -- usually by cloning the repo and trying to fix beginner-level issues, while you'll provide one-to-one mentorship. If several experienced developers are around, sprints are also a good place for serious design discussions. Sprinters only need a table to sit around, reliable wifi, and dedication to do great things!", max_length=10)), 20 | ('title', models.CharField(help_text='Public title. What topic/project is it all about?', max_length=200, verbose_name='Workshop/sprint title')), 21 | ('abstract', models.TextField(help_text='Full description of your workshop or sprint. Please also describe requirements: libraries and Python version to be installed, required experience with topics/libraries, etc.')), 22 | ('language', models.CharField(choices=[('en', 'English (preferred)'), ('cs', 'Czech/Slovak')], default='en', max_length=2)), 23 | ('difficulty', models.CharField(choices=[('beginner', 'Beginner'), ('advanced', 'Advanced')], default='beginner', help_text='Does you audience require high level of specialized knowledge (of Python, a library, etc.), or is it suitable for everyone?', max_length=10)), 24 | ('length', models.CharField(blank=True, choices=[('1h', '1 hour'), ('2h', '2 hours'), ('2h', '3 hours'), ('1d', 'Full day (most sprints go here!)'), ('xx', 'Something else! (Please leave a note in the abstract!)')], help_text='How much time does your workshop take? Sprints usually take the whole day, but workshops are organized in smaller blocks. You can also have a full-day workshop with lunch break, but keep in mind that the length could discourage attendees!', max_length=2)), 25 | ], 26 | ), 27 | migrations.AddField( 28 | model_name='speaker', 29 | name='workshops', 30 | field=models.ManyToManyField(to='speakers.Workshop'), 31 | ), 32 | ] 33 | -------------------------------------------------------------------------------- /pyconcz_2016/speakers/migrations/0007_slot.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.3 on 2016-10-02 17:04 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | import django.db.models.deletion 7 | 8 | 9 | class Migration(migrations.Migration): 10 | 11 | dependencies = [ 12 | ('speakers', '0006_auto_20160927_1007'), 13 | ] 14 | 15 | operations = [ 16 | migrations.CreateModel( 17 | name='Slot', 18 | fields=[ 19 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 20 | ('date', models.DateTimeField()), 21 | ('description', models.CharField(blank=True, default='', max_length=100)), 22 | ('room', models.CharField(max_length=5)), 23 | ('talk', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='speakers.Talk')), 24 | ], 25 | ), 26 | ] 27 | -------------------------------------------------------------------------------- /pyconcz_2016/speakers/migrations/0008_auto_20161006_0929.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.3 on 2016-10-06 07:29 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('speakers', '0007_auto_20161005_1335'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AlterField( 16 | model_name='speaker', 17 | name='talks', 18 | field=models.ManyToManyField(blank=True, to='speakers.Talk'), 19 | ), 20 | migrations.AlterField( 21 | model_name='speaker', 22 | name='workshops', 23 | field=models.ManyToManyField(blank=True, to='speakers.Workshop'), 24 | ), 25 | ] 26 | -------------------------------------------------------------------------------- /pyconcz_2016/speakers/migrations/0009_merge.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.3 on 2016-10-10 07:44 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('speakers', '0008_auto_20161006_0929'), 12 | ('speakers', '0007_slot'), 13 | ] 14 | 15 | operations = [ 16 | ] 17 | -------------------------------------------------------------------------------- /pyconcz_2016/speakers/migrations/0011_auto_20161011_1110.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.10.2 on 2016-10-11 09:10 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | import django.db.models.deletion 7 | 8 | 9 | class Migration(migrations.Migration): 10 | 11 | dependencies = [ 12 | ('contenttypes', '0002_remove_content_type_name'), 13 | ('speakers', '0010_auto_20161010_0944'), 14 | ] 15 | 16 | operations = [ 17 | migrations.AddField( 18 | model_name='slot', 19 | name='content_type', 20 | field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType'), 21 | ), 22 | migrations.AddField( 23 | model_name='slot', 24 | name='object_id', 25 | field=models.PositiveIntegerField(blank=True, null=True), 26 | ), 27 | migrations.AlterField( 28 | model_name='slot', 29 | name='room', 30 | field=models.CharField(choices=[('foyer', 'Foyer'), ('d105', 'D105'), ('d0206', 'D0206'), ('d0207', 'D0207'), ('a112', 'A112'), ('a113', 'A113')], max_length=5), 31 | ), 32 | ] 33 | -------------------------------------------------------------------------------- /pyconcz_2016/speakers/migrations/0012_auto_20161011_1110.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.10.2 on 2016-10-11 09:10 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations 6 | from django.db.models import F 7 | 8 | 9 | def migrate_talks(apps, schema_editor): 10 | ContentType = apps.get_model("contenttypes", "ContentType") 11 | Slot = apps.get_model("speakers", "Slot") 12 | 13 | # `get_or_create` because of http://stackoverflow.com/q/31539690/325365 14 | TalkType, created = ContentType.objects.get_or_create(app_label="speakers", model="talk") 15 | 16 | Slot.objects.exclude(talk=None).update( 17 | object_id=F('talk_id'), 18 | content_type=TalkType 19 | ) 20 | 21 | 22 | class Migration(migrations.Migration): 23 | dependencies = [ 24 | ('contenttypes', '0002_remove_content_type_name'), 25 | ('speakers', '0011_auto_20161011_1110'), 26 | ] 27 | 28 | operations = [ 29 | migrations.RunPython(migrate_talks) 30 | ] 31 | -------------------------------------------------------------------------------- /pyconcz_2016/speakers/migrations/0013_remove_slot_talk.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.10.2 on 2016-10-11 09:32 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('speakers', '0012_auto_20161011_1110'), 12 | ] 13 | 14 | operations = [ 15 | migrations.RemoveField( 16 | model_name='slot', 17 | name='talk', 18 | ), 19 | ] 20 | -------------------------------------------------------------------------------- /pyconcz_2016/speakers/migrations/0014_auto_20161011_2055.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.10.2 on 2016-10-11 18:55 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('speakers', '0013_remove_slot_talk'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AlterField( 16 | model_name='speaker', 17 | name='talks', 18 | field=models.ManyToManyField(blank=True, related_name='talks', to='speakers.Talk'), 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /pyconcz_2016/speakers/migrations/0015_speaker_keynote.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.10.2 on 2016-10-15 15:11 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('speakers', '0014_auto_20161011_2055'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AddField( 16 | model_name='speaker', 17 | name='keynote', 18 | field=models.BooleanField(default=False), 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /pyconcz_2016/speakers/migrations/0016_auto_20161028_1039.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.10.2 on 2016-10-28 08:39 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('speakers', '0015_speaker_keynote'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AlterField( 16 | model_name='slot', 17 | name='room', 18 | field=models.CharField(choices=[('foyer', 'Foyer'), ('d105', 'Main (D105)'), ('d0206', 'Left (D0207)'), ('d0207', 'Right (D0206)'), ('a112', 'A112'), ('a113', 'A113')], max_length=5), 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /pyconcz_2016/speakers/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/speakers/migrations/__init__.py -------------------------------------------------------------------------------- /pyconcz_2016/speakers/templatetags/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/speakers/templatetags/__init__.py -------------------------------------------------------------------------------- /pyconcz_2016/speakers/templatetags/slot_tags.py: -------------------------------------------------------------------------------- 1 | import datetime 2 | from django import template 3 | 4 | register = template.Library() 5 | 6 | 7 | @register.filter 8 | def day_type(value): 9 | date = value.date() 10 | if date == datetime.date(year=2016, month=10, day=30): 11 | return 'workshops' 12 | elif date in [datetime.date(year=2016, month=10, day=28 + i) for i in range(2)]: 13 | return 'talks' 14 | -------------------------------------------------------------------------------- /pyconcz_2016/speakers/urls.py: -------------------------------------------------------------------------------- 1 | from django.conf.urls import url 2 | from django.views.generic import RedirectView 3 | 4 | from pyconcz_2016.speakers.views import speakers_list, schedule 5 | 6 | urlpatterns = [ 7 | url('^$', RedirectView.as_view(pattern_name='speakers_list'), {'type': 'talks'}), 8 | url('^(?P(talks|workshops))/$', speakers_list, name="speakers_list"), 9 | url('^schedule/$', schedule, name="speakers_schedule"), 10 | ] 11 | -------------------------------------------------------------------------------- /pyconcz_2016/speakers/views.py: -------------------------------------------------------------------------------- 1 | import datetime 2 | from itertools import chain 3 | 4 | from django.db.models import Case 5 | from django.db.models import IntegerField 6 | from django.db.models import Q 7 | from django.db.models import Value 8 | from django.db.models import When 9 | from django.template import RequestContext 10 | from django.template.response import TemplateResponse 11 | 12 | from pyconcz_2016.speakers.models import Speaker, Slot, EndTime 13 | 14 | 15 | def speakers_list(request, type): 16 | speakers = (Speaker.objects.all() 17 | .exclude(**{type: None}) 18 | .prefetch_related(type) 19 | .order_by('full_name')) 20 | 21 | return TemplateResponse( 22 | request, 23 | template='speakers/{}_list.html'.format(type), 24 | context={'speakers': speakers} 25 | ) 26 | 27 | 28 | def _prefetch_generic(ct): 29 | if ct == 'talk': 30 | lookup = {'date__lt': datetime.datetime(year=2016, month=10, day=30)} 31 | else: 32 | lookup = {'date__gte': datetime.datetime(year=2016, month=10, day=30)} 33 | 34 | return ( 35 | Slot.objects.all() 36 | .filter( 37 | Q( 38 | content_type__app_label='speakers', 39 | content_type__model=ct, 40 | ) | ~Q(description=None), 41 | **lookup 42 | ) 43 | .prefetch_related( 44 | 'content_object', 45 | 'content_object__{}s'.format(ct) 46 | ) 47 | .annotate( 48 | order=Case( 49 | When(room='d105', then=Value(1)), 50 | When(room='d0206', then=Value(2)), 51 | When(room='d0207', then=Value(3)), 52 | When(room='a112', then=Value(4)), 53 | When(room='a113', then=Value(5)), 54 | default=Value(0), 55 | output_field=IntegerField() 56 | ), 57 | date_end=EndTime() 58 | ) 59 | .order_by('date', 'order') 60 | ) 61 | 62 | def schedule(request): 63 | slots = chain( 64 | _prefetch_generic('talk'), 65 | _prefetch_generic('workshop') 66 | ) 67 | 68 | return TemplateResponse( 69 | request, 70 | template='speakers/slot_schedule.html', 71 | context={ 72 | 'slots': slots 73 | } 74 | ) 75 | -------------------------------------------------------------------------------- /pyconcz_2016/sponsors/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/sponsors/__init__.py -------------------------------------------------------------------------------- /pyconcz_2016/sponsors/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | from django.utils.html import format_html 3 | 4 | from pyconcz_2016.sponsors.models import Sponsor 5 | 6 | 7 | class SponsorAdmin(admin.ModelAdmin): 8 | list_display = ['name', 'level', 'get_link', 'published'] 9 | list_display_links = ['name'] 10 | 11 | def get_link(self, instance): 12 | return format_html("{url}", url=instance.link_url) 13 | 14 | 15 | admin.site.register(Sponsor, SponsorAdmin) 16 | -------------------------------------------------------------------------------- /pyconcz_2016/sponsors/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class SponsorsConfig(AppConfig): 5 | name = 'pyconcz_2016.sponsors' 6 | -------------------------------------------------------------------------------- /pyconcz_2016/sponsors/migrations/0001_initial.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.3 on 2016-09-05 14:25 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | initial = True 11 | 12 | dependencies = [ 13 | ] 14 | 15 | operations = [ 16 | migrations.CreateModel( 17 | name='Sponsor', 18 | fields=[ 19 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 20 | ('level', models.CharField(choices=[('platinum', 'Platinum'), ('gold', 'Gold'), ('silver', 'Silver'), ('bronze', 'Bronze')], default='bronze', max_length=20)), 21 | ('name', models.CharField(max_length=200)), 22 | ('logo', models.FileField(upload_to='sponsors/pyconcz_2016/')), 23 | ('description', models.TextField()), 24 | ('link_url', models.URLField()), 25 | ], 26 | options={ 27 | 'ordering': ['level', 'name'], 28 | }, 29 | ), 30 | ] 31 | -------------------------------------------------------------------------------- /pyconcz_2016/sponsors/migrations/0002_sponsor_published.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.3 on 2016-09-05 14:35 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('sponsors', '0001_initial'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AddField( 16 | model_name='sponsor', 17 | name='published', 18 | field=models.BooleanField(default=False), 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /pyconcz_2016/sponsors/migrations/0003_auto_20160908_1412.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.3 on 2016-09-08 12:12 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('sponsors', '0002_sponsor_published'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AlterField( 16 | model_name='sponsor', 17 | name='level', 18 | field=models.CharField(choices=[('platinum', 'Platinum'), ('gold', 'Gold'), ('silver', 'Silver'), ('bronze', 'Bronze'), ('diversity', 'Diversity'), ('media', 'Media')], default='bronze', max_length=20), 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /pyconcz_2016/sponsors/migrations/0004_auto_20160929_1206.py: -------------------------------------------------------------------------------- 1 | from django.db import migrations 2 | 3 | name_map = ( 4 | ('platinum', '1'), 5 | ('gold', '2'), 6 | ('silver', '3'), 7 | ('bronze', '4'), 8 | ('diversity', '5'), 9 | ('media', '6'), 10 | ) 11 | 12 | 13 | def rename_choices(apps, schema_editor): 14 | Sponsor = apps.get_model("sponsors", "Sponsor") 15 | 16 | for before, after in name_map: 17 | Sponsor.objects.filter(level=before).update(level=after) 18 | 19 | 20 | class Migration(migrations.Migration): 21 | 22 | dependencies = [ 23 | ('sponsors', '0003_auto_20160908_1412'), 24 | ] 25 | 26 | operations = [ 27 | migrations.RunPython(rename_choices) 28 | ] 29 | -------------------------------------------------------------------------------- /pyconcz_2016/sponsors/migrations/0005_auto_20160929_1210.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.3 on 2016-09-29 10:10 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('sponsors', '0004_auto_20160929_1206'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AlterField( 16 | model_name='sponsor', 17 | name='level', 18 | field=models.CharField(choices=[(1, 'Platinum'), (2, 'Gold'), (3, 'Silver'), (4, 'Bronze'), (5, 'Diversity'), (6, 'Media')], default=3, max_length=20), 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /pyconcz_2016/sponsors/migrations/0006_auto_20160929_1218.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.3 on 2016-09-29 10:18 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('sponsors', '0005_auto_20160929_1210'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AlterField( 16 | model_name='sponsor', 17 | name='level', 18 | field=models.PositiveSmallIntegerField(choices=[(1, 'Platinum'), (2, 'Gold'), (3, 'Silver'), (4, 'Bronze'), (5, 'Diversity'), (6, 'Media')], default=3), 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /pyconcz_2016/sponsors/migrations/0007_auto_20161019_1700.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.10.2 on 2016-10-19 15:00 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('sponsors', '0006_auto_20160929_1218'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AlterField( 16 | model_name='sponsor', 17 | name='level', 18 | field=models.PositiveSmallIntegerField(choices=[(1, 'Platinum'), (2, 'Gold'), (3, 'Silver'), (4, 'Bronze'), (5, 'Diversity'), (6, 'Media'), (7, 'Coffee')], default=3), 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /pyconcz_2016/sponsors/migrations/0008_auto_20161019_1705.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.10.2 on 2016-10-19 15:05 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('sponsors', '0007_auto_20161019_1700'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AlterField( 16 | model_name='sponsor', 17 | name='level', 18 | field=models.PositiveSmallIntegerField(choices=[(1, 'Platinum'), (2, 'Gold'), (3, 'Silver'), (4, 'Bronze'), (5, 'Diversity'), (6, 'Media'), (7, 'Partners')], default=3), 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /pyconcz_2016/sponsors/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/sponsors/migrations/__init__.py -------------------------------------------------------------------------------- /pyconcz_2016/sponsors/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | 4 | class Sponsor(models.Model): 5 | LEVEL = ( 6 | (1, 'Platinum'), 7 | (2, 'Gold'), 8 | (3, 'Silver'), 9 | (4, 'Bronze'), 10 | (5, 'Diversity'), 11 | (6, 'Media'), 12 | (7, 'Partners'), 13 | ) 14 | 15 | level = models.PositiveSmallIntegerField(choices=LEVEL, default=3) 16 | 17 | name = models.CharField(max_length=200) 18 | logo = models.FileField(upload_to='sponsors/pyconcz_2016/') 19 | 20 | description = models.TextField() 21 | link_url = models.URLField() 22 | 23 | published = models.BooleanField(default=False) 24 | 25 | class Meta: 26 | ordering = ["level", "name"] 27 | 28 | def __str__(self): 29 | return self.name 30 | -------------------------------------------------------------------------------- /pyconcz_2016/sponsors/templatetags/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/sponsors/templatetags/__init__.py -------------------------------------------------------------------------------- /pyconcz_2016/sponsors/templatetags/sponsors_tags.py: -------------------------------------------------------------------------------- 1 | from django import template 2 | 3 | from pyconcz_2016.sponsors.models import Sponsor 4 | 5 | register = template.Library() 6 | 7 | 8 | @register.inclusion_tag('sponsors/sponsors_inline.html') 9 | def sponsors(): 10 | items = Sponsor.objects.all().filter(published=True) 11 | return {'sponsors': items} 12 | -------------------------------------------------------------------------------- /pyconcz_2016/sponsors/urls.py: -------------------------------------------------------------------------------- 1 | from django.conf.urls import url 2 | from django.views.generic import TemplateView 3 | 4 | from pyconcz_2016.sponsors.views import sponsors_list 5 | 6 | 7 | urlpatterns = [ 8 | url('^$', sponsors_list, name='sponsors_list'), 9 | 10 | url(r'^offer/$', 11 | TemplateView.as_view(template_name='pages/sponsors_offer.html'), 12 | name='sponsors_offer'), 13 | ] 14 | -------------------------------------------------------------------------------- /pyconcz_2016/sponsors/views.py: -------------------------------------------------------------------------------- 1 | from django.template.response import TemplateResponse 2 | 3 | from pyconcz_2016.sponsors.models import Sponsor 4 | 5 | 6 | def sponsors_list(request): 7 | items = Sponsor.objects.all().filter(published=True) 8 | return TemplateResponse(request, 'sponsors/sponsors_list.html', 9 | {'sponsors_list': items}) 10 | -------------------------------------------------------------------------------- /pyconcz_2016/static/img/brno_14834083423_2bc176e489_k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/static/img/brno_14834083423_2bc176e489_k.jpg -------------------------------------------------------------------------------- /pyconcz_2016/static/img/brno_15778378112_a79544ff4d_k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/static/img/brno_15778378112_a79544ff4d_k.jpg -------------------------------------------------------------------------------- /pyconcz_2016/static/img/brno_25821436212_da9fbe39a7_k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/static/img/brno_25821436212_da9fbe39a7_k.jpg -------------------------------------------------------------------------------- /pyconcz_2016/static/img/brno_25821782382_ea9bae695a_k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/static/img/brno_25821782382_ea9bae695a_k.jpg -------------------------------------------------------------------------------- /pyconcz_2016/static/img/brno_3049514881_73229e4fc5_b.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/static/img/brno_3049514881_73229e4fc5_b.jpg -------------------------------------------------------------------------------- /pyconcz_2016/static/img/brno_6009296353_6c35a6a3ae_b.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/static/img/brno_6009296353_6c35a6a3ae_b.jpg -------------------------------------------------------------------------------- /pyconcz_2016/static/img/brno_9596330111_db788bcdc0_k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/static/img/brno_9596330111_db788bcdc0_k.jpg -------------------------------------------------------------------------------- /pyconcz_2016/static/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/static/img/favicon.ico -------------------------------------------------------------------------------- /pyconcz_2016/static/img/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/static/img/icon.png -------------------------------------------------------------------------------- /pyconcz_2016/static/img/pyconlogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/static/img/pyconlogo.png -------------------------------------------------------------------------------- /pyconcz_2016/static/img/use_it_brno.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/static/img/use_it_brno.png -------------------------------------------------------------------------------- /pyconcz_2016/static/index.js: -------------------------------------------------------------------------------- 1 | require('./scss/pyconcz.scss'); 2 | -------------------------------------------------------------------------------- /pyconcz_2016/static/scss/_base.scss: -------------------------------------------------------------------------------- 1 | html, 2 | body { 3 | margin: 0; 4 | padding: 0; 5 | } 6 | 7 | html { 8 | @include vr-init; 9 | box-sizing: border-box; 10 | } 11 | 12 | *, 13 | *::before, 14 | *::after { 15 | box-sizing: inherit; 16 | } 17 | 18 | body { 19 | // only for development 20 | //@include vr-grid; 21 | } 22 | -------------------------------------------------------------------------------- /pyconcz_2016/static/scss/_footer.scss: -------------------------------------------------------------------------------- 1 | footer { 2 | background: url(/2016/static/img/grid.svg); 3 | background-repeat: repeat-x; 4 | background-size: 882px; 5 | padding: 50px 15px 20px 15px; 6 | 7 | @media (max-width: 768px) { 8 | text-align: center; 9 | } 10 | 11 | .nav-footer { 12 | @include clearfix; 13 | 14 | list-style: none; 15 | padding-left: 15px; 16 | line-height: 24px; 17 | 18 | li { 19 | list-style: none; 20 | 21 | ul { 22 | padding-left: 10px; 23 | } 24 | } 25 | } 26 | 27 | .nav-section { 28 | width: 30%; 29 | float: left; 30 | } 31 | } 32 | 33 | .social-links { 34 | padding: 10px; 35 | 36 | ul { 37 | list-style: none; 38 | padding: 0; 39 | 40 | li { 41 | display: inline-block; 42 | transition: transform 0.3s, padding-top 0.3s; 43 | transform-origin: middle center; 44 | 45 | a { 46 | display: block; 47 | font-size: 22px; 48 | padding: 5px; 49 | height: 25px; 50 | } 51 | 52 | a:active { 53 | color: darken($main-color, 5%); 54 | transition: unset; 55 | transform: scale(0.8); 56 | } 57 | 58 | &:hover { 59 | transform: scale(1.15); 60 | padding-top: 0; 61 | } 62 | } 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /pyconcz_2016/static/scss/_mixins.scss: -------------------------------------------------------------------------------- 1 | @mixin clearfix { 2 | &::after { 3 | visibility: hidden; 4 | display: block; 5 | content: " "; 6 | clear: both; 7 | height: 0; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /pyconcz_2016/static/scss/_sponsors.scss: -------------------------------------------------------------------------------- 1 | .sponsor { 2 | @include clearfix; 3 | } 4 | 5 | .sponsor__level { 6 | border-bottom: 1px solid $main-color; 7 | 8 | @media (min-width: $mobile-break) { 9 | border-bottom: none; 10 | } 11 | } 12 | 13 | .sponsor__text, 14 | .sponsor__level, 15 | .sponsor__title, 16 | .sponsor__link, 17 | .sponsor__description { 18 | text-align: left; 19 | 20 | @media (min-width: $mobile-break) { 21 | margin-left: 23%; 22 | } 23 | } 24 | 25 | .sponsor__title { 26 | margin-top: 1em; 27 | margin-bottom: 10px; 28 | 29 | @media (min-width: $mobile-break) { 30 | margin-top: 2em; 31 | } 32 | } 33 | 34 | .sponsor__logo { 35 | width: 40%; 36 | height: auto; 37 | margin-top: 2em; 38 | 39 | @media (min-width: $mobile-break) { 40 | float: left; 41 | width: 20%; 42 | margin-top: 0; 43 | } 44 | } 45 | 46 | .sponsor__link { 47 | display: block; 48 | font-size: 0.8em; 49 | } 50 | 51 | 52 | .sponsors, 53 | .sponsors__item { 54 | list-style: none; 55 | } 56 | 57 | .sponsors__level { 58 | display: block; 59 | font-weight: bold; 60 | text-align: center; 61 | } 62 | 63 | .sponsors__level-group { 64 | text-align: center; 65 | margin-bottom: vr(2); 66 | } 67 | 68 | .sponsors__item { 69 | display: inline-block; 70 | 71 | img { 72 | width: 80%; 73 | height: auto; 74 | } 75 | 76 | .sponsors--platinum & { 77 | width: 50%; 78 | } 79 | 80 | .sponsors--gold & { 81 | width: 40%; 82 | } 83 | 84 | .sponsors--silver & { 85 | width: 30%; 86 | } 87 | 88 | .sponsors--bronze &, 89 | .sponsors--media &, 90 | .sponsors--partners &, 91 | .sponsors--diversity & { 92 | width: 25%; 93 | } 94 | 95 | @media (max-width: 480px) { 96 | img {width: 100%;} 97 | .sponsors--platinum & {width: 60%;} 98 | .sponsors--gold & {width: 50%;} 99 | .sponsors--silver & {width: 40%;} 100 | 101 | .sponsors--bronze &, 102 | .sponsors--media &, 103 | .sponsors--partners &, 104 | .sponsors--diversity & {width: 35%;} 105 | } 106 | } 107 | -------------------------------------------------------------------------------- /pyconcz_2016/static/scss/_team.scss: -------------------------------------------------------------------------------- 1 | .team__claim { 2 | font-size: 1.5em; 3 | 4 | @media (min-width: $mobile-break) { 5 | text-align: center; 6 | } 7 | } 8 | 9 | .team__main_contact { 10 | padding-top: 2em; 11 | margin-top: 2em; 12 | margin-bottom: 2em; 13 | border-top: 1px solid $main-color; 14 | font-size: 1.5em; 15 | 16 | @media (min-width: $mobile-break) { 17 | text-align: center; 18 | } 19 | } 20 | 21 | .team__list { 22 | @include clearfix; 23 | } 24 | 25 | .team__person { 26 | width: 100%; 27 | float: left; 28 | margin-bottom: 2em; 29 | 30 | @media (min-width: $mobile-break) { 31 | width: 49%; 32 | } 33 | 34 | @media (min-width: 991px) { 35 | width: 32%; 36 | } 37 | 38 | &__name { 39 | margin-top: 0; 40 | margin-bottom: vr(.2); 41 | } 42 | 43 | &__photo { 44 | float: left; 45 | height: 80px; 46 | width: 80px; 47 | border-radius: 50%; 48 | vertical-align: bottom; 49 | 50 | @media (max-width: 670px) { 51 | display: block; 52 | } 53 | } 54 | 55 | &__social_links { 56 | list-style: none; 57 | } 58 | 59 | &__name, 60 | &__social_links { 61 | padding-left: 100px; 62 | text-align: left; 63 | } 64 | } 65 | 66 | 67 | 68 | -------------------------------------------------------------------------------- /pyconcz_2016/static/scss/_variables.scss: -------------------------------------------------------------------------------- 1 | $vr-font-size: 16px; 2 | $vr-line-height: 1.5; 3 | 4 | $font-small: 12px; 5 | $font-normal: $vr-font-size; 6 | $font-big: 20px; 7 | 8 | $main-font: "Roboto", sans-serif; 9 | $secondary-font: "Roboto Mono", monospace; 10 | 11 | $container-lg: 1170px; 12 | $container-md: 970px; 13 | $container-sm: 750px; 14 | $container-xs: auto; 15 | 16 | $mobile-break: 768px; 17 | 18 | $main-color: #4E4FA5; 19 | $accent-color: #D83153; 20 | $font-color: #333333; 21 | $light-color: #e0e1fd; 22 | $muted-color: #bbbbbb; 23 | 24 | $top-offset: 7em; 25 | -------------------------------------------------------------------------------- /pyconcz_2016/static/scss/pyconcz.scss: -------------------------------------------------------------------------------- 1 | @import "variables"; 2 | @import "mixins"; 3 | 4 | @import "~normalize.css"; 5 | @import "~voidcss-vertical-rhythm"; 6 | 7 | @import "base"; 8 | @import "layout"; 9 | @import "header"; 10 | @import "homepage"; 11 | @import "forms"; 12 | @import "footer"; 13 | @import "sponsors"; 14 | @import "team"; 15 | 16 | @import "speakers/schedule"; 17 | @import "speakers/speakers"; 18 | -------------------------------------------------------------------------------- /pyconcz_2016/static/scss/speakers/_schedule.scss: -------------------------------------------------------------------------------- 1 | %tm-reset-align { 2 | text-align: left; 3 | } 4 | 5 | @mixin tm-cell-padding { 6 | padding: 5px 10px; 7 | } 8 | 9 | .timeline { 10 | &__day { 11 | @extend %tm-reset-align; 12 | } 13 | 14 | &__time { 15 | @extend %tm-reset-align; 16 | display: block; 17 | margin-top: vr(0.8); 18 | margin-bottom: vr(0.2); 19 | border-bottom: 1px solid $main-color; 20 | 21 | font-size: 1em; 22 | } 23 | 24 | &__tracks { 25 | list-style: none; 26 | } 27 | 28 | &__header { 29 | display: none; 30 | } 31 | 32 | @media (min-width: $mobile-break) { 33 | &__time { 34 | @include tm-cell-padding; 35 | 36 | display: block; 37 | float: left; 38 | width: 10%; 39 | margin-top: 0; 40 | margin-bottom: 0; 41 | 42 | border: none; 43 | line-height: 1.5; 44 | } 45 | 46 | &__shared { 47 | @include tm-cell-padding; 48 | 49 | display: block; 50 | width: 90%; 51 | float: left; 52 | margin-top: 0; 53 | } 54 | 55 | &__slot { 56 | @include clearfix; 57 | } 58 | 59 | &__slot--shared { 60 | background-color: #eee; 61 | } 62 | 63 | &__header { 64 | @include clearfix; 65 | display: block; 66 | border-bottom: 1px solid $main-color; 67 | } 68 | } 69 | } 70 | 71 | .timeline__talk { 72 | margin-bottom: vr(1); 73 | 74 | .timeline__header & { 75 | margin-bottom: 0; 76 | } 77 | 78 | &__title { 79 | display: block; 80 | font-weight: bold; 81 | } 82 | 83 | &__room { 84 | display: block; 85 | font-size: 0.9em; 86 | color: $muted-color; 87 | 88 | } 89 | 90 | @media (min-width: $mobile-break) { 91 | @include tm-cell-padding; 92 | width: 30%; 93 | float: left; 94 | 95 | &__room { 96 | display: none; 97 | } 98 | 99 | &--keynote { 100 | display: block; 101 | width: 90%; 102 | } 103 | } 104 | } 105 | 106 | 107 | .timeline__workshop { 108 | margin-bottom: vr(1); 109 | 110 | .timeline__header & { 111 | margin-bottom: 0; 112 | } 113 | 114 | &__title { 115 | display: block; 116 | font-weight: bold; 117 | } 118 | 119 | &__room { 120 | display: block; 121 | font-size: 0.9em; 122 | color: $muted-color; 123 | 124 | } 125 | 126 | @media (min-width: $mobile-break) { 127 | @include tm-cell-padding; 128 | width: 45%; 129 | float: left; 130 | 131 | &__room { 132 | display: none; 133 | } 134 | } 135 | } 136 | -------------------------------------------------------------------------------- /pyconcz_2016/static/scss/speakers/_speakers.scss: -------------------------------------------------------------------------------- 1 | .speaker { 2 | @include clearfix; 3 | 4 | max-width: 720px; 5 | min-height: 200px; 6 | margin: 1em auto; 7 | 8 | p { 9 | margin-top: 0; 10 | } 11 | 12 | &__name { 13 | margin-top: 1em; 14 | margin-bottom: 1em; 15 | text-align: left; 16 | } 17 | 18 | .details { 19 | .talk-title { 20 | font-size: 1.2em; 21 | font-weight: normal; 22 | } 23 | 24 | .bio { 25 | font-style: italic; 26 | } 27 | 28 | @media (min-width: $mobile-break) { 29 | float: right; 30 | width: 75%; 31 | padding-right: 2em; 32 | } 33 | } 34 | 35 | .sidebox { 36 | margin-bottom: 1em; 37 | 38 | .portrait { 39 | width: 120px; 40 | padding: 0; 41 | margin-bottom: 1em; 42 | overflow: hidden; 43 | border: 1px solid $light-color; 44 | 45 | img { 46 | display: block; 47 | width: 100%; 48 | height: auto; 49 | padding: 0; 50 | } 51 | } 52 | 53 | .icons a { 54 | text-wrap: none; 55 | display: block; 56 | } 57 | 58 | @media (min-width: $mobile-break) { 59 | float: right; 60 | width: 25%; 61 | } 62 | } 63 | } 64 | 65 | .speaker__name__link { 66 | color: $font-color; 67 | } 68 | 69 | .speaker-dir__index { 70 | list-style: none; 71 | text-align: center; 72 | 73 | &__item { 74 | display: inline; 75 | 76 | & + &::before { 77 | content: " • "; 78 | padding: 0 5px; 79 | } 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /pyconcz_2016/static_build/img/brno_14710167758_2c03da0e5b_k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/static_build/img/brno_14710167758_2c03da0e5b_k.jpg -------------------------------------------------------------------------------- /pyconcz_2016/static_build/img/brno_14834083423_2bc176e489_k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/static_build/img/brno_14834083423_2bc176e489_k.jpg -------------------------------------------------------------------------------- /pyconcz_2016/static_build/img/brno_15778378112_a79544ff4d_k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/static_build/img/brno_15778378112_a79544ff4d_k.jpg -------------------------------------------------------------------------------- /pyconcz_2016/static_build/img/brno_25821436212_da9fbe39a7_k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/static_build/img/brno_25821436212_da9fbe39a7_k.jpg -------------------------------------------------------------------------------- /pyconcz_2016/static_build/img/brno_25821782382_ea9bae695a_k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/static_build/img/brno_25821782382_ea9bae695a_k.jpg -------------------------------------------------------------------------------- /pyconcz_2016/static_build/img/brno_3049514881_73229e4fc5_b.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/static_build/img/brno_3049514881_73229e4fc5_b.jpg -------------------------------------------------------------------------------- /pyconcz_2016/static_build/img/brno_6009296353_6c35a6a3ae_b.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/static_build/img/brno_6009296353_6c35a6a3ae_b.jpg -------------------------------------------------------------------------------- /pyconcz_2016/static_build/img/brno_9572984119_426018666c_k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/static_build/img/brno_9572984119_426018666c_k.jpg -------------------------------------------------------------------------------- /pyconcz_2016/static_build/img/brno_9596330111_db788bcdc0_k.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/static_build/img/brno_9596330111_db788bcdc0_k.jpg -------------------------------------------------------------------------------- /pyconcz_2016/static_build/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/static_build/img/favicon.ico -------------------------------------------------------------------------------- /pyconcz_2016/static_build/img/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/static_build/img/icon.png -------------------------------------------------------------------------------- /pyconcz_2016/static_build/img/pyconlogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/static_build/img/pyconlogo.png -------------------------------------------------------------------------------- /pyconcz_2016/static_build/img/use_it_brno.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/static_build/img/use_it_brno.png -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-01b66386d6bc18ef0ff1.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-07097abd86b86ff52a2d.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-07d2bec342fc1c2b112c.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-21fe7643969a6161278c.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-2682f411ab136e3c9cb0.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-277894458f1f7406bf76.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-2a2dd4d11b9472348825.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-34047339f8d0008714cb.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-3641ccdd5bc95a33b881.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-3fb82382006a904991e6.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-45f748e46b128b9e2f4c.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-4dde079ae5e73b54e415.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-4f09144b17e7b6eeaadd.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-511d96600675df665253.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-525e8a2a0e765263b402.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-54686c964da5bc06a469.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-61a74ec143ed69061bcb.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-6eae4eb0d619b15487b6.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-724a9d664496e9a26d5a.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-748446da6336048e2e84.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-8629fc59941050a769a6.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-87bddfdc6855a32ccfc9.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-8a6ae31bd9954a62f393.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-92af4579c303baab746a.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-97572c87e733ee0c0c4d.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-a365891b136e59d27334.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-b27ae8c1e046e8c29d87.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-b41c05d3e88c09b975fd.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-b59308c0e4c47cb355f0.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-b75a235948766a6211a4.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-c2d9c761c272ef8b7b00.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-c3aaaddeb589e4e5f8ae.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-c9de73f6980b5d45d850.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-ca8900b25c6819122caf.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-cb5a5715897e86b5bc79.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-d3385e9ebf0a6a3010c9.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-ddcca72215bbc54697c2.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-e80e12914c67331d4084.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-f6b4a3ab0593c8eb5bd1.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/js/main-f9a13e78a90c6e190f65.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // The module cache 3 | /******/ var installedModules = {}; 4 | 5 | /******/ // The require function 6 | /******/ function __webpack_require__(moduleId) { 7 | 8 | /******/ // Check if module is in cache 9 | /******/ if(installedModules[moduleId]) 10 | /******/ return installedModules[moduleId].exports; 11 | 12 | /******/ // Create a new module (and put it into the cache) 13 | /******/ var module = installedModules[moduleId] = { 14 | /******/ exports: {}, 15 | /******/ id: moduleId, 16 | /******/ loaded: false 17 | /******/ }; 18 | 19 | /******/ // Execute the module function 20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21 | 22 | /******/ // Flag the module as loaded 23 | /******/ module.loaded = true; 24 | 25 | /******/ // Return the exports of the module 26 | /******/ return module.exports; 27 | /******/ } 28 | 29 | 30 | /******/ // expose the modules object (__webpack_modules__) 31 | /******/ __webpack_require__.m = modules; 32 | 33 | /******/ // expose the module cache 34 | /******/ __webpack_require__.c = installedModules; 35 | 36 | /******/ // __webpack_public_path__ 37 | /******/ __webpack_require__.p = "/2016/static/"; 38 | 39 | /******/ // Load entry module and return exports 40 | /******/ return __webpack_require__(0); 41 | /******/ }) 42 | /************************************************************************/ 43 | /******/ ([ 44 | /* 0 */ 45 | /***/ function(module, exports, __webpack_require__) { 46 | 47 | module.exports = __webpack_require__(1); 48 | 49 | 50 | /***/ }, 51 | /* 1 */ 52 | /***/ function(module, exports, __webpack_require__) { 53 | 54 | __webpack_require__(2); 55 | 56 | 57 | /***/ }, 58 | /* 2 */ 59 | /***/ function(module, exports) { 60 | 61 | // removed by extract-text-webpack-plugin 62 | 63 | /***/ } 64 | /******/ ]); -------------------------------------------------------------------------------- /pyconcz_2016/static_build/webpack-stats.json: -------------------------------------------------------------------------------- 1 | {"status":"done","chunks":{"main":[{"name":"js/main-2682f411ab136e3c9cb0.js","publicPath":"/2016/static/js/main-2682f411ab136e3c9cb0.js","path":"/Users/tricoder/Projects/cz.pycon.org-2016/pyconcz_2016/static_build/js/main-2682f411ab136e3c9cb0.js"},{"name":"css/styles-2682f411ab136e3c9cb0.css","publicPath":"/2016/static/css/styles-2682f411ab136e3c9cb0.css","path":"/Users/tricoder/Projects/cz.pycon.org-2016/pyconcz_2016/static_build/css/styles-2682f411ab136e3c9cb0.css"}]},"publicPath":"/2016/static/"} -------------------------------------------------------------------------------- /pyconcz_2016/team/__init__.py: -------------------------------------------------------------------------------- 1 | default_app_config = 'pyconcz_2016.team.apps.TeamConfig' 2 | -------------------------------------------------------------------------------- /pyconcz_2016/team/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | from .models import Organizer 4 | 5 | admin.site.register(Organizer) 6 | -------------------------------------------------------------------------------- /pyconcz_2016/team/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class TeamConfig(AppConfig): 5 | name = "pyconcz_2016.team" 6 | verbose_name = "Organizing Team" 7 | -------------------------------------------------------------------------------- /pyconcz_2016/team/migrations/0001_initial.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.3 on 2016-08-23 05:14 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | initial = True 11 | 12 | dependencies = [ 13 | ] 14 | 15 | operations = [ 16 | migrations.CreateModel( 17 | name='Organizer', 18 | fields=[ 19 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 20 | ('full_name', models.CharField(max_length=200)), 21 | ('email', models.EmailField(max_length=254)), 22 | ('bio', models.TextField()), 23 | ('twitter', models.CharField(blank=True, max_length=255)), 24 | ('github', models.CharField(blank=True, max_length=255)), 25 | ('photo', models.ImageField(upload_to='team/pyconcz2016/')), 26 | ], 27 | ), 28 | ] 29 | -------------------------------------------------------------------------------- /pyconcz_2016/team/migrations/0002_organizer_published.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.3 on 2016-08-23 05:20 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('team', '0001_initial'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AddField( 16 | model_name='organizer', 17 | name='published', 18 | field=models.BooleanField(default=False), 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /pyconcz_2016/team/migrations/0003_auto_20160823_0743.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.3 on 2016-08-23 05:43 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('team', '0002_organizer_published'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AlterField( 16 | model_name='organizer', 17 | name='email', 18 | field=models.EmailField(blank=True, default='', help_text='This is private', max_length=254), 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /pyconcz_2016/team/migrations/0004_remove_organizer_bio.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.3 on 2016-08-23 05:44 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('team', '0003_auto_20160823_0743'), 12 | ] 13 | 14 | operations = [ 15 | migrations.RemoveField( 16 | model_name='organizer', 17 | name='bio', 18 | ), 19 | ] 20 | -------------------------------------------------------------------------------- /pyconcz_2016/team/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyvec/cz.pycon.org-2016/b4affabcf2b1cdd629a2dc67dba671b3414b3682/pyconcz_2016/team/migrations/__init__.py -------------------------------------------------------------------------------- /pyconcz_2016/team/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | 4 | class Organizer(models.Model): 5 | full_name = models.CharField(max_length=200) 6 | email = models.EmailField( 7 | default='', blank=True, 8 | help_text="This is private") 9 | twitter = models.CharField(max_length=255, blank=True) 10 | github = models.CharField(max_length=255, blank=True) 11 | photo = models.ImageField(upload_to='team/pyconcz2016/') 12 | 13 | published = models.BooleanField(default=False) 14 | 15 | def __str__(self): 16 | return self.full_name 17 | -------------------------------------------------------------------------------- /pyconcz_2016/team/urls.py: -------------------------------------------------------------------------------- 1 | from django.conf.urls import url 2 | 3 | from pyconcz_2016.team.views import team_list 4 | 5 | 6 | urlpatterns = [ 7 | url('^$', team_list, name="team_list"), 8 | ] 9 | -------------------------------------------------------------------------------- /pyconcz_2016/team/views.py: -------------------------------------------------------------------------------- 1 | from django.template import RequestContext 2 | from django.template.response import TemplateResponse 3 | 4 | from pyconcz_2016.team.models import Organizer 5 | 6 | 7 | def team_list(request): 8 | organizers = Organizer.objects.all().filter(published=True).order_by('?') 9 | 10 | return TemplateResponse( 11 | request, 12 | template='team/organizers_list.html', 13 | context={ 14 | 'organizers': organizers 15 | } 16 | ) 17 | -------------------------------------------------------------------------------- /pyconcz_2016/templates/admin/proposals/add_score.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/base_site.html" %} 2 | {% load i18n admin_urls admin_static admin_modify %} 3 | 4 | {% if not is_popup %} 5 | {% block breadcrumbs %} 6 | 12 | {% endblock %} 13 | {% endif %} 14 | 15 | {% block content %} 16 |
17 | {% for field in form %} 18 |
19 |
{{ field.label|capfirst }}
20 |
{{ field.value|linebreaksbr|default:"--" }}
21 |
22 | {% endfor %} 23 | 24 |
25 | {% csrf_token %} 26 | {{ score_form.as_p }} 27 |

28 | 29 |

30 |
31 |
32 | {% endblock %} 33 | -------------------------------------------------------------------------------- /pyconcz_2016/templates/admin/proposals/change_form.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/change_form.html" %} 2 | 3 | {% load i18n admin_urls admin_static admin_modify %} 4 | 5 | {% block object-tools-items %} 6 | {{ block.super }} 7 |
  • 8 | {% url opts|admin_urlname:'add_score' original.pk|admin_urlquote as score_url %} 9 | {% trans "Add Score" %} 10 |
  • 11 | {% endblock %} 12 | -------------------------------------------------------------------------------- /pyconcz_2016/templates/admin/proposals/change_list.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/change_list.html" %} 2 | 3 | {% load i18n admin_urls admin_static admin_list %} 4 | 5 | {% block object-tools-items %} 6 | {{ block.super }} 7 |
  • 8 | {% url opts|admin_urlname:'generate' as generate_url %} 9 | 10 | {% trans "Start scoring" %} 11 | 12 |
  • 13 | {% endblock %} 14 | -------------------------------------------------------------------------------- /pyconcz_2016/templates/announcements/archive.html: -------------------------------------------------------------------------------- 1 | {% extends "_base.html" %} 2 | 3 | {% block content %} 4 | {% for item in items %} 5 |
    6 | {{ item.date_created|date }} 7 |

    {{ item.message }}

    8 | {% if item.link %} 9 | {{ item.link }} 10 | {% endif %} 11 |
    12 | {% endfor %} 13 | 14 | {% endblock %} 15 | -------------------------------------------------------------------------------- /pyconcz_2016/templates/announcements/latest.html: -------------------------------------------------------------------------------- 1 | {% if item %} 2 |
    3 | {{ item.date_created|date }} 4 |

    {{ item.message }}

    5 | {% if item.link %} 6 | {{ item.link }} 7 | {% endif %} 8 |
    9 | {% endif %} 10 | -------------------------------------------------------------------------------- /pyconcz_2016/templates/menu.html: -------------------------------------------------------------------------------- 1 | 28 | -------------------------------------------------------------------------------- /pyconcz_2016/templates/pages/about.html: -------------------------------------------------------------------------------- 1 | {% extends "_base.html" %} 2 | 3 | {% block meta_title %}About PyCon CZ{% endblock %} 4 | 5 | {% block content %} 6 |
    7 |
    8 |

    9 | PyCon CZ aims to be the largest annual gathering for the Python community in the Czech Republic, focused on honoring and supporting awesome people teaching, learning and innovating with Python in Czech Republic and surrounding EU. PyCon CZ is organized by the Python CZ community for the Python community. We keep ticket prices low to make PyCon CZ accessible to the most diverse group possible, offering low cost Early Bird and Student discounts and Financial Aid for those who qualify. Our code of conduct is intended to help everyone maintain the open and inviting PyCon spirit. We thank all attendees and staff for observing it! 10 |

    11 | 12 |

    13 | PyCon CZ is produced and underwritten by the Pyvec (občanské sdružení, Civic Association, est. 2012). 14 |

    15 |
    16 |
    17 | {% endblock %} 18 | -------------------------------------------------------------------------------- /pyconcz_2016/templates/pages/transparency.html: -------------------------------------------------------------------------------- 1 | {% extends "_base.html" %} 2 | 3 | {% block meta_title %}Transparency Report{% endblock %} 4 | 5 | {% block content %} 6 |
    7 |
    8 |

    Transparency Report

    9 |

    10 | The organization team believes that all events should be 11 | accessible and welcoming to everyone, regardless of their 12 | background. We agree that a clear and specific Code of Conduct 13 | is a necessity for any event. 14 |

      15 |
    • 16 | The 17 | Code of Conduct was based on Conference anti-harassment 18 | policy from Geek feminism wiki and edited to be as 19 | specific to our event as possible 20 |
    • 21 | 22 |
    • 23 | Agreeing to the Code was mandatory when buying a ticket 24 |
    • 25 | 26 |
    • 27 | Two contact persons (male and female) were assigned and 28 | their phone numbers were visibly posted around the venue 29 |
    • 30 | 31 |
    • 32 | Attendees were reminded of the Code in the opening speech of 33 | each day 34 |
    • 35 |
    36 |

    37 | 38 |

    39 | What could have been done: 40 |

      41 |
    • 42 | Summary of the Code in both languages were not posted around 43 | the venue 44 |
    • 45 | 46 |
    • 47 | There was no easy way to report an incident other than to 48 | call a CoC contact person 49 |
    • 50 | 51 |
    • 52 | Czech language version of the Code was not accessible 53 | on the website 54 |
    • 55 |
    56 |

    57 | 58 |

    59 | Anonymized incidents: 60 |

      61 |
    • 62 | During one of the keynotes, inappropriate image was used in 63 | a slideshow. The speaker was reminded, that a Code of 64 | Conduct applies to keynotes as well. No further action was 65 | taken. 66 |
    • 67 | 68 |
    • 69 | During one of the lightning talks, speaker used 70 | disrespectful language towards different initiatives that 71 | aim to include underrepresented groups into IT. In his 72 | presentation he also used a slide that could be offensive to 73 | some groups. One of the attendees reacted to this by angrily 74 | leaving the venue. The speaker posted an apology in public 75 | group chat and also admitted his mistake in private 76 | discussion with one of the CoC contacts. The attendee 77 | apologized for his behaviour in email to one of the CoC 78 | contacts and in private discussion with head conference 79 | organizer. No video or slides will be published from this 80 | lightning talk. 81 |
    • 82 |
    83 |

    84 |
    85 |
    86 | {% endblock %} 87 | -------------------------------------------------------------------------------- /pyconcz_2016/templates/proposals/_base.html: -------------------------------------------------------------------------------- 1 | {% extends "_base.html" %} 2 | 3 | {% block body %} 4 |
    5 | {% block content %}{% endblock %} 6 |
    7 | {% endblock %} 8 | -------------------------------------------------------------------------------- /pyconcz_2016/templates/proposals/proposal_after.html: -------------------------------------------------------------------------------- 1 | {% extends "_base.html" %} 2 | 3 | {% block meta_title %}Call for Papers is closed{% endblock %} 4 | 5 | {% block content %} 6 |
    7 |

    Call for Papers is closed!

    8 | 9 |

    10 | We're evaluating received proposals. If you missed it by chance and still 11 | want to send us your proposal, try write us an email at 12 | info@pycon.cz. 13 |

    14 |
    15 | {% endblock %} 16 | -------------------------------------------------------------------------------- /pyconcz_2016/templates/proposals/proposal_before.html: -------------------------------------------------------------------------------- 1 | {% extends "_base.html" %} 2 | 3 | {% block meta_title %}Call for Papers opens soon{% endblock %} 4 | 5 | {% block content %} 6 |
    7 |

    Call for Papers opens soon

    8 | 9 |

    10 | Start submitting your proposals in {{ proposal_config.date_start|timeuntil }}! 11 |

    12 |
    13 | {% endblock %} 14 | -------------------------------------------------------------------------------- /pyconcz_2016/templates/proposals/proposal_form.html: -------------------------------------------------------------------------------- 1 | {% extends "_base.html" %} 2 | 3 | {% block meta_title %}Call for Papers{% endblock %} 4 | 5 | {% block content %} 6 |
    7 |
    8 |

    {{ proposal_config.cfp_title|default:"Call for Papers" }}

    9 |
    10 | {% csrf_token %} 11 | {% for hidden in form.hidden_fields %}{{ hidden }}{% endfor %} 12 | {% for field in form.visible_fields %} 13 |
    14 |
    {{ field.label_tag }}
    15 |
    {{ field }}
    16 | {% if field.errors %} 17 |
    {{ field.errors }}
    18 | {% endif %} 19 | {% if field.help_text %} 20 |
    {{ field.help_text|safe|linebreaksbr }}
    21 | {% endif %} 22 |
    23 | {% endfor %} 24 |
    25 | 26 |
    27 |
    28 | 29 |
    30 |
    31 | {% endblock %} 32 | -------------------------------------------------------------------------------- /pyconcz_2016/templates/proposals/proposal_success.html: -------------------------------------------------------------------------------- 1 | {% extends "_base.html" %} 2 | 3 | {% block meta_title %}Thank you!{% endblock %} 4 | 5 | {% block content %} 6 |
    7 |

    Proposal sent

    8 | 9 |

    10 | Thank you! We're received your proposal. If you have any 11 | questions, don't hesitate to write us at 12 | info@pycon.cz. 13 |

    14 | 15 | Send another 16 |
    17 | {% endblock %} 18 | -------------------------------------------------------------------------------- /pyconcz_2016/templates/speakers/base_list.html: -------------------------------------------------------------------------------- 1 | {% extends "_base.html" %} 2 | 3 | {% block content %} 4 |
    5 |

    {% block speakers_title %}{% endblock %}

    6 | 7 |
      8 |
    • Index by first name
    • 9 | 10 | {% for speaker in speakers %} 11 | {% with speaker.full_name.0 as index_letter %} 12 | {% ifchanged %} 13 |
    • 14 | {{ index_letter|upper }} 15 |
    • 16 | {% endifchanged %} 17 | {% endwith %} 18 | {% endfor %} 19 |
    20 | 21 | {% for speaker in speakers %} 22 | {% with speaker.full_name.0 as index_letter %} 23 |
    24 |

    25 | 28 | {{ speaker.full_name }} 29 | 30 |

    31 | 32 | 50 | 51 |
    52 |

    {{ speaker.bio|linebreaksbr }}

    53 | {% block speakers_items %}{% endblock %} 54 |
    55 |
    56 | {% endwith %} 57 | {% endfor %} 58 |
    59 | {% endblock %} 60 | -------------------------------------------------------------------------------- /pyconcz_2016/templates/speakers/talks_list.html: -------------------------------------------------------------------------------- 1 | {% extends "speakers/base_list.html" %} 2 | 3 | {% block meta_title %}PyCon CZ Speakers{% endblock %} 4 | 5 | {% block speakers_title %}Speakers{% endblock %} 6 | 7 | {% block speakers_items %} 8 | {% for talk in speaker.talks.all %} 9 | 10 | {{ talk.title }} 11 | 12 |

    {{ talk.abstract|linebreaksbr }}

    13 | {% endfor %} 14 | {% endblock %} 15 | -------------------------------------------------------------------------------- /pyconcz_2016/templates/speakers/workshops_list.html: -------------------------------------------------------------------------------- 1 | {% extends "speakers/base_list.html" %} 2 | 3 | {% block meta_title %}PyCon CZ Workshops{% endblock %} 4 | 5 | {% block speakers_title %}Workshops{% endblock %} 6 | 7 | {% block speakers_items %} 8 | {% for workshop in speaker.workshops.all %} 9 | 10 | {{ workshop.title }} 11 | 12 |

    {{ workshop.abstract|linebreaksbr }}

    13 | {% endfor %} 14 | {% endblock %} 15 | -------------------------------------------------------------------------------- /pyconcz_2016/templates/sponsors/sponsors_inline.html: -------------------------------------------------------------------------------- 1 | {% regroup sponsors by get_level_display as sponsors_list %} 2 | 3 |
      4 | {% for level in sponsors_list %} 5 |
    • 6 | {{ level.grouper }} 7 |
        8 | {% for sponsor in level.list %} 9 |
      • 10 | 11 | {{ sponsor.name }} 12 | 13 |
      • 14 | {% endfor %} 15 |
      16 |
    • 17 | {% endfor %} 18 |
    19 | -------------------------------------------------------------------------------- /pyconcz_2016/templates/sponsors/sponsors_list.html: -------------------------------------------------------------------------------- 1 | {% extends "_base.html" %} 2 | 3 | {% block content %} 4 | {% regroup sponsors_list by get_level_display as sponsor_levels %} 5 | 6 |
    7 |

    Sponsors and partners

    8 | 9 | 13 | 14 | 18 | 19 | {% for level in sponsor_levels %} 20 | 21 | 22 | {% for sponsor in level.list %} 23 | 35 | {% endfor %} 36 | {% endfor %} 37 |
    38 | {% endblock %} 39 | -------------------------------------------------------------------------------- /pyconcz_2016/templates/team/organizers_list.html: -------------------------------------------------------------------------------- 1 | {% extends "_base.html" %} 2 | 3 | {% block meta_title %}PyCon CZ Team{% endblock %} 4 | 5 | {% block content %} 6 |
    7 |

    PyCon CZ Team

    8 | 9 |

    10 | PyCon is a community event. There are more than 30 people on our Slack 11 | channel and even more volunteers helped us by sending PR on GitHub. If you 12 | drew the organization structure of the PyCon CZ team, 13 | you — the attendee would be at the top. The incredible 14 | amount of volunteers would follow. There's little or no difference between 15 | organizers and volunteers, because we all do it in our free time without 16 | any claim for wage. Below is a list of our core team members. 17 |

    18 | 19 |

    We are here for you

    20 | 21 |

    22 | Main contact info@pycon.cz 23 |

    24 | 25 |
    26 | {% for organizer in organizers %} 27 |
    28 | {{ organizer.full_name }} 29 | 30 |
    {{ organizer.full_name }}
    31 | 32 | 47 |
    48 | {% endfor %} 49 |
    50 |
    51 | {% endblock %} 52 | -------------------------------------------------------------------------------- /pyconcz_2016/urls.py: -------------------------------------------------------------------------------- 1 | from django.conf import settings 2 | from django.conf.urls import include, url 3 | from django.conf.urls.static import static 4 | from django.contrib import admin 5 | from django.views.generic import TemplateView, RedirectView 6 | 7 | from pyconcz_2016.common.views import homepage 8 | 9 | prefixed_urlpatterns = [ 10 | url(r'^$', homepage, name='homepage'), 11 | url(r'^announcements/', include('pyconcz_2016.announcements.urls')), 12 | url(r'^proposals/workshops/$', RedirectView.as_view(url='/2016/proposals/talks')), 13 | url(r'^proposals/', include('pyconcz_2016.proposals.urls')), 14 | 15 | url(r'^about/team/', include('pyconcz_2016.team.urls')), 16 | url(r'^speakers/', include('pyconcz_2016.speakers.urls')), 17 | url(r'^sponsors/', include('pyconcz_2016.sponsors.urls')), 18 | 19 | # static pages 20 | url(r'^about/$', 21 | TemplateView.as_view(template_name='pages/about.html'), 22 | name='about'), 23 | url(r'^about/code/$', 24 | TemplateView.as_view(template_name='pages/code.html'), 25 | name='about_code'), 26 | url(r'^about/transparency_report/$', 27 | TemplateView.as_view(template_name='pages/transparency.html'), 28 | name='about_transparency'), 29 | url(r'^about/brno/$', 30 | TemplateView.as_view(template_name='pages/brno.html'), 31 | name='about_brno'), 32 | ] 33 | 34 | urlpatterns = ( 35 | static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) + 36 | static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + 37 | [ 38 | url(r'^2016/', include(prefixed_urlpatterns)), 39 | url(r'^admin/', include(admin.site.urls)), 40 | url(r'^$', RedirectView.as_view(url='/2016/')), 41 | ] 42 | ) 43 | 44 | 45 | if settings.DEBUG: 46 | import debug_toolbar 47 | urlpatterns += [ 48 | url(r'^__debug__/', include(debug_toolbar.urls)), 49 | ] 50 | -------------------------------------------------------------------------------- /pyconcz_2016/wsgi.py: -------------------------------------------------------------------------------- 1 | import os 2 | from django.core.wsgi import get_wsgi_application 3 | 4 | os.environ.setdefault( 5 | "DJANGO_SETTINGS_MODULE", "pyconcz_2016.settings_dev") 6 | 7 | if os.environ.get('NEW_RELIC_ENVIRONMENT') == 'production': 8 | import newrelic.agent 9 | newrelic.agent.initialize() 10 | 11 | application = get_wsgi_application() 12 | 13 | -------------------------------------------------------------------------------- /requirements-dev.in: -------------------------------------------------------------------------------- 1 | -r requirements.in 2 | django-debug-toolbar 3 | ipython 4 | pip-tools 5 | -------------------------------------------------------------------------------- /requirements-dev.txt: -------------------------------------------------------------------------------- 1 | # 2 | # This file is autogenerated by pip-compile 3 | # To update, run: 4 | # 5 | # pip-compile --output-file requirements-dev.txt requirements-dev.in 6 | # 7 | appnope==0.1.0 # via ipython 8 | click==6.6 # via pip-tools 9 | decorator==4.0.10 # via ipython, traitlets 10 | django-debug-toolbar==1.6 11 | django-webpack-loader==0.3.3 12 | Django==1.10.2 # via django-debug-toolbar 13 | first==2.0.1 # via pip-tools 14 | ipython-genutils==0.1.0 # via traitlets 15 | ipython==5.1.0 16 | newrelic==2.70.0.51 17 | pexpect==4.2.1 # via ipython 18 | pickleshare==0.7.4 # via ipython 19 | Pillow==3.4.1 20 | pip-tools==1.7.0 21 | prompt-toolkit==1.0.7 # via ipython 22 | psycopg2==2.6.2 23 | ptyprocess==0.5.1 # via pexpect 24 | pygments==2.1.3 # via ipython 25 | pytz==2016.7 26 | simplegeneric==0.8.1 # via ipython 27 | six==1.10.0 # via pip-tools, prompt-toolkit, traitlets 28 | sqlparse==0.2.1 # via django-debug-toolbar 29 | traitlets==4.3.1 # via ipython 30 | wcwidth==0.1.7 # via prompt-toolkit 31 | 32 | # The following packages are commented out because they are 33 | # considered to be unsafe in a requirements file: 34 | # setuptools # via ipython 35 | -------------------------------------------------------------------------------- /requirements.in: -------------------------------------------------------------------------------- 1 | django-webpack-loader 2 | Django 3 | newrelic 4 | Pillow 5 | psycopg2 6 | pytz 7 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | # 2 | # This file is autogenerated by pip-compile 3 | # To update, run: 4 | # 5 | # pip-compile --output-file requirements.txt requirements.in 6 | # 7 | django-webpack-loader==0.3.3 8 | Django==1.10.2 9 | newrelic==2.70.0.51 10 | Pillow==3.4.1 11 | psycopg2==2.6.2 12 | pytz==2016.7 13 | -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | var path = require("path"); 2 | var webpack = require('webpack'); 3 | var BundleTracker = require('webpack-bundle-tracker'); 4 | var CopyWebpackPlugin = require('copy-webpack-plugin'); 5 | var ExtractTextPlugin = require("extract-text-webpack-plugin"); 6 | 7 | 8 | var debug = process.argv.indexOf('--release') === -1; 9 | var checkConfig = process.argv.indexOf('--check') !== -1; 10 | 11 | // Shared config values 12 | var context = path.resolve('pyconcz_2016', 'static'); 13 | var outputPath = path.resolve('pyconcz_2016', 'static_build'); 14 | var entry = ['./index']; 15 | var plugins = [ 16 | new CopyWebpackPlugin([ 17 | { from: 'img', to: 'img' } 18 | ]) 19 | ]; 20 | var output = { 21 | path: outputPath, 22 | filename: "js/[name]-[hash].js", 23 | publicPath: 'http://lan.pycon.cz:8001/' 24 | }; 25 | var scssLoader; 26 | 27 | // Release specific config 28 | if (!debug) { 29 | plugins.push( 30 | new ExtractTextPlugin("css/styles-[hash].css"), 31 | new BundleTracker({ 32 | filename: './pyconcz_2016/static_build/webpack-stats.json' 33 | }) 34 | ); 35 | 36 | output.publicPath = '/2016/static/'; 37 | 38 | scssLoader = { 39 | test: /\.scss$/, 40 | loader: ExtractTextPlugin.extract('style', ['css', 'sass']) 41 | } 42 | } else { 43 | entry.unshift( 44 | 'webpack-dev-server/client?http://lan.pycon.cz:8001', 45 | 'webpack/hot/only-dev-server' 46 | ); 47 | 48 | plugins.unshift( 49 | new webpack.HotModuleReplacementPlugin(), 50 | new webpack.NoErrorsPlugin(), 51 | new BundleTracker({ 52 | filename: './pyconcz_2016/static_build/webpack-stats-dev.json' 53 | }) 54 | ); 55 | 56 | scssLoader = { 57 | test: /\.scss$/, 58 | loaders: ['style', 'css', 'sass'] 59 | } 60 | } 61 | 62 | 63 | var config = { 64 | context: context, 65 | entry: entry, 66 | plugins: plugins, 67 | output: output, 68 | 69 | module: { 70 | loaders: [scssLoader] 71 | }, 72 | 73 | resolve: { 74 | modulesDirectories: ['node_modules'], 75 | extensions: ['', '.js'] 76 | } 77 | }; 78 | 79 | if (checkConfig) console.log(config); 80 | 81 | module.exports = config; 82 | -------------------------------------------------------------------------------- /webpack.js: -------------------------------------------------------------------------------- 1 | var webpack = require('webpack'); 2 | var WebpackDevServer = require('webpack-dev-server'); 3 | var config = require('./webpack.config'); 4 | 5 | 6 | new WebpackDevServer(webpack(config), { 7 | publicPath: config.output.publicPath, 8 | hot: true, 9 | stats: true, 10 | colors: true, 11 | watchOptions: { 12 | poll: 1000 13 | } 14 | }).listen(8001, '0.0.0.0', function (err) { 15 | if (err) console.log(err); 16 | console.log('Listening at 0.0.0.0:8001'); 17 | }); 18 | --------------------------------------------------------------------------------