├── .gitignore ├── .travis.yml ├── CNAME ├── Dockerfile ├── README.md ├── docker-compose.yaml ├── gulpfile.js ├── package-lock.json ├── package.json ├── pdfs ├── city_guide.pdf ├── guia_da_cidade.pdf ├── plano_de_patrocinio.pdf └── sponsorship_plan.pdf └── src ├── content ├── about.md ├── call.js ├── footer.js ├── hotels │ └── taiwan.md ├── keynotes │ ├── carol-willing.md │ ├── debora-azevedo.md │ ├── felipemorais.md │ ├── laisvarejao.md │ ├── lorenamesa.md │ └── luciano-ramalho.md └── sponsors.js ├── grade ├── calendario.js ├── core.min.css ├── core.min.js ├── daygrid.min.css ├── daygrid.min.js ├── google-calendar.js ├── index.html ├── list.min.css ├── list.min.js ├── logo.png ├── pt-br.min.js ├── style.css ├── timegrid.min.css └── timegrid.min.js ├── images ├── cactus.svg ├── ccrp.svg ├── cloud_background.svg ├── cloud_background_2.svg ├── dinosaur.svg ├── download-on-appstore.svg ├── entities │ ├── GitHub_Logo.png │ ├── PSF-Logo-Narrow-Shapes.svg │ ├── apyb.png │ ├── estacio.png │ ├── grupozap.png │ ├── labcodes.png │ ├── loadsmart-logo-horizontal.png │ ├── logo-evolux.svg │ ├── logo-idtrust.png │ ├── logo_globo_com.svg │ ├── olist.png │ ├── placeholder.png │ ├── stoodi.png │ ├── usp.png │ └── whatsgood.png ├── facebook.svg ├── fotos │ ├── alexandre_villares.jpeg │ ├── alexis_jawtuschenko.jpeg │ ├── amanda_savluchinske.jpeg │ ├── anicely_santos.jpeg │ ├── arthur_fortes.jpeg │ ├── barbara_barbosa_claudino.jpeg │ ├── bernardo_fontes.jpeg │ ├── betina_costa.jpeg │ ├── bruno_evangelista.jpeg │ ├── bruno_franca.jpeg │ ├── camilla_martins.jpeg │ ├── daniele_tavares.jpeg │ ├── danielle_monteiro.jpeg │ ├── david_cosac.jpeg │ ├── diego_guimaraes.jpeg │ ├── eder_martins.jpeg │ ├── emanuel_lima.jpeg │ ├── felipe_fernandes.jpeg │ ├── felipe_videira.jpeg │ ├── fernando_masanori.jpeg │ ├── filipe_ximenes.jpeg │ ├── flavio_juvenal.jpeg │ ├── gabriel_bellon.jpeg │ ├── giana_de_almeida.jpeg │ ├── grupo_de_estudos_em_data_science.jpeg │ ├── guilherme_garnier.jpeg │ ├── gustavo_carvalho.jpeg │ ├── henrique_bastos.jpeg │ ├── ingrid_sena.jpeg │ ├── jessica_bonson.jpeg │ ├── joao_daher.jpeg │ ├── juliana_karoline.jpeg │ ├── juliany_raiol.jpeg │ ├── katia_nakamura.jpeg │ ├── leonardo_belluzzi.jpeg │ ├── leonardo_rochael.jpeg │ ├── lidiane_monteiro.jpeg │ ├── maria_fernanda.jpeg │ ├── mariana_albuquerque.jpeg │ ├── matheus_hernandes.jpeg │ ├── melissa_weber.jpeg │ ├── nelson_nolasco.jpeg │ ├── patricia_guisordi.jpeg │ ├── paulo_santana.jpeg │ ├── pietra_freitas.jpeg │ ├── pyladies_brasil.jpeg │ ├── pyladies_manaus.jpeg │ ├── rafael_calixto.jpeg │ ├── rafael_henrique.jpeg │ ├── rebeca_sarai.jpeg │ ├── renne_rocha.jpeg │ ├── rodrigo_mendonca.jpeg │ ├── ryllari_santana.jpeg │ ├── sam_agnew.jpeg │ ├── thais_almeida.jpeg │ ├── tyrone_damasceno.jpeg │ ├── william_oliveira.jpeg │ └── yan_orestes.jpeg ├── google-play-badge.png ├── hayline.svg ├── hotels │ └── taiwan.png ├── instagram.svg ├── keynotes │ ├── carol-willing.jpg │ ├── debora-azevedo.jpg │ ├── felipemorais.jpg │ ├── laisvarejao.jpg │ ├── lorenamesa.jpg │ └── luciano-ramalho.jpg ├── linkedin.svg ├── logo_python_2019.png ├── logo_python_2019_white.png ├── main_logo_ribeirao.png ├── py-logo-white.png ├── pylogo-2019-colored.svg ├── pylogo.svg ├── python_brasil_logo.png ├── python_brasil_logo_white.png └── twitter.svg ├── sass ├── appbanner.sass ├── colors.sass ├── main.sass └── style.sass ├── scripts └── index.js ├── submissao-de-palestras └── index.html └── templates ├── index.hbs ├── partials ├── .main.hbs.swp ├── about.hbs ├── cityguide.hbs ├── footer.hbs ├── keynotes.hbs ├── lineup.hbs ├── main.hbs ├── prefooter.hbs ├── pylogo.hbs ├── sponsors.hbs ├── svgs │ ├── facebook.hbs │ ├── github.hbs │ ├── instagram.hbs │ ├── linkedin.hbs │ ├── pylogo.hbs │ └── twitter.hbs └── tutorials.hbs └── programacao.hbs /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | dist 4 | 5 | # OS X 6 | .DS_Store 7 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "11" 4 | 5 | script: npm run build 6 | 7 | deploy: 8 | local_dir: dist 9 | target-branch: gh-pages 10 | provider: pages 11 | github_token: $GITHUB_TOKEN 12 | keep_history: true 13 | skip_cleanup: true 14 | on: 15 | branch: master 16 | -------------------------------------------------------------------------------- /CNAME: -------------------------------------------------------------------------------- 1 | 2019.pythonbrasil.org.br 2 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:11-alpine 2 | RUN apk --update --no-cache \ 3 | add \ 4 | automake \ 5 | git \ 6 | alpine-sdk \ 7 | nasm \ 8 | autoconf \ 9 | build-base \ 10 | zlib \ 11 | zlib-dev \ 12 | libpng \ 13 | libpng-dev\ 14 | libwebp \ 15 | libwebp-dev \ 16 | libjpeg-turbo \ 17 | libjpeg-turbo-dev 18 | RUN mkdir /src 19 | WORKDIR /src 20 | COPY . /src 21 | RUN npm install && npm run build 22 | EXPOSE 8080 23 | CMD ["npm", "run", "serve"] 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # pythonbrasil-2019-site 2 | 3 | https:///2019.pythonbrasil.org.br 4 | 5 | ``` 6 | # Depende do Node v11 7 | 8 | # Instalando dependências 9 | $ npm install 10 | 11 | # Gera o site na pasta dist/ 12 | $ npm run build 13 | 14 | # Serve o site na porta 8080 15 | $ npm run serve 16 | ``` 17 | 18 | ## Desenvolvimento: 19 | 20 | ### Req 21 | 22 | Docker +18.06 23 | docker-compose +1.23 24 | 25 | ### Running 26 | 27 | ```bash 28 | docker-compose up # or docker-compose up -d if you want to dettach it from the terminal 29 | ``` 30 | 31 | Then access http://localhost:8080/index.html 32 | -------------------------------------------------------------------------------- /docker-compose.yaml: -------------------------------------------------------------------------------- 1 | version: '3.7' 2 | 3 | services: 4 | pybr_site: 5 | build: 6 | context: . 7 | dockerfile: Dockerfile 8 | image: "pybr_site" 9 | environment: 10 | - PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/src/node_modules 11 | ports: 12 | - "8080:8080" 13 | volumes: 14 | - ./:/src 15 | - /src/node_modules 16 | - /src/dist 17 | -------------------------------------------------------------------------------- /gulpfile.js: -------------------------------------------------------------------------------- 1 | const gulpStatic = require('gulp-static-gen'); 2 | const gulp = require('gulp'); 3 | const fs = require('fs'); 4 | const path = require('path'); 5 | const set = require('lodash.set'); 6 | 7 | const { Converter } = require('showdown'); 8 | 9 | const data = {}; 10 | 11 | const loadData = (folderPath, objectPaths = []) => { 12 | const finalPath = path.resolve(__dirname, folderPath) 13 | const files = fs.readdirSync(finalPath); 14 | 15 | files.forEach((file) => { 16 | if (file.indexOf('.') === -1) { 17 | loadData(`${folderPath}/${file}`, [file]); 18 | return; 19 | } 20 | 21 | if (file.indexOf('.js') !== -1) { 22 | let paths = [...objectPaths, file.replace('.js', '')] 23 | set(data, paths, require(`${process.cwd()}/${folderPath}/${file}`)); 24 | } else { 25 | const conv = new Converter({ metadata: true, tables: true, openLinksInNewWindow: true }); 26 | let paths = [...objectPaths, file.replace('.md', '')] 27 | 28 | set(data, paths, { 29 | html: conv.makeHtml(fs.readFileSync( 30 | path.resolve(finalPath, file), 'utf-8' 31 | )), 32 | meta: conv.getMetadata(), 33 | }); 34 | } 35 | }); 36 | } 37 | 38 | loadData('src/content') 39 | 40 | gulp.task('content', () => { 41 | loadData('src/content') 42 | }); 43 | 44 | gulpStatic({ 45 | customWatchers: [ 46 | { files: './src/content/**/*', tasks: ['content', 'handlebars'] } 47 | ], 48 | move: [{ 49 | input: './CNAME', 50 | output: './dist' 51 | }, 52 | { 53 | input: './pdfs/**/*', 54 | output: './dist/assets/pdfs/' 55 | }, 56 | { 57 | input: './src/submissao-de-palestras', 58 | output: './dist/' 59 | }, 60 | { 61 | input: './src/grade/**/*', 62 | output: './dist/grade/' 63 | } 64 | ], 65 | css: { 66 | input: './src/sass/style.sass', 67 | output: './dist/assets/css', 68 | watch: './src/sass/**/*', 69 | }, 70 | hbs: { 71 | batch: ['./src/templates/partials'], 72 | watch: './src/templates/**/*', 73 | multiple: [{ 74 | data: data, 75 | input: './src/templates/index.hbs', 76 | output: { 77 | dir: './dist', 78 | name: 'index.html', 79 | } 80 | }] 81 | }, 82 | img: { 83 | input: './src/images/**/*', 84 | output: './dist/assets/images', 85 | config: { 86 | interlaced: true, 87 | progressive: true, 88 | optimizationLevel: 5, 89 | svgoPlugins: [{ removeViewBox: true }] 90 | } 91 | }, 92 | scripts: { 93 | input: './src/scripts/index.js', 94 | output: './dist/assets/scripts/', 95 | watch: './src/scripts/**/*', 96 | } 97 | }); -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pybr", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "serve": "gulp serve", 8 | "build": "gulp build" 9 | }, 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "gulp": "^3.X", 14 | "gulp-static-gen": "^1.0.2", 15 | "lodash.set": "^4.3.2", 16 | "prettier": "^1.18.2", 17 | "showdown": "^1.9.0", 18 | "tar": ">=2.2.2" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /pdfs/city_guide.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/pdfs/city_guide.pdf -------------------------------------------------------------------------------- /pdfs/guia_da_cidade.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/pdfs/guia_da_cidade.pdf -------------------------------------------------------------------------------- /pdfs/plano_de_patrocinio.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/pdfs/plano_de_patrocinio.pdf -------------------------------------------------------------------------------- /pdfs/sponsorship_plan.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/pdfs/sponsorship_plan.pdf -------------------------------------------------------------------------------- /src/content/about.md: -------------------------------------------------------------------------------- 1 | # O Evento 2 | 3 | A **PythonBrasil** é o maior evento sobre linguagem de programação Python do Brasil. Feito pela comunidade para a comunidade, tem o objetivo de difundir a linguagem, promover a troca de experiências e manter a comunidade crescendo igualmente em público e impacto social. 4 | 5 | Serão 6 dias de imersão onde os participantes poderão contribuir para projetos de software livre, participar de treinamentos e adquirir novos conhecimentos com desenvolvedores renomados da comunidade. A programação está organizada da seguinte forma: **Tutoriais** (23 e 24 de outubro no Centro Universitário Estácio de Sá), **Palestras e Keynotes** (25 a 27 de outubro no Centro de Convenções de Ribeirão Preto, CCRP) e **Sprints** (28 de outubro no Centro Universitário Estácio de Sá). 6 | 7 | Este ano, está sendo organizada pela comunidade Python de Ribeirão Preto/SP com o apoio da APyB (Associação Python Brasil). 8 | -------------------------------------------------------------------------------- /src/content/call.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | text: 'A maior conferência de Python da América Latina', 3 | button: { 4 | link: '/foo', 5 | text: 'Quero patrocinar', 6 | } 7 | } -------------------------------------------------------------------------------- /src/content/footer.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | nav: [ 3 | { 4 | title: 'Sobre', 5 | items: [ 6 | { text: 'Local', link: 'https://goo.gl/maps/m7ttyu5CCnBjobmD7' }, 7 | { text: 'Keynotes', link: '#section-keynote' }, 8 | { text: 'Evento', link: '#section-about' }, 9 | { text: 'Guia da Cidade', link: '#section-cityguide' }, 10 | // { text: 'Programação', link: '#' }, 11 | { text: 'Código de Conduta', link: 'https://python.org.br/cdc/' }, 12 | ] 13 | }, 14 | { 15 | title: 'Patrocínio', 16 | items: [ 17 | { text: 'Quero Patrocinar', link: '#section-sponsor' }, 18 | { text: 'Patrocinadores', link: '#section-sponsors' }, 19 | ] 20 | }, 21 | ], 22 | social: { 23 | facebook: { link: 'https://www.facebook.com/pythonbrasil/', logo: '/images/facebook.svg' }, 24 | twitter: { link: 'https://twitter.com/pythonbrasil', logo: '/images/twitter.svg' }, 25 | instagram: { link: 'https://www.instagram.com/pythonbrasil/', logo: '/images/instagram.svg' }, 26 | apybr: { link: 'https://python.org.br/', logo: '/images/pylogo.svg' } 27 | }, 28 | buyTicketLink: 'https://pythonbrasil2019.eventbrite.com.br' 29 | } 30 | -------------------------------------------------------------------------------- /src/content/hotels/taiwan.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Taiwan Hotel 3 | photo: taiwan.png 4 | href: https://www.taiwanhotel.com.br 5 | publish: True 6 | --- 7 | 8 | #### Taiwan Hotel (hotel oficial) 9 | [https://www.taiwanhotel.com.br](https://www.taiwanhotel.com.br) 10 | 11 | Oferece traslado gratuito do aeroporto para o hotel e vice-versa, e para o evento e vice-versa (válido para os dias de tutoriais, palestras e sprints) 12 | 13 | | Apartamento | Tarifa | 14 | |------------------------|------------| 15 | | Luxo Single (1 pessoa) | R$ 175,00* | 16 | | Luxo Duplo (2 pessoas) | R$ 205,00* | 17 | 18 | \* É cobrado 10% de taxas (Serviço e I.S.S.) 19 | \* Reservando um mínimo de 5 diárias, a 5ª é cortesia 20 | 21 | Utilize o código promocional `PYTHON_BRASIL` ao fazer a compra pelo site para acessar a condição especial. 22 | -------------------------------------------------------------------------------- /src/content/keynotes/carol-willing.md: -------------------------------------------------------------------------------- 1 | --- 2 | photo: carol-willing.jpg 3 | github: https://github.com/willingc 4 | linkedin: https://www.linkedin.com/in/carolwilling/ 5 | publish: True 6 | --- 7 | 8 | ### Carol Willing 9 | #### Diretora da PSF e Projeto Jupyter, desenvolvedora core do CPython e JupyterHub 10 | 11 | Carol Naslund Willing atua no Conselho Diretor do Projeto Jupyter e trabalha como Core Developer no JupyterHub e mybinder.org. Ela também atua como coeditora do “The Journal of Open Source Education” (JOSE) e é coautora de um livro open source, o “Teaching and Learning with Jupyter”. 12 | 13 | Ela é membro do primeiro Conselho Diretor do Python e faz parte da equipe principal de desenvolvimento do CPython. Ela também é ex-diretora da Python Software Foundation e atual Fellow Member. Em 2019, recebeu o Prêmio Frank Willison por suas contribuições técnicas e para com a comunidade Python. Fortemente comprometida com a divulgação da comunidade, Carol coorganiza o PyLadies San Diego e o San Diego Python User Group. 14 | 15 | Carol tem mestrado em Gestão pelo MIT e Bacharel em Engenharia Elétrica pela Duke University. 16 | 17 | -------------------------------------------------------------------------------- /src/content/keynotes/debora-azevedo.md: -------------------------------------------------------------------------------- 1 | --- 2 | photo: debora-azevedo.jpg 3 | twitter: https://twitter.com/pydebb/ 4 | linkedin: https://www.linkedin.com/in/debora-azevedo-1919b996/ 5 | publish: true 6 | --- 7 | 8 | ### Débora Azevedo 9 | #### Professora na Secretaria Estadual de Educação e Cultura do Rio Grande do Norte 10 | 11 | Débora é professora na rede estadual de ensino no Rio Grande do Norte, e atualmente aluna do Mestrado em Inovação com Tecnologias Educacionais no Instituto Metrópole Digital (UFRN). Com uma formação mista, graduação em Letras - Inglês e bacharelado em TI ainda no meio do caminho, é cofundadora do PyLadies Brasil, estando em sua formação inicial até agora, além de organizadora do Django Girls Natal, sua cidade. Ano passado organizou a primeira PyLadiesBR Conf, primeira conferência do Brasil de PyLadies para PyLadies, e tem atuado ultimamente na comunidade de mulheres Python a nível nacional. Acredita que é com a educação que conseguiremos mudar alguma coisa, em nós, na comunidade, no país. Fã de Harry Potter e de literatura policial, pode chamá-la para conversar sobre isso ou sobre algum livro da Agatha Christie. 12 | 13 | -------------------------------------------------------------------------------- /src/content/keynotes/felipemorais.md: -------------------------------------------------------------------------------- 1 | --- 2 | photo: felipemorais.jpg 3 | linkedin: https://www.linkedin.com/in/felipe-de-morais 4 | twitter: https://www.twitter.com/felipedemorais_ 5 | publish: true 6 | --- 7 | 8 | ### Felipe de Morais 9 | #### Comunidade AfroPython 10 | 11 | Felipe de Morais é um Desenvolvedor de Software envolvido há alguns anos com a comunidade Python. Entre as contribuições mais relevantes para a Comunidade estão o AfroPython, iniciativa para empoderar pessoas negras através da tecnologia e colaborações em projetos abertos como a Operação Serenata de Amor. Tudo que ele faz são manifestações de seus 2 valores mais básicos: Ajudar pessoas e aprender com e de pessoas incríveis. 12 | -------------------------------------------------------------------------------- /src/content/keynotes/laisvarejao.md: -------------------------------------------------------------------------------- 1 | --- 2 | photo: laisvarejao.jpg 3 | github: https://www.github.com/laisvarejao 4 | twitter: https://www.twitter.com/laisvarejao 5 | publish: true 6 | --- 7 | 8 | ### Laís Varejão 9 | #### Desenvolvedora Full-Stack e Gerente de Projetos @ Vinta Software 10 | 11 | É desenvolvedora full-stack e gerente de projetos na Vinta Software. PyLady e organizadora do Django Girls Recife, vislumbra um futuro com mais mulheres na computação. Alumna do Recurse Center, um retiro para programadores em Nova York. É engenheira de software por formação, tem 7 anos de experiência no mercado e atualmente lidera uma equipe de desenvolvimento onde aplica metodologias ágeis. 12 | -------------------------------------------------------------------------------- /src/content/keynotes/lorenamesa.md: -------------------------------------------------------------------------------- 1 | --- 2 | photo: lorenamesa.jpg 3 | github: https://www.github.com/lorenanicole 4 | twitter: https://www.twitter.com/loooorenanicole 5 | publish: true 6 | --- 7 | 8 | ### Lorena Mesa 9 | #### Engenheira de Dados @ Github 10 | 11 | Cientista política que virou programadora, Lorena Mesa é engenheira de dados na equipe de sistemas de inteligência de software do GitHub, diretora da Python Software Foundation e coorganizadora do PyLadies Chicago. 12 | Durante o seu período na campanha "Obama for America" e, em seguida, na pesquisa de pós-graduação, Lorena teve que aprender como transformar dados confusos e incompletos em análises inteligíveis, como por exemplo a previsão do comportamento dos eleitores latinos. Foi esse histórico em pesquisa e matemática aplicada que levou Lorena a seguir uma carreira em engenharia e ciência de dados. 13 | Uma parte ativista, uma parte fanática por Star Wars e outra Trekkie, Lorena segue o lema "live long and prosper". 14 | -------------------------------------------------------------------------------- /src/content/keynotes/luciano-ramalho.md: -------------------------------------------------------------------------------- 1 | --- 2 | photo: luciano-ramalho.jpg 3 | github: https://www.github.com/ramalho 4 | twitter: https://www.twitter.com/ramalhoorg 5 | publish: true 6 | --- 7 | 8 | ### Luciano Ramalho 9 | #### Autor do livro Python Fluente e Consultor Principal na ThoughtWorks Brasil 10 | 11 | Depois de 17 anos programando em Python, Ramalho publicou o livro Fluent Python (O'Reilly, 2015), lançado em 9 idiomas, inclusive PT-BR (Python Fluente, Novatec, 2015). Foi o primeiro presidente da Associação Python Brasil, e co-fundador do Garoa Hacker Clube. É fellow da Python Software Foundation e consultor principal na ThoughtWorks Brasil. 12 | -------------------------------------------------------------------------------- /src/content/sponsors.js: -------------------------------------------------------------------------------- 1 | const Entity = (name, photo, link) => ({ 2 | name, link, 3 | photo: `/assets/images/entities/${photo}` 4 | }); 5 | 6 | module.exports = { 7 | sponsors: { 8 | title: 'Patrocinadores', 9 | categories: [ 10 | { 11 | type: 'diamante', 12 | items: [ 13 | Entity('GitHub', 'GitHub_Logo.png', 'https://github.com'), 14 | ], 15 | }, 16 | { 17 | type: 'platina', 18 | items: [ 19 | Entity('PSF', 'PSF-Logo-Narrow-Shapes.svg', 'https://www.python.org/psf'), 20 | Entity('GrupoZAP', 'grupozap.png', 'https://www.grupozap.com'), 21 | ], 22 | }, 23 | { 24 | type: 'ouro', 25 | items: [ 26 | Entity('Loadsmart', 'loadsmart-logo-horizontal.png', 'https://www.loadsmart.com'), 27 | Entity('olist', 'olist.png', 'https://olist.com'), 28 | Entity('Stoodi', 'stoodi.png', 'https://www.stoodi.com.br/'), 29 | Entity('Globo.com', 'logo_globo_com.svg', 'https://www.globo.com/'), 30 | ], 31 | }, 32 | { 33 | type: 'prata', 34 | items: [ 35 | Entity('Evolux', 'logo-evolux.svg', 'https://www.evolux.net.br'), 36 | Entity('Lab Codes', 'labcodes.png', 'https://labcodes.com.br/'), 37 | Entity('WhatsGood', 'whatsgood.png', 'https://whatsgood.com.br'), 38 | ], 39 | }, 40 | { 41 | type: 'bronze', 42 | items: [ 43 | Entity('iDtrust', 'logo-idtrust.png', 'https://www.idtrust.com.br'), 44 | ], 45 | }, 46 | ] 47 | }, 48 | partners: [ 49 | { 50 | title: 'Parceiros', 51 | items: [ 52 | Entity('associação python brasil', 'apyb.png', 'https://python.org.br/'), 53 | Entity('USP', 'usp.png', 'https://www5.usp.br/'), 54 | Entity('Estácio de Sá', 'estacio.png', 'http://portal.estacio.br') 55 | ] 56 | } 57 | ], 58 | organization: [ 59 | Entity('FizzFuzz', 'placeholder.png', '/sponsor-test'), 60 | ] 61 | } 62 | -------------------------------------------------------------------------------- /src/grade/calendario.js: -------------------------------------------------------------------------------- 1 | function open_details() { 2 | document.getElementById("full-detail").style.display = "block"; 3 | } 4 | 5 | /* Close when someone clicks on the "x" symbol inside the overlay */ 6 | function close_details() { 7 | document.getElementById("full-detail").style.display = "none"; 8 | } 9 | 10 | function toggle_label(nodeId, value, display) { 11 | var node = document.getElementById(nodeId); 12 | if (value) { 13 | node.innerHTML = value; 14 | node.style.display = display; 15 | } else { 16 | node.style.display = "none"; 17 | } 18 | } 19 | 20 | document.addEventListener('DOMContentLoaded', function() { 21 | var calendarEl = document.getElementById('calendar'); 22 | 23 | var calendar = new FullCalendar.Calendar(calendarEl, { 24 | plugins: [ 25 | 'list', 26 | 'googleCalendar' 27 | ], 28 | 29 | header: { 30 | left: 'title', 31 | right: 'tutoriais23,tutoriais24 talks25,talks26,talks27 sprints' 32 | }, 33 | height: 'auto', 34 | 35 | // Python Brasil first day 36 | defaultDate: '2019-10-23', 37 | defaultView: 'tutoriais23', 38 | timeZone: 'America/Sao_Paulo', 39 | locale: 'pt-br', 40 | 41 | allDaySlot: false, 42 | minTime: "08:00:00", 43 | maxTime: "20:00:00", 44 | nowIndicator: true, 45 | 46 | views: { 47 | lista: { 48 | type: 'list', 49 | buttonText: 'Programação diária' 50 | }, 51 | tutoriais23: { 52 | type: 'list', 53 | buttonText: 'Tutoriais: 23', 54 | visibleRange: { 55 | start: '2019-10-23', 56 | end: '2019-10-23' 57 | } 58 | }, 59 | tutoriais24: { 60 | type: 'list', 61 | buttonText: '24', 62 | visibleRange: { 63 | start: '2019-10-24', 64 | end: '2019-10-24' 65 | } 66 | }, 67 | talks25: { 68 | type: 'list', 69 | buttonText: 'Palestras: 25', 70 | visibleRange: { 71 | start: '2019-10-25', 72 | end: '2019-10-25' 73 | } 74 | }, 75 | talks26: { 76 | type: 'list', 77 | buttonText: '26', 78 | visibleRange: { 79 | start: '2019-10-26', 80 | end: '2019-10-26' 81 | } 82 | }, 83 | talks27: { 84 | type: 'list', 85 | buttonText: '27', 86 | visibleRange: { 87 | start: '2019-10-27', 88 | end: '2019-10-27' 89 | } 90 | }, 91 | sprints: { 92 | type: 'list', 93 | buttonText: 'Sprints: 28', 94 | visibleRange: { 95 | start: '2019-10-28', 96 | end: '2019-10-28' 97 | } 98 | } 99 | }, 100 | 101 | eventClick: function(info) { 102 | info.jsEvent.preventDefault(); 103 | 104 | var title = info.event.title; 105 | var author = info.event._def.extendedProps.private.author; 106 | var location = info.event._def.extendedProps.location; 107 | var description = info.event._def.extendedProps.description || ""; 108 | description = description.replace(/\\n\\n/g, "
"); 109 | description = description.replace(/\\n/g, " "); 110 | 111 | document.getElementById("overlay-description").innerHTML = description; 112 | document.getElementById("overlay-title").innerHTML = title; 113 | toggle_label("overlay-author", author, "inline"); 114 | toggle_label("overlay-room", location, "inline"); 115 | 116 | open_details(); 117 | }, 118 | 119 | eventRender: function(info) { 120 | var meta = document.createElement("div"); 121 | meta.className = "meta"; 122 | 123 | // Palestrante 124 | var author = info.event._def.extendedProps.private.author; 125 | if (author) { 126 | console.log("author", author); 127 | var authorNode = document.createElement("div"); 128 | authorNode.className = "speaker"; 129 | authorNode.appendChild( 130 | document.createTextNode(author) 131 | ) 132 | meta.appendChild(authorNode); 133 | } 134 | // Sala 135 | var location = info.event._def.extendedProps.location 136 | if (location) { 137 | var locationNode = document.createElement("div"); 138 | locationNode.className = "room"; 139 | locationNode.appendChild( 140 | document.createTextNode(location) 141 | ) 142 | meta.appendChild(locationNode); 143 | } 144 | 145 | info.el.lastChild.appendChild(meta); 146 | }, 147 | // Google Calendar settings 148 | googleCalendarApiKey: 'AIzaSyAIn8DyZFtthupLozgwIX3NUURFMWEIPb4', 149 | eventSources: [{ 150 | googleCalendarId: 'ft5mdp26mhosq2heu6g87mb7ns@group.calendar.google.com' 151 | }] 152 | }); 153 | 154 | calendar.render(); 155 | }); -------------------------------------------------------------------------------- /src/grade/core.min.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8";.fc-button:not(:disabled),.fc-event.fc-draggable,.fc-event[href],.fc-popover .fc-header .fc-close,a.fc-more,a[data-goto]{cursor:pointer}.fc-bg,.fc-row .fc-bgevent-skeleton,.fc-row .fc-highlight-skeleton{bottom:0}.fc{direction:ltr;text-align:left}.fc-rtl{text-align:right}body .fc{font-size:1em}.fc-highlight{background:#bce8f1;opacity:.3}.fc-bgevent{background:#8fdf82;opacity:.3}.fc-nonbusiness{background:#d7d7d7}.fc-popover{position:absolute;box-shadow:0 2px 6px rgba(0,0,0,.15)}.fc-popover .fc-header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:2px 4px}.fc-rtl .fc-popover .fc-header{flex-direction:row-reverse}.fc-popover .fc-header .fc-title{margin:0 2px}.fc-popover .fc-header .fc-close{opacity:.65;font-size:1.1em}.fc-divider{border-style:solid;border-width:1px}hr.fc-divider{height:0;margin:0;padding:0 0 2px;border-width:1px 0}.fc-bg table,.fc-row .fc-bgevent-skeleton table,.fc-row .fc-highlight-skeleton table{height:100%}.fc-bg,.fc-bgevent-skeleton,.fc-highlight-skeleton,.fc-mirror-skeleton{position:absolute;top:0;left:0;right:0}.fc table{width:100%;box-sizing:border-box;table-layout:fixed;border-collapse:collapse;border-spacing:0;font-size:1em}.fc th{text-align:center}.fc td,.fc th{border-style:solid;border-width:1px;padding:0;vertical-align:top}.fc td.fc-today{border-style:double}a[data-goto]:hover{text-decoration:underline}.fc .fc-row{border-style:solid;border-width:0}.fc-row table{border-left:0 hidden transparent;border-right:0 hidden transparent;border-bottom:0 hidden transparent}.fc-row:first-child table{border-top:0 hidden transparent}.fc-row{position:relative}.fc-row .fc-bg{z-index:1}.fc-row .fc-bgevent-skeleton td,.fc-row .fc-highlight-skeleton td{border-color:transparent}.fc-row .fc-bgevent-skeleton{z-index:2}.fc-row .fc-highlight-skeleton{z-index:3}.fc-row .fc-content-skeleton{position:relative;z-index:4;padding-bottom:2px}.fc-row .fc-mirror-skeleton{z-index:5}.fc .fc-row .fc-content-skeleton table,.fc .fc-row .fc-content-skeleton td,.fc .fc-row .fc-mirror-skeleton td{background:0 0;border-color:transparent}.fc-row .fc-content-skeleton td,.fc-row .fc-mirror-skeleton td{border-bottom:0}.fc-row .fc-content-skeleton tbody td,.fc-row .fc-mirror-skeleton tbody td{border-top:0}.fc-scroller{-webkit-overflow-scrolling:touch}.fc-scroller>.fc-day-grid,.fc-scroller>.fc-time-grid{position:relative;width:100%}.fc-event{position:relative;display:block;font-size:.85em;line-height:1.4;border-radius:3px;border:1px solid #3788d8}.fc-event,.fc-event-dot{background-color:#3788d8}.fc-event,.fc-event:hover{color:#fff;text-decoration:none}.fc-not-allowed,.fc-not-allowed .fc-event{cursor:not-allowed}.fc-event .fc-content{position:relative;z-index:2}.fc-event .fc-resizer{position:absolute;z-index:4;display:none}.fc-event.fc-allow-mouse-resize .fc-resizer,.fc-event.fc-selected .fc-resizer{display:block}.fc-event.fc-selected .fc-resizer:before{content:"";position:absolute;z-index:9999;top:50%;left:50%;width:40px;height:40px;margin-left:-20px;margin-top:-20px}.fc-event.fc-selected{z-index:9999!important;box-shadow:0 2px 5px rgba(0,0,0,.2)}.fc-event.fc-selected:after{content:"";position:absolute;z-index:1;top:-1px;right:-1px;bottom:-1px;left:-1px;background:#000;opacity:.25}.fc-event.fc-dragging.fc-selected{box-shadow:0 2px 7px rgba(0,0,0,.3)}.fc-event.fc-dragging:not(.fc-selected){opacity:.75}.fc-h-event.fc-selected:before{content:"";position:absolute;z-index:3;top:-10px;bottom:-10px;left:0;right:0}.fc-ltr .fc-h-event.fc-not-start,.fc-rtl .fc-h-event.fc-not-end{margin-left:0;border-left-width:0;padding-left:1px;border-top-left-radius:0;border-bottom-left-radius:0}.fc-ltr .fc-h-event.fc-not-end,.fc-rtl .fc-h-event.fc-not-start{margin-right:0;border-right-width:0;padding-right:1px;border-top-right-radius:0;border-bottom-right-radius:0}.fc-ltr .fc-h-event .fc-start-resizer,.fc-rtl .fc-h-event .fc-end-resizer{cursor:w-resize;left:-1px}.fc-ltr .fc-h-event .fc-end-resizer,.fc-rtl .fc-h-event .fc-start-resizer{cursor:e-resize;right:-1px}.fc-h-event.fc-allow-mouse-resize .fc-resizer{width:7px;top:-1px;bottom:-1px}.fc-h-event.fc-selected .fc-resizer{border-radius:4px;border-width:1px;width:6px;height:6px;border-style:solid;border-color:inherit;background:#fff;top:50%;margin-top:-4px}.fc-ltr .fc-h-event.fc-selected .fc-start-resizer,.fc-rtl .fc-h-event.fc-selected .fc-end-resizer{margin-left:-4px}.fc-ltr .fc-h-event.fc-selected .fc-end-resizer,.fc-rtl .fc-h-event.fc-selected .fc-start-resizer{margin-right:-4px}.fc-day-grid-event{margin:1px 2px 0;padding:0 1px}tr:first-child>td>.fc-day-grid-event{margin-top:2px}.fc-mirror-skeleton tr:first-child>td>.fc-day-grid-event{margin-top:0}.fc-day-grid-event .fc-content{white-space:nowrap;overflow:hidden}.fc-day-grid-event .fc-time{font-weight:700}.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer,.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer{margin-left:-2px}.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer,.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer{margin-right:-2px}a.fc-more{margin:1px 3px;font-size:.85em;text-decoration:none}a.fc-more:hover{text-decoration:underline}.fc-limited{display:none}.fc-button,.fc-icon{display:inline-block;font-weight:400;text-align:center}.fc-day-grid .fc-row{z-index:1}.fc-more-popover{z-index:2;width:220px}.fc-more-popover .fc-event-container{padding:10px}.fc-now-indicator{position:absolute;border:0 solid red}.fc-unselectable{-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}.fc-unthemed .fc-content,.fc-unthemed .fc-divider,.fc-unthemed .fc-list-heading td,.fc-unthemed .fc-list-view,.fc-unthemed .fc-popover,.fc-unthemed .fc-row,.fc-unthemed tbody,.fc-unthemed td,.fc-unthemed th,.fc-unthemed thead{border-color:#ddd}.fc-unthemed .fc-popover{background-color:#fff}.fc-unthemed .fc-divider,.fc-unthemed .fc-list-heading td,.fc-unthemed .fc-popover .fc-header{background:#eee}.fc-unthemed td.fc-today{background:#fcf8e3}.fc-unthemed .fc-disabled-day{background:#d7d7d7;opacity:.3}@font-face{font-family:fcicons;src:url("data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBfAAAAC8AAAAYGNtYXAXVtKNAAABHAAAAFRnYXNwAAAAEAAAAXAAAAAIZ2x5ZgYydxIAAAF4AAAFNGhlYWQUJ7cIAAAGrAAAADZoaGVhB20DzAAABuQAAAAkaG10eCIABhQAAAcIAAAALGxvY2ED4AU6AAAHNAAAABhtYXhwAA8AjAAAB0wAAAAgbmFtZXsr690AAAdsAAABhnBvc3QAAwAAAAAI9AAAACAAAwPAAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADpBgPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAOAAAAAoACAACAAIAAQAg6Qb//f//AAAAAAAg6QD//f//AAH/4xcEAAMAAQAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAWIAjQKeAskAEwAAJSc3NjQnJiIHAQYUFwEWMjc2NCcCnuLiDQ0MJAz/AA0NAQAMJAwNDcni4gwjDQwM/wANIwz/AA0NDCMNAAAAAQFiAI0CngLJABMAACUBNjQnASYiBwYUHwEHBhQXFjI3AZ4BAA0N/wAMJAwNDeLiDQ0MJAyNAQAMIw0BAAwMDSMM4uINIwwNDQAAAAIA4gC3Ax4CngATACcAACUnNzY0JyYiDwEGFB8BFjI3NjQnISc3NjQnJiIPAQYUHwEWMjc2NCcB87e3DQ0MIw3VDQ3VDSMMDQ0BK7e3DQ0MJAzVDQ3VDCQMDQ3zuLcMJAwNDdUNIwzWDAwNIwy4twwkDA0N1Q0jDNYMDA0jDAAAAgDiALcDHgKeABMAJwAAJTc2NC8BJiIHBhQfAQcGFBcWMjchNzY0LwEmIgcGFB8BBwYUFxYyNwJJ1Q0N1Q0jDA0Nt7cNDQwjDf7V1Q0N1QwkDA0Nt7cNDQwkDLfWDCMN1Q0NDCQMt7gMIw0MDNYMIw3VDQ0MJAy3uAwjDQwMAAADAFUAAAOrA1UAMwBoAHcAABMiBgcOAQcOAQcOARURFBYXHgEXHgEXHgEzITI2Nz4BNz4BNz4BNRE0JicuAScuAScuASMFITIWFx4BFx4BFx4BFREUBgcOAQcOAQcOASMhIiYnLgEnLgEnLgE1ETQ2Nz4BNz4BNz4BMxMhMjY1NCYjISIGFRQWM9UNGAwLFQkJDgUFBQUFBQ4JCRULDBgNAlYNGAwLFQkJDgUFBQUFBQ4JCRULDBgN/aoCVgQIBAQHAwMFAQIBAQIBBQMDBwQECAT9qgQIBAQHAwMFAQIBAQIBBQMDBwQECASAAVYRGRkR/qoRGRkRA1UFBAUOCQkVDAsZDf2rDRkLDBUJCA4FBQUFBQUOCQgVDAsZDQJVDRkLDBUJCQ4FBAVVAgECBQMCBwQECAX9qwQJAwQHAwMFAQICAgIBBQMDBwQDCQQCVQUIBAQHAgMFAgEC/oAZEhEZGRESGQAAAAADAFUAAAOrA1UAMwBoAIkAABMiBgcOAQcOAQcOARURFBYXHgEXHgEXHgEzITI2Nz4BNz4BNz4BNRE0JicuAScuAScuASMFITIWFx4BFx4BFx4BFREUBgcOAQcOAQcOASMhIiYnLgEnLgEnLgE1ETQ2Nz4BNz4BNz4BMxMzFRQWMzI2PQEzMjY1NCYrATU0JiMiBh0BIyIGFRQWM9UNGAwLFQkJDgUFBQUFBQ4JCRULDBgNAlYNGAwLFQkJDgUFBQUFBQ4JCRULDBgN/aoCVgQIBAQHAwMFAQIBAQIBBQMDBwQECAT9qgQIBAQHAwMFAQIBAQIBBQMDBwQECASAgBkSEhmAERkZEYAZEhIZgBEZGREDVQUEBQ4JCRUMCxkN/asNGQsMFQkIDgUFBQUFBQ4JCBUMCxkNAlUNGQsMFQkJDgUEBVUCAQIFAwIHBAQIBf2rBAkDBAcDAwUBAgICAgEFAwMHBAMJBAJVBQgEBAcCAwUCAQL+gIASGRkSgBkSERmAEhkZEoAZERIZAAABAOIAjQMeAskAIAAAExcHBhQXFjI/ARcWMjc2NC8BNzY0JyYiDwEnJiIHBhQX4uLiDQ0MJAzi4gwkDA0N4uINDQwkDOLiDCQMDQ0CjeLiDSMMDQ3h4Q0NDCMN4uIMIw0MDOLiDAwNIwwAAAABAAAAAQAAa5n0y18PPPUACwQAAAAAANivOVsAAAAA2K85WwAAAAADqwNVAAAACAACAAAAAAAAAAEAAAPA/8AAAAQAAAAAAAOrAAEAAAAAAAAAAAAAAAAAAAALBAAAAAAAAAAAAAAAAgAAAAQAAWIEAAFiBAAA4gQAAOIEAABVBAAAVQQAAOIAAAAAAAoAFAAeAEQAagCqAOoBngJkApoAAQAAAAsAigADAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAA4ArgABAAAAAAABAAcAAAABAAAAAAACAAcAYAABAAAAAAADAAcANgABAAAAAAAEAAcAdQABAAAAAAAFAAsAFQABAAAAAAAGAAcASwABAAAAAAAKABoAigADAAEECQABAA4ABwADAAEECQACAA4AZwADAAEECQADAA4APQADAAEECQAEAA4AfAADAAEECQAFABYAIAADAAEECQAGAA4AUgADAAEECQAKADQApGZjaWNvbnMAZgBjAGkAYwBvAG4Ac1ZlcnNpb24gMS4wAFYAZQByAHMAaQBvAG4AIAAxAC4AMGZjaWNvbnMAZgBjAGkAYwBvAG4Ac2ZjaWNvbnMAZgBjAGkAYwBvAG4Ac1JlZ3VsYXIAUgBlAGcAdQBsAGEAcmZjaWNvbnMAZgBjAGkAYwBvAG4Ac0ZvbnQgZ2VuZXJhdGVkIGJ5IEljb01vb24uAEYAbwBuAHQAIABnAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4ALgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=") format("truetype");font-weight:400;font-style:normal}.fc-icon{font-family:fcicons!important;speak:none;font-style:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:1em;height:1em}.fc-icon-chevron-left:before{content:""}.fc-icon-chevron-right:before{content:""}.fc-icon-chevrons-left:before{content:""}.fc-icon-chevrons-right:before{content:""}.fc-icon-minus-square:before{content:""}.fc-icon-plus-square:before{content:""}.fc-icon-x:before{content:""}.fc-button{overflow:visible;text-transform:none;margin:0;font-family:inherit}.fc-button::-moz-focus-inner{padding:0;border-style:none}.fc-button{-webkit-appearance:button;color:#212529;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.4em .65em;font-size:1em;line-height:1.5;border-radius:.25em}.fc-button:hover{color:#212529;text-decoration:none}.fc-button:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(44,62,80,.25);box-shadow:0 0 0 .2rem rgba(44,62,80,.25)}.fc-button:disabled{opacity:.65}.fc-button-primary{color:#fff;background-color:#2C3E50;border-color:#2C3E50}.fc-button-primary:hover{color:#fff;background-color:#1e2b37;border-color:#1a252f}.fc-button-primary:focus{-webkit-box-shadow:0 0 0 .2rem rgba(76,91,106,.5);box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc-button-primary:disabled{color:#fff;background-color:#2C3E50;border-color:#2C3E50}.fc-button-primary:not(:disabled).fc-button-active,.fc-button-primary:not(:disabled):active{color:#fff;background-color:#1a252f;border-color:#151e27}.fc-button-primary:not(:disabled).fc-button-active:focus,.fc-button-primary:not(:disabled):active:focus{-webkit-box-shadow:0 0 0 .2rem rgba(76,91,106,.5);box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc-button .fc-icon{vertical-align:middle;font-size:1.5em}.fc-button-group{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.fc-button-group>.fc-button{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.fc-button-group>.fc-button.fc-button-active,.fc-button-group>.fc-button:active,.fc-button-group>.fc-button:focus,.fc-button-group>.fc-button:hover{z-index:1}.fc-button-group>.fc-button:not(:first-child){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.fc-button-group>.fc-button:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.fc-unthemed .fc-popover{border-width:1px;border-style:solid}.fc-unthemed .fc-list-item:hover td{background-color:#f5f5f5}.fc-toolbar{display:flex;justify-content:space-between;align-items:center}.fc-toolbar.fc-header-toolbar{margin-bottom:1.5em}.fc-toolbar.fc-footer-toolbar{margin-top:1.5em}.fc-toolbar>*>:not(:first-child){margin-left:.75em}.fc-toolbar h2{font-size:1.75em;margin:0}.fc-view-container{position:relative}.fc-view-container *,.fc-view-container :after,.fc-view-container :before{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.fc-view,.fc-view>table{position:relative;z-index:1}@media print{.fc-bg,.fc-bgevent-container,.fc-bgevent-skeleton,.fc-business-container,.fc-event .fc-resizer,.fc-highlight-container,.fc-highlight-skeleton,.fc-mirror-container,.fc-mirror-skeleton{display:none}.fc tbody .fc-row,.fc-time-grid{min-height:0!important}.fc-time-grid .fc-event.fc-not-end:after,.fc-time-grid .fc-event.fc-not-start:before{content:"..."}.fc{max-width:100%!important}.fc-event{background:#fff!important;color:#000!important;page-break-inside:avoid}.fc hr,.fc tbody,.fc td,.fc th,.fc thead,.fc-row{border-color:#ccc!important;background:#fff!important}.fc tbody .fc-row{height:auto!important}.fc tbody .fc-row .fc-content-skeleton{position:static;padding-bottom:0!important}.fc tbody .fc-row .fc-content-skeleton tbody tr:last-child td{padding-bottom:1em}.fc tbody .fc-row .fc-content-skeleton table{height:1em}.fc-more,.fc-more-cell{display:none!important}.fc tr.fc-limited{display:table-row!important}.fc td.fc-limited{display:table-cell!important}.fc-popover,.fc-timeGrid-view .fc-axis{display:none}.fc-slats,.fc-time-grid hr{display:none!important}.fc button,.fc-button-group,.fc-time-grid .fc-event .fc-time span{display:none}.fc-time-grid .fc-content-skeleton{position:static}.fc-time-grid .fc-content-skeleton table{height:4em}.fc-time-grid .fc-event-container{margin:0!important}.fc-time-grid .fc-event{position:static!important;margin:3px 2px!important}.fc-time-grid .fc-event.fc-not-end{border-bottom-width:1px!important}.fc-time-grid .fc-event.fc-not-start{border-top-width:1px!important}.fc-time-grid .fc-event .fc-time{white-space:normal!important}.fc-time-grid .fc-event .fc-time:after{content:attr(data-full)}.fc-day-grid-container,.fc-scroller,.fc-time-grid-container{overflow:visible!important;height:auto!important}.fc-row{border:0!important;margin:0!important}} -------------------------------------------------------------------------------- /src/grade/daygrid.min.css: -------------------------------------------------------------------------------- 1 | .fc-dayGridDay-view .fc-content-skeleton,.fc-dayGridWeek-view .fc-content-skeleton{padding-bottom:1em}.fc-dayGrid-view .fc-body .fc-row{min-height:4em}.fc-row.fc-rigid{overflow:hidden}.fc-row.fc-rigid .fc-content-skeleton{position:absolute;top:0;left:0;right:0}.fc-day-top.fc-other-month{opacity:.3}.fc-dayGrid-view .fc-day-number,.fc-dayGrid-view .fc-week-number{padding:2px}.fc-dayGrid-view th.fc-day-number,.fc-dayGrid-view th.fc-week-number{padding:0 2px}.fc-ltr .fc-dayGrid-view .fc-day-top .fc-day-number{float:right}.fc-rtl .fc-dayGrid-view .fc-day-top .fc-day-number{float:left}.fc-ltr .fc-dayGrid-view .fc-day-top .fc-week-number{float:left;border-radius:0 0 3px}.fc-rtl .fc-dayGrid-view .fc-day-top .fc-week-number{float:right;border-radius:0 0 0 3px}.fc-dayGrid-view .fc-day-top .fc-week-number{min-width:1.5em;text-align:center;background-color:#f2f2f2;color:grey}.fc-dayGrid-view td.fc-week-number{text-align:center}.fc-dayGrid-view td.fc-week-number>*{display:inline-block;min-width:1.25em} -------------------------------------------------------------------------------- /src/grade/google-calendar.js: -------------------------------------------------------------------------------- 1 | /*! 2 | FullCalendar Google Calendar Plugin v4.3.0 3 | Docs & License: https://fullcalendar.io/ 4 | (c) 2019 Adam Shaw 5 | */ 6 | 7 | (function (global, factory) { 8 | typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@fullcalendar/core')) : 9 | typeof define === 'function' && define.amd ? define(['exports', '@fullcalendar/core'], factory) : 10 | (global = global || self, factory(global.FullCalendarGoogleCalendar = {}, global.FullCalendar)); 11 | }(this, function (exports, core) { 'use strict'; 12 | 13 | /*! ***************************************************************************** 14 | Copyright (c) Microsoft Corporation. All rights reserved. 15 | Licensed under the Apache License, Version 2.0 (the "License"); you may not use 16 | this file except in compliance with the License. You may obtain a copy of the 17 | License at http://www.apache.org/licenses/LICENSE-2.0 18 | 19 | THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 20 | KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED 21 | WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, 22 | MERCHANTABLITY OR NON-INFRINGEMENT. 23 | 24 | See the Apache Version 2.0 License for specific language governing permissions 25 | and limitations under the License. 26 | ***************************************************************************** */ 27 | 28 | var __assign = function() { 29 | __assign = Object.assign || function __assign(t) { 30 | for (var s, i = 1, n = arguments.length; i < n; i++) { 31 | s = arguments[i]; 32 | for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 33 | } 34 | return t; 35 | }; 36 | return __assign.apply(this, arguments); 37 | }; 38 | 39 | // TODO: expose somehow 40 | var API_BASE = 'https://www.googleapis.com/calendar/v3/calendars'; 41 | var STANDARD_PROPS = { 42 | url: String, 43 | googleCalendarApiKey: String, 44 | googleCalendarId: String, 45 | data: null 46 | }; 47 | var eventSourceDef = { 48 | parseMeta: function (raw) { 49 | if (typeof raw === 'string') { 50 | raw = { url: raw }; 51 | } 52 | if (typeof raw === 'object') { 53 | var standardProps = core.refineProps(raw, STANDARD_PROPS); 54 | if (!standardProps.googleCalendarId && standardProps.url) { 55 | standardProps.googleCalendarId = parseGoogleCalendarId(standardProps.url); 56 | } 57 | delete standardProps.url; 58 | if (standardProps.googleCalendarId) { 59 | return standardProps; 60 | } 61 | } 62 | return null; 63 | }, 64 | fetch: function (arg, onSuccess, onFailure) { 65 | var calendar = arg.calendar; 66 | var meta = arg.eventSource.meta; 67 | var apiKey = meta.googleCalendarApiKey || calendar.opt('googleCalendarApiKey'); 68 | if (!apiKey) { 69 | onFailure({ 70 | message: 'Specify a googleCalendarApiKey. See http://fullcalendar.io/docs/google_calendar/' 71 | }); 72 | } 73 | else { 74 | var url = buildUrl(meta); 75 | var requestParams_1 = buildRequestParams(arg.range, apiKey, meta.data, calendar.dateEnv); 76 | core.requestJson('GET', url, requestParams_1, function (body, xhr) { 77 | if (body.error) { 78 | onFailure({ 79 | message: 'Google Calendar API: ' + body.error.message, 80 | errors: body.error.errors, 81 | xhr: xhr 82 | }); 83 | } 84 | else { 85 | onSuccess({ 86 | rawEvents: gcalItemsToRawEventDefs(body.items, requestParams_1.timeZone), 87 | xhr: xhr 88 | }); 89 | } 90 | }, function (message, xhr) { 91 | onFailure({ message: message, xhr: xhr }); 92 | }); 93 | } 94 | } 95 | }; 96 | function parseGoogleCalendarId(url) { 97 | var match; 98 | // detect if the ID was specified as a single string. 99 | // will match calendars like "asdf1234@calendar.google.com" in addition to person email calendars. 100 | if (/^[^\/]+@([^\/\.]+\.)*(google|googlemail|gmail)\.com$/.test(url)) { 101 | return url; 102 | } 103 | else if ((match = /^https:\/\/www.googleapis.com\/calendar\/v3\/calendars\/([^\/]*)/.exec(url)) || 104 | (match = /^https?:\/\/www.google.com\/calendar\/feeds\/([^\/]*)/.exec(url))) { 105 | return decodeURIComponent(match[1]); 106 | } 107 | } 108 | function buildUrl(meta) { 109 | return API_BASE + '/' + encodeURIComponent(meta.googleCalendarId) + '/events'; 110 | } 111 | function buildRequestParams(range, apiKey, extraParams, dateEnv) { 112 | var params; 113 | var startStr; 114 | var endStr; 115 | if (dateEnv.canComputeOffset) { 116 | // strings will naturally have offsets, which GCal needs 117 | startStr = dateEnv.formatIso(range.start); 118 | endStr = dateEnv.formatIso(range.end); 119 | } 120 | else { 121 | // when timezone isn't known, we don't know what the UTC offset should be, so ask for +/- 1 day 122 | // from the UTC day-start to guarantee we're getting all the events 123 | // (start/end will be UTC-coerced dates, so toISOString is okay) 124 | startStr = core.addDays(range.start, -1).toISOString(); 125 | endStr = core.addDays(range.end, 1).toISOString(); 126 | } 127 | params = __assign({}, (extraParams || {}), { key: apiKey, timeMin: startStr, timeMax: endStr, singleEvents: true, maxResults: 9999 }); 128 | if (dateEnv.timeZone !== 'local') { 129 | params.timeZone = dateEnv.timeZone; 130 | } 131 | return params; 132 | } 133 | function gcalItemsToRawEventDefs(items, gcalTimezone) { 134 | return items.map(function (item) { 135 | return gcalItemToRawEventDef(item, gcalTimezone); 136 | }); 137 | } 138 | function gcalItemToRawEventDef(item, gcalTimezone) { 139 | var url = item.htmlLink || null; 140 | // make the URLs for each event show times in the correct timezone 141 | if (url && gcalTimezone) { 142 | url = injectQsComponent(url, 'ctz=' + gcalTimezone); 143 | } 144 | return { 145 | id: item.id, 146 | title: item.summary, 147 | start: item.start.dateTime || item.start.date, 148 | end: item.end.dateTime || item.end.date, 149 | url: url, 150 | location: item.location, 151 | description: item.description, 152 | extendedProps: item.extendedProperties 153 | }; 154 | } 155 | // Injects a string like "arg=value" into the querystring of a URL 156 | // TODO: move to a general util file? 157 | function injectQsComponent(url, component) { 158 | // inject it after the querystring but before the fragment 159 | return url.replace(/(\?.*?)?(#|$)/, function (whole, qs, hash) { 160 | return (qs ? qs + '&' : '?') + component + hash; 161 | }); 162 | } 163 | var main = core.createPlugin({ 164 | eventSourceDefs: [eventSourceDef] 165 | }); 166 | 167 | exports.default = main; 168 | 169 | Object.defineProperty(exports, '__esModule', { value: true }); 170 | 171 | })); 172 | -------------------------------------------------------------------------------- /src/grade/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Python Brasil 2019 - Programação 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 |
21 |
22 | 28 | 29 |
30 | 31 | × 32 | 33 | 34 |
35 |

36 |

37 |

38 |

Lorem ipsum, dolor sit amet consectetur adipisicing elit. Facere expedita nesciunt quos, illum sint amet illo, a ipsam officiis porro libero nihil delectus architecto quas praesentium ratione totam perferendis maiores.

39 |
40 |
41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /src/grade/list.min.css: -------------------------------------------------------------------------------- 1 | .fc-event-dot{display:inline-block;width:10px;height:10px;border-radius:5px}.fc-rtl .fc-list-view{direction:rtl}.fc-list-view{border-width:1px;border-style:solid}.fc .fc-list-table{table-layout:auto}.fc-list-table td{border-width:1px 0 0;padding:8px 14px}.fc-list-table tr:first-child td{border-top-width:0}.fc-list-heading{border-bottom-width:1px}.fc-list-heading td{font-weight:700}.fc-ltr .fc-list-heading-main{float:left}.fc-ltr .fc-list-heading-alt,.fc-rtl .fc-list-heading-main{float:right}.fc-rtl .fc-list-heading-alt{float:left}.fc-list-item.fc-has-url{cursor:pointer}.fc-list-item-marker,.fc-list-item-time{white-space:nowrap;width:1px}.fc-ltr .fc-list-item-marker{padding-right:0}.fc-rtl .fc-list-item-marker{padding-left:0}.fc-list-item-title a{text-decoration:none;color:inherit}.fc-list-item-title a[href]:hover{text-decoration:underline}.fc-list-empty-wrap2{position:absolute;top:0;left:0;right:0;bottom:0}.fc-list-empty-wrap1{width:100%;height:100%;display:table}.fc-list-empty{display:table-cell;vertical-align:middle;text-align:center}.fc-unthemed .fc-list-empty{background-color:#eee} -------------------------------------------------------------------------------- /src/grade/list.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | FullCalendar List View Plugin v4.3.0 3 | Docs & License: https://fullcalendar.io/ 4 | (c) 2019 Adam Shaw 5 | */ 6 | !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@fullcalendar/core")):"function"==typeof define&&define.amd?define(["exports","@fullcalendar/core"],t):t((e=e||self).FullCalendarList={},e.FullCalendar)}(this,function(e,t){"use strict";var n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)};function r(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}var s=function(e){function n(t){var n=e.call(this,t.context)||this;return n.listView=t,n}return r(n,e),n.prototype.attachSegs=function(e){e.length?this.listView.renderSegList(e):this.listView.renderEmptyMessage()},n.prototype.detachSegs=function(){},n.prototype.renderSegHtml=function(e){var n,r=this.context,s=r.view,a=r.theme,i=e.eventRange,o=i.def,l=i.instance,d=i.ui,c=o.url,p=["fc-list-item"].concat(d.classNames),h=d.backgroundColor;return n=o.allDay?t.getAllDayHtml(s):t.isMultiDayRange(i.range)?e.isStart?t.htmlEscape(this._getTimeText(l.range.start,e.end,!1)):e.isEnd?t.htmlEscape(this._getTimeText(e.start,l.range.end,!1)):t.getAllDayHtml(s):t.htmlEscape(this.getTimeText(i)),c&&p.push("fc-has-url"),''+(this.displayEventTime?''+(n||"")+"":"")+'"+t.htmlEscape(o.title||"")+""},n.prototype.computeEventTimeFormat=function(){return{hour:"numeric",minute:"2-digit",meridiem:"short"}},n}(t.FgEventRenderer),a=function(e){function n(n,r,a,o){var l=e.call(this,n,r,a,o)||this;l.computeDateVars=t.memoize(i),l.eventStoreToSegs=t.memoize(l._eventStoreToSegs);var d=l.eventRenderer=new s(l);l.renderContent=t.memoizeRendering(d.renderSegs.bind(d),d.unrender.bind(d)),l.el.classList.add("fc-list-view");for(var c=0,p=(l.theme.getClass("listView")||"").split(" ");c
'+t.htmlEscape(this.opt("noEventsMessage"))+"
"},n.prototype.renderSegList=function(e){var n,r,s,a=this.groupSegsByDay(e),i=t.htmlToElement('
'),o=i.querySelector("tbody");for(n=0;n'+(r?t.buildGotoAnchorHtml(this,e,{class:"fc-list-heading-main"},t.htmlEscape(n.format(e,r))):"")+(s?t.buildGotoAnchorHtml(this,e,{class:"fc-list-heading-alt"},t.htmlEscape(n.format(e,s))):"")+"")},n}(t.View);function i(e){for(var n=t.startOfDay(e.renderRange.start),r=e.renderRange.end,s=[],a=[];na, 29 | footer>a:visited { 30 | color: white; 31 | font-size: 16px; 32 | text-decoration: underline; 33 | } 34 | 35 | .footer-title { 36 | font-size: 20px; 37 | margin: 0 20px; 38 | text-decoration: none; 39 | } 40 | 41 | .footer-title :visited { 42 | color: white; 43 | } 44 | 45 | .space { 46 | flex-grow: 1; 47 | } 48 | 49 | .python-logo { 50 | width: 30px; 51 | height: 30px; 52 | } 53 | 54 | .made-with { 55 | text-align: right; 56 | font-size: 12px; 57 | font-family: 'Roboto Mono', monospace; 58 | } 59 | 60 | .made-with a, 61 | .made-with a:active { 62 | text-decoration: underline; 63 | color: white; 64 | } 65 | 66 | .made-with a:hover { 67 | text-decoration: none; 68 | } 69 | 70 | .made-with span { 71 | color: #f56b6b; 72 | } 73 | 74 | .fc-list-item-title { 75 | display: flex; 76 | flex-direction: row; 77 | justify-content: space-between; 78 | } 79 | 80 | .meta { 81 | font-family: "Lucida Console", Monaco, monospace; 82 | font-size: 14px; 83 | display: flex; 84 | justify-content: space-between; 85 | } 86 | 87 | .speaker { 88 | color: rgb(97, 88, 25); 89 | background: #FFDC00; 90 | padding: 2px 6px; 91 | border-radius: 4px; 92 | margin-right: 20px; 93 | } 94 | 95 | .room { 96 | color: #7FDBFF; 97 | background: #001f3f; 98 | padding: 2px 6px; 99 | border-radius: 4px; 100 | } 101 | 102 | .overlay { 103 | /* Height & width depends on how you want to reveal the overlay (see JS below) */ 104 | height: 100%; 105 | width: 100%; 106 | display: none; 107 | position: fixed; 108 | /* Stay in place */ 109 | z-index: 1; 110 | /* Sit on top */ 111 | left: 0; 112 | top: 0; 113 | background-color: rgb(255, 255, 255); 114 | /* Black fallback color */ 115 | /* background-color: rgba(255, 255, 255, 0.9); */ 116 | /* Black w/opacity */ 117 | overflow-x: hidden; 118 | /* Disable horizontal scroll */ 119 | transition: 0.5s; 120 | /* 0.5 second transition effect to slide in or slide down the overlay (height or width, depending on reveal) */ 121 | } 122 | 123 | #overlay-title { 124 | padding-right: 35px; 125 | } 126 | 127 | .overlay-content { 128 | margin: auto; 129 | width: 80%; 130 | } 131 | 132 | .overlay .close-full-detail { 133 | position: absolute; 134 | top: 20px; 135 | right: 45px; 136 | font-size: 60px; 137 | } 138 | 139 | #overlay-author, 140 | #overlay-room { 141 | padding: 4px 8px; 142 | } 143 | 144 | @media only screen and (max-width: 600px) { 145 | .fc-list-item { 146 | display: flex; 147 | flex-direction: column; 148 | } 149 | .fc-list-item-marker { 150 | display: none; 151 | } 152 | .fc-list-item-time, 153 | .fc-list-item-title { 154 | border-width: 0; 155 | } 156 | .fc-list-item-title { 157 | flex-direction: column; 158 | } 159 | .fc-list-item td:last-child { 160 | border-bottom-width: 1px !important; 161 | } 162 | .fc-list-table td { 163 | border-width: 0; 164 | } 165 | .meta { 166 | margin-top: 10px; 167 | } 168 | .speaker { 169 | margin-right: 0; 170 | } 171 | } -------------------------------------------------------------------------------- /src/grade/timegrid.min.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8";.fc-timeGrid-view .fc-day-grid{position:relative;z-index:2}.fc-timeGrid-view .fc-day-grid .fc-row{min-height:3em}.fc-timeGrid-view .fc-day-grid .fc-row .fc-content-skeleton{padding-bottom:1em}.fc .fc-axis{vertical-align:middle;padding:0 4px;white-space:nowrap}.fc-ltr .fc-axis{text-align:right}.fc-rtl .fc-axis{text-align:left}.fc-time-grid,.fc-time-grid-container{position:relative;z-index:1}.fc-time-grid{min-height:100%}.fc-time-grid table{border:0 hidden transparent}.fc-time-grid>.fc-bg{z-index:1}.fc-time-grid .fc-slats,.fc-time-grid>hr{position:relative;z-index:2}.fc-time-grid .fc-content-col{position:relative}.fc-time-grid .fc-content-skeleton{position:absolute;z-index:3;top:0;left:0;right:0}.fc-time-grid .fc-business-container{position:relative;z-index:1}.fc-time-grid .fc-bgevent-container{position:relative;z-index:2}.fc-time-grid .fc-highlight-container{z-index:3;position:relative}.fc-time-grid .fc-event-container{position:relative;z-index:4}.fc-time-grid .fc-now-indicator-line{z-index:5}.fc-time-grid .fc-mirror-container{position:relative;z-index:6}.fc-time-grid .fc-slats td{height:1.5em;border-bottom:0}.fc-time-grid .fc-slats .fc-minor td{border-top-style:dotted}.fc-time-grid .fc-highlight{position:absolute;left:0;right:0}.fc-ltr .fc-time-grid .fc-event-container{margin:0 2.5% 0 2px}.fc-rtl .fc-time-grid .fc-event-container{margin:0 2px 0 2.5%}.fc-time-grid .fc-bgevent,.fc-time-grid .fc-event{position:absolute;z-index:1}.fc-time-grid .fc-bgevent{left:0;right:0}.fc-time-grid-event{margin-bottom:1px}.fc-time-grid-event-inset{-webkit-box-shadow:0 0 0 1px #fff;box-shadow:0 0 0 1px #fff}.fc-time-grid-event.fc-not-start{border-top-width:0;padding-top:1px;border-top-left-radius:0;border-top-right-radius:0}.fc-time-grid-event.fc-not-end{border-bottom-width:0;padding-bottom:1px;border-bottom-left-radius:0;border-bottom-right-radius:0}.fc-time-grid-event .fc-content{overflow:hidden;max-height:100%}.fc-time-grid-event .fc-time,.fc-time-grid-event .fc-title{padding:0 1px}.fc-time-grid-event .fc-time{font-size:.85em;white-space:nowrap}.fc-time-grid-event.fc-short .fc-content{white-space:nowrap}.fc-time-grid-event.fc-short .fc-time,.fc-time-grid-event.fc-short .fc-title{display:inline-block;vertical-align:top}.fc-time-grid-event.fc-short .fc-time span{display:none}.fc-time-grid-event.fc-short .fc-time:before{content:attr(data-start)}.fc-time-grid-event.fc-short .fc-time:after{content:" - "}.fc-time-grid-event.fc-short .fc-title{font-size:.85em;padding:0}.fc-time-grid-event.fc-allow-mouse-resize .fc-resizer{left:0;right:0;bottom:0;height:8px;overflow:hidden;line-height:8px;font-size:11px;font-family:monospace;text-align:center;cursor:s-resize}.fc-time-grid-event.fc-allow-mouse-resize .fc-resizer:after{content:"="}.fc-time-grid-event.fc-selected .fc-resizer{border-radius:5px;border-width:1px;width:8px;height:8px;border-style:solid;border-color:inherit;background:#fff;left:50%;margin-left:-5px;bottom:-5px}.fc-time-grid .fc-now-indicator-line{border-top-width:1px;left:0;right:0}.fc-time-grid .fc-now-indicator-arrow{margin-top:-5px}.fc-ltr .fc-time-grid .fc-now-indicator-arrow{left:0;border-width:5px 0 5px 6px;border-top-color:transparent;border-bottom-color:transparent}.fc-rtl .fc-time-grid .fc-now-indicator-arrow{right:0;border-width:5px 6px 5px 0;border-top-color:transparent;border-bottom-color:transparent} -------------------------------------------------------------------------------- /src/grade/timegrid.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | FullCalendar Time Grid Plugin v4.3.0 3 | Docs & License: https://fullcalendar.io/ 4 | (c) 2019 Adam Shaw 5 | */ 6 | !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@fullcalendar/core"),require("@fullcalendar/daygrid")):"function"==typeof define&&define.amd?define(["exports","@fullcalendar/core","@fullcalendar/daygrid"],t):t((e=e||self).FullCalendarTimeGrid={},e.FullCalendar,e.FullCalendarDayGrid)}(this,function(e,t,r){"use strict";var i=function(e,t){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(e,t)};function n(e,t){function r(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}var o=function(){return(o=Object.assign||function(e){for(var t,r=1,i=arguments.length;r
'+(i?'
'+t.htmlEscape(i)+"
":"")+(l.title?'
'+t.htmlEscape(l.title)+"
":"")+"
"+(p?'
':"")+""},r.prototype.computeSegHorizontals=function(e){var t,r,i;if(function(e){var t,r,i,n,o;for(t=0;t0&&n.el.classList.add("fc-time-grid-event-inset"),n.eventRange.def.title&&n.bottom-n.top<30&&n.el.classList.add("fc-short")}},r.prototype.generateSegCss=function(e){var t,r,i=this.context.options.slotEventOverlap,n=e.backwardCoord,o=e.forwardCoord,s=this.timeGrid.generateSegVerticalCss(e),a=this.timeGrid.isRtl;return i&&(o=Math.min(1,n+2*(o-n))),a?(t=1-o,r=n):(t=n,r=1-o),s.zIndex=e.level+1,s.left=100*t+"%",s.right=100*r+"%",i&&e.forwardPressure&&(s[a?"marginLeft":"marginRight"]=20),s},r}(t.FgEventRenderer);function a(e){var t,r,i=e.forwardSegs,n=0;if(void 0===e.forwardPressure){for(t=0;to.top&&n.top
',o.rootBgContainerEl=i.querySelector(".fc-bg"),o.slatContainerEl=i.querySelector(".fc-slats"),o.bottomRuleEl=i.querySelector(".fc-divider"),o.renderProps=n,o}return n(i,e),i.prototype.processOptions=function(){var e,r,i=this.opt("slotDuration"),n=this.opt("snapDuration");i=t.createDuration(i),n=n?t.createDuration(n):i,null===(e=t.wholeDivideDurations(i,n))&&(n=i,e=1),this.slotDuration=i,this.snapDuration=n,this.snapsPerSlot=e,r=this.opt("slotLabelFormat"),Array.isArray(r)&&(r=r[r.length-1]),this.labelFormat=t.createFormatter(r||{hour:"numeric",minute:"2-digit",omitZeroMinute:!0,meridiem:"short"}),r=this.opt("slotLabelInterval"),this.labelInterval=r?t.createDuration(r):this.computeLabelInterval(i)},i.prototype.computeLabelInterval=function(e){var r,i,n;for(r=u.length-1;r>=0;r--)if(i=t.createDuration(u[r]),null!==(n=t.wholeDivideDurations(i,e))&&n>1)return i;return e},i.prototype.render=function(e){var t=e.cells;this.colCnt=t.length,this.renderSlats(e.dateProfile),this.renderColumns(e.cells,e.dateProfile),this.renderBusinessHours(e.businessHourSegs),this.renderDateSelection(e.dateSelectionSegs),this.renderFgEvents(e.fgEventSegs),this.renderBgEvents(e.bgEventSegs),this.renderEventSelection(e.eventSelection),this.renderEventDrag(e.eventDrag),this.renderEventResize(e.eventResize)},i.prototype.destroy=function(){e.prototype.destroy.call(this),this.renderSlats.unrender(),this.renderColumns.unrender()},i.prototype.updateSize=function(e){var t=this.fillRenderer,r=this.eventRenderer,i=this.mirrorRenderer;(e||this.isSlatSizesDirty)&&(this.buildSlatPositions(),this.isSlatSizesDirty=!1),(e||this.isColSizesDirty)&&(this.buildColPositions(),this.isColSizesDirty=!1),t.computeSizes(e),r.computeSizes(e),i.computeSizes(e),t.assignSizes(e),r.assignSizes(e),i.assignSizes(e)},i.prototype._renderSlats=function(e){var r=this.theme;this.slatContainerEl.innerHTML=''+this.renderSlatRowHtml(e)+"
",this.slatEls=t.findElements(this.slatContainerEl,"tr"),this.slatPositions=new t.PositionCache(this.el,this.slatEls,!1,!0),this.isSlatSizesDirty=!0},i.prototype.renderSlatRowHtml=function(e){for(var r,i,n,o=this.dateEnv,s=this.theme,a=this.isRtl,l="",d=t.startOfDay(e.renderRange.start),c=e.minTime,h=t.createDuration(0);t.asRoughMs(c)'+(i?""+t.htmlEscape(o.format(r,this.labelFormat))+"":"")+"",l+='"+(a?"":n)+''+(a?n:"")+"",c=t.addDurations(c,this.slotDuration),h=t.addDurations(h,this.slotDuration);return l},i.prototype._renderColumns=function(e,i){var n=this.theme,o=this.dateEnv,s=this.view,a=new r.DayBgRow(this.context);this.rootBgContainerEl.innerHTML=''+a.renderHtml({cells:e,dateProfile:i,renderIntroHtml:this.renderProps.renderBgIntroHtml})+"
",this.colEls=t.findElements(this.el,".fc-day, .fc-disabled-day");for(var l=0;l
');this.isRtl&&r.reverse(),e=this.contentSkeletonEl=t.htmlToElement('
'+r.join("")+"
"),this.colContainerEls=t.findElements(e,".fc-content-col"),this.mirrorContainerEls=t.findElements(e,".fc-mirror-container"),this.fgContainerEls=t.findElements(e,".fc-event-container:not(.fc-mirror-container)"),this.bgContainerEls=t.findElements(e,".fc-bgevent-container"),this.highlightContainerEls=t.findElements(e,".fc-highlight-container"),this.businessContainerEls=t.findElements(e,".fc-business-container"),this.isRtl&&(this.colContainerEls.reverse(),this.mirrorContainerEls.reverse(),this.fgContainerEls.reverse(),this.bgContainerEls.reverse(),this.highlightContainerEls.reverse(),this.businessContainerEls.reverse()),this.el.appendChild(e)},i.prototype.unrenderContentSkeleton=function(){t.removeElement(this.contentSkeletonEl)},i.prototype.groupSegsByCol=function(e){var t,r=[];for(t=0;t0){var a=t.createElement("div",{className:"fc-now-indicator fc-now-indicator-arrow"});a.style.top=n+"px",this.contentSkeletonEl.appendChild(a),o.push(a)}this.nowIndicatorEls=o}},i.prototype.unrenderNowIndicator=function(){this.nowIndicatorEls&&(this.nowIndicatorEls.forEach(t.removeElement),this.nowIndicatorEls=null)},i.prototype.getTotalSlatHeight=function(){return this.slatContainerEl.getBoundingClientRect().height},i.prototype.computeDateTop=function(e,r){return r||(r=t.startOfDay(e)),this.computeTimeTop(t.createDuration(e.valueOf()-r.valueOf()))},i.prototype.computeTimeTop=function(e){var r,i,n=this.slatEls.length,o=this.props.dateProfile,s=(e.milliseconds-t.asRoughMs(o.minTime))/t.asRoughMs(this.slotDuration);return s=Math.max(0,s),s=Math.min(n,s),r=Math.floor(s),i=s-(r=Math.min(r,n-1)),this.slatPositions.tops[r]+this.slatPositions.getHeight(r)*i},i.prototype.computeSegVerticals=function(e){var t,r,i,n=this.opt("timeGridEventMinHeight");for(t=0;t"+t.buildGotoAnchorHtml(a,{date:o.start,type:"week",forceOff:s>1},t.htmlEscape(e))+""):'"},a.renderTimeGridBgIntroHtml=function(){return'"},a.renderTimeGridIntroHtml=function(){return'"},a.renderDayGridBgIntroHtml=function(){return'"+t.getAllDayHtml(a)+""},a.renderDayGridIntroHtml=function(){return'"},a.el.classList.add("fc-timeGrid-view"),a.el.innerHTML=a.renderSkeletonHtml(),a.scroller=new t.ScrollComponent("hidden","auto");var l=a.scroller.el;a.el.querySelector(".fc-body > tr > td").appendChild(l),l.classList.add("fc-time-grid-container");var d=t.createElement("div",{className:"fc-time-grid"});if(l.appendChild(d),a.timeGrid=new p(a.context,d,{renderBgIntroHtml:a.renderTimeGridBgIntroHtml,renderIntroHtml:a.renderTimeGridIntroHtml}),a.opt("allDaySlot")){a.dayGrid=new r.DayGrid(a.context,a.el.querySelector(".fc-day-grid"),{renderNumberIntroHtml:a.renderDayGridIntroHtml,renderBgIntroHtml:a.renderDayGridBgIntroHtml,renderIntroHtml:a.renderDayGridIntroHtml,colWeekNumbersVisible:!1,cellWeekNumbersVisible:!1});var c=a.el.querySelector(".fc-divider");a.dayGrid.bottomCoordPadding=c.getBoundingClientRect().height}return a}return n(i,e),i.prototype.destroy=function(){e.prototype.destroy.call(this),this.timeGrid.destroy(),this.dayGrid&&this.dayGrid.destroy(),this.scroller.destroy()},i.prototype.renderSkeletonHtml=function(){var e=this.theme;return''+(this.opt("columnHeader")?'':"")+'
 
'+(this.opt("allDaySlot")?'

':"")+"
"},i.prototype.getNowIndicatorUnit=function(){return this.timeGrid.getNowIndicatorUnit()},i.prototype.unrenderNowIndicator=function(){this.timeGrid.unrenderNowIndicator()},i.prototype.updateSize=function(t,r,i){e.prototype.updateSize.call(this,t,r,i),this.timeGrid.updateSize(t),this.dayGrid&&this.dayGrid.updateSize(t)},i.prototype.updateBaseSize=function(e,r,i){var n,o,s,a=this;if(this.axisWidth=t.matchCellWidths(t.findElements(this.el,".fc-axis")),this.timeGrid.colEls){var l=t.findElements(this.el,".fc-row").filter(function(e){return!a.scroller.el.contains(e)});this.timeGrid.bottomRuleEl.style.display="none",this.scroller.clear(),l.forEach(t.uncompensateScroll),this.dayGrid&&(this.dayGrid.removeSegPopover(),(n=this.opt("eventLimit"))&&"number"!=typeof n&&(n=5),n&&this.dayGrid.limitRows(n)),i||(o=this.computeScrollerHeight(r),this.scroller.setHeight(o),((s=this.scroller.getScrollbarWidths()).left||s.right)&&(l.forEach(function(e){t.compensateScroll(e,s)}),o=this.computeScrollerHeight(r),this.scroller.setHeight(o)),this.scroller.lockOverflow(s),this.timeGrid.getTotalSlatHeight()0007-desert-plant-cactus -------------------------------------------------------------------------------- /src/images/ccrp.svg: -------------------------------------------------------------------------------- 1 | 009-CCRP -------------------------------------------------------------------------------- /src/images/dinosaur.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/images/download-on-appstore.svg: -------------------------------------------------------------------------------- 1 | 2 | Download_on_the_App_Store_Badge_PTBR_RGB_blk_4SVG_source_092917 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /src/images/entities/GitHub_Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/entities/GitHub_Logo.png -------------------------------------------------------------------------------- /src/images/entities/PSF-Logo-Narrow-Shapes.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 147 | 148 | 149 | 150 | 151 | -------------------------------------------------------------------------------- /src/images/entities/apyb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/entities/apyb.png -------------------------------------------------------------------------------- /src/images/entities/estacio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/entities/estacio.png -------------------------------------------------------------------------------- /src/images/entities/grupozap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/entities/grupozap.png -------------------------------------------------------------------------------- /src/images/entities/labcodes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/entities/labcodes.png -------------------------------------------------------------------------------- /src/images/entities/loadsmart-logo-horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/entities/loadsmart-logo-horizontal.png -------------------------------------------------------------------------------- /src/images/entities/logo-evolux.svg: -------------------------------------------------------------------------------- 1 | logo-evolux -------------------------------------------------------------------------------- /src/images/entities/logo-idtrust.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/entities/logo-idtrust.png -------------------------------------------------------------------------------- /src/images/entities/logo_globo_com.svg: -------------------------------------------------------------------------------- 1 | 2 | image/svg+xml -------------------------------------------------------------------------------- /src/images/entities/olist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/entities/olist.png -------------------------------------------------------------------------------- /src/images/entities/placeholder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/entities/placeholder.png -------------------------------------------------------------------------------- /src/images/entities/stoodi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/entities/stoodi.png -------------------------------------------------------------------------------- /src/images/entities/usp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/entities/usp.png -------------------------------------------------------------------------------- /src/images/entities/whatsgood.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/entities/whatsgood.png -------------------------------------------------------------------------------- /src/images/facebook.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/fotos/alexandre_villares.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/alexandre_villares.jpeg -------------------------------------------------------------------------------- /src/images/fotos/alexis_jawtuschenko.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/alexis_jawtuschenko.jpeg -------------------------------------------------------------------------------- /src/images/fotos/amanda_savluchinske.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/amanda_savluchinske.jpeg -------------------------------------------------------------------------------- /src/images/fotos/anicely_santos.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/anicely_santos.jpeg -------------------------------------------------------------------------------- /src/images/fotos/arthur_fortes.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/arthur_fortes.jpeg -------------------------------------------------------------------------------- /src/images/fotos/barbara_barbosa_claudino.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/barbara_barbosa_claudino.jpeg -------------------------------------------------------------------------------- /src/images/fotos/bernardo_fontes.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/bernardo_fontes.jpeg -------------------------------------------------------------------------------- /src/images/fotos/betina_costa.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/betina_costa.jpeg -------------------------------------------------------------------------------- /src/images/fotos/bruno_evangelista.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/bruno_evangelista.jpeg -------------------------------------------------------------------------------- /src/images/fotos/bruno_franca.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/bruno_franca.jpeg -------------------------------------------------------------------------------- /src/images/fotos/camilla_martins.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/camilla_martins.jpeg -------------------------------------------------------------------------------- /src/images/fotos/daniele_tavares.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/daniele_tavares.jpeg -------------------------------------------------------------------------------- /src/images/fotos/danielle_monteiro.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/danielle_monteiro.jpeg -------------------------------------------------------------------------------- /src/images/fotos/david_cosac.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/david_cosac.jpeg -------------------------------------------------------------------------------- /src/images/fotos/diego_guimaraes.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/diego_guimaraes.jpeg -------------------------------------------------------------------------------- /src/images/fotos/eder_martins.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/eder_martins.jpeg -------------------------------------------------------------------------------- /src/images/fotos/emanuel_lima.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/emanuel_lima.jpeg -------------------------------------------------------------------------------- /src/images/fotos/felipe_fernandes.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/felipe_fernandes.jpeg -------------------------------------------------------------------------------- /src/images/fotos/felipe_videira.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/felipe_videira.jpeg -------------------------------------------------------------------------------- /src/images/fotos/fernando_masanori.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/fernando_masanori.jpeg -------------------------------------------------------------------------------- /src/images/fotos/filipe_ximenes.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/filipe_ximenes.jpeg -------------------------------------------------------------------------------- /src/images/fotos/flavio_juvenal.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/flavio_juvenal.jpeg -------------------------------------------------------------------------------- /src/images/fotos/gabriel_bellon.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/gabriel_bellon.jpeg -------------------------------------------------------------------------------- /src/images/fotos/giana_de_almeida.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/giana_de_almeida.jpeg -------------------------------------------------------------------------------- /src/images/fotos/grupo_de_estudos_em_data_science.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/grupo_de_estudos_em_data_science.jpeg -------------------------------------------------------------------------------- /src/images/fotos/guilherme_garnier.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/guilherme_garnier.jpeg -------------------------------------------------------------------------------- /src/images/fotos/gustavo_carvalho.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/gustavo_carvalho.jpeg -------------------------------------------------------------------------------- /src/images/fotos/henrique_bastos.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/henrique_bastos.jpeg -------------------------------------------------------------------------------- /src/images/fotos/ingrid_sena.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/ingrid_sena.jpeg -------------------------------------------------------------------------------- /src/images/fotos/jessica_bonson.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/jessica_bonson.jpeg -------------------------------------------------------------------------------- /src/images/fotos/joao_daher.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/joao_daher.jpeg -------------------------------------------------------------------------------- /src/images/fotos/juliana_karoline.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/juliana_karoline.jpeg -------------------------------------------------------------------------------- /src/images/fotos/juliany_raiol.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/juliany_raiol.jpeg -------------------------------------------------------------------------------- /src/images/fotos/katia_nakamura.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/katia_nakamura.jpeg -------------------------------------------------------------------------------- /src/images/fotos/leonardo_belluzzi.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/leonardo_belluzzi.jpeg -------------------------------------------------------------------------------- /src/images/fotos/leonardo_rochael.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/leonardo_rochael.jpeg -------------------------------------------------------------------------------- /src/images/fotos/lidiane_monteiro.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/lidiane_monteiro.jpeg -------------------------------------------------------------------------------- /src/images/fotos/maria_fernanda.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/maria_fernanda.jpeg -------------------------------------------------------------------------------- /src/images/fotos/mariana_albuquerque.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/mariana_albuquerque.jpeg -------------------------------------------------------------------------------- /src/images/fotos/matheus_hernandes.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/matheus_hernandes.jpeg -------------------------------------------------------------------------------- /src/images/fotos/melissa_weber.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/melissa_weber.jpeg -------------------------------------------------------------------------------- /src/images/fotos/nelson_nolasco.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/nelson_nolasco.jpeg -------------------------------------------------------------------------------- /src/images/fotos/patricia_guisordi.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/patricia_guisordi.jpeg -------------------------------------------------------------------------------- /src/images/fotos/paulo_santana.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/paulo_santana.jpeg -------------------------------------------------------------------------------- /src/images/fotos/pietra_freitas.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/pietra_freitas.jpeg -------------------------------------------------------------------------------- /src/images/fotos/pyladies_brasil.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/pyladies_brasil.jpeg -------------------------------------------------------------------------------- /src/images/fotos/pyladies_manaus.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/pyladies_manaus.jpeg -------------------------------------------------------------------------------- /src/images/fotos/rafael_calixto.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/rafael_calixto.jpeg -------------------------------------------------------------------------------- /src/images/fotos/rafael_henrique.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/rafael_henrique.jpeg -------------------------------------------------------------------------------- /src/images/fotos/rebeca_sarai.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/rebeca_sarai.jpeg -------------------------------------------------------------------------------- /src/images/fotos/renne_rocha.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/renne_rocha.jpeg -------------------------------------------------------------------------------- /src/images/fotos/rodrigo_mendonca.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/rodrigo_mendonca.jpeg -------------------------------------------------------------------------------- /src/images/fotos/ryllari_santana.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/ryllari_santana.jpeg -------------------------------------------------------------------------------- /src/images/fotos/sam_agnew.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/sam_agnew.jpeg -------------------------------------------------------------------------------- /src/images/fotos/thais_almeida.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/thais_almeida.jpeg -------------------------------------------------------------------------------- /src/images/fotos/tyrone_damasceno.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/tyrone_damasceno.jpeg -------------------------------------------------------------------------------- /src/images/fotos/william_oliveira.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/william_oliveira.jpeg -------------------------------------------------------------------------------- /src/images/fotos/yan_orestes.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/fotos/yan_orestes.jpeg -------------------------------------------------------------------------------- /src/images/google-play-badge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/google-play-badge.png -------------------------------------------------------------------------------- /src/images/hayline.svg: -------------------------------------------------------------------------------- 1 | 008-hayline-icon -------------------------------------------------------------------------------- /src/images/hotels/taiwan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/hotels/taiwan.png -------------------------------------------------------------------------------- /src/images/instagram.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/keynotes/carol-willing.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/keynotes/carol-willing.jpg -------------------------------------------------------------------------------- /src/images/keynotes/debora-azevedo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/keynotes/debora-azevedo.jpg -------------------------------------------------------------------------------- /src/images/keynotes/felipemorais.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/keynotes/felipemorais.jpg -------------------------------------------------------------------------------- /src/images/keynotes/laisvarejao.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/keynotes/laisvarejao.jpg -------------------------------------------------------------------------------- /src/images/keynotes/lorenamesa.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/keynotes/lorenamesa.jpg -------------------------------------------------------------------------------- /src/images/keynotes/luciano-ramalho.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/keynotes/luciano-ramalho.jpg -------------------------------------------------------------------------------- /src/images/linkedin.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/logo_python_2019.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/logo_python_2019.png -------------------------------------------------------------------------------- /src/images/logo_python_2019_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/logo_python_2019_white.png -------------------------------------------------------------------------------- /src/images/main_logo_ribeirao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/main_logo_ribeirao.png -------------------------------------------------------------------------------- /src/images/py-logo-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/py-logo-white.png -------------------------------------------------------------------------------- /src/images/pylogo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 11 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /src/images/python_brasil_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/python_brasil_logo.png -------------------------------------------------------------------------------- /src/images/python_brasil_logo_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/images/python_brasil_logo_white.png -------------------------------------------------------------------------------- /src/images/twitter.svg: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | -------------------------------------------------------------------------------- /src/sass/appbanner.sass: -------------------------------------------------------------------------------- 1 | .app-banners-container 2 | display: flex 3 | justify-content: center 4 | align-items: center 5 | position: relative 6 | z-index: 2 7 | width: 100% 8 | .app-banners 9 | padding: 10px 10 | background-color: $orange 11 | color: white 12 | display: flex 13 | flex-wrap: wrap 14 | justify-content: center 15 | align-items: center 16 | p 17 | margin: 0 18 | font-size: 16px 19 | 20 | @media (min-width: 1024px) 21 | text-align: center 22 | flex-wrap: nowrap 23 | padding: 10px 30px 24 | border-radius: 50px 25 | 26 | .stores-banners 27 | display: flex 28 | justify-content: center 29 | align-items: center 30 | flex-wrap: wrap 31 | @media (min-width: 1024px) 32 | flex-wrap: nowrap 33 | padding-left: 20px 34 | 35 | img 36 | display: block 37 | width: 150px 38 | @media(min-width: 1024px) 39 | width: 200px 40 | 41 | height: auto 42 | flex: 1 43 | &.apple 44 | width: 120px 45 | @media(min-width: 1024px) 46 | width: 165px 47 | -------------------------------------------------------------------------------- /src/sass/colors.sass: -------------------------------------------------------------------------------- 1 | $orange: #e86d4b 2 | $orange-two: #f0a85e 3 | $orange-three: #f1ba91 4 | $orange-four: #ce6e56 5 | 6 | $yellow: #fdf0be 7 | $yellow-two: #fcf2d1 8 | $yellow-three: #fbf3e4 9 | 10 | $black: #28223e 11 | 12 | $blue-two: #26203a 13 | 14 | $gray-one: #dddde5 -------------------------------------------------------------------------------- /src/sass/main.sass: -------------------------------------------------------------------------------- 1 | .main 2 | background: $orange 3 | background-image: linear-gradient(to bottom, #f1ba91 30%, #f0a85e) 4 | min-height: 650px 5 | position: relative 6 | 7 | .main-button 8 | position: absolute 9 | bottom: 25% 10 | width: 100% 11 | > a.button 12 | background: $orange 13 | padding: 15px 14 | color: $black 15 | font-size: 25px 16 | display: block 17 | text-align: center 18 | border-radius: 50px 19 | text-decoration: none 20 | width: 300px 21 | margin: 0 auto 22 | 23 | .nav-mobile 24 | width: 50px 25 | height: 50px 26 | border-radius: 50% 27 | background: $black 28 | position: fixed 29 | right: 20px 30 | top: 20px 31 | cursor: pointer 32 | z-index: 10px 33 | 34 | &.close > .hamburguer 35 | background: transparent 36 | 37 | &:after 38 | top: 0px 39 | transform: rotateZ(-45deg) 40 | 41 | &:before 42 | top: 0px 43 | transform: rotateZ(45deg) 44 | 45 | .hamburguer 46 | height: 4px 47 | margin: 0 auto 48 | background: #fdf2dc 49 | width: 20px 50 | position: relative 51 | top: calc(50% - 2px) 52 | 53 | &:before, &:after 54 | content: ' ' 55 | position: absolute 56 | height: 4px 57 | width: 20px 58 | background: #fdf2dc 59 | 60 | &:after 61 | top: -8px 62 | 63 | &:before 64 | top: 8px 65 | 66 | @media screen and (min-width: 1024px) 67 | display: none 68 | 69 | & > .dino 70 | width: 550px 71 | background: url(/assets/images/dinosaur.svg) 72 | bottom: -20% 73 | right: 0 74 | background-position: center 75 | position: absolute 76 | background-size: 100% 77 | opacity: 0.1 78 | height: 500px 79 | 80 | @media screen and (min-width: 0px) 81 | height: 500px 82 | 83 | & > .call 84 | background: url(/assets/images/main_logo_ribeirao.png) 85 | background-position: center 86 | background-size: contain 87 | background-repeat: no-repeat 88 | width: 100% 89 | height: 300px 90 | display: block 91 | position: absolute 92 | top: 100px 93 | 94 | @media screen and (min-width: 600px) 95 | width: 100% 96 | @media screen and (min-width: 1024px) 97 | width: 100% 98 | 99 | & > .cloud 100 | background: url(/assets/images/cloud_background_2.svg) 101 | background-size: contain 102 | background-position: center 103 | background-repeat: repeat-y 104 | width: 100% 105 | min-height: 600px 106 | 107 | & > .nav 108 | z-index: 6 109 | 110 | & > .header 111 | position: fixed 112 | top: 0 113 | bottom: 0 114 | z-index: 5 115 | width: 100% 116 | border-radius: 0 117 | background: $black 118 | display: none 119 | 120 | &.active 121 | display: block 122 | 123 | & > ul 124 | list-style: none 125 | 126 | & > li 127 | font-size: 24px 128 | text-align: center 129 | padding: 24px 130 | 131 | & > a 132 | text-decoration: none 133 | padding: 0 24px 134 | color: $yellow-three 135 | 136 | @media screen and (min-width: 1024px) 137 | top: 10px 138 | right: 10px 139 | bottom: auto 140 | width: auto 141 | display: block 142 | list-style: none 143 | line-height: 24px 144 | float: right 145 | border-radius: 50px 146 | padding: 0 24px 147 | 148 | & > ul > li 149 | display: inline-block 150 | vertical-align: top 151 | font-size: 16px 152 | padding: 16px 4px 153 | 154 | & > .pylogo-main 155 | background: url(/assets/images/pylogo-2019-colored.svg) 156 | background-repeat: no-repeat 157 | background-size: contain 158 | background-position: center 159 | display: block 160 | width: 40px 161 | height: 40px 162 | position: absolute 163 | top: 25px 164 | left: 10px 165 | 166 | @media screen and (min-width: 1024px) 167 | top: 10px 168 | left: 10px 169 | -------------------------------------------------------------------------------- /src/scripts/index.js: -------------------------------------------------------------------------------- 1 | window.onload = function () { 2 | const nav = document.getElementById('header-nav'); 3 | document.getElementById('mobile').onclick = function () { 4 | this.classList.toggle('close'); 5 | nav.classList.toggle('active'); 6 | } 7 | } -------------------------------------------------------------------------------- /src/submissao-de-palestras/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Submissão de Palestras 7 | 8 | 9 |

Formulário de submissão de palestras

10 | 11 | 12 | -------------------------------------------------------------------------------- /src/templates/index.hbs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Python Brasil 2019 8 | 9 | 10 | 11 | 12 | {{> main }} 13 | {{> about }} 14 | {{> keynotes }} 15 | {{> tutorials }} 16 | {{> sponsors }} 17 | {{> cityguide }} 18 | {{> prefooter }} 19 | {{> footer }} 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/templates/partials/.main.hbs.swp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/templates/partials/.main.hbs.swp -------------------------------------------------------------------------------- /src/templates/partials/about.hbs: -------------------------------------------------------------------------------- 1 |
2 | {{{ about.html }}} 3 |
4 |
5 | {{>pylogo }} 6 | veja o local 7 |
8 |
9 |
10 | -------------------------------------------------------------------------------- /src/templates/partials/cityguide.hbs: -------------------------------------------------------------------------------- 1 |
2 |

Guia da Cidade

3 | 4 | 14 | 15 |
16 |

Onde ficar

17 | {{#each hotels}} 18 |
19 | 20 | {{meta.name}} 21 | 22 |
23 | {{{ html }}} 24 |
25 | 26 |
27 | {{/each}} 28 |
29 |
30 | -------------------------------------------------------------------------------- /src/templates/partials/footer.hbs: -------------------------------------------------------------------------------- 1 | 49 | -------------------------------------------------------------------------------- /src/templates/partials/keynotes.hbs: -------------------------------------------------------------------------------- 1 |
2 |

Keynotes

3 | {{#each keynotes}} 4 | {{#if meta.publish}} 5 |
6 |
7 | 24 |
25 |
26 | {{{ html }}} 27 |
28 | 29 |
30 | {{/if}} 31 | {{/each}} 32 |
33 | -------------------------------------------------------------------------------- /src/templates/partials/lineup.hbs: -------------------------------------------------------------------------------- 1 |
2 |

Programação

3 | 4 |
5 |
6 |

em breve mais informações

7 |
8 |
9 |

Submissão de Sprints Python Brasil 2019

10 |

O Sprint é um espaço proporcionado pela conferência Python Brasil para desenvolvimento e contribuição de projetos open source.

11 | submeta seu sprint 12 |
13 |
14 | -------------------------------------------------------------------------------- /src/templates/partials/main.hbs: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |
6 |
7 |

8 | Baixe o app para acompanhar a grade do evento, escolher suas atividades e receber notificações. 9 |

10 | 18 |
19 |
20 | 21 | 24 | 25 | 51 |
52 | 57 |
-------------------------------------------------------------------------------- /src/templates/partials/prefooter.hbs: -------------------------------------------------------------------------------- 1 |
2 | -------------------------------------------------------------------------------- /src/templates/partials/pylogo.hbs: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 9 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /src/templates/partials/sponsors.hbs: -------------------------------------------------------------------------------- 1 |
2 | 14 | 54 |
55 | -------------------------------------------------------------------------------- /src/templates/partials/svgs/facebook.hbs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/templates/partials/svgs/github.hbs: -------------------------------------------------------------------------------- 1 | 2 | 16 | 19 | 20 | -------------------------------------------------------------------------------- /src/templates/partials/svgs/instagram.hbs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/templates/partials/svgs/linkedin.hbs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/templates/partials/svgs/pylogo.hbs: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 9 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /src/templates/partials/svgs/twitter.hbs: -------------------------------------------------------------------------------- 1 | 4 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/templates/partials/tutorials.hbs: -------------------------------------------------------------------------------- 1 |
2 |

Tutoriais

3 |
4 |

Faça a sua inscrição ->gratuitamente<- para os
Tutoriais da Python Brasil 2019

5 |

Tutoriais são atividades práticas, onde os participantes têm contato com a linguagem Python e tecnologias relacionadas. Os tutoriais da Python Brasil 2019 acontecerão nos dias 23 e 24 de Outubro, no Centro Universitário Estácio, em Ribeirão Preto - SP.

6 | Inscrições 7 |
8 |
9 | -------------------------------------------------------------------------------- /src/templates/programacao.hbs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonbrasil/pybr2019-site/6a5af2c7ac51977dd79d6691fe787eb886947971/src/templates/programacao.hbs --------------------------------------------------------------------------------