├── days ├── 025-028-javascript │ └── demo │ │ ├── calories │ │ ├── README.md │ │ ├── img │ │ │ ├── delete.png │ │ │ ├── favicon.ico │ │ │ └── le_bigmac.png │ │ └── css │ │ │ └── style.css │ │ └── language │ │ └── run-js │ │ ├── hello.js │ │ └── index.html ├── 069-072-django-rest │ ├── demo │ │ ├── api │ │ │ ├── __init__.py │ │ │ ├── migrations │ │ │ │ └── __init__.py │ │ │ ├── models.py │ │ │ ├── admin.py │ │ │ ├── tests.py │ │ │ ├── apps.py │ │ │ ├── urls.py │ │ │ └── permissions.py │ │ ├── mysite │ │ │ ├── __init__.py │ │ │ ├── templates │ │ │ │ ├── django_registration │ │ │ │ │ ├── activation_email_subject.txt │ │ │ │ │ ├── activation_failed.html │ │ │ │ │ ├── registration_closed.html │ │ │ │ │ ├── registration_complete.html │ │ │ │ │ ├── activation_complete.html │ │ │ │ │ └── activation_email_body.txt │ │ │ │ └── registration │ │ │ │ │ ├── logout.html │ │ │ │ │ ├── password_change_done.html │ │ │ │ │ ├── password_reset_done.html │ │ │ │ │ ├── password_reset_email.html │ │ │ │ │ ├── password_reset_email.txt │ │ │ │ │ ├── password_reset_complete.html │ │ │ │ │ └── password_reset_form.html │ │ │ ├── static │ │ │ │ └── img │ │ │ │ │ └── favicon.ico │ │ │ ├── urls.py │ │ │ └── wsgi.py │ │ ├── quotes │ │ │ ├── __init__.py │ │ │ ├── migrations │ │ │ │ ├── __init__.py │ │ │ │ ├── 0003_remove_quote_inspiration.py │ │ │ │ └── 0002_auto_20180828_1103.py │ │ │ ├── admin.py │ │ │ ├── apps.py │ │ │ ├── forms.py │ │ │ ├── urls.py │ │ │ ├── urls-cb.py │ │ │ └── templates │ │ │ │ └── quotes │ │ │ │ └── quote_confirm_delete.html │ │ ├── requirements.txt │ │ ├── env_variables.txt │ │ └── manage.py │ ├── .gitignore │ └── starter_code.zip ├── 045-048-django-intro │ └── demo │ │ ├── mysite │ │ ├── __init__.py │ │ ├── static │ │ │ └── img │ │ │ │ └── favicon.ico │ │ ├── urls.py │ │ └── wsgi.py │ │ ├── quotes │ │ ├── __init__.py │ │ ├── migrations │ │ │ ├── __init__.py │ │ │ ├── 0003_remove_quote_inspiration.py │ │ │ └── 0002_auto_20180828_1103.py │ │ ├── apps.py │ │ ├── admin.py │ │ ├── forms.py │ │ ├── urls.py │ │ ├── urls-cb.py │ │ ├── models.py │ │ └── templates │ │ │ └── quotes │ │ │ ├── quote_confirm_delete.html │ │ │ └── quote_detail.html │ │ ├── requirements.txt │ │ └── manage.py ├── 093-096-vuejs │ ├── starter_movie_exploder │ │ ├── js │ │ │ ├── site.js │ │ │ └── vue │ │ │ │ ├── vue.common.js │ │ │ │ └── vue.runtime.common.js │ │ └── views │ │ │ └── index.html │ ├── movie_svc │ │ ├── requirements.txt │ │ ├── views │ │ │ └── home.py │ │ ├── app.py │ │ ├── app_instance.py │ │ └── routes.py │ ├── your-turn │ │ └── your_movie_exploder │ │ │ ├── js │ │ │ └── site.js │ │ │ ├── node_modules │ │ │ ├── axios │ │ │ │ └── index.js │ │ │ ├── debug │ │ │ │ ├── node.js │ │ │ │ └── src │ │ │ │ │ └── index.js │ │ │ ├── follow-redirects │ │ │ │ ├── http.js │ │ │ │ └── https.js │ │ │ ├── vue │ │ │ │ ├── src │ │ │ │ │ ├── platforms │ │ │ │ │ │ ├── weex │ │ │ │ │ │ │ ├── runtime │ │ │ │ │ │ │ │ ├── directives │ │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ │ ├── text-node.js │ │ │ │ │ │ │ │ ├── components │ │ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ │ │ └── transition.js │ │ │ │ │ │ │ │ └── modules │ │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ ├── compiler │ │ │ │ │ │ │ │ ├── directives │ │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ │ └── modules │ │ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ │ │ └── recycle-list │ │ │ │ │ │ │ │ │ ├── component-root.js │ │ │ │ │ │ │ │ │ └── v-once.js │ │ │ │ │ │ │ ├── entry-compiler.js │ │ │ │ │ │ │ └── entry-runtime-factory.js │ │ │ │ │ │ └── web │ │ │ │ │ │ │ ├── entry-runtime.js │ │ │ │ │ │ │ ├── server │ │ │ │ │ │ │ ├── directives │ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ │ └── show.js │ │ │ │ │ │ │ ├── modules │ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ │ └── class.js │ │ │ │ │ │ │ └── compiler.js │ │ │ │ │ │ │ ├── runtime │ │ │ │ │ │ │ ├── directives │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ ├── components │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ ├── modules │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ └── patch.js │ │ │ │ │ │ │ ├── compiler │ │ │ │ │ │ │ ├── directives │ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ │ ├── html.js │ │ │ │ │ │ │ │ └── text.js │ │ │ │ │ │ │ ├── modules │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ ├── entry-compiler.js │ │ │ │ │ │ │ └── entry-server-basic-renderer.js │ │ │ │ │ ├── core │ │ │ │ │ │ ├── components │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ ├── vdom │ │ │ │ │ │ │ ├── modules │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ └── helpers │ │ │ │ │ │ │ │ ├── is-async-placeholder.js │ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ │ └── get-first-component-child.js │ │ │ │ │ │ ├── global-api │ │ │ │ │ │ │ └── mixin.js │ │ │ │ │ │ └── util │ │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── compiler │ │ │ │ │ │ ├── directives │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ ├── bind.js │ │ │ │ │ │ │ └── on.js │ │ │ │ │ │ └── parser │ │ │ │ │ │ │ └── entity-decoder.js │ │ │ │ │ └── shared │ │ │ │ │ │ └── constants.js │ │ │ │ └── types │ │ │ │ │ └── plugin.d.ts │ │ │ ├── bootstrap │ │ │ │ └── scss │ │ │ │ │ ├── utilities │ │ │ │ │ ├── _clearfix.scss │ │ │ │ │ ├── _overflow.scss │ │ │ │ │ ├── _screenreaders.scss │ │ │ │ │ ├── _visibility.scss │ │ │ │ │ ├── _shadows.scss │ │ │ │ │ ├── _float.scss │ │ │ │ │ ├── _align.scss │ │ │ │ │ ├── _background.scss │ │ │ │ │ └── _stretched-link.scss │ │ │ │ │ ├── _media.scss │ │ │ │ │ ├── mixins │ │ │ │ │ ├── _clearfix.scss │ │ │ │ │ ├── _size.scss │ │ │ │ │ ├── _lists.scss │ │ │ │ │ ├── _text-truncate.scss │ │ │ │ │ ├── _resize.scss │ │ │ │ │ ├── _visibility.scss │ │ │ │ │ ├── _alert.scss │ │ │ │ │ ├── _nav-divider.scss │ │ │ │ │ ├── _text-hide.scss │ │ │ │ │ ├── _badge.scss │ │ │ │ │ ├── _text-emphasis.scss │ │ │ │ │ ├── _transition.scss │ │ │ │ │ ├── _float.scss │ │ │ │ │ └── _list-group.scss │ │ │ │ │ ├── _transitions.scss │ │ │ │ │ ├── bootstrap-reboot.scss │ │ │ │ │ └── _jumbotron.scss │ │ │ └── jquery │ │ │ │ ├── src │ │ │ │ ├── selector.js │ │ │ │ ├── .eslintrc.json │ │ │ │ ├── event │ │ │ │ │ ├── support.js │ │ │ │ │ └── ajax.js │ │ │ │ ├── core │ │ │ │ │ ├── nodeName.js │ │ │ │ │ ├── readyException.js │ │ │ │ │ ├── stripAndCollapse.js │ │ │ │ │ └── toType.js │ │ │ │ ├── attributes.js │ │ │ │ ├── effects │ │ │ │ │ └── animatedSelector.js │ │ │ │ ├── css │ │ │ │ │ └── hiddenVisibleSelectors.js │ │ │ │ ├── manipulation │ │ │ │ │ ├── _evalUrl.js │ │ │ │ │ └── setGlobalEval.js │ │ │ │ └── selector-sizzle.js │ │ │ │ └── bower.json │ │ │ ├── .idea │ │ │ ├── encodings.xml │ │ │ ├── dictionaries │ │ │ │ └── mkennedy.xml │ │ │ └── your_movie_exploder.iml │ │ │ └── package.json │ └── movie_exploder │ │ ├── js │ │ └── vue │ │ │ ├── vue.common.js │ │ │ └── vue.runtime.common.js │ │ ├── package.json │ │ └── package-lock.json ├── 053-056-django-registration │ ├── demo │ │ ├── mysite │ │ │ ├── __init__.py │ │ │ ├── templates │ │ │ │ ├── django_registration │ │ │ │ │ ├── activation_email_subject.txt │ │ │ │ │ ├── activation_failed.html │ │ │ │ │ ├── registration_closed.html │ │ │ │ │ ├── registration_complete.html │ │ │ │ │ ├── activation_complete.html │ │ │ │ │ └── activation_email_body.txt │ │ │ │ └── registration │ │ │ │ │ ├── logout.html │ │ │ │ │ ├── password_change_done.html │ │ │ │ │ ├── password_reset_done.html │ │ │ │ │ ├── password_reset_email.html │ │ │ │ │ ├── password_reset_email.txt │ │ │ │ │ ├── password_reset_complete.html │ │ │ │ │ └── password_reset_form.html │ │ │ ├── static │ │ │ │ └── img │ │ │ │ │ └── favicon.ico │ │ │ ├── urls.py │ │ │ └── wsgi.py │ │ ├── quotes │ │ │ ├── __init__.py │ │ │ ├── migrations │ │ │ │ ├── __init__.py │ │ │ │ ├── 0003_remove_quote_inspiration.py │ │ │ │ └── 0002_auto_20180828_1103.py │ │ │ ├── admin.py │ │ │ ├── apps.py │ │ │ ├── forms.py │ │ │ ├── urls.py │ │ │ ├── urls-cb.py │ │ │ └── templates │ │ │ │ └── quotes │ │ │ │ └── quote_confirm_delete.html │ │ ├── requirements.txt │ │ └── env_variables.txt │ └── django-registration-templates.zip ├── 001-004-flask-intro │ └── code │ │ ├── .flaskenv │ │ ├── demo.py │ │ ├── requirements.piptools │ │ └── program │ │ ├── __init__.py │ │ ├── templates │ │ ├── index.html │ │ └── 100Days.html │ │ └── routes.py ├── 021-024-quart-async │ ├── python_async │ │ ├── requirements.txt │ │ └── .idea │ │ │ ├── dictionaries │ │ │ └── screencaster.xml │ │ │ ├── vcs.xml │ │ │ └── python_async.iml │ ├── cityscape_api │ │ ├── services │ │ │ └── event_service.py │ │ ├── config │ │ │ ├── dev.json │ │ │ ├── prod.json │ │ │ └── settings.py │ │ ├── requirements.txt │ │ └── views │ │ │ └── home.py │ ├── your_turn │ │ ├── day_4 │ │ │ └── cityscape_api │ │ │ │ ├── services │ │ │ │ └── event_service.py │ │ │ │ ├── config │ │ │ │ ├── dev.json │ │ │ │ ├── prod.json │ │ │ │ └── settings.py │ │ │ │ ├── requirements.txt │ │ │ │ └── views │ │ │ │ └── home.py │ │ └── day_2 │ │ │ └── web_crawl │ │ │ └── requirements.txt │ └── async_cityscape_api │ │ ├── config │ │ ├── dev.json │ │ ├── prod.json │ │ └── settings.py │ │ ├── requirements.txt │ │ ├── .idea │ │ ├── dictionaries │ │ │ ├── mkennedy.xml │ │ │ └── screencaster.xml │ │ ├── vcs.xml │ │ └── webResources.xml │ │ └── views │ │ └── home.py ├── 049-selenium │ ├── .env-template │ └── requirements.txt ├── 065-068-heroku-deployment │ └── code │ │ ├── runtime.txt │ │ ├── Procfile │ │ ├── templates │ │ └── index.html │ │ ├── requirements.txt │ │ ├── app.py │ │ ├── emailer.py │ │ └── sendgrid_emailer.py ├── 089-092-deployment │ └── demo │ │ └── billtracker │ │ ├── billtracker │ │ ├── bin │ │ │ └── __init__.py │ │ ├── data │ │ │ ├── __init__.py │ │ │ ├── models │ │ │ │ └── __init__.py │ │ │ ├── modelbase.py │ │ │ └── __all_models.py │ │ ├── tests │ │ │ ├── __init__.py │ │ │ ├── default │ │ │ │ └── __init__.py │ │ │ └── all_tests.py │ │ ├── views │ │ │ ├── __init__.py │ │ │ └── notfound.py │ │ ├── viewmodels │ │ │ ├── __init__.py │ │ │ ├── default │ │ │ │ ├── __init__.py │ │ │ │ └── index_viewmodel.py │ │ │ └── viewmodelbase.py │ │ ├── static │ │ │ └── img │ │ │ │ ├── finance.png │ │ │ │ ├── pyramid.png │ │ │ │ └── pyramid-16x16.png │ │ ├── routes.py │ │ └── templates │ │ │ └── errors │ │ │ └── 404.pt │ │ ├── alembic │ │ └── README │ │ ├── CHANGES.txt │ │ ├── .coveragerc │ │ ├── pytest.ini │ │ ├── requirements-dev.txt │ │ ├── MANIFEST.in │ │ ├── .gitignore │ │ ├── requirements.txt │ │ └── server │ │ └── billtracker.service ├── 037-40-pyramid-intro │ └── demo │ │ └── billtracker │ │ ├── billtracker │ │ ├── bin │ │ │ └── __init__.py │ │ ├── data │ │ │ ├── __init__.py │ │ │ ├── models │ │ │ │ └── __init__.py │ │ │ ├── modelbase.py │ │ │ └── __all_models.py │ │ ├── views │ │ │ ├── __init__.py │ │ │ └── notfound.py │ │ ├── static │ │ │ └── img │ │ │ │ ├── finance.png │ │ │ │ ├── pyramid.png │ │ │ │ └── pyramid-16x16.png │ │ ├── routes.py │ │ └── templates │ │ │ └── errors │ │ │ └── 404.pt │ │ ├── CHANGES.txt │ │ ├── .coveragerc │ │ ├── pytest.ini │ │ ├── MANIFEST.in │ │ ├── .idea │ │ ├── encodings.xml │ │ └── dictionaries │ │ │ └── screencaster.xml │ │ └── .gitignore ├── 061-064-db-migrations │ ├── demo │ │ └── billtracker │ │ │ ├── billtracker │ │ │ ├── bin │ │ │ │ └── __init__.py │ │ │ ├── data │ │ │ │ ├── __init__.py │ │ │ │ ├── models │ │ │ │ │ └── __init__.py │ │ │ │ ├── modelbase.py │ │ │ │ └── __all_models.py │ │ │ ├── views │ │ │ │ ├── __init__.py │ │ │ │ └── notfound.py │ │ │ ├── static │ │ │ │ └── img │ │ │ │ │ ├── finance.png │ │ │ │ │ ├── pyramid.png │ │ │ │ │ └── pyramid-16x16.png │ │ │ ├── routes.py │ │ │ └── templates │ │ │ │ └── errors │ │ │ │ └── 404.pt │ │ │ ├── alembic │ │ │ └── README │ │ │ ├── CHANGES.txt │ │ │ ├── .coveragerc │ │ │ ├── pytest.ini │ │ │ ├── MANIFEST.in │ │ │ ├── .gitignore │ │ │ └── requirements.txt │ └── your-turn │ │ └── hovershare_project │ │ └── hovershare │ │ ├── requirements.txt │ │ ├── data │ │ ├── sqlalchemybase.py │ │ └── __all_models.py │ │ ├── infrastructure │ │ └── numbers.py │ │ └── db │ │ └── db_folder.py ├── 081-084-unit-testing │ ├── demo │ │ └── billtracker │ │ │ ├── billtracker │ │ │ ├── bin │ │ │ │ └── __init__.py │ │ │ ├── data │ │ │ │ ├── __init__.py │ │ │ │ ├── models │ │ │ │ │ └── __init__.py │ │ │ │ ├── modelbase.py │ │ │ │ └── __all_models.py │ │ │ ├── tests │ │ │ │ ├── __init__.py │ │ │ │ ├── default │ │ │ │ │ └── __init__.py │ │ │ │ └── all_tests.py │ │ │ ├── views │ │ │ │ ├── __init__.py │ │ │ │ └── notfound.py │ │ │ ├── viewmodels │ │ │ │ ├── __init__.py │ │ │ │ ├── default │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── index_viewmodel.py │ │ │ │ └── viewmodelbase.py │ │ │ ├── static │ │ │ │ └── img │ │ │ │ │ ├── finance.png │ │ │ │ │ ├── pyramid.png │ │ │ │ │ └── pyramid-16x16.png │ │ │ ├── routes.py │ │ │ └── templates │ │ │ │ └── errors │ │ │ │ └── 404.pt │ │ │ ├── CHANGES.txt │ │ │ ├── alembic │ │ │ └── README │ │ │ ├── requirements-dev.txt │ │ │ ├── .coveragerc │ │ │ ├── pytest.ini │ │ │ ├── MANIFEST.in │ │ │ ├── .idea │ │ │ ├── vcs.xml │ │ │ └── dictionaries │ │ │ │ └── screencaster.xml │ │ │ ├── .gitignore │ │ │ └── requirements.txt │ └── your-turn │ │ └── billtracker_with_viewmodels │ │ └── billtracker │ │ ├── billtracker │ │ ├── bin │ │ │ └── __init__.py │ │ ├── data │ │ │ ├── __init__.py │ │ │ ├── models │ │ │ │ └── __init__.py │ │ │ ├── modelbase.py │ │ │ └── __all_models.py │ │ ├── views │ │ │ ├── __init__.py │ │ │ └── notfound.py │ │ ├── viewmodels │ │ │ ├── __init__.py │ │ │ ├── default │ │ │ │ ├── __init__.py │ │ │ │ └── index_viewmodel.py │ │ │ └── viewmodelbase.py │ │ ├── routes.py │ │ ├── static │ │ │ └── img │ │ │ │ ├── finance.png │ │ │ │ ├── pyramid.png │ │ │ │ └── pyramid-16x16.png │ │ └── templates │ │ │ └── errors │ │ │ └── 404.pt │ │ ├── alembic │ │ └── README │ │ ├── CHANGES.txt │ │ ├── .coveragerc │ │ ├── pytest.ini │ │ ├── MANIFEST.in │ │ ├── .gitignore │ │ └── requirements.txt ├── 057-060-flask-login │ └── code │ │ ├── launch.py │ │ ├── project_awesome │ │ ├── site_users.db │ │ ├── templates │ │ │ ├── index.html │ │ │ ├── pybitesdashboard.html │ │ │ └── loginpage.html │ │ ├── __init__.py │ │ └── models.py │ │ └── requirements.txt ├── 097-100-docker │ └── demo │ │ ├── services │ │ ├── movie_svc │ │ │ ├── requirements.txt │ │ │ ├── views │ │ │ │ └── home.py │ │ │ ├── app_instance.py │ │ │ ├── app.py │ │ │ └── routes.py │ │ └── dockerfile │ │ ├── frontend │ │ ├── movie_exploder │ │ │ ├── node_modules │ │ │ │ └── vue │ │ │ │ │ ├── src │ │ │ │ │ ├── platforms │ │ │ │ │ │ ├── weex │ │ │ │ │ │ │ ├── runtime │ │ │ │ │ │ │ │ ├── directives │ │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ │ ├── text-node.js │ │ │ │ │ │ │ │ ├── components │ │ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ │ │ └── transition.js │ │ │ │ │ │ │ │ └── modules │ │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ ├── compiler │ │ │ │ │ │ │ │ ├── directives │ │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ │ └── modules │ │ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ │ │ └── recycle-list │ │ │ │ │ │ │ │ │ ├── component-root.js │ │ │ │ │ │ │ │ │ └── v-once.js │ │ │ │ │ │ │ ├── entry-compiler.js │ │ │ │ │ │ │ └── entry-runtime-factory.js │ │ │ │ │ │ └── web │ │ │ │ │ │ │ ├── entry-runtime.js │ │ │ │ │ │ │ ├── server │ │ │ │ │ │ │ ├── directives │ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ │ └── show.js │ │ │ │ │ │ │ ├── modules │ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ │ └── class.js │ │ │ │ │ │ │ └── compiler.js │ │ │ │ │ │ │ ├── runtime │ │ │ │ │ │ │ ├── directives │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ ├── components │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ ├── modules │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ └── patch.js │ │ │ │ │ │ │ ├── compiler │ │ │ │ │ │ │ ├── directives │ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ │ ├── html.js │ │ │ │ │ │ │ │ └── text.js │ │ │ │ │ │ │ ├── modules │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ ├── entry-compiler.js │ │ │ │ │ │ │ └── entry-server-basic-renderer.js │ │ │ │ │ ├── core │ │ │ │ │ │ ├── components │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ ├── vdom │ │ │ │ │ │ │ ├── modules │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ └── helpers │ │ │ │ │ │ │ │ ├── is-async-placeholder.js │ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ │ └── get-first-component-child.js │ │ │ │ │ │ ├── global-api │ │ │ │ │ │ │ └── mixin.js │ │ │ │ │ │ └── util │ │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── compiler │ │ │ │ │ │ ├── directives │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ ├── bind.js │ │ │ │ │ │ │ └── on.js │ │ │ │ │ │ └── parser │ │ │ │ │ │ │ └── entity-decoder.js │ │ │ │ │ └── shared │ │ │ │ │ │ └── constants.js │ │ │ │ │ └── types │ │ │ │ │ └── plugin.d.ts │ │ │ ├── js │ │ │ │ └── vue │ │ │ │ │ ├── vue.common.js │ │ │ │ │ └── vue.runtime.common.js │ │ │ ├── package.json │ │ │ └── package-lock.json │ │ └── dockerfile │ │ ├── base_server │ │ └── dockerfile │ │ └── docker-compose.yml ├── 050-responder │ ├── demo │ │ └── movie_svc │ │ │ ├── requirements.txt │ │ │ ├── api_instance.py │ │ │ ├── views │ │ │ └── home.py │ │ │ ├── app.py │ │ │ └── .idea │ │ │ └── webResources.xml │ └── your-turn │ │ └── README.md ├── 009-012-modern-apis-starred │ └── demo │ │ └── requirements.piptools ├── 009-012-modern-apis-with-fastapi │ └── demo │ │ └── requirements.txt ├── 085-088-aws-lambda │ ├── demo │ │ ├── requirements.txt │ │ └── lambdas │ │ │ ├── lambda.pkg.zip │ │ │ └── lambda_calculator.py │ └── img │ │ ├── pep-ok.png │ │ ├── pep-notok.png │ │ └── architecture.png ├── 033-036-sqlalchemy-orm │ └── demo │ │ ├── hovershare_app_final │ │ ├── requirements.txt │ │ ├── data │ │ │ ├── sqlalchemybase.py │ │ │ └── __all_models.py │ │ ├── infrastructure │ │ │ └── numbers.py │ │ ├── db │ │ │ └── db_folder.py │ │ └── .idea │ │ │ └── dictionaries │ │ │ └── screencaster.xml │ │ └── hovershare_app_starter │ │ ├── requirements.txt │ │ ├── infrastructure │ │ └── numbers.py │ │ ├── db │ │ └── db_folder.py │ │ └── .idea │ │ ├── vcs.xml │ │ └── dictionaries │ │ └── screencaster.xml ├── 017-020-flask-call-apis │ └── code │ │ ├── demo.py │ │ ├── program │ │ ├── __init__.py │ │ └── templates │ │ │ ├── chuck.html │ │ │ ├── index.html │ │ │ └── 100Days.html │ │ └── requirements.txt ├── 041-044-react │ ├── demo │ │ ├── screenshots │ │ │ ├── tips.png │ │ │ └── freemonkey.png │ │ ├── tips │ │ │ ├── public │ │ │ │ ├── favicon.ico │ │ │ │ └── manifest.json │ │ │ ├── src │ │ │ │ ├── App.test.js │ │ │ │ ├── index.css │ │ │ │ └── index.js │ │ │ └── .gitignore │ │ ├── freemonkey │ │ │ ├── public │ │ │ │ ├── favicon.ico │ │ │ │ └── manifest.json │ │ │ ├── src │ │ │ │ ├── App.test.js │ │ │ │ └── index.js │ │ │ ├── .gitignore │ │ │ └── package.json │ │ └── README.md │ └── es6 │ │ ├── arrow.js │ │ ├── hello.js │ │ ├── inherit.js │ │ ├── mapfilter.js │ │ ├── destruct.js │ │ └── class.js ├── 005-008-html5 │ ├── demos │ │ ├── yahoo_clone │ │ │ └── img │ │ │ │ ├── cool.png │ │ │ │ ├── more.png │ │ │ │ ├── new.png │ │ │ │ ├── news.png │ │ │ │ └── yaahoo.png │ │ └── signup │ │ │ ├── .idea │ │ │ └── encodings.xml │ │ │ └── extras │ │ │ └── form_hook.js │ └── your-turn │ │ └── google-1998-marked-up.png ├── 013-016-css-basics │ ├── your-turn │ │ └── talk-python-nav.png │ └── demos │ │ └── selectorville │ │ ├── static │ │ ├── img │ │ │ └── dunecat.jpg │ │ ├── css │ │ │ ├── sample.css │ │ │ └── float.css │ │ └── js │ │ │ ├── selectors.js │ │ │ └── box.js │ │ └── .idea │ │ └── jsLibraryMappings.xml ├── 029-032-static-site-gen │ └── code │ │ ├── content │ │ ├── images │ │ │ └── pb-logo.png │ │ └── pages │ │ │ └── about.md │ │ ├── output │ │ ├── images │ │ │ └── pb-logo.png │ │ └── theme │ │ │ ├── images │ │ │ └── icons │ │ │ │ ├── rss.png │ │ │ │ ├── github.png │ │ │ │ ├── gittip.png │ │ │ │ ├── lastfm.png │ │ │ │ ├── reddit.png │ │ │ │ ├── vimeo.png │ │ │ │ ├── aboutme.png │ │ │ │ ├── facebook.png │ │ │ │ ├── linkedin.png │ │ │ │ ├── twitter.png │ │ │ │ ├── youtube.png │ │ │ │ ├── bitbucket.png │ │ │ │ ├── delicious.png │ │ │ │ ├── gitorious.png │ │ │ │ ├── google-plus.png │ │ │ │ ├── hackernews.png │ │ │ │ ├── slideshare.png │ │ │ │ ├── speakerdeck.png │ │ │ │ ├── google-groups.png │ │ │ │ └── stackoverflow.png │ │ │ ├── fonts │ │ │ ├── Yanone_Kaffeesatz_400.eot │ │ │ ├── Yanone_Kaffeesatz_400.ttf │ │ │ ├── Yanone_Kaffeesatz_400.woff │ │ │ ├── Yanone_Kaffeesatz_400.woff2 │ │ │ └── font.css │ │ │ └── css │ │ │ ├── typogrify.css │ │ │ └── fonts.css │ │ └── requirements.txt ├── 051-twilio │ └── code │ │ ├── requirements.txt │ │ └── twilio_sms.py ├── 052-anvil │ └── your-turn │ │ └── README.md └── 073-076-webscraping │ └── code │ ├── newspaper3k_code.py │ └── talkpy_bs4.py ├── readme_resources └── 100days-web.png ├── README.md └── .idea └── ruff.xml /days/025-028-javascript/demo/calories/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/069-072-django-rest/demo/api/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/069-072-django-rest/demo/mysite/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/069-072-django-rest/demo/quotes/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/045-048-django-intro/demo/mysite/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/045-048-django-intro/demo/quotes/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/093-096-vuejs/starter_movie_exploder/js/site.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/045-048-django-intro/demo/requirements.txt: -------------------------------------------------------------------------------- 1 | django 2 | -------------------------------------------------------------------------------- /days/053-056-django-registration/demo/mysite/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/053-056-django-registration/demo/quotes/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/069-072-django-rest/demo/api/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/001-004-flask-intro/code/.flaskenv: -------------------------------------------------------------------------------- 1 | FLASK_APP=demo.py 2 | -------------------------------------------------------------------------------- /days/021-024-quart-async/python_async/requirements.txt: -------------------------------------------------------------------------------- 1 | colorama -------------------------------------------------------------------------------- /days/045-048-django-intro/demo/quotes/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/049-selenium/.env-template: -------------------------------------------------------------------------------- 1 | USERNAME= 2 | PASSWORD= 3 | -------------------------------------------------------------------------------- /days/069-072-django-rest/demo/quotes/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/093-096-vuejs/movie_svc/requirements.txt: -------------------------------------------------------------------------------- 1 | responder 2 | -------------------------------------------------------------------------------- /days/021-024-quart-async/cityscape_api/services/event_service.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/053-056-django-registration/demo/quotes/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/065-068-heroku-deployment/code/runtime.txt: -------------------------------------------------------------------------------- 1 | python-3.6.0 2 | -------------------------------------------------------------------------------- /days/089-092-deployment/demo/billtracker/billtracker/bin/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/037-40-pyramid-intro/demo/billtracker/billtracker/bin/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/037-40-pyramid-intro/demo/billtracker/billtracker/data/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/037-40-pyramid-intro/demo/billtracker/billtracker/views/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/061-064-db-migrations/demo/billtracker/billtracker/bin/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/061-064-db-migrations/demo/billtracker/billtracker/data/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/061-064-db-migrations/demo/billtracker/billtracker/views/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/065-068-heroku-deployment/code/Procfile: -------------------------------------------------------------------------------- 1 | web: gunicorn app:app 2 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/demo/billtracker/billtracker/bin/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/demo/billtracker/billtracker/data/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/demo/billtracker/billtracker/tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/demo/billtracker/billtracker/views/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/089-092-deployment/demo/billtracker/billtracker/data/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/089-092-deployment/demo/billtracker/billtracker/tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/089-092-deployment/demo/billtracker/billtracker/views/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/037-40-pyramid-intro/demo/billtracker/billtracker/data/models/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/049-selenium/requirements.txt: -------------------------------------------------------------------------------- 1 | pytest 2 | selenium 3 | python-dotenv 4 | -------------------------------------------------------------------------------- /days/057-060-flask-login/code/launch.py: -------------------------------------------------------------------------------- 1 | from project_awesome import app 2 | -------------------------------------------------------------------------------- /days/069-072-django-rest/.gitignore: -------------------------------------------------------------------------------- 1 | **venv 2 | **sqlite* 3 | **DS_Store 4 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/demo/billtracker/billtracker/data/models/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/demo/billtracker/billtracker/viewmodels/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/089-092-deployment/demo/billtracker/billtracker/data/models/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/089-092-deployment/demo/billtracker/billtracker/tests/default/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/089-092-deployment/demo/billtracker/billtracker/viewmodels/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/services/movie_svc/requirements.txt: -------------------------------------------------------------------------------- 1 | responder 2 | -------------------------------------------------------------------------------- /days/001-004-flask-intro/code/demo.py: -------------------------------------------------------------------------------- 1 | from program import app # noqa: F401 2 | -------------------------------------------------------------------------------- /days/021-024-quart-async/your_turn/day_4/cityscape_api/services/event_service.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/050-responder/demo/movie_svc/requirements.txt: -------------------------------------------------------------------------------- 1 | responder 2 | starlette==0.8 3 | -------------------------------------------------------------------------------- /days/061-064-db-migrations/demo/billtracker/billtracker/data/models/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/demo/billtracker/billtracker/tests/default/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/089-092-deployment/demo/billtracker/billtracker/viewmodels/default/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/009-012-modern-apis-starred/demo/requirements.piptools: -------------------------------------------------------------------------------- 1 | fastapi 2 | uvicorn 3 | 4 | -------------------------------------------------------------------------------- /days/009-012-modern-apis-with-fastapi/demo/requirements.txt: -------------------------------------------------------------------------------- 1 | fastapi 2 | uvicorn 3 | 4 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/demo/billtracker/billtracker/viewmodels/default/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/085-088-aws-lambda/demo/requirements.txt: -------------------------------------------------------------------------------- 1 | bottle 2 | pycodestyle 3 | requests 4 | -------------------------------------------------------------------------------- /days/033-036-sqlalchemy-orm/demo/hovershare_app_final/requirements.txt: -------------------------------------------------------------------------------- 1 | sqlalchemy==1.2.19 2 | -------------------------------------------------------------------------------- /days/089-092-deployment/demo/billtracker/alembic/README: -------------------------------------------------------------------------------- 1 | Generic single-database configuration. -------------------------------------------------------------------------------- /days/033-036-sqlalchemy-orm/demo/hovershare_app_starter/requirements.txt: -------------------------------------------------------------------------------- 1 | sqlalchemy==1.2.19 2 | -------------------------------------------------------------------------------- /days/037-40-pyramid-intro/demo/billtracker/CHANGES.txt: -------------------------------------------------------------------------------- 1 | 0.0 2 | --- 3 | 4 | - Initial version. 5 | -------------------------------------------------------------------------------- /days/061-064-db-migrations/demo/billtracker/alembic/README: -------------------------------------------------------------------------------- 1 | Generic single-database configuration. -------------------------------------------------------------------------------- /days/061-064-db-migrations/your-turn/hovershare_project/hovershare/requirements.txt: -------------------------------------------------------------------------------- 1 | sqlalchemy 2 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/demo/billtracker/CHANGES.txt: -------------------------------------------------------------------------------- 1 | 0.0 2 | --- 3 | 4 | - Initial version. 5 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/demo/billtracker/alembic/README: -------------------------------------------------------------------------------- 1 | Generic single-database configuration. -------------------------------------------------------------------------------- /days/089-092-deployment/demo/billtracker/CHANGES.txt: -------------------------------------------------------------------------------- 1 | 0.0 2 | --- 3 | 4 | - Initial version. 5 | -------------------------------------------------------------------------------- /days/050-responder/demo/movie_svc/api_instance.py: -------------------------------------------------------------------------------- 1 | import responder 2 | 3 | api = responder.API() 4 | -------------------------------------------------------------------------------- /days/061-064-db-migrations/demo/billtracker/CHANGES.txt: -------------------------------------------------------------------------------- 1 | 0.0 2 | --- 3 | 4 | - Initial version. 5 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/your-turn/billtracker_with_viewmodels/billtracker/billtracker/bin/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/js/site.js: -------------------------------------------------------------------------------- 1 | // Write your Vue JavaScript code here. 2 | -------------------------------------------------------------------------------- /days/021-024-quart-async/cityscape_api/config/dev.json: -------------------------------------------------------------------------------- 1 | { 2 | "dev": true, 3 | "weather_key": "" 4 | } -------------------------------------------------------------------------------- /days/021-024-quart-async/cityscape_api/config/prod.json: -------------------------------------------------------------------------------- 1 | { 2 | "dev": false, 3 | "weather_key": "" 4 | } -------------------------------------------------------------------------------- /days/053-056-django-registration/demo/requirements.txt: -------------------------------------------------------------------------------- 1 | django==2.2.28 2 | django-registration==3.1.2 3 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/demo/billtracker/requirements-dev.txt: -------------------------------------------------------------------------------- 1 | -r requirements.txt 2 | 3 | webtest 4 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/your-turn/billtracker_with_viewmodels/billtracker/billtracker/data/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/your-turn/billtracker_with_viewmodels/billtracker/billtracker/views/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/021-024-quart-async/async_cityscape_api/config/dev.json: -------------------------------------------------------------------------------- 1 | { 2 | "dev": true, 3 | "weather_key": "" 4 | } -------------------------------------------------------------------------------- /days/021-024-quart-async/async_cityscape_api/config/prod.json: -------------------------------------------------------------------------------- 1 | { 2 | "dev": false, 3 | "weather_key": "" 4 | } -------------------------------------------------------------------------------- /days/069-072-django-rest/demo/api/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | # Create your models here. 4 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/your-turn/billtracker_with_viewmodels/billtracker/billtracker/data/models/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/your-turn/billtracker_with_viewmodels/billtracker/billtracker/viewmodels/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/037-40-pyramid-intro/demo/billtracker/.coveragerc: -------------------------------------------------------------------------------- 1 | [run] 2 | source = billtracker 3 | omit = billtracker/test* 4 | -------------------------------------------------------------------------------- /days/069-072-django-rest/demo/api/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | # Register your models here. 4 | -------------------------------------------------------------------------------- /days/069-072-django-rest/demo/api/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/demo/billtracker/.coveragerc: -------------------------------------------------------------------------------- 1 | [run] 2 | source = billtracker 3 | omit = billtracker/test* 4 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/your-turn/billtracker_with_viewmodels/billtracker/billtracker/viewmodels/default/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /days/089-092-deployment/demo/billtracker/.coveragerc: -------------------------------------------------------------------------------- 1 | [run] 2 | source = billtracker 3 | omit = billtracker/test* 4 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/axios/index.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./lib/axios'); -------------------------------------------------------------------------------- /days/021-024-quart-async/your_turn/day_4/cityscape_api/config/dev.json: -------------------------------------------------------------------------------- 1 | { 2 | "dev": true, 3 | "weather_key": "" 4 | } -------------------------------------------------------------------------------- /days/021-024-quart-async/your_turn/day_4/cityscape_api/config/prod.json: -------------------------------------------------------------------------------- 1 | { 2 | "dev": false, 3 | "weather_key": "" 4 | } -------------------------------------------------------------------------------- /days/037-40-pyramid-intro/demo/billtracker/pytest.ini: -------------------------------------------------------------------------------- 1 | [pytest] 2 | testpaths = billtracker 3 | python_files = test*.py 4 | -------------------------------------------------------------------------------- /days/061-064-db-migrations/demo/billtracker/.coveragerc: -------------------------------------------------------------------------------- 1 | [run] 2 | source = billtracker 3 | omit = billtracker/test* 4 | -------------------------------------------------------------------------------- /days/061-064-db-migrations/demo/billtracker/pytest.ini: -------------------------------------------------------------------------------- 1 | [pytest] 2 | testpaths = billtracker 3 | python_files = test*.py 4 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/demo/billtracker/pytest.ini: -------------------------------------------------------------------------------- 1 | [pytest] 2 | testpaths = billtracker 3 | python_files = test*.py 4 | -------------------------------------------------------------------------------- /days/089-092-deployment/demo/billtracker/pytest.ini: -------------------------------------------------------------------------------- 1 | [pytest] 2 | testpaths = billtracker 3 | python_files = test*.py 4 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/debug/node.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./src/node'); 2 | -------------------------------------------------------------------------------- /days/021-024-quart-async/your_turn/day_2/web_crawl/requirements.txt: -------------------------------------------------------------------------------- 1 | requests 2 | bs4 3 | colorama 4 | aiohttp 5 | cchardet 6 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/your-turn/billtracker_with_viewmodels/billtracker/alembic/README: -------------------------------------------------------------------------------- 1 | Generic single-database configuration. -------------------------------------------------------------------------------- /days/089-092-deployment/demo/billtracker/requirements-dev.txt: -------------------------------------------------------------------------------- 1 | -r requirements.txt 2 | 3 | webtest 4 | pyramid-debugtoolbar 5 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/follow-redirects/http.js: -------------------------------------------------------------------------------- 1 | module.exports = require("./").http; 2 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/your-turn/billtracker_with_viewmodels/billtracker/CHANGES.txt: -------------------------------------------------------------------------------- 1 | 0.0 2 | --- 3 | 4 | - Initial version. 5 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/follow-redirects/https.js: -------------------------------------------------------------------------------- 1 | module.exports = require("./").https; 2 | -------------------------------------------------------------------------------- /days/017-020-flask-call-apis/code/demo.py: -------------------------------------------------------------------------------- 1 | from program import app 2 | 3 | if __name__ == '__main__': 4 | app.run(load_dotenv=False) 5 | -------------------------------------------------------------------------------- /days/069-072-django-rest/demo/api/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class ApiConfig(AppConfig): 5 | name = 'api' 6 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/platforms/weex/runtime/directives/index.js: -------------------------------------------------------------------------------- 1 | export default { 2 | } 3 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/platforms/weex/runtime/directives/index.js: -------------------------------------------------------------------------------- 1 | export default { 2 | } 3 | -------------------------------------------------------------------------------- /readme_resources/100days-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/readme_resources/100days-web.png -------------------------------------------------------------------------------- /days/001-004-flask-intro/code/requirements.piptools: -------------------------------------------------------------------------------- 1 | click 2 | Flask 3 | itsdangerous 4 | Jinja2 5 | MarkupSafe 6 | python-dotenv 7 | werkzeug 8 | -------------------------------------------------------------------------------- /days/017-020-flask-call-apis/code/program/__init__.py: -------------------------------------------------------------------------------- 1 | from flask import Flask 2 | 3 | app = Flask(__name__) 4 | 5 | from program import routes 6 | -------------------------------------------------------------------------------- /days/045-048-django-intro/demo/quotes/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class QuotesConfig(AppConfig): 5 | name = 'quotes' 6 | -------------------------------------------------------------------------------- /days/069-072-django-rest/demo/quotes/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | from .models import Quote 4 | 5 | admin.site.register(Quote) 6 | -------------------------------------------------------------------------------- /days/069-072-django-rest/demo/quotes/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class QuotesConfig(AppConfig): 5 | name = 'quotes' 6 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/your-turn/billtracker_with_viewmodels/billtracker/.coveragerc: -------------------------------------------------------------------------------- 1 | [run] 2 | source = billtracker 3 | omit = billtracker/test* 4 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/bootstrap/scss/utilities/_clearfix.scss: -------------------------------------------------------------------------------- 1 | .clearfix { 2 | @include clearfix(); 3 | } 4 | -------------------------------------------------------------------------------- /days/025-028-javascript/demo/language/run-js/hello.js: -------------------------------------------------------------------------------- 1 | function hello(name){ 2 | return 'Hello ' + name; 3 | } 4 | 5 | console.log(hello('bob')); 6 | 7 | -------------------------------------------------------------------------------- /days/045-048-django-intro/demo/quotes/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | from .models import Quote 4 | 5 | admin.site.register(Quote) 6 | -------------------------------------------------------------------------------- /days/069-072-django-rest/demo/requirements.txt: -------------------------------------------------------------------------------- 1 | django==2.2.28 2 | django-registration==3.1.2 3 | djangorestframework 4 | requests 5 | django-rest-swagger 6 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/your-turn/billtracker_with_viewmodels/billtracker/pytest.ini: -------------------------------------------------------------------------------- 1 | [pytest] 2 | testpaths = billtracker 3 | python_files = test*.py 4 | -------------------------------------------------------------------------------- /days/085-088-aws-lambda/img/pep-ok.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/085-088-aws-lambda/img/pep-ok.png -------------------------------------------------------------------------------- /days/001-004-flask-intro/code/program/__init__.py: -------------------------------------------------------------------------------- 1 | from flask import Flask 2 | from program import routes # noqa: F401 3 | 4 | app = Flask(__name__) 5 | 6 | 7 | -------------------------------------------------------------------------------- /days/053-056-django-registration/demo/quotes/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | from .models import Quote 4 | 5 | admin.site.register(Quote) 6 | -------------------------------------------------------------------------------- /days/053-056-django-registration/demo/quotes/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class QuotesConfig(AppConfig): 5 | name = 'quotes' 6 | -------------------------------------------------------------------------------- /days/069-072-django-rest/starter_code.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/069-072-django-rest/starter_code.zip -------------------------------------------------------------------------------- /days/085-088-aws-lambda/img/pep-notok.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/085-088-aws-lambda/img/pep-notok.png -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/jquery/src/selector.js: -------------------------------------------------------------------------------- 1 | define( [ "./selector-sizzle" ], function() { 2 | "use strict"; 3 | } ); 4 | -------------------------------------------------------------------------------- /days/037-40-pyramid-intro/demo/billtracker/billtracker/data/modelbase.py: -------------------------------------------------------------------------------- 1 | import sqlalchemy.ext.declarative as dec 2 | 3 | SqlAlchemyBase = dec.declarative_base() 4 | -------------------------------------------------------------------------------- /days/041-044-react/demo/screenshots/tips.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/041-044-react/demo/screenshots/tips.png -------------------------------------------------------------------------------- /days/061-064-db-migrations/demo/billtracker/billtracker/data/modelbase.py: -------------------------------------------------------------------------------- 1 | import sqlalchemy.ext.declarative as dec 2 | 3 | SqlAlchemyBase = dec.declarative_base() 4 | -------------------------------------------------------------------------------- /days/069-072-django-rest/demo/mysite/templates/django_registration/activation_email_subject.txt: -------------------------------------------------------------------------------- 1 | {% load i18n %}{% trans "Account activation on" %} {{ site.name }} 2 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/demo/billtracker/billtracker/data/modelbase.py: -------------------------------------------------------------------------------- 1 | import sqlalchemy.ext.declarative as dec 2 | 3 | SqlAlchemyBase = dec.declarative_base() 4 | -------------------------------------------------------------------------------- /days/085-088-aws-lambda/img/architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/085-088-aws-lambda/img/architecture.png -------------------------------------------------------------------------------- /days/089-092-deployment/demo/billtracker/billtracker/data/modelbase.py: -------------------------------------------------------------------------------- 1 | import sqlalchemy.ext.declarative as dec 2 | 3 | SqlAlchemyBase = dec.declarative_base() 4 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/jquery/src/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "root": true, 3 | 4 | "extends": "../.eslintrc-browser.json" 5 | } 6 | -------------------------------------------------------------------------------- /days/041-044-react/demo/tips/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/041-044-react/demo/tips/public/favicon.ico -------------------------------------------------------------------------------- /days/005-008-html5/demos/yahoo_clone/img/cool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/005-008-html5/demos/yahoo_clone/img/cool.png -------------------------------------------------------------------------------- /days/005-008-html5/demos/yahoo_clone/img/more.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/005-008-html5/demos/yahoo_clone/img/more.png -------------------------------------------------------------------------------- /days/005-008-html5/demos/yahoo_clone/img/new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/005-008-html5/demos/yahoo_clone/img/new.png -------------------------------------------------------------------------------- /days/005-008-html5/demos/yahoo_clone/img/news.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/005-008-html5/demos/yahoo_clone/img/news.png -------------------------------------------------------------------------------- /days/041-044-react/demo/screenshots/freemonkey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/041-044-react/demo/screenshots/freemonkey.png -------------------------------------------------------------------------------- /days/053-056-django-registration/demo/mysite/templates/django_registration/activation_email_subject.txt: -------------------------------------------------------------------------------- 1 | {% load i18n %}{% trans "Account activation on" %} {{ site.name }} 2 | -------------------------------------------------------------------------------- /days/005-008-html5/demos/yahoo_clone/img/yaahoo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/005-008-html5/demos/yahoo_clone/img/yaahoo.png -------------------------------------------------------------------------------- /days/025-028-javascript/demo/calories/img/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/025-028-javascript/demo/calories/img/delete.png -------------------------------------------------------------------------------- /days/085-088-aws-lambda/demo/lambdas/lambda.pkg.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/085-088-aws-lambda/demo/lambdas/lambda.pkg.zip -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/core/components/index.js: -------------------------------------------------------------------------------- 1 | import KeepAlive from './keep-alive' 2 | 3 | export default { 4 | KeepAlive 5 | } 6 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/core/components/index.js: -------------------------------------------------------------------------------- 1 | import KeepAlive from './keep-alive' 2 | 3 | export default { 4 | KeepAlive 5 | } 6 | -------------------------------------------------------------------------------- /days/005-008-html5/your-turn/google-1998-marked-up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/005-008-html5/your-turn/google-1998-marked-up.png -------------------------------------------------------------------------------- /days/013-016-css-basics/your-turn/talk-python-nav.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/013-016-css-basics/your-turn/talk-python-nav.png -------------------------------------------------------------------------------- /days/025-028-javascript/demo/calories/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/025-028-javascript/demo/calories/img/favicon.ico -------------------------------------------------------------------------------- /days/025-028-javascript/demo/calories/img/le_bigmac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/025-028-javascript/demo/calories/img/le_bigmac.png -------------------------------------------------------------------------------- /days/041-044-react/demo/freemonkey/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/041-044-react/demo/freemonkey/public/favicon.ico -------------------------------------------------------------------------------- /days/093-096-vuejs/movie_svc/views/home.py: -------------------------------------------------------------------------------- 1 | from app_instance import api 2 | 3 | 4 | @api.route("/") 5 | def index(req, resp): 6 | resp.content = api.template('home/index.html') 7 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/platforms/web/entry-runtime.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | import Vue from './runtime/index' 4 | 5 | export default Vue 6 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/platforms/web/entry-runtime.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | import Vue from './runtime/index' 4 | 5 | export default Vue 6 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/platforms/weex/compiler/directives/index.js: -------------------------------------------------------------------------------- 1 | import model from './model' 2 | 3 | export default { 4 | model 5 | } 6 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/platforms/weex/compiler/directives/index.js: -------------------------------------------------------------------------------- 1 | import model from './model' 2 | 3 | export default { 4 | model 5 | } 6 | -------------------------------------------------------------------------------- /days/005-008-html5/demos/signup/.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /days/029-032-static-site-gen/code/content/images/pb-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/029-032-static-site-gen/code/content/images/pb-logo.png -------------------------------------------------------------------------------- /days/029-032-static-site-gen/code/content/pages/about.md: -------------------------------------------------------------------------------- 1 | Title: About 2 | 3 | #About Page! 4 | 5 | ##This is a page about me 6 | 7 | I made this site to demonstrate static site generators 8 | -------------------------------------------------------------------------------- /days/029-032-static-site-gen/code/output/images/pb-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/029-032-static-site-gen/code/output/images/pb-logo.png -------------------------------------------------------------------------------- /days/033-036-sqlalchemy-orm/demo/hovershare_app_final/data/sqlalchemybase.py: -------------------------------------------------------------------------------- 1 | import sqlalchemy.ext.declarative 2 | 3 | SqlAlchemyBase = sqlalchemy.ext.declarative.declarative_base() 4 | 5 | 6 | -------------------------------------------------------------------------------- /days/041-044-react/es6/arrow.js: -------------------------------------------------------------------------------- 1 | // if single line, omit return and {} 2 | const myFunc = (name='stranger') => 'Hello ' + name; 3 | 4 | console.log(myFunc()); 5 | console.log(myFunc('mike')); 6 | -------------------------------------------------------------------------------- /days/045-048-django-intro/demo/mysite/static/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/045-048-django-intro/demo/mysite/static/img/favicon.ico -------------------------------------------------------------------------------- /days/057-060-flask-login/code/project_awesome/site_users.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/057-060-flask-login/code/project_awesome/site_users.db -------------------------------------------------------------------------------- /days/069-072-django-rest/demo/mysite/static/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/069-072-django-rest/demo/mysite/static/img/favicon.ico -------------------------------------------------------------------------------- /days/017-020-flask-call-apis/code/program/templates/chuck.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block content %} 4 |

Chuck Norris Jokes!

5 |

{{joke}}

6 | {% endblock %} 7 | -------------------------------------------------------------------------------- /days/041-044-react/demo/README.md: -------------------------------------------------------------------------------- 1 | # React Projects Code 2 | 3 | In this folder you will find the React code for the [Tips API front-end](tips/) and the [Free Monkey (hangman) game](freemonkey/). 4 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/your-turn/billtracker_with_viewmodels/billtracker/billtracker/data/modelbase.py: -------------------------------------------------------------------------------- 1 | import sqlalchemy.ext.declarative as dec 2 | 3 | SqlAlchemyBase = dec.declarative_base() 4 | -------------------------------------------------------------------------------- /days/089-092-deployment/demo/billtracker/MANIFEST.in: -------------------------------------------------------------------------------- 1 | include *.txt *.ini *.cfg *.rst 2 | recursive-include billtracker *.ico *.png *.css *.gif *.jpg *.pt *.txt *.mak *.mako *.js *.html *.xml *.jinja2 3 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/bootstrap/scss/_media.scss: -------------------------------------------------------------------------------- 1 | .media { 2 | display: flex; 3 | align-items: flex-start; 4 | } 5 | 6 | .media-body { 7 | flex: 1; 8 | } 9 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/services/movie_svc/views/home.py: -------------------------------------------------------------------------------- 1 | from app_instance import api 2 | 3 | 4 | @api.route("/") 5 | def index(req, resp): 6 | resp.content = api.template('home/index.html') 7 | -------------------------------------------------------------------------------- /days/037-40-pyramid-intro/demo/billtracker/MANIFEST.in: -------------------------------------------------------------------------------- 1 | include *.txt *.ini *.cfg *.rst 2 | recursive-include billtracker *.ico *.png *.css *.gif *.jpg *.pt *.txt *.mak *.mako *.js *.html *.xml *.jinja2 3 | -------------------------------------------------------------------------------- /days/061-064-db-migrations/demo/billtracker/MANIFEST.in: -------------------------------------------------------------------------------- 1 | include *.txt *.ini *.cfg *.rst 2 | recursive-include billtracker *.ico *.png *.css *.gif *.jpg *.pt *.txt *.mak *.mako *.js *.html *.xml *.jinja2 3 | -------------------------------------------------------------------------------- /days/069-072-django-rest/demo/mysite/templates/registration/logout.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | 4 | {% block content %} 5 |

{% trans "Logged out" %}

6 | {% endblock %} 7 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/demo/billtracker/MANIFEST.in: -------------------------------------------------------------------------------- 1 | include *.txt *.ini *.cfg *.rst 2 | recursive-include billtracker *.ico *.png *.css *.gif *.jpg *.pt *.txt *.mak *.mako *.js *.html *.xml *.jinja2 3 | -------------------------------------------------------------------------------- /days/013-016-css-basics/demos/selectorville/static/img/dunecat.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/013-016-css-basics/demos/selectorville/static/img/dunecat.jpg -------------------------------------------------------------------------------- /days/021-024-quart-async/cityscape_api/requirements.txt: -------------------------------------------------------------------------------- 1 | # Web framework requirements 2 | flask 3 | 4 | # Calling services requirements 5 | requests 6 | 7 | aiohttp 8 | aiodns 9 | cchardet 10 | 11 | -------------------------------------------------------------------------------- /days/029-032-static-site-gen/code/output/theme/images/icons/rss.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/029-032-static-site-gen/code/output/theme/images/icons/rss.png -------------------------------------------------------------------------------- /days/033-036-sqlalchemy-orm/demo/hovershare_app_final/infrastructure/numbers.py: -------------------------------------------------------------------------------- 1 | def try_int(text: str, default=-1) -> int: 2 | try: 3 | return int(text) 4 | except: 5 | return default 6 | -------------------------------------------------------------------------------- /days/033-036-sqlalchemy-orm/demo/hovershare_app_starter/infrastructure/numbers.py: -------------------------------------------------------------------------------- 1 | def try_int(text: str, default=-1) -> int: 2 | try: 3 | return int(text) 4 | except: 5 | return default 6 | -------------------------------------------------------------------------------- /days/037-40-pyramid-intro/demo/billtracker/.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /days/053-056-django-registration/demo/mysite/static/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/053-056-django-registration/demo/mysite/static/img/favicon.ico -------------------------------------------------------------------------------- /days/053-056-django-registration/demo/mysite/templates/registration/logout.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | 4 | {% block content %} 5 |

{% trans "Logged out" %}

6 | {% endblock %} 7 | -------------------------------------------------------------------------------- /days/053-056-django-registration/django-registration-templates.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/053-056-django-registration/django-registration-templates.zip -------------------------------------------------------------------------------- /days/061-064-db-migrations/your-turn/hovershare_project/hovershare/data/sqlalchemybase.py: -------------------------------------------------------------------------------- 1 | import sqlalchemy.ext.declarative 2 | 3 | SqlAlchemyBase = sqlalchemy.ext.declarative.declarative_base() 4 | 5 | 6 | -------------------------------------------------------------------------------- /days/093-096-vuejs/movie_svc/app.py: -------------------------------------------------------------------------------- 1 | # noinspection PyUnresolvedReferences 2 | from app_instance import api 3 | from routes import * 4 | from data import db 5 | 6 | db.global_init() 7 | 8 | api.run(port=7007) 9 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/platforms/weex/entry-compiler.js: -------------------------------------------------------------------------------- 1 | export { compile } from 'weex/compiler/index' 2 | export { generateCodeFrame } from 'compiler/codeframe' 3 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/platforms/weex/entry-compiler.js: -------------------------------------------------------------------------------- 1 | export { compile } from 'weex/compiler/index' 2 | export { generateCodeFrame } from 'compiler/codeframe' 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 100 Days of web with Python 2 | 3 | ![](https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/master/readme_resources/100days-web.png?token=AAPQ62OROPS5REVP3COFPSS4ZIIEW) 4 | 5 | -------------------------------------------------------------------------------- /days/029-032-static-site-gen/code/output/theme/images/icons/github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/029-032-static-site-gen/code/output/theme/images/icons/github.png -------------------------------------------------------------------------------- /days/029-032-static-site-gen/code/output/theme/images/icons/gittip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/029-032-static-site-gen/code/output/theme/images/icons/gittip.png -------------------------------------------------------------------------------- /days/029-032-static-site-gen/code/output/theme/images/icons/lastfm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/029-032-static-site-gen/code/output/theme/images/icons/lastfm.png -------------------------------------------------------------------------------- /days/029-032-static-site-gen/code/output/theme/images/icons/reddit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/029-032-static-site-gen/code/output/theme/images/icons/reddit.png -------------------------------------------------------------------------------- /days/029-032-static-site-gen/code/output/theme/images/icons/vimeo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/029-032-static-site-gen/code/output/theme/images/icons/vimeo.png -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /days/029-032-static-site-gen/code/output/theme/images/icons/aboutme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/029-032-static-site-gen/code/output/theme/images/icons/aboutme.png -------------------------------------------------------------------------------- /days/029-032-static-site-gen/code/output/theme/images/icons/facebook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/029-032-static-site-gen/code/output/theme/images/icons/facebook.png -------------------------------------------------------------------------------- /days/029-032-static-site-gen/code/output/theme/images/icons/linkedin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/029-032-static-site-gen/code/output/theme/images/icons/linkedin.png -------------------------------------------------------------------------------- /days/029-032-static-site-gen/code/output/theme/images/icons/twitter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/029-032-static-site-gen/code/output/theme/images/icons/twitter.png -------------------------------------------------------------------------------- /days/029-032-static-site-gen/code/output/theme/images/icons/youtube.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/029-032-static-site-gen/code/output/theme/images/icons/youtube.png -------------------------------------------------------------------------------- /days/093-096-vuejs/movie_svc/app_instance.py: -------------------------------------------------------------------------------- 1 | import responder 2 | 3 | cors_params = { 4 | 'allow_origins': '*', 5 | 'allow_methods': '*', 6 | } 7 | 8 | api = responder.API(cors=True, cors_params=cors_params) 9 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/bootstrap/scss/mixins/_clearfix.scss: -------------------------------------------------------------------------------- 1 | @mixin clearfix() { 2 | &::after { 3 | display: block; 4 | clear: both; 5 | content: ""; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /days/021-024-quart-async/async_cityscape_api/requirements.txt: -------------------------------------------------------------------------------- 1 | # Web framework requirements 2 | # flask 3 | quart 4 | 5 | # Calling services requirements 6 | # requests 7 | 8 | aiohttp 9 | aiodns 10 | cchardet 11 | -------------------------------------------------------------------------------- /days/021-024-quart-async/your_turn/day_4/cityscape_api/requirements.txt: -------------------------------------------------------------------------------- 1 | # Web framework requirements 2 | flask 3 | 4 | # Calling services requirements 5 | requests 6 | 7 | aiohttp 8 | aiodns 9 | cchardet 10 | 11 | -------------------------------------------------------------------------------- /days/029-032-static-site-gen/code/output/theme/images/icons/bitbucket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/029-032-static-site-gen/code/output/theme/images/icons/bitbucket.png -------------------------------------------------------------------------------- /days/029-032-static-site-gen/code/output/theme/images/icons/delicious.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/029-032-static-site-gen/code/output/theme/images/icons/delicious.png -------------------------------------------------------------------------------- /days/029-032-static-site-gen/code/output/theme/images/icons/gitorious.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/029-032-static-site-gen/code/output/theme/images/icons/gitorious.png -------------------------------------------------------------------------------- /days/029-032-static-site-gen/code/output/theme/images/icons/google-plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/029-032-static-site-gen/code/output/theme/images/icons/google-plus.png -------------------------------------------------------------------------------- /days/029-032-static-site-gen/code/output/theme/images/icons/hackernews.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/029-032-static-site-gen/code/output/theme/images/icons/hackernews.png -------------------------------------------------------------------------------- /days/029-032-static-site-gen/code/output/theme/images/icons/slideshare.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/029-032-static-site-gen/code/output/theme/images/icons/slideshare.png -------------------------------------------------------------------------------- /days/029-032-static-site-gen/code/output/theme/images/icons/speakerdeck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/029-032-static-site-gen/code/output/theme/images/icons/speakerdeck.png -------------------------------------------------------------------------------- /days/061-064-db-migrations/your-turn/hovershare_project/hovershare/infrastructure/numbers.py: -------------------------------------------------------------------------------- 1 | def try_int(text: str, default=-1) -> int: 2 | try: 3 | return int(text) 4 | except: 5 | return default 6 | -------------------------------------------------------------------------------- /days/069-072-django-rest/demo/mysite/templates/registration/password_change_done.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | 4 | {% block content %} 5 |

{% trans "Password changed" %}

6 | {% endblock %} 7 | -------------------------------------------------------------------------------- /days/089-092-deployment/demo/billtracker/billtracker/static/img/finance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/089-092-deployment/demo/billtracker/billtracker/static/img/finance.png -------------------------------------------------------------------------------- /days/089-092-deployment/demo/billtracker/billtracker/static/img/pyramid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/089-092-deployment/demo/billtracker/billtracker/static/img/pyramid.png -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/core/vdom/modules/index.js: -------------------------------------------------------------------------------- 1 | import directives from './directives' 2 | import ref from './ref' 3 | 4 | export default [ 5 | ref, 6 | directives 7 | ] 8 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/platforms/web/server/directives/index.js: -------------------------------------------------------------------------------- 1 | import show from './show' 2 | import model from './model' 3 | 4 | export default { 5 | show, 6 | model 7 | } 8 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/core/vdom/modules/index.js: -------------------------------------------------------------------------------- 1 | import directives from './directives' 2 | import ref from './ref' 3 | 4 | export default [ 5 | ref, 6 | directives 7 | ] 8 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/platforms/web/server/directives/index.js: -------------------------------------------------------------------------------- 1 | import show from './show' 2 | import model from './model' 3 | 4 | export default { 5 | show, 6 | model 7 | } 8 | -------------------------------------------------------------------------------- /days/029-032-static-site-gen/code/output/theme/images/icons/google-groups.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/029-032-static-site-gen/code/output/theme/images/icons/google-groups.png -------------------------------------------------------------------------------- /days/029-032-static-site-gen/code/output/theme/images/icons/stackoverflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/029-032-static-site-gen/code/output/theme/images/icons/stackoverflow.png -------------------------------------------------------------------------------- /days/037-40-pyramid-intro/demo/billtracker/billtracker/static/img/finance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/037-40-pyramid-intro/demo/billtracker/billtracker/static/img/finance.png -------------------------------------------------------------------------------- /days/037-40-pyramid-intro/demo/billtracker/billtracker/static/img/pyramid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/037-40-pyramid-intro/demo/billtracker/billtracker/static/img/pyramid.png -------------------------------------------------------------------------------- /days/051-twilio/code/requirements.txt: -------------------------------------------------------------------------------- 1 | certifi==2019.3.9 2 | chardet==3.0.4 3 | idna==2.8 4 | PyJWT==2.4.0 5 | PySocks==1.6.8 6 | pytz==2019.1 7 | requests==2.21.0 8 | six==1.12.0 9 | twilio==6.26.1 10 | urllib3==1.26.5 11 | -------------------------------------------------------------------------------- /days/053-056-django-registration/demo/mysite/templates/registration/password_change_done.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | 4 | {% block content %} 5 |

{% trans "Password changed" %}

6 | {% endblock %} 7 | -------------------------------------------------------------------------------- /days/065-068-heroku-deployment/code/templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Index Page 4 | 5 | 6 | 7 |

My Test Heroku Index Page

8 | 9 | 10 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/demo/billtracker/billtracker/static/img/finance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/081-084-unit-testing/demo/billtracker/billtracker/static/img/finance.png -------------------------------------------------------------------------------- /days/081-084-unit-testing/demo/billtracker/billtracker/static/img/pyramid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/081-084-unit-testing/demo/billtracker/billtracker/static/img/pyramid.png -------------------------------------------------------------------------------- /days/093-096-vuejs/movie_exploder/js/vue/vue.common.js: -------------------------------------------------------------------------------- 1 | if (process.env.NODE_ENV === 'production') { 2 | module.exports = require('./vue.common.prod.js') 3 | } else { 4 | module.exports = require('./vue.common.dev.js') 5 | } 6 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/platforms/web/runtime/directives/index.js: -------------------------------------------------------------------------------- 1 | import model from './model' 2 | import show from './show' 3 | 4 | export default { 5 | model, 6 | show 7 | } 8 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/platforms/web/runtime/directives/index.js: -------------------------------------------------------------------------------- 1 | import model from './model' 2 | import show from './show' 3 | 4 | export default { 5 | model, 6 | show 7 | } 8 | -------------------------------------------------------------------------------- /days/029-032-static-site-gen/code/output/theme/fonts/Yanone_Kaffeesatz_400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/029-032-static-site-gen/code/output/theme/fonts/Yanone_Kaffeesatz_400.eot -------------------------------------------------------------------------------- /days/029-032-static-site-gen/code/output/theme/fonts/Yanone_Kaffeesatz_400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/029-032-static-site-gen/code/output/theme/fonts/Yanone_Kaffeesatz_400.ttf -------------------------------------------------------------------------------- /days/029-032-static-site-gen/code/output/theme/fonts/Yanone_Kaffeesatz_400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/029-032-static-site-gen/code/output/theme/fonts/Yanone_Kaffeesatz_400.woff -------------------------------------------------------------------------------- /days/029-032-static-site-gen/code/output/theme/fonts/Yanone_Kaffeesatz_400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/029-032-static-site-gen/code/output/theme/fonts/Yanone_Kaffeesatz_400.woff2 -------------------------------------------------------------------------------- /days/061-064-db-migrations/demo/billtracker/billtracker/static/img/finance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/061-064-db-migrations/demo/billtracker/billtracker/static/img/finance.png -------------------------------------------------------------------------------- /days/061-064-db-migrations/demo/billtracker/billtracker/static/img/pyramid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/061-064-db-migrations/demo/billtracker/billtracker/static/img/pyramid.png -------------------------------------------------------------------------------- /days/081-084-unit-testing/your-turn/billtracker_with_viewmodels/billtracker/MANIFEST.in: -------------------------------------------------------------------------------- 1 | include *.txt *.ini *.cfg *.rst 2 | recursive-include billtracker *.ico *.png *.css *.gif *.jpg *.pt *.txt *.mak *.mako *.js *.html *.xml *.jinja2 3 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/services/movie_svc/app_instance.py: -------------------------------------------------------------------------------- 1 | import responder 2 | 3 | cors_params = { 4 | 'allow_origins': '*', 5 | 'allow_methods': '*', 6 | } 7 | 8 | api = responder.API(cors=True, cors_params=cors_params) 9 | -------------------------------------------------------------------------------- /days/001-004-flask-intro/code/program/templates/index.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block content %} 4 |

Hello! The current date is {{ time }}

5 |

THIS IS TEXT FROM INDEX, NOT BASE

6 | {% endblock %} 7 | -------------------------------------------------------------------------------- /days/033-036-sqlalchemy-orm/demo/hovershare_app_final/db/db_folder.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | 4 | def get_full_path(db_filename: str) -> str: 5 | this_folder = os.path.dirname(__file__) 6 | return os.path.join(this_folder, db_filename) 7 | -------------------------------------------------------------------------------- /days/050-responder/demo/movie_svc/views/home.py: -------------------------------------------------------------------------------- 1 | from api_instance import api 2 | 3 | 4 | # api.static_route('/static', static=True) 5 | 6 | @api.route('/') 7 | def index(_, resp): 8 | resp.content = api.template('home/index.html') 9 | -------------------------------------------------------------------------------- /days/089-092-deployment/demo/billtracker/billtracker/static/img/pyramid-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/089-092-deployment/demo/billtracker/billtracker/static/img/pyramid-16x16.png -------------------------------------------------------------------------------- /days/093-096-vuejs/starter_movie_exploder/js/vue/vue.common.js: -------------------------------------------------------------------------------- 1 | if (process.env.NODE_ENV === 'production') { 2 | module.exports = require('./vue.common.prod.js') 3 | } else { 4 | module.exports = require('./vue.common.dev.js') 5 | } 6 | -------------------------------------------------------------------------------- /days/017-020-flask-call-apis/code/program/templates/index.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block content %} 4 |

Hello! The current date is {{ time }}

5 |

THIS IS TEXT FROM INDEX, NOT BASE

6 | {% endblock %} 7 | -------------------------------------------------------------------------------- /days/021-024-quart-async/async_cityscape_api/.idea/dictionaries/mkennedy.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | appid 5 | 6 | 7 | -------------------------------------------------------------------------------- /days/033-036-sqlalchemy-orm/demo/hovershare_app_starter/db/db_folder.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | 4 | def get_full_path(db_filename: str) -> str: 5 | this_folder = os.path.dirname(__file__) 6 | return os.path.join(this_folder, db_filename) 7 | -------------------------------------------------------------------------------- /days/037-40-pyramid-intro/demo/billtracker/billtracker/static/img/pyramid-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/037-40-pyramid-intro/demo/billtracker/billtracker/static/img/pyramid-16x16.png -------------------------------------------------------------------------------- /days/045-048-django-intro/demo/mysite/urls.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | from django.urls import include, path 3 | 4 | 5 | urlpatterns = [ 6 | path('', include('quotes.urls')), 7 | path('my-backend/', admin.site.urls), 8 | ] 9 | -------------------------------------------------------------------------------- /days/061-064-db-migrations/demo/billtracker/billtracker/static/img/pyramid-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/061-064-db-migrations/demo/billtracker/billtracker/static/img/pyramid-16x16.png -------------------------------------------------------------------------------- /days/069-072-django-rest/demo/mysite/templates/django_registration/activation_failed.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | 4 | {% block content %} 5 | 6 |

{% trans "Account activation failed" %}

7 | 8 | {% endblock %} 9 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/demo/billtracker/billtracker/static/img/pyramid-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/081-084-unit-testing/demo/billtracker/billtracker/static/img/pyramid-16x16.png -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/js/vue/vue.common.js: -------------------------------------------------------------------------------- 1 | if (process.env.NODE_ENV === 'production') { 2 | module.exports = require('./vue.common.prod.js') 3 | } else { 4 | module.exports = require('./vue.common.dev.js') 5 | } 6 | -------------------------------------------------------------------------------- /days/021-024-quart-async/python_async/.idea/dictionaries/screencaster.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | colorama 5 | 6 | 7 | -------------------------------------------------------------------------------- /days/065-068-heroku-deployment/code/requirements.txt: -------------------------------------------------------------------------------- 1 | Click==7.0 2 | Flask==1.0.2 3 | gunicorn==19.9.0 4 | itsdangerous==1.1.0 5 | Jinja2>=2.10.1 6 | MarkupSafe==1.1.1 7 | python-http-client==3.1.0 8 | sendgrid==5.6.0 9 | werkzeug>=0.15.3 10 | -------------------------------------------------------------------------------- /days/069-072-django-rest/demo/mysite/templates/django_registration/registration_closed.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | 4 | {% block content %} 5 |

{% trans "Registration is currently closed." %}

6 | {% endblock %} 7 | -------------------------------------------------------------------------------- /days/069-072-django-rest/demo/quotes/forms.py: -------------------------------------------------------------------------------- 1 | from django.forms import ModelForm 2 | 3 | from .models import Quote 4 | 5 | 6 | class QuoteForm(ModelForm): 7 | class Meta: 8 | model = Quote 9 | exclude = ('user',) 10 | -------------------------------------------------------------------------------- /days/089-092-deployment/demo/billtracker/billtracker/routes.py: -------------------------------------------------------------------------------- 1 | def includeme(config): 2 | config.add_static_view('static', 'static', cache_max_age=3600) 3 | config.add_route('home', '/') 4 | config.add_route('details', '/bill/{bill_id}') 5 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/.idea/dictionaries/mkennedy.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | axios 5 | 6 | 7 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/core/vdom/helpers/is-async-placeholder.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | export function isAsyncPlaceholder (node: VNode): boolean { 4 | return node.isComment && node.asyncFactory 5 | } 6 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/core/vdom/helpers/is-async-placeholder.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | export function isAsyncPlaceholder (node: VNode): boolean { 4 | return node.isComment && node.asyncFactory 5 | } 6 | -------------------------------------------------------------------------------- /days/037-40-pyramid-intro/demo/billtracker/billtracker/routes.py: -------------------------------------------------------------------------------- 1 | def includeme(config): 2 | config.add_static_view('static', 'static', cache_max_age=3600) 3 | config.add_route('home', '/') 4 | config.add_route('details', '/bill/{bill_id}') 5 | -------------------------------------------------------------------------------- /days/053-056-django-registration/demo/mysite/templates/django_registration/activation_failed.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | 4 | {% block content %} 5 | 6 |

{% trans "Account activation failed" %}

7 | 8 | {% endblock %} 9 | -------------------------------------------------------------------------------- /days/053-056-django-registration/demo/mysite/templates/django_registration/registration_closed.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | 4 | {% block content %} 5 |

{% trans "Registration is currently closed." %}

6 | {% endblock %} 7 | -------------------------------------------------------------------------------- /days/053-056-django-registration/demo/quotes/forms.py: -------------------------------------------------------------------------------- 1 | from django.forms import ModelForm 2 | 3 | from .models import Quote 4 | 5 | 6 | class QuoteForm(ModelForm): 7 | class Meta: 8 | model = Quote 9 | exclude = ('user',) 10 | -------------------------------------------------------------------------------- /days/061-064-db-migrations/demo/billtracker/billtracker/routes.py: -------------------------------------------------------------------------------- 1 | def includeme(config): 2 | config.add_static_view('static', 'static', cache_max_age=3600) 3 | config.add_route('home', '/') 4 | config.add_route('details', '/bill/{bill_id}') 5 | -------------------------------------------------------------------------------- /days/061-064-db-migrations/your-turn/hovershare_project/hovershare/db/db_folder.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | 4 | def get_full_path(db_filename: str) -> str: 5 | this_folder = os.path.dirname(__file__) 6 | return os.path.join(this_folder, db_filename) 7 | -------------------------------------------------------------------------------- /days/069-072-django-rest/demo/mysite/templates/django_registration/registration_complete.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | 4 | {% block content %} 5 |

{% trans "You are now registered. Activation email sent." %}

6 | {% endblock %} -------------------------------------------------------------------------------- /days/081-084-unit-testing/demo/billtracker/billtracker/routes.py: -------------------------------------------------------------------------------- 1 | def includeme(config): 2 | config.add_static_view('static', 'static', cache_max_age=3600) 3 | config.add_route('home', '/') 4 | config.add_route('details', '/bill/{bill_id}') 5 | -------------------------------------------------------------------------------- /days/093-096-vuejs/movie_exploder/js/vue/vue.runtime.common.js: -------------------------------------------------------------------------------- 1 | if (process.env.NODE_ENV === 'production') { 2 | module.exports = require('./vue.runtime.common.prod.js') 3 | } else { 4 | module.exports = require('./vue.runtime.common.dev.js') 5 | } 6 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/bootstrap/scss/utilities/_overflow.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | @each $value in $overflows { 4 | .overflow-#{$value} { overflow: $value !important; } 5 | } 6 | -------------------------------------------------------------------------------- /days/021-024-quart-async/python_async/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /days/029-032-static-site-gen/code/output/theme/css/typogrify.css: -------------------------------------------------------------------------------- 1 | .caps {font-size:.92em;} 2 | .amp {color:#666; font-size:1.05em;font-family:"Warnock Pro", "Goudy Old Style","Palatino","Book Antiqua",serif; font-style:italic;} 3 | .dquo {margin-left:-.38em;} 4 | -------------------------------------------------------------------------------- /days/069-072-django-rest/demo/env_variables.txt: -------------------------------------------------------------------------------- 1 | Set these env variables in your venv/bin/activate script 2 | 3 | export SECRET_KEY='some-long-string' 4 | export DEBUG=True 5 | export SENDGRID_USERNAME='your-user' 6 | export SENDGRID_PASSWORD='your-password' 7 | -------------------------------------------------------------------------------- /days/069-072-django-rest/demo/mysite/templates/registration/password_reset_done.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | 4 | {% block content %} 5 |

{% trans "Email with password reset instructions has been sent." %}

6 | {% endblock %} 7 | -------------------------------------------------------------------------------- /days/089-092-deployment/demo/billtracker/billtracker/data/__all_models.py: -------------------------------------------------------------------------------- 1 | # noinspection PyUnresolvedReferences 2 | from billtracker.data.models.bill import Bill 3 | # noinspection PyUnresolvedReferences 4 | from billtracker.data.models.users import User 5 | 6 | -------------------------------------------------------------------------------- /days/093-096-vuejs/starter_movie_exploder/js/vue/vue.runtime.common.js: -------------------------------------------------------------------------------- 1 | if (process.env.NODE_ENV === 'production') { 2 | module.exports = require('./vue.runtime.common.prod.js') 3 | } else { 4 | module.exports = require('./vue.runtime.common.dev.js') 5 | } 6 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/services/movie_svc/app.py: -------------------------------------------------------------------------------- 1 | # noinspection PyUnresolvedReferences 2 | from app_instance import api 3 | from routes import * 4 | from data import db 5 | 6 | db.global_init() 7 | 8 | 9 | api.run(port=7007, address="0.0.0.0") 10 | -------------------------------------------------------------------------------- /days/001-004-flask-intro/code/program/templates/100Days.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block content %} 4 |

Congrats on starting your 100 Days of Code Challenge!

5 |

THIS IS TEXT FROM 100DAYS HTML, NOT BASE

6 | {% endblock %} 7 | -------------------------------------------------------------------------------- /days/021-024-quart-async/async_cityscape_api/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /days/037-40-pyramid-intro/demo/billtracker/billtracker/data/__all_models.py: -------------------------------------------------------------------------------- 1 | # noinspection PyUnresolvedReferences 2 | from billtracker.data.models.bill import Bill 3 | # noinspection PyUnresolvedReferences 4 | from billtracker.data.models.users import User 5 | 6 | -------------------------------------------------------------------------------- /days/041-044-react/es6/hello.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | 3 | class App extends Component { 4 | 5 | render(){ 6 | const hello = 'Hello world from React'; 7 | return ( 8 |

{hello}

9 | ) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /days/053-056-django-registration/demo/mysite/templates/django_registration/registration_complete.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | 4 | {% block content %} 5 |

{% trans "You are now registered. Activation email sent." %}

6 | {% endblock %} -------------------------------------------------------------------------------- /days/061-064-db-migrations/demo/billtracker/billtracker/data/__all_models.py: -------------------------------------------------------------------------------- 1 | # noinspection PyUnresolvedReferences 2 | from billtracker.data.models.bill import Bill 3 | # noinspection PyUnresolvedReferences 4 | from billtracker.data.models.users import User 5 | 6 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/demo/billtracker/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/demo/billtracker/billtracker/data/__all_models.py: -------------------------------------------------------------------------------- 1 | # noinspection PyUnresolvedReferences 2 | from billtracker.data.models.bill import Bill 3 | # noinspection PyUnresolvedReferences 4 | from billtracker.data.models.users import User 5 | 6 | -------------------------------------------------------------------------------- /days/017-020-flask-call-apis/code/program/templates/100Days.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block content %} 4 |

Congrats on starting your 100 Days of Code Challenge!

5 |

THIS IS TEXT FROM 100DAYS HTML, NOT BASE

6 | {% endblock %} 7 | -------------------------------------------------------------------------------- /days/050-responder/your-turn/README.md: -------------------------------------------------------------------------------- 1 | # Day 50 Responder 2 | 3 | In this miscellaneous, 1-day lesson there is not a dedicated follow on exercise. 4 | 5 | But feel free to play converting one of your Flask API apps over to responder. That should go pretty quick. 6 | -------------------------------------------------------------------------------- /days/053-056-django-registration/demo/env_variables.txt: -------------------------------------------------------------------------------- 1 | Set these env variables in your venv/bin/activate script 2 | 3 | export SECRET_KEY='some-long-string' 4 | export DEBUG=True 5 | export SENDGRID_USERNAME='your-user' 6 | export SENDGRID_PASSWORD='your-password' 7 | -------------------------------------------------------------------------------- /days/053-056-django-registration/demo/mysite/templates/registration/password_reset_done.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | 4 | {% block content %} 5 |

{% trans "Email with password reset instructions has been sent." %}

6 | {% endblock %} 7 | -------------------------------------------------------------------------------- /days/065-068-heroku-deployment/code/app.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, render_template 2 | 3 | app = Flask(__name__) 4 | 5 | @app.route('/') 6 | def index(): 7 | return render_template("index.html") 8 | 9 | if __name__ == '__main__': 10 | app.run() 11 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/bootstrap/scss/mixins/_size.scss: -------------------------------------------------------------------------------- 1 | // Sizing shortcuts 2 | 3 | @mixin size($width, $height: $width) { 4 | width: $width; 5 | height: $height; 6 | @include deprecate("`size()`", "v4.3.0", "v5"); 7 | } 8 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/js/vue/vue.runtime.common.js: -------------------------------------------------------------------------------- 1 | if (process.env.NODE_ENV === 'production') { 2 | module.exports = require('./vue.runtime.common.prod.js') 3 | } else { 4 | module.exports = require('./vue.runtime.common.dev.js') 5 | } 6 | -------------------------------------------------------------------------------- /days/045-048-django-intro/demo/quotes/forms.py: -------------------------------------------------------------------------------- 1 | from django.forms import ModelForm 2 | 3 | from .models import Quote 4 | 5 | 6 | class QuoteForm(ModelForm): 7 | class Meta: 8 | model = Quote 9 | fields = ['quote', 'author', 'source', 'cover'] 10 | -------------------------------------------------------------------------------- /days/057-060-flask-login/code/requirements.txt: -------------------------------------------------------------------------------- 1 | Click==7.0 2 | Flask==1.0.2 3 | Flask-Login==0.4.1 4 | Flask-SQLAlchemy==2.3.2 5 | itsdangerous==1.1.0 6 | Jinja2>=2.10.1 7 | MarkupSafe==1.1.0 8 | python-dotenv==0.10.1 9 | SQLAlchemy>=1.3.0 10 | Werkzeug==0.15.3 11 | -------------------------------------------------------------------------------- /days/069-072-django-rest/demo/mysite/templates/django_registration/activation_complete.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | 4 | {% block content %} 5 |

{% trans "Thanks for signing up, your account is now activated. Enjoy!" %}

6 | {% endblock %} 7 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/bootstrap/scss/utilities/_screenreaders.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Screenreaders 3 | // 4 | 5 | .sr-only { 6 | @include sr-only(); 7 | } 8 | 9 | .sr-only-focusable { 10 | @include sr-only-focusable(); 11 | } 12 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/jquery/src/event/support.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../var/support" 3 | ], function( support ) { 4 | 5 | "use strict"; 6 | 7 | support.focusin = "onfocusin" in window; 8 | 9 | return support; 10 | 11 | } ); 12 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/platforms/web/runtime/components/index.js: -------------------------------------------------------------------------------- 1 | import Transition from './transition' 2 | import TransitionGroup from './transition-group' 3 | 4 | export default { 5 | Transition, 6 | TransitionGroup 7 | } 8 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/platforms/web/runtime/components/index.js: -------------------------------------------------------------------------------- 1 | import Transition from './transition' 2 | import TransitionGroup from './transition-group' 3 | 4 | export default { 5 | Transition, 6 | TransitionGroup 7 | } 8 | -------------------------------------------------------------------------------- /days/033-036-sqlalchemy-orm/demo/hovershare_app_starter/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /days/053-056-django-registration/demo/mysite/templates/django_registration/activation_complete.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | 4 | {% block content %} 5 |

{% trans "Thanks for signing up, your account is now activated. Enjoy!" %}

6 | {% endblock %} 7 | -------------------------------------------------------------------------------- /days/089-092-deployment/demo/billtracker/billtracker/views/notfound.py: -------------------------------------------------------------------------------- 1 | from pyramid.view import notfound_view_config 2 | 3 | 4 | @notfound_view_config(renderer='../templates/errors/404.pt') 5 | def notfound_view(request): 6 | request.response.status = 404 7 | return {} 8 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/platforms/web/compiler/directives/index.js: -------------------------------------------------------------------------------- 1 | import model from './model' 2 | import text from './text' 3 | import html from './html' 4 | 5 | export default { 6 | model, 7 | text, 8 | html 9 | } 10 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/platforms/web/compiler/directives/index.js: -------------------------------------------------------------------------------- 1 | import model from './model' 2 | import text from './text' 3 | import html from './html' 4 | 5 | export default { 6 | model, 7 | text, 8 | html 9 | } 10 | -------------------------------------------------------------------------------- /days/037-40-pyramid-intro/demo/billtracker/billtracker/views/notfound.py: -------------------------------------------------------------------------------- 1 | from pyramid.view import notfound_view_config 2 | 3 | 4 | @notfound_view_config(renderer='../templates/errors/404.pt') 5 | def notfound_view(request): 6 | request.response.status = 404 7 | return {} 8 | -------------------------------------------------------------------------------- /days/061-064-db-migrations/demo/billtracker/billtracker/views/notfound.py: -------------------------------------------------------------------------------- 1 | from pyramid.view import notfound_view_config 2 | 3 | 4 | @notfound_view_config(renderer='../templates/errors/404.pt') 5 | def notfound_view(request): 6 | request.response.status = 404 7 | return {} 8 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/demo/billtracker/billtracker/views/notfound.py: -------------------------------------------------------------------------------- 1 | from pyramid.view import notfound_view_config 2 | 3 | 4 | @notfound_view_config(renderer='../templates/errors/404.pt') 5 | def notfound_view(request): 6 | request.response.status = 404 7 | return {} 8 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/your-turn/billtracker_with_viewmodels/billtracker/billtracker/routes.py: -------------------------------------------------------------------------------- 1 | def includeme(config): 2 | config.add_static_view('static', 'static', cache_max_age=3600) 3 | config.add_route('home', '/') 4 | config.add_route('details', '/bill/{bill_id}') 5 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/platforms/web/compiler/modules/index.js: -------------------------------------------------------------------------------- 1 | import klass from './class' 2 | import style from './style' 3 | import model from './model' 4 | 5 | export default [ 6 | klass, 7 | style, 8 | model 9 | ] 10 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/dockerfile: -------------------------------------------------------------------------------- 1 | FROM base_server:latest 2 | 3 | RUN apt-get install -y -q nginx 4 | RUN rm /etc/nginx/sites-enabled/default 5 | COPY site.nginx /etc/nginx/sites-enabled/site.nginx 6 | COPY movie_exploder /app 7 | 8 | ENTRYPOINT nginx -g "daemon off;" 9 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/platforms/web/compiler/modules/index.js: -------------------------------------------------------------------------------- 1 | import klass from './class' 2 | import style from './style' 3 | import model from './model' 4 | 5 | export default [ 6 | klass, 7 | style, 8 | model 9 | ] 10 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/bootstrap/scss/mixins/_lists.scss: -------------------------------------------------------------------------------- 1 | // Lists 2 | 3 | // Unstyled keeps list items block level, just removes default browser padding and list-style 4 | @mixin list-unstyled { 5 | padding-left: 0; 6 | list-style: none; 7 | } 8 | -------------------------------------------------------------------------------- /days/057-060-flask-login/code/project_awesome/templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Home Page 4 | 5 | 6 | 7 |

This is the home page, you do not need to be logged in to access this page

8 | 9 | 10 | -------------------------------------------------------------------------------- /days/069-072-django-rest/demo/mysite/templates/registration/password_reset_email.html: -------------------------------------------------------------------------------- 1 | {% load i18n %} 2 | {% blocktrans %}Reset password at {{ site_name }}{% endblocktrans %}: 3 | {% block reset_link %} 4 | http://{{ site_name }}{% url 'password_reset_confirm' uid token %} 5 | {% endblock %} 6 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/your-turn/billtracker_with_viewmodels/billtracker/billtracker/data/__all_models.py: -------------------------------------------------------------------------------- 1 | # noinspection PyUnresolvedReferences 2 | from billtracker.data.models.bill import Bill 3 | # noinspection PyUnresolvedReferences 4 | from billtracker.data.models.users import User 5 | 6 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/your-turn/billtracker_with_viewmodels/billtracker/billtracker/static/img/finance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/081-084-unit-testing/your-turn/billtracker_with_viewmodels/billtracker/billtracker/static/img/finance.png -------------------------------------------------------------------------------- /days/081-084-unit-testing/your-turn/billtracker_with_viewmodels/billtracker/billtracker/static/img/pyramid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/081-084-unit-testing/your-turn/billtracker_with_viewmodels/billtracker/billtracker/static/img/pyramid.png -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/compiler/directives/index.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | import on from './on' 4 | import bind from './bind' 5 | import { noop } from 'shared/util' 6 | 7 | export default { 8 | on, 9 | bind, 10 | cloak: noop 11 | } 12 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/compiler/directives/index.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | import on from './on' 4 | import bind from './bind' 5 | import { noop } from 'shared/util' 6 | 7 | export default { 8 | on, 9 | bind, 10 | cloak: noop 11 | } 12 | -------------------------------------------------------------------------------- /days/017-020-flask-call-apis/code/requirements.txt: -------------------------------------------------------------------------------- 1 | certifi==2018.8.24 2 | chardet==3.0.4 3 | Click==7.0 4 | Flask==1.0.2 5 | idna==2.7 6 | itsdangerous==0.24 7 | Jinja2>=2.10.1 8 | MarkupSafe==1.0 9 | python-dotenv==0.9.1 10 | requests>=2.21.0 11 | urllib3==1.26.5 12 | werkzeug>=0.15.3 13 | -------------------------------------------------------------------------------- /days/029-032-static-site-gen/code/requirements.txt: -------------------------------------------------------------------------------- 1 | blinker==1.4 2 | docutils==0.14 3 | feedgenerator==1.9 4 | Jinja2>=2.10.1 5 | Markdown==3.1 6 | MarkupSafe==1.1.1 7 | pelican==4.0.1 8 | Pygments==2.7.4 9 | python-dateutil==2.8.0 10 | pytz==2018.9 11 | six==1.12.0 12 | Unidecode==1.0.23 13 | -------------------------------------------------------------------------------- /days/069-072-django-rest/demo/mysite/templates/registration/password_reset_email.txt: -------------------------------------------------------------------------------- 1 | {% load i18n %} 2 | {% blocktrans %}Reset password at {{ site_name }}{% endblocktrans %}: 3 | {% block reset_link %} 4 | http://{{ site_name }}{% url 'auth_password_reset_confirm' uid token %} 5 | {% endblock %} 6 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/bootstrap/scss/mixins/_text-truncate.scss: -------------------------------------------------------------------------------- 1 | // Text truncate 2 | // Requires inline-block or block for proper styling 3 | 4 | @mixin text-truncate() { 5 | overflow: hidden; 6 | text-overflow: ellipsis; 7 | white-space: nowrap; 8 | } 9 | -------------------------------------------------------------------------------- /days/021-024-quart-async/async_cityscape_api/.idea/dictionaries/screencaster.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | aiodns 5 | aiohttp 6 | cchardet 7 | 8 | 9 | -------------------------------------------------------------------------------- /days/053-056-django-registration/demo/mysite/templates/registration/password_reset_email.html: -------------------------------------------------------------------------------- 1 | {% load i18n %} 2 | {% blocktrans %}Reset password at {{ site_name }}{% endblocktrans %}: 3 | {% block reset_link %} 4 | http://{{ site_name }}{% url 'password_reset_confirm' uid token %} 5 | {% endblock %} 6 | -------------------------------------------------------------------------------- /days/053-056-django-registration/demo/mysite/templates/registration/password_reset_email.txt: -------------------------------------------------------------------------------- 1 | {% load i18n %} 2 | {% blocktrans %}Reset password at {{ site_name }}{% endblocktrans %}: 3 | {% block reset_link %} 4 | http://{{ site_name }}{% url 'auth_password_reset_confirm' uid token %} 5 | {% endblock %} 6 | -------------------------------------------------------------------------------- /days/093-096-vuejs/movie_svc/routes.py: -------------------------------------------------------------------------------- 1 | # noinspection PyUnresolvedReferences 2 | from app_instance import api 3 | # noinspection PyUnresolvedReferences 4 | from views.api_views import * 5 | # noinspection PyUnresolvedReferences 6 | from views.home import * 7 | 8 | api.add_route("/static", static=True) 9 | -------------------------------------------------------------------------------- /days/013-016-css-basics/demos/selectorville/.idea/jsLibraryMappings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /days/041-044-react/es6/inherit.js: -------------------------------------------------------------------------------- 1 | const Bite = require('./class.js'); 2 | 3 | class EnterpriseBite extends Bite { 4 | str(){ 5 | return 'EP ' + super.str(); 6 | } 7 | } 8 | 9 | let bite = new EnterpriseBite('hangman', 4); 10 | 11 | console.log(bite.title); 12 | console.log(bite.str()); 13 | -------------------------------------------------------------------------------- /days/057-060-flask-login/code/project_awesome/templates/pybitesdashboard.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | PyBites Dashboard 4 | 5 | 6 | 7 |

This is the PyBites Dashboard. You can only access this page once logged in

8 | 9 | 10 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/your-turn/billtracker_with_viewmodels/billtracker/billtracker/static/img/pyramid-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/talkpython/100daysofweb-with-python-course/HEAD/days/081-084-unit-testing/your-turn/billtracker_with_viewmodels/billtracker/billtracker/static/img/pyramid-16x16.png -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/platforms/weex/entry-runtime-factory.js: -------------------------------------------------------------------------------- 1 | // this entry is built and wrapped with a factory function 2 | // used to generate a fresh copy of Vue for every Weex instance. 3 | 4 | import Vue from './runtime/index' 5 | 6 | exports.Vue = Vue 7 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/platforms/weex/entry-runtime-factory.js: -------------------------------------------------------------------------------- 1 | // this entry is built and wrapped with a factory function 2 | // used to generate a fresh copy of Vue for every Weex instance. 3 | 4 | import Vue from './runtime/index' 5 | 6 | exports.Vue = Vue 7 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/your-turn/billtracker_with_viewmodels/billtracker/billtracker/views/notfound.py: -------------------------------------------------------------------------------- 1 | from pyramid.view import notfound_view_config 2 | 3 | 4 | @notfound_view_config(renderer='../templates/errors/404.pt') 5 | def notfound_view(request): 6 | request.response.status = 404 7 | return {} 8 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/types/plugin.d.ts: -------------------------------------------------------------------------------- 1 | import { Vue as _Vue } from "./vue"; 2 | 3 | export type PluginFunction = (Vue: typeof _Vue, options?: T) => void; 4 | 5 | export interface PluginObject { 6 | install: PluginFunction; 7 | [key: string]: any; 8 | } 9 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/types/plugin.d.ts: -------------------------------------------------------------------------------- 1 | import { Vue as _Vue } from "./vue"; 2 | 3 | export type PluginFunction = (Vue: typeof _Vue, options?: T) => void; 4 | 5 | export interface PluginObject { 6 | install: PluginFunction; 7 | [key: string]: any; 8 | } 9 | -------------------------------------------------------------------------------- /days/041-044-react/es6/mapfilter.js: -------------------------------------------------------------------------------- 1 | const ninjas = [ 2 | { name: 'martin', points: 225 }, 3 | { name: 'mike', points: 200 }, 4 | { name: 'dirk', points: 175 }, 5 | ]; 6 | 7 | console.log( 8 | ninjas 9 | .filter(ninja => ninja.points >= 200) 10 | .map(ninja => `
  • ${ninja.name}
  • `) 11 | ) 12 | -------------------------------------------------------------------------------- /days/051-twilio/code/twilio_sms.py: -------------------------------------------------------------------------------- 1 | from twilio.rest import Client 2 | 3 | account_sid = "" 4 | auth_token = "" 5 | 6 | client = Client(account_sid, auth_token) 7 | 8 | client.messages.create( 9 | to="+61", 10 | from_="+61", 11 | body="Welcome to the 100daysofweb Course using Twilio!" 12 | ) 13 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/bootstrap/scss/mixins/_resize.scss: -------------------------------------------------------------------------------- 1 | // Resize anything 2 | 3 | @mixin resizable($direction) { 4 | overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible` 5 | resize: $direction; // Options: horizontal, vertical, both 6 | } 7 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/bootstrap/scss/mixins/_visibility.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // Visibility 4 | 5 | @mixin invisible($visibility) { 6 | visibility: $visibility !important; 7 | @include deprecate("`invisible()`", "v4.3.0", "v5"); 8 | } 9 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/services/movie_svc/routes.py: -------------------------------------------------------------------------------- 1 | # noinspection PyUnresolvedReferences 2 | from app_instance import api 3 | # noinspection PyUnresolvedReferences 4 | from views.api_views import * 5 | # noinspection PyUnresolvedReferences 6 | from views.home import * 7 | 8 | api.add_route("/static", static=True) 9 | -------------------------------------------------------------------------------- /days/052-anvil/your-turn/README.md: -------------------------------------------------------------------------------- 1 | # Day 52 Anvil 2 | 3 | In this miscellaneous, 1-day lesson there is not a dedicated follow on exercise. This was a long one so watching the videos definitely covers the day's exercises. But feel free to play with Anvil over at: 4 | 5 | [**talkpython.fm/anvil100**](https://talkpython.fm/anvil100) -------------------------------------------------------------------------------- /days/069-072-django-rest/demo/mysite/templates/registration/password_reset_complete.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | 4 | {% block content %} 5 | 6 |

    {% trans "Password reset successfully" %}

    7 | 8 |

    {% trans "Log in" %}

    9 | 10 | {% endblock %} 11 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/jquery/src/core/nodeName.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | 3 | "use strict"; 4 | 5 | function nodeName( elem, name ) { 6 | 7 | return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); 8 | 9 | }; 10 | 11 | return nodeName; 12 | 13 | } ); 14 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/jquery/src/core/readyException.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../core" 3 | ], function( jQuery ) { 4 | 5 | "use strict"; 6 | 7 | jQuery.readyException = function( error ) { 8 | window.setTimeout( function() { 9 | throw error; 10 | } ); 11 | }; 12 | 13 | } ); 14 | -------------------------------------------------------------------------------- /days/041-044-react/demo/tips/src/App.test.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import App from './App'; 4 | 5 | it('renders without crashing', () => { 6 | const div = document.createElement('div'); 7 | ReactDOM.render(, div); 8 | ReactDOM.unmountComponentAtNode(div); 9 | }); 10 | -------------------------------------------------------------------------------- /days/041-044-react/es6/destruct.js: -------------------------------------------------------------------------------- 1 | const bite = { 2 | id: 1, 3 | title: 'sum of numbers', 4 | level: 'beginner', 5 | points: 3, 6 | } 7 | 8 | // destructure bite object 9 | const { id, title, level, points } = bite; 10 | console.log(id); 11 | console.log(title); 12 | console.log(level); 13 | console.log(points); 14 | -------------------------------------------------------------------------------- /days/053-056-django-registration/demo/mysite/templates/registration/password_reset_complete.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | 4 | {% block content %} 5 | 6 |

    {% trans "Password reset successfully" %}

    7 | 8 |

    {% trans "Log in" %}

    9 | 10 | {% endblock %} 11 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/jquery/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery", 3 | "main": "dist/jquery.js", 4 | "license": "MIT", 5 | "ignore": [ 6 | "package.json" 7 | ], 8 | "keywords": [ 9 | "jquery", 10 | "javascript", 11 | "browser", 12 | "library" 13 | ] 14 | } -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/platforms/weex/runtime/text-node.js: -------------------------------------------------------------------------------- 1 | let latestNodeId = 1 2 | 3 | export default function TextNode (text) { 4 | this.instanceId = '' 5 | this.nodeId = latestNodeId++ 6 | this.parentNode = null 7 | this.nodeType = 3 8 | this.text = text 9 | } 10 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/platforms/weex/runtime/text-node.js: -------------------------------------------------------------------------------- 1 | let latestNodeId = 1 2 | 3 | export default function TextNode (text) { 4 | this.instanceId = '' 5 | this.nodeId = latestNodeId++ 6 | this.parentNode = null 7 | this.nodeType = 3 8 | this.text = text 9 | } 10 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/bootstrap/scss/utilities/_visibility.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // 4 | // Visibility utilities 5 | // 6 | 7 | .visible { 8 | visibility: visible !important; 9 | } 10 | 11 | .invisible { 12 | visibility: hidden !important; 13 | } 14 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/platforms/web/compiler/index.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | import { baseOptions } from './options' 4 | import { createCompiler } from 'compiler/index' 5 | 6 | const { compile, compileToFunctions } = createCompiler(baseOptions) 7 | 8 | export { compile, compileToFunctions } 9 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/platforms/web/server/modules/index.js: -------------------------------------------------------------------------------- 1 | import attrs from './attrs' 2 | import domProps from './dom-props' 3 | import klass from './class' 4 | import style from './style' 5 | 6 | export default [ 7 | attrs, 8 | domProps, 9 | klass, 10 | style 11 | ] 12 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/platforms/weex/runtime/components/index.js: -------------------------------------------------------------------------------- 1 | import Richtext from './richtext' 2 | import Transition from './transition' 3 | import TransitionGroup from './transition-group' 4 | 5 | export default { 6 | Richtext, 7 | Transition, 8 | TransitionGroup 9 | } 10 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/platforms/web/compiler/index.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | import { baseOptions } from './options' 4 | import { createCompiler } from 'compiler/index' 5 | 6 | const { compile, compileToFunctions } = createCompiler(baseOptions) 7 | 8 | export { compile, compileToFunctions } 9 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/platforms/web/server/modules/index.js: -------------------------------------------------------------------------------- 1 | import attrs from './attrs' 2 | import domProps from './dom-props' 3 | import klass from './class' 4 | import style from './style' 5 | 6 | export default [ 7 | attrs, 8 | domProps, 9 | klass, 10 | style 11 | ] 12 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/platforms/weex/runtime/components/index.js: -------------------------------------------------------------------------------- 1 | import Richtext from './richtext' 2 | import Transition from './transition' 3 | import TransitionGroup from './transition-group' 4 | 5 | export default { 6 | Richtext, 7 | Transition, 8 | TransitionGroup 9 | } 10 | -------------------------------------------------------------------------------- /days/037-40-pyramid-intro/demo/billtracker/.gitignore: -------------------------------------------------------------------------------- 1 | *.egg 2 | *.egg-info 3 | *.pyc 4 | *$py.class 5 | *~ 6 | .coverage 7 | coverage.xml 8 | build/ 9 | dist/ 10 | .tox/ 11 | nosetests.xml 12 | env*/ 13 | tmp/ 14 | Data.fs* 15 | *.sublime-project 16 | *.sublime-workspace 17 | .*.sw? 18 | .sw? 19 | .DS_Store 20 | coverage 21 | test 22 | -------------------------------------------------------------------------------- /days/041-044-react/demo/freemonkey/src/App.test.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import App from './App'; 4 | 5 | it('renders without crashing', () => { 6 | const div = document.createElement('div'); 7 | ReactDOM.render(, div); 8 | ReactDOM.unmountComponentAtNode(div); 9 | }); 10 | -------------------------------------------------------------------------------- /days/061-064-db-migrations/demo/billtracker/.gitignore: -------------------------------------------------------------------------------- 1 | *.egg 2 | *.egg-info 3 | *.pyc 4 | *$py.class 5 | *~ 6 | .coverage 7 | coverage.xml 8 | build/ 9 | dist/ 10 | .tox/ 11 | nosetests.xml 12 | env*/ 13 | tmp/ 14 | Data.fs* 15 | *.sublime-project 16 | *.sublime-workspace 17 | .*.sw? 18 | .sw? 19 | .DS_Store 20 | coverage 21 | test 22 | -------------------------------------------------------------------------------- /days/069-072-django-rest/demo/mysite/templates/django_registration/activation_email_body.txt: -------------------------------------------------------------------------------- 1 | {% load i18n %} 2 | {% trans "Activate account at" %} {{ site.name }}: 3 | 4 | http://{{ site.name }}{% url 'django_registration_activate' activation_key %} 5 | 6 | {% blocktrans %}Link is valid for {{ expiration_days }} days.{% endblocktrans %} 7 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/demo/billtracker/.gitignore: -------------------------------------------------------------------------------- 1 | *.egg 2 | *.egg-info 3 | *.pyc 4 | *$py.class 5 | *~ 6 | .coverage 7 | coverage.xml 8 | build/ 9 | dist/ 10 | .tox/ 11 | nosetests.xml 12 | env*/ 13 | tmp/ 14 | Data.fs* 15 | *.sublime-project 16 | *.sublime-workspace 17 | .*.sw? 18 | .sw? 19 | .DS_Store 20 | coverage 21 | test 22 | -------------------------------------------------------------------------------- /days/089-092-deployment/demo/billtracker/.gitignore: -------------------------------------------------------------------------------- 1 | *.egg 2 | *.egg-info 3 | *.pyc 4 | *$py.class 5 | *~ 6 | .coverage 7 | coverage.xml 8 | build/ 9 | dist/ 10 | .tox/ 11 | nosetests.xml 12 | env*/ 13 | tmp/ 14 | Data.fs* 15 | *.sublime-project 16 | *.sublime-workspace 17 | .*.sw? 18 | .sw? 19 | .DS_Store 20 | coverage 21 | test 22 | -------------------------------------------------------------------------------- /days/033-036-sqlalchemy-orm/demo/hovershare_app_starter/.idea/dictionaries/screencaster.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | istory 5 | ocate 6 | sqlalchemy 7 | vailable 8 | 9 | 10 | -------------------------------------------------------------------------------- /days/053-056-django-registration/demo/mysite/templates/django_registration/activation_email_body.txt: -------------------------------------------------------------------------------- 1 | {% load i18n %} 2 | {% trans "Activate account at" %} {{ site.name }}: 3 | 4 | http://{{ site.name }}{% url 'django_registration_activate' activation_key %} 5 | 6 | {% blocktrans %}Link is valid for {{ expiration_days }} days.{% endblocktrans %} 7 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/demo/billtracker/billtracker/viewmodels/viewmodelbase.py: -------------------------------------------------------------------------------- 1 | from pyramid.request import Request 2 | 3 | 4 | class ViewModelBase: 5 | def __init__(self, request: Request): 6 | self.request = request 7 | self.error = None 8 | 9 | def to_dict(self) -> dict: 10 | return self.__dict__ 11 | -------------------------------------------------------------------------------- /days/089-092-deployment/demo/billtracker/billtracker/viewmodels/viewmodelbase.py: -------------------------------------------------------------------------------- 1 | from pyramid.request import Request 2 | 3 | 4 | class ViewModelBase: 5 | def __init__(self, request: Request): 6 | self.request = request 7 | self.error = None 8 | 9 | def to_dict(self) -> dict: 10 | return self.__dict__ 11 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/compiler/parser/entity-decoder.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | let decoder 4 | 5 | export default { 6 | decode (html: string): string { 7 | decoder = decoder || document.createElement('div') 8 | decoder.innerHTML = html 9 | return decoder.textContent 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/compiler/parser/entity-decoder.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | let decoder 4 | 5 | export default { 6 | decode (html: string): string { 7 | decoder = decoder || document.createElement('div') 8 | decoder.innerHTML = html 9 | return decoder.textContent 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /days/013-016-css-basics/demos/selectorville/static/css/sample.css: -------------------------------------------------------------------------------- 1 | 2 | body { 3 | background-color: #ccc; 4 | color: #222; 5 | } 6 | 7 | .content { 8 | padding: 20px; 9 | line-height: 1.25em; 10 | } 11 | 12 | .nav ul.dropdown > #profile_image { 13 | width: 64px; 14 | } 15 | 16 | .content.lead { 17 | font-size: 18px; 18 | } -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/platforms/web/compiler/directives/html.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | import { addProp } from 'compiler/helpers' 4 | 5 | export default function html (el: ASTElement, dir: ASTDirective) { 6 | if (dir.value) { 7 | addProp(el, 'innerHTML', `_s(${dir.value})`, dir) 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/platforms/web/compiler/directives/text.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | import { addProp } from 'compiler/helpers' 4 | 5 | export default function text (el: ASTElement, dir: ASTDirective) { 6 | if (dir.value) { 7 | addProp(el, 'textContent', `_s(${dir.value})`, dir) 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/platforms/web/compiler/directives/html.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | import { addProp } from 'compiler/helpers' 4 | 5 | export default function html (el: ASTElement, dir: ASTDirective) { 6 | if (dir.value) { 7 | addProp(el, 'innerHTML', `_s(${dir.value})`, dir) 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/platforms/web/compiler/directives/text.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | import { addProp } from 'compiler/helpers' 4 | 5 | export default function text (el: ASTElement, dir: ASTDirective) { 6 | if (dir.value) { 7 | addProp(el, 'textContent', `_s(${dir.value})`, dir) 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /days/033-036-sqlalchemy-orm/demo/hovershare_app_final/data/__all_models.py: -------------------------------------------------------------------------------- 1 | # noinspection PyUnresolvedReferences 2 | import data.models.rentals 3 | # noinspection PyUnresolvedReferences 4 | import data.models.locations 5 | # noinspection PyUnresolvedReferences 6 | import data.models.scooters 7 | # noinspection PyUnresolvedReferences 8 | import data.models.users 9 | -------------------------------------------------------------------------------- /days/057-060-flask-login/code/project_awesome/__init__.py: -------------------------------------------------------------------------------- 1 | from flask import Flask 2 | from flask_sqlalchemy import SQLAlchemy 3 | import os 4 | 5 | app = Flask(__name__) 6 | db = SQLAlchemy(app) 7 | app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site_users.db' 8 | app.secret_key = os.urandom(12) 9 | 10 | from project_awesome import routes, models 11 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/core/global-api/mixin.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | import { mergeOptions } from '../util/index' 4 | 5 | export function initMixin (Vue: GlobalAPI) { 6 | Vue.mixin = function (mixin: Object) { 7 | this.options = mergeOptions(this.options, mixin) 8 | return this 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/core/global-api/mixin.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | import { mergeOptions } from '../util/index' 4 | 5 | export function initMixin (Vue: GlobalAPI) { 6 | Vue.mixin = function (mixin: Object) { 7 | this.options = mergeOptions(this.options, mixin) 8 | return this 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /days/093-096-vuejs/movie_exploder/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "movie_exploder", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "vue": "^2.6.3" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/bootstrap/scss/utilities/_shadows.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | .shadow-sm { box-shadow: $box-shadow-sm !important; } 4 | .shadow { box-shadow: $box-shadow !important; } 5 | .shadow-lg { box-shadow: $box-shadow-lg !important; } 6 | .shadow-none { box-shadow: none !important; } 7 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/jquery/src/attributes.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "./core", 3 | "./attributes/attr", 4 | "./attributes/prop", 5 | "./attributes/classes", 6 | "./attributes/val" 7 | ], function( jQuery ) { 8 | 9 | "use strict"; 10 | 11 | // Return jQuery for attributes-only inclusion 12 | return jQuery; 13 | } ); 14 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/platforms/web/entry-compiler.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | export { parseComponent } from 'sfc/parser' 4 | export { compile, compileToFunctions } from './compiler/index' 5 | export { ssrCompile, ssrCompileToFunctions } from './server/compiler' 6 | export { generateCodeFrame } from 'compiler/codeframe' 7 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/platforms/web/entry-compiler.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | export { parseComponent } from 'sfc/parser' 4 | export { compile, compileToFunctions } from './compiler/index' 5 | export { ssrCompile, ssrCompileToFunctions } from './server/compiler' 6 | export { generateCodeFrame } from 'compiler/codeframe' 7 | -------------------------------------------------------------------------------- /days/033-036-sqlalchemy-orm/demo/hovershare_app_final/.idea/dictionaries/screencaster.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | istory 5 | ocate 6 | tablename 7 | terwilliger 8 | vailable 9 | 10 | 11 | -------------------------------------------------------------------------------- /days/061-064-db-migrations/your-turn/hovershare_project/hovershare/data/__all_models.py: -------------------------------------------------------------------------------- 1 | # noinspection PyUnresolvedReferences 2 | import data.models.rentals 3 | # noinspection PyUnresolvedReferences 4 | import data.models.locations 5 | # noinspection PyUnresolvedReferences 6 | import data.models.scooters 7 | # noinspection PyUnresolvedReferences 8 | import data.models.users 9 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/your-turn/billtracker_with_viewmodels/billtracker/.gitignore: -------------------------------------------------------------------------------- 1 | *.egg 2 | *.egg-info 3 | *.pyc 4 | *$py.class 5 | *~ 6 | .coverage 7 | coverage.xml 8 | build/ 9 | dist/ 10 | .tox/ 11 | nosetests.xml 12 | env*/ 13 | tmp/ 14 | Data.fs* 15 | *.sublime-project 16 | *.sublime-workspace 17 | .*.sw? 18 | .sw? 19 | .DS_Store 20 | coverage 21 | test 22 | -------------------------------------------------------------------------------- /.idea/ruff.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/your-turn/billtracker_with_viewmodels/billtracker/billtracker/viewmodels/viewmodelbase.py: -------------------------------------------------------------------------------- 1 | from pyramid.request import Request 2 | 3 | 4 | class ViewModelBase: 5 | def __init__(self, request: Request): 6 | self.request = request 7 | self.error = None 8 | 9 | def to_dict(self) -> dict: 10 | return self.__dict__ 11 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "movie_exploder", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "vue": "^2.6.3" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/base_server/dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:latest 2 | 3 | RUN apt-get update && apt-get upgrade -y 4 | ENV TZ=America/Los_Angeles 5 | RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone 6 | RUN apt-get install -y -q sudo 7 | RUN apt-get install -y -q fail2ban 8 | RUN apt-get install -y -q httpie 9 | RUN apt-get install -y -q glances 10 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/platforms/weex/runtime/components/transition.js: -------------------------------------------------------------------------------- 1 | // reuse same transition component logic from web 2 | export { 3 | transitionProps, 4 | extractTransitionData 5 | } from 'web/runtime/components/transition' 6 | 7 | import Transition from 'web/runtime/components/transition' 8 | 9 | export default Transition 10 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/platforms/weex/runtime/modules/index.js: -------------------------------------------------------------------------------- 1 | import attrs from './attrs' 2 | import klass from './class' 3 | import events from './events' 4 | import style from './style' 5 | import transition from './transition' 6 | 7 | export default [ 8 | attrs, 9 | klass, 10 | events, 11 | style, 12 | transition 13 | ] 14 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/platforms/weex/runtime/components/transition.js: -------------------------------------------------------------------------------- 1 | // reuse same transition component logic from web 2 | export { 3 | transitionProps, 4 | extractTransitionData 5 | } from 'web/runtime/components/transition' 6 | 7 | import Transition from 'web/runtime/components/transition' 8 | 9 | export default Transition 10 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/platforms/weex/runtime/modules/index.js: -------------------------------------------------------------------------------- 1 | import attrs from './attrs' 2 | import klass from './class' 3 | import events from './events' 4 | import style from './style' 5 | import transition from './transition' 6 | 7 | export default [ 8 | attrs, 9 | klass, 10 | events, 11 | style, 12 | transition 13 | ] 14 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/bootstrap/scss/mixins/_alert.scss: -------------------------------------------------------------------------------- 1 | @mixin alert-variant($background, $border, $color) { 2 | color: $color; 3 | @include gradient-bg($background); 4 | border-color: $border; 5 | 6 | hr { 7 | border-top-color: darken($border, 5%); 8 | } 9 | 10 | .alert-link { 11 | color: darken($color, 10%); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /days/021-024-quart-async/cityscape_api/config/settings.py: -------------------------------------------------------------------------------- 1 | import os 2 | import json 3 | 4 | 5 | def load(mode='dev') -> dict: 6 | file = os.path.join(os.path.dirname(__file__), f"{mode}.json") 7 | if not os.path.exists(file): 8 | raise Exception(f"Config not found for {mode}.") 9 | 10 | with open(file, 'r', encoding='utf-8') as fin: 11 | return json.load(fin) 12 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/core/util/index.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | export * from 'shared/util' 4 | export * from './lang' 5 | export * from './env' 6 | export * from './options' 7 | export * from './debug' 8 | export * from './props' 9 | export * from './error' 10 | export * from './next-tick' 11 | export { defineReactive } from '../observer/index' 12 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/platforms/weex/compiler/modules/index.js: -------------------------------------------------------------------------------- 1 | import klass from './class' 2 | import style from './style' 3 | import props from './props' 4 | import append from './append' 5 | import recycleList from './recycle-list/index' 6 | 7 | export default [ 8 | recycleList, 9 | klass, 10 | style, 11 | props, 12 | append 13 | ] 14 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/core/util/index.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | export * from 'shared/util' 4 | export * from './lang' 5 | export * from './env' 6 | export * from './options' 7 | export * from './debug' 8 | export * from './props' 9 | export * from './error' 10 | export * from './next-tick' 11 | export { defineReactive } from '../observer/index' 12 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/platforms/weex/compiler/modules/index.js: -------------------------------------------------------------------------------- 1 | import klass from './class' 2 | import style from './style' 3 | import props from './props' 4 | import append from './append' 5 | import recycleList from './recycle-list/index' 6 | 7 | export default [ 8 | recycleList, 9 | klass, 10 | style, 11 | props, 12 | append 13 | ] 14 | -------------------------------------------------------------------------------- /days/021-024-quart-async/async_cityscape_api/config/settings.py: -------------------------------------------------------------------------------- 1 | import os 2 | import json 3 | 4 | 5 | def load(mode='dev') -> dict: 6 | file = os.path.join(os.path.dirname(__file__), f"{mode}.json") 7 | if not os.path.exists(file): 8 | raise Exception(f"Config not found for {mode}.") 9 | 10 | with open(file, 'r', encoding='utf-8') as fin: 11 | return json.load(fin) 12 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/bootstrap/scss/mixins/_nav-divider.scss: -------------------------------------------------------------------------------- 1 | // Horizontal dividers 2 | // 3 | // Dividers (basically an hr) within dropdowns and nav lists 4 | 5 | @mixin nav-divider($color: $nav-divider-color, $margin-y: $nav-divider-margin-y) { 6 | height: 0; 7 | margin: $margin-y 0; 8 | overflow: hidden; 9 | border-top: 1px solid $color; 10 | } 11 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/core/vdom/helpers/index.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | export * from './merge-hook' 4 | export * from './extract-props' 5 | export * from './update-listeners' 6 | export * from './normalize-children' 7 | export * from './resolve-async-component' 8 | export * from './get-first-component-child' 9 | export * from './is-async-placeholder' 10 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/core/vdom/helpers/index.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | export * from './merge-hook' 4 | export * from './extract-props' 5 | export * from './update-listeners' 6 | export * from './normalize-children' 7 | export * from './resolve-async-component' 8 | export * from './get-first-component-child' 9 | export * from './is-async-placeholder' 10 | -------------------------------------------------------------------------------- /days/001-004-flask-intro/code/program/routes.py: -------------------------------------------------------------------------------- 1 | from datetime import datetime 2 | from flask import render_template 3 | from program import app 4 | 5 | @app.route('/') 6 | @app.route('/index') 7 | def index(): 8 | return render_template('index.html', title='Template Demo', time=datetime.now()) 9 | 10 | @app.route('/100Days') 11 | def p100days(): 12 | return render_template('100Days.html') 13 | -------------------------------------------------------------------------------- /days/053-056-django-registration/demo/mysite/urls.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | from django.urls import include, path 3 | 4 | 5 | urlpatterns = [ 6 | path('', include('quotes.urls')), 7 | path('my-backend/', admin.site.urls), 8 | path(r'accounts/', include('django_registration.backends.activation.urls')), 9 | path(r'accounts/', include('django.contrib.auth.urls')), 10 | ] 11 | -------------------------------------------------------------------------------- /days/021-024-quart-async/your_turn/day_4/cityscape_api/config/settings.py: -------------------------------------------------------------------------------- 1 | import os 2 | import json 3 | 4 | 5 | def load(mode='dev') -> dict: 6 | file = os.path.join(os.path.dirname(__file__), f"{mode}.json") 7 | if not os.path.exists(file): 8 | raise Exception(f"Config not found for {mode}.") 9 | 10 | with open(file, 'r', encoding='utf-8') as fin: 11 | return json.load(fin) 12 | -------------------------------------------------------------------------------- /days/065-068-heroku-deployment/code/emailer.py: -------------------------------------------------------------------------------- 1 | import smtplib 2 | 3 | smtp_server = smtplib.SMTP('smtp.gmail.com', 587) 4 | 5 | smtp_server.ehlo() 6 | 7 | smtp_server.starttls() 8 | 9 | smtp_server.login('', '') 10 | 11 | smtp_server.sendmail('@gmail.com', '@', 'Subject: Hello from Heroku!\nTest email from Heroku. Cheers!') 12 | 13 | smtp_server.quit() 14 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/jquery/src/effects/animatedSelector.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../core", 3 | "../selector", 4 | "../effects" 5 | ], function( jQuery ) { 6 | 7 | "use strict"; 8 | 9 | jQuery.expr.pseudos.animated = function( elem ) { 10 | return jQuery.grep( jQuery.timers, function( fn ) { 11 | return elem === fn.elem; 12 | } ).length; 13 | }; 14 | 15 | } ); 16 | -------------------------------------------------------------------------------- /days/037-40-pyramid-intro/demo/billtracker/.idea/dictionaries/screencaster.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | dateutil 5 | debugtoolbar 6 | includeme 7 | maxcdn 8 | pastedeploy 9 | sqlalchemy 10 | tablename 11 | 12 | 13 | -------------------------------------------------------------------------------- /days/041-044-react/demo/tips/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "React App", 3 | "name": "Create React App Sample", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | } 10 | ], 11 | "start_url": ".", 12 | "display": "standalone", 13 | "theme_color": "#000000", 14 | "background_color": "#ffffff" 15 | } 16 | -------------------------------------------------------------------------------- /days/089-092-deployment/demo/billtracker/requirements.txt: -------------------------------------------------------------------------------- 1 | alembic 2 | Chameleon 3 | hupper 4 | Mako 5 | MarkupSafe 6 | PasteDeploy 7 | plaster 8 | plaster-pastedeploy 9 | Pygments 10 | pyramid 11 | pyramid-chameleon 12 | pyramid-mako 13 | python-dateutil 14 | python-editor 15 | repoze.lru 16 | six 17 | SQLAlchemy 18 | translationstring 19 | venusian 20 | waitress 21 | WebOb 22 | zope.deprecation 23 | zope.interface 24 | -------------------------------------------------------------------------------- /days/041-044-react/demo/freemonkey/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "React App", 3 | "name": "Create React App Sample", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | } 10 | ], 11 | "start_url": ".", 12 | "display": "standalone", 13 | "theme_color": "#000000", 14 | "background_color": "#ffffff" 15 | } 16 | -------------------------------------------------------------------------------- /days/050-responder/demo/movie_svc/app.py: -------------------------------------------------------------------------------- 1 | # noinspection PyUnresolvedReferences 2 | from data import db 3 | # noinspection PyUnresolvedReferences 4 | from api_instance import api 5 | # noinspection PyUnresolvedReferences 6 | from views.home import * 7 | from views.api_views import * 8 | 9 | 10 | def main(): 11 | db.global_init() 12 | 13 | api.run() 14 | 15 | 16 | if __name__ == '__main__': 17 | main() 18 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/platforms/web/server/compiler.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | import { baseOptions } from '../compiler/options' 4 | import { createCompiler } from 'server/optimizing-compiler/index' 5 | 6 | const { compile, compileToFunctions } = createCompiler(baseOptions) 7 | 8 | export { 9 | compile as ssrCompile, 10 | compileToFunctions as ssrCompileToFunctions 11 | } 12 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/platforms/web/server/compiler.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | import { baseOptions } from '../compiler/options' 4 | import { createCompiler } from 'server/optimizing-compiler/index' 5 | 6 | const { compile, compileToFunctions } = createCompiler(baseOptions) 7 | 8 | export { 9 | compile as ssrCompile, 10 | compileToFunctions as ssrCompileToFunctions 11 | } 12 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/platforms/web/server/modules/class.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | import { escape } from '../util' 4 | import { genClassForVnode } from 'web/util/index' 5 | 6 | export default function renderClass (node: VNodeWithData): ?string { 7 | const classList = genClassForVnode(node) 8 | if (classList !== '') { 9 | return ` class="${escape(classList)}"` 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/platforms/web/server/modules/class.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | import { escape } from '../util' 4 | import { genClassForVnode } from 'web/util/index' 5 | 6 | export default function renderClass (node: VNodeWithData): ?string { 7 | const classList = genClassForVnode(node) 8 | if (classList !== '') { 9 | return ` class="${escape(classList)}"` 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/services/dockerfile: -------------------------------------------------------------------------------- 1 | FROM base_server:latest 2 | 3 | RUN apt-get install -y -q build-essential git python3-pip python3-dev python3-venv 4 | RUN python3 -m venv /venv 5 | RUN /venv/bin/pip install -U pip setuptools 6 | RUN /venv/bin/pip install responder 7 | 8 | COPY movie_svc /app 9 | WORKDIR /app 10 | RUN /venv/bin/pip install -r /app/requirements.txt 11 | 12 | ENTRYPOINT /venv/bin/python /app/app.py 13 | -------------------------------------------------------------------------------- /days/021-024-quart-async/your_turn/day_4/cityscape_api/views/home.py: -------------------------------------------------------------------------------- 1 | import flask 2 | 3 | blueprint = flask.blueprints.Blueprint(__name__.replace('.', '_'), __name__) 4 | 5 | 6 | @blueprint.route('/') 7 | def index(): 8 | return "Welcome to the city_scape API. Use /api/city/* for API calls." 9 | 10 | 11 | @blueprint.errorhandler(404) 12 | def not_found(_): 13 | return flask.Response("The page was not found.", status=404) 14 | -------------------------------------------------------------------------------- /days/025-028-javascript/demo/calories/css/style.css: -------------------------------------------------------------------------------- 1 | th, td { 2 | text-align: left; 3 | } 4 | #logo { 5 | position: relative; 6 | top: 10px; 7 | right: 15px; 8 | } 9 | #content-wrapper { 10 | margin: 20px; 11 | } 12 | .delete { 13 | background: url('../img/delete.png') no-repeat top left; 14 | border: none; 15 | cursor: pointer; 16 | width: 20px; 17 | height: 20px; 18 | } 19 | .bold { 20 | font-weight: bold; 21 | } 22 | -------------------------------------------------------------------------------- /days/069-072-django-rest/demo/mysite/urls.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | from django.urls import include, path 3 | 4 | 5 | urlpatterns = [ 6 | path('', include('quotes.urls')), 7 | path('my-backend/', admin.site.urls), 8 | path(r'accounts/', include('django_registration.backends.activation.urls')), 9 | path(r'accounts/', include('django.contrib.auth.urls')), 10 | path(r'api/', include('api.urls')), 11 | ] 12 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/platforms/web/runtime/modules/index.js: -------------------------------------------------------------------------------- 1 | import attrs from './attrs' 2 | import klass from './class' 3 | import events from './events' 4 | import domProps from './dom-props' 5 | import style from './style' 6 | import transition from './transition' 7 | 8 | export default [ 9 | attrs, 10 | klass, 11 | events, 12 | domProps, 13 | style, 14 | transition 15 | ] 16 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/platforms/web/runtime/modules/index.js: -------------------------------------------------------------------------------- 1 | import attrs from './attrs' 2 | import klass from './class' 3 | import events from './events' 4 | import domProps from './dom-props' 5 | import style from './style' 6 | import transition from './transition' 7 | 8 | export default [ 9 | attrs, 10 | klass, 11 | events, 12 | domProps, 13 | style, 14 | transition 15 | ] 16 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/bootstrap/scss/_transitions.scss: -------------------------------------------------------------------------------- 1 | .fade { 2 | @include transition($transition-fade); 3 | 4 | &:not(.show) { 5 | opacity: 0; 6 | } 7 | } 8 | 9 | .collapse { 10 | &:not(.show) { 11 | display: none; 12 | } 13 | } 14 | 15 | .collapsing { 16 | position: relative; 17 | height: 0; 18 | overflow: hidden; 19 | @include transition($transition-collapse); 20 | } 21 | -------------------------------------------------------------------------------- /days/061-064-db-migrations/demo/billtracker/requirements.txt: -------------------------------------------------------------------------------- 1 | alembic 2 | Chameleon 3 | hupper 4 | Mako 5 | MarkupSafe 6 | PasteDeploy 7 | plaster 8 | plaster-pastedeploy 9 | Pygments 10 | pyramid 11 | pyramid-chameleon 12 | pyramid-debugtoolbar 13 | pyramid-mako 14 | python-dateutil 15 | python-editor 16 | repoze.lru 17 | six 18 | SQLAlchemy 19 | translationstring 20 | venusian 21 | waitress 22 | WebOb 23 | zope.deprecation 24 | zope.interface 25 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/demo/billtracker/requirements.txt: -------------------------------------------------------------------------------- 1 | alembic 2 | Chameleon 3 | hupper 4 | Mako 5 | MarkupSafe 6 | PasteDeploy 7 | plaster 8 | plaster-pastedeploy 9 | Pygments 10 | pyramid 11 | pyramid-chameleon 12 | pyramid-debugtoolbar 13 | pyramid-mako 14 | python-dateutil 15 | python-editor 16 | repoze.lru 17 | six 18 | SQLAlchemy 19 | translationstring 20 | venusian 21 | waitress 22 | WebOb 23 | zope.deprecation 24 | zope.interface 25 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/compiler/directives/bind.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | export default function bind (el: ASTElement, dir: ASTDirective) { 4 | el.wrapData = (code: string) => { 5 | return `_b(${code},'${el.tag}',${dir.value},${ 6 | dir.modifiers && dir.modifiers.prop ? 'true' : 'false' 7 | }${ 8 | dir.modifiers && dir.modifiers.sync ? ',true' : '' 9 | })` 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/compiler/directives/on.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | import { warn } from 'core/util/index' 4 | 5 | export default function on (el: ASTElement, dir: ASTDirective) { 6 | if (process.env.NODE_ENV !== 'production' && dir.modifiers) { 7 | warn(`v-on without argument does not support modifiers.`) 8 | } 9 | el.wrapListeners = (code: string) => `_g(${code},${dir.value})` 10 | } 11 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/compiler/directives/bind.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | export default function bind (el: ASTElement, dir: ASTDirective) { 4 | el.wrapData = (code: string) => { 5 | return `_b(${code},'${el.tag}',${dir.value},${ 6 | dir.modifiers && dir.modifiers.prop ? 'true' : 'false' 7 | }${ 8 | dir.modifiers && dir.modifiers.sync ? ',true' : '' 9 | })` 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/compiler/directives/on.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | import { warn } from 'core/util/index' 4 | 5 | export default function on (el: ASTElement, dir: ASTDirective) { 6 | if (process.env.NODE_ENV !== 'production' && dir.modifiers) { 7 | warn(`v-on without argument does not support modifiers.`) 8 | } 9 | el.wrapListeners = (code: string) => `_g(${code},${dir.value})` 10 | } 11 | -------------------------------------------------------------------------------- /days/041-044-react/demo/tips/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/platforms/web/server/directives/show.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | export default function show (node: VNodeWithData, dir: VNodeDirective) { 4 | if (!dir.value) { 5 | const style: any = node.data.style || (node.data.style = {}) 6 | if (Array.isArray(style)) { 7 | style.push({ display: 'none' }) 8 | } else { 9 | style.display = 'none' 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/platforms/web/server/directives/show.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | export default function show (node: VNodeWithData, dir: VNodeDirective) { 4 | if (!dir.value) { 5 | const style: any = node.data.style || (node.data.style = {}) 6 | if (Array.isArray(style)) { 7 | style.push({ display: 'none' }) 8 | } else { 9 | style.display = 'none' 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /days/041-044-react/demo/freemonkey/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /days/093-096-vuejs/movie_exploder/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "movie_exploder", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "vue": { 8 | "version": "2.6.3", 9 | "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.3.tgz", 10 | "integrity": "sha512-yftjtahz4UTAtOlXXuw7UaYD86fWrMDAAzqTdqJJx2FIBqcPmBN6kPBHiBJFGaQELVblb5ijbFMXsx0i0F7q3g==" 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/debug/src/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | /** 4 | * Detect Electron renderer / nwjs process, which is node, but we should 5 | * treat as a browser. 6 | */ 7 | if (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) { 8 | module.exports = require('./browser.js'); 9 | } else { 10 | module.exports = require('./node.js'); 11 | } 12 | 13 | -------------------------------------------------------------------------------- /days/037-40-pyramid-intro/demo/billtracker/billtracker/templates/errors/404.pt: -------------------------------------------------------------------------------- 1 |
    2 |
    3 | 4 |
    5 |

    Pyramid Starter project

    6 |

    404 Page Not Found

    7 |
    8 | 9 |
    10 |
    11 | -------------------------------------------------------------------------------- /days/061-064-db-migrations/demo/billtracker/billtracker/templates/errors/404.pt: -------------------------------------------------------------------------------- 1 |
    2 |
    3 | 4 |
    5 |

    Pyramid Starter project

    6 |

    404 Page Not Found

    7 |
    8 | 9 |
    10 |
    11 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/demo/billtracker/billtracker/templates/errors/404.pt: -------------------------------------------------------------------------------- 1 |
    2 |
    3 | 4 |
    5 |

    Pyramid Starter project

    6 |

    404 Page Not Found

    7 |
    8 | 9 |
    10 |
    11 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/demo/billtracker/billtracker/tests/all_tests.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | 3 | # noinspection PyUnresolvedReferences 4 | from billtracker.tests.default.default_viewmodel_tests import * 5 | # noinspection PyUnresolvedReferences 6 | from billtracker.tests.default.default_view_tests import * 7 | # noinspection PyUnresolvedReferences 8 | from billtracker.tests.site_tests import * 9 | 10 | 11 | class AllTests(unittest.TestCase): 12 | pass 13 | -------------------------------------------------------------------------------- /days/089-092-deployment/demo/billtracker/billtracker/templates/errors/404.pt: -------------------------------------------------------------------------------- 1 |
    2 |
    3 | 4 |
    5 |

    Pyramid Starter project

    6 |

    404 Page Not Found

    7 |
    8 | 9 |
    10 |
    11 | -------------------------------------------------------------------------------- /days/089-092-deployment/demo/billtracker/billtracker/tests/all_tests.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | 3 | # noinspection PyUnresolvedReferences 4 | from billtracker.tests.default.default_viewmodel_tests import * 5 | # noinspection PyUnresolvedReferences 6 | from billtracker.tests.default.default_view_tests import * 7 | # noinspection PyUnresolvedReferences 8 | from billtracker.tests.site_tests import * 9 | 10 | 11 | class AllTests(unittest.TestCase): 12 | pass 13 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/bootstrap/scss/mixins/_text-hide.scss: -------------------------------------------------------------------------------- 1 | // CSS image replacement 2 | @mixin text-hide($ignore-warning: false) { 3 | // stylelint-disable-next-line font-family-no-missing-generic-family-keyword 4 | font: 0/0 a; 5 | color: transparent; 6 | text-shadow: none; 7 | background-color: transparent; 8 | border: 0; 9 | 10 | @include deprecate("`text-hide()`", "v4.1.0", "v5", $ignore-warning); 11 | } 12 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "your_movie_exploder", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "axios": "^0.21.2", 13 | "bootstrap": "^4.3.1", 14 | "jquery": "^3.5.0", 15 | "vue": "^2.6.6" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "movie_exploder", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "vue": { 8 | "version": "2.6.3", 9 | "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.3.tgz", 10 | "integrity": "sha512-yftjtahz4UTAtOlXXuw7UaYD86fWrMDAAzqTdqJJx2FIBqcPmBN6kPBHiBJFGaQELVblb5ijbFMXsx0i0F7q3g==" 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /days/041-044-react/demo/tips/src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | padding: 0; 4 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", 5 | "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", 6 | sans-serif; 7 | -webkit-font-smoothing: antialiased; 8 | -moz-osx-font-smoothing: grayscale; 9 | } 10 | 11 | code { 12 | font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", 13 | monospace; 14 | } 15 | -------------------------------------------------------------------------------- /days/050-responder/demo/movie_svc/.idea/webResources.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /days/069-072-django-rest/demo/api/urls.py: -------------------------------------------------------------------------------- 1 | from django.urls import path, include 2 | from rest_framework_swagger.views import get_swagger_view 3 | 4 | from .views import QuoteList, QuoteDetail 5 | 6 | schema_view = get_swagger_view(title='PyBites Quotes API') 7 | 8 | urlpatterns = [ 9 | path('', QuoteList.as_view()), 10 | path('', QuoteDetail.as_view()), 11 | path('api-auth/', include('rest_framework.urls')), 12 | path('docs/', schema_view), 13 | ] 14 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/your-turn/billtracker_with_viewmodels/billtracker/requirements.txt: -------------------------------------------------------------------------------- 1 | alembic 2 | Chameleon 3 | hupper 4 | Mako 5 | MarkupSafe 6 | PasteDeploy 7 | plaster 8 | plaster-pastedeploy 9 | Pygments 10 | pyramid 11 | pyramid-chameleon 12 | pyramid-debugtoolbar 13 | pyramid-mako 14 | python-dateutil 15 | python-editor 16 | repoze.lru 17 | six 18 | SQLAlchemy 19 | translationstring 20 | venusian 21 | waitress 22 | WebOb 23 | zope.deprecation 24 | zope.interface 25 | -------------------------------------------------------------------------------- /days/045-048-django-intro/demo/quotes/migrations/0003_remove_quote_inspiration.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.1 on 2018-08-28 22:24 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('quotes', '0002_auto_20180828_1103'), 10 | ] 11 | 12 | operations = [ 13 | migrations.RemoveField( 14 | model_name='quote', 15 | name='inspiration', 16 | ), 17 | ] 18 | -------------------------------------------------------------------------------- /days/045-048-django-intro/demo/quotes/urls.py: -------------------------------------------------------------------------------- 1 | from django.urls import path 2 | 3 | from . import views 4 | 5 | app_name = 'quotes' 6 | urlpatterns = [ 7 | path('', views.quote_list, name='quote_list'), 8 | path('', views.quote_detail, name='quote_detail'), 9 | path('new', views.quote_new, name='quote_new'), 10 | path('edit/', views.quote_edit, name='quote_edit'), 11 | path('delete/', views.quote_delete, name='quote_delete'), 12 | ] 13 | -------------------------------------------------------------------------------- /days/069-072-django-rest/demo/quotes/migrations/0003_remove_quote_inspiration.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.1 on 2018-08-28 22:24 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('quotes', '0002_auto_20180828_1103'), 10 | ] 11 | 12 | operations = [ 13 | migrations.RemoveField( 14 | model_name='quote', 15 | name='inspiration', 16 | ), 17 | ] 18 | -------------------------------------------------------------------------------- /days/069-072-django-rest/demo/quotes/urls.py: -------------------------------------------------------------------------------- 1 | from django.urls import path 2 | 3 | from . import views 4 | 5 | app_name = 'quotes' 6 | urlpatterns = [ 7 | path('', views.quote_list, name='quote_list'), 8 | path('', views.quote_detail, name='quote_detail'), 9 | path('new', views.quote_new, name='quote_new'), 10 | path('edit/', views.quote_edit, name='quote_edit'), 11 | path('delete/', views.quote_delete, name='quote_delete'), 12 | ] 13 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/jquery/src/css/hiddenVisibleSelectors.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../core", 3 | "../selector" 4 | ], function( jQuery ) { 5 | 6 | "use strict"; 7 | 8 | jQuery.expr.pseudos.hidden = function( elem ) { 9 | return !jQuery.expr.pseudos.visible( elem ); 10 | }; 11 | jQuery.expr.pseudos.visible = function( elem ) { 12 | return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); 13 | }; 14 | 15 | } ); 16 | -------------------------------------------------------------------------------- /days/021-024-quart-async/async_cityscape_api/.idea/webResources.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /days/053-056-django-registration/demo/quotes/migrations/0003_remove_quote_inspiration.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.1 on 2018-08-28 22:24 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('quotes', '0002_auto_20180828_1103'), 10 | ] 11 | 12 | operations = [ 13 | migrations.RemoveField( 14 | model_name='quote', 15 | name='inspiration', 16 | ), 17 | ] 18 | -------------------------------------------------------------------------------- /days/053-056-django-registration/demo/quotes/urls.py: -------------------------------------------------------------------------------- 1 | from django.urls import path 2 | 3 | from . import views 4 | 5 | app_name = 'quotes' 6 | urlpatterns = [ 7 | path('', views.quote_list, name='quote_list'), 8 | path('', views.quote_detail, name='quote_detail'), 9 | path('new', views.quote_new, name='quote_new'), 10 | path('edit/', views.quote_edit, name='quote_edit'), 11 | path('delete/', views.quote_delete, name='quote_delete'), 12 | ] 13 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/bootstrap/scss/mixins/_badge.scss: -------------------------------------------------------------------------------- 1 | @mixin badge-variant($bg) { 2 | color: color-yiq($bg); 3 | background-color: $bg; 4 | 5 | @at-root a#{&} { 6 | @include hover-focus { 7 | color: color-yiq($bg); 8 | background-color: darken($bg, 10%); 9 | } 10 | 11 | &:focus, 12 | &.focus { 13 | outline: 0; 14 | box-shadow: 0 0 0 $badge-focus-width rgba($bg, .5); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /days/041-044-react/es6/class.js: -------------------------------------------------------------------------------- 1 | class Bite { 2 | 3 | constructor(title, points){ 4 | this.title = title; 5 | this.points = points; 6 | } 7 | 8 | str(){ 9 | return 'Bite: ' + this.title + ' (' + this.points + ' pt.)'; 10 | } 11 | } 12 | 13 | if (require.main === module) { 14 | bite1 = new Bite('sum of numbers', 2) 15 | console.log(bite1.str()) 16 | 17 | bite2 = new Bite('parse list of names', 3) 18 | console.log(bite2.str()) 19 | } 20 | 21 | module.exports = Bite; -------------------------------------------------------------------------------- /days/057-060-flask-login/code/project_awesome/models.py: -------------------------------------------------------------------------------- 1 | from flask_sqlalchemy import SQLAlchemy 2 | from flask_login import UserMixin 3 | from project_awesome import db 4 | 5 | class User(UserMixin, db.Model): 6 | id = db.Column(db.Integer, primary_key=True) 7 | username = db.Column(db.String(80), unique=True, nullable=False) 8 | password = db.Column(db.String(120), unique=False, nullable=False) 9 | 10 | def __repr__(self): 11 | return 'User {}'.format(self.username) 12 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/your-turn/billtracker_with_viewmodels/billtracker/billtracker/templates/errors/404.pt: -------------------------------------------------------------------------------- 1 |
    2 |
    3 | 4 |
    5 |

    Pyramid Starter project

    6 |

    404 Page Not Found

    7 |
    8 | 9 |
    10 |
    11 | -------------------------------------------------------------------------------- /days/013-016-css-basics/demos/selectorville/static/js/selectors.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function () { 2 | $("#search_button").click(function (e) { 3 | e.preventDefault() 4 | 5 | var selector_text = $("#search_entry").val(); 6 | $(".selected").removeClass("selected"); 7 | 8 | 9 | console.log(selector_text); 10 | $(selector_text).each(function (i, e) { 11 | $(e).addClass('selected') 12 | }) 13 | 14 | return false 15 | }) 16 | }) -------------------------------------------------------------------------------- /days/045-048-django-intro/demo/mysite/wsgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | WSGI config for mysite project. 3 | 4 | It exposes the WSGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/2.1/howto/deployment/wsgi/ 8 | """ 9 | 10 | import os 11 | 12 | from django.core.wsgi import get_wsgi_application 13 | 14 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings') 15 | 16 | application = get_wsgi_application() 17 | -------------------------------------------------------------------------------- /days/069-072-django-rest/demo/mysite/wsgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | WSGI config for mysite project. 3 | 4 | It exposes the WSGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/2.1/howto/deployment/wsgi/ 8 | """ 9 | 10 | import os 11 | 12 | from django.core.wsgi import get_wsgi_application 13 | 14 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings') 15 | 16 | application = get_wsgi_application() 17 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/platforms/web/entry-server-basic-renderer.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | import modules from './server/modules/index' 4 | import directives from './server/directives/index' 5 | import { isUnaryTag, canBeLeftOpenTag } from './compiler/util' 6 | import { createBasicRenderer } from 'server/create-basic-renderer' 7 | 8 | export default createBasicRenderer({ 9 | modules, 10 | directives, 11 | isUnaryTag, 12 | canBeLeftOpenTag 13 | }) 14 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/platforms/web/entry-server-basic-renderer.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | import modules from './server/modules/index' 4 | import directives from './server/directives/index' 5 | import { isUnaryTag, canBeLeftOpenTag } from './compiler/util' 6 | import { createBasicRenderer } from 'server/create-basic-renderer' 7 | 8 | export default createBasicRenderer({ 9 | modules, 10 | directives, 11 | isUnaryTag, 12 | canBeLeftOpenTag 13 | }) 14 | -------------------------------------------------------------------------------- /days/053-056-django-registration/demo/mysite/wsgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | WSGI config for mysite project. 3 | 4 | It exposes the WSGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/2.1/howto/deployment/wsgi/ 8 | """ 9 | 10 | import os 11 | 12 | from django.core.wsgi import get_wsgi_application 13 | 14 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings') 15 | 16 | application = get_wsgi_application() 17 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/.idea/your_movie_exploder.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 11 | -------------------------------------------------------------------------------- /days/005-008-html5/demos/signup/extras/form_hook.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function () { 2 | 3 | $("form").submit(function (e) { 4 | e.preventDefault() 5 | 6 | const $inputs = $('form :input'); 7 | 8 | let values = {} 9 | $inputs.each(function () { 10 | if (this.name) { 11 | values[this.name] = $(this).val(); 12 | } 13 | }) 14 | 15 | alert(JSON.stringify(values, null, 2)) 16 | 17 | return false 18 | }) 19 | }) 20 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/bootstrap/scss/utilities/_float.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | @each $breakpoint in map-keys($grid-breakpoints) { 4 | @include media-breakpoint-up($breakpoint) { 5 | $infix: breakpoint-infix($breakpoint, $grid-breakpoints); 6 | 7 | .float#{$infix}-left { float: left !important; } 8 | .float#{$infix}-right { float: right !important; } 9 | .float#{$infix}-none { float: none !important; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/jquery/src/core/stripAndCollapse.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../var/rnothtmlwhite" 3 | ], function( rnothtmlwhite ) { 4 | "use strict"; 5 | 6 | // Strip and collapse whitespace according to HTML spec 7 | // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace 8 | function stripAndCollapse( value ) { 9 | var tokens = value.match( rnothtmlwhite ) || []; 10 | return tokens.join( " " ); 11 | } 12 | 13 | return stripAndCollapse; 14 | } ); 15 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/platforms/weex/compiler/modules/recycle-list/component-root.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | import { addAttr } from 'compiler/helpers' 4 | 5 | // mark component root nodes as 6 | export function postTransformComponentRoot (el: ASTElement) { 7 | if (!el.parent) { 8 | // component root 9 | addAttr(el, '@isComponentRoot', 'true') 10 | addAttr(el, '@templateId', '_uid') 11 | addAttr(el, '@componentProps', '$props || {}') 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | services: 3 | base_server: 4 | build: ./base_server/ 5 | image: base_server:latest 6 | frontend: 7 | build: ./frontend/ 8 | command: nginx -g "daemon off;" 9 | depends_on: 10 | - services 11 | - base_server 12 | ports: 13 | - "80:80" 14 | services: 15 | build: ./services/ 16 | command: /venv/bin/python /app/app.py 17 | depends_on: 18 | - base_server 19 | ports: 20 | - "7007:7007" 21 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/platforms/weex/compiler/modules/recycle-list/component-root.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | import { addAttr } from 'compiler/helpers' 4 | 5 | // mark component root nodes as 6 | export function postTransformComponentRoot (el: ASTElement) { 7 | if (!el.parent) { 8 | // component root 9 | addAttr(el, '@isComponentRoot', 'true') 10 | addAttr(el, '@templateId', '_uid') 11 | addAttr(el, '@componentProps', '$props || {}') 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /days/025-028-javascript/demo/language/run-js/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | JS is Fun! 5 | 6 | 7 | 8 | 9 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /days/065-068-heroku-deployment/code/sendgrid_emailer.py: -------------------------------------------------------------------------------- 1 | import sendgrid 2 | from sendgrid.helpers.mail import Mail 3 | 4 | sg = sendgrid.SendGridAPIClient(api_key="MY_API_KEY") 5 | 6 | from_email = "test@example.com" 7 | subject = "Winter is coming" 8 | to_email = "@" 9 | content = "So... put on a jumper!" 10 | 11 | mail = Mail(from_email, to_email, subject, content) 12 | 13 | response = sg.send(mail) 14 | 15 | print(response.status_code) 16 | print(response.body) 17 | print(response.headers) 18 | -------------------------------------------------------------------------------- /days/085-088-aws-lambda/demo/lambdas/lambda_calculator.py: -------------------------------------------------------------------------------- 1 | import operator 2 | 3 | CALCULATIONS = { 4 | '+': operator.add, 5 | '-': operator.sub, 6 | '*': operator.mul, 7 | '/': operator.truediv, 8 | } 9 | 10 | 11 | def lambda_handler(event, context): 12 | code = event.get('code', '') 13 | status_code = 200 14 | 15 | num1, sign, num2 = code.split() 16 | return_value = CALCULATIONS[sign](int(num1), int(num2)) 17 | 18 | return {'statusCode': status_code, 'body': return_value} 19 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/jquery/src/event/ajax.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../core", 3 | "../event" 4 | ], function( jQuery ) { 5 | 6 | "use strict"; 7 | 8 | // Attach a bunch of functions for handling common AJAX events 9 | jQuery.each( [ 10 | "ajaxStart", 11 | "ajaxStop", 12 | "ajaxComplete", 13 | "ajaxError", 14 | "ajaxSuccess", 15 | "ajaxSend" 16 | ], function( i, type ) { 17 | jQuery.fn[ type ] = function( fn ) { 18 | return this.on( type, fn ); 19 | }; 20 | } ); 21 | 22 | } ); 23 | -------------------------------------------------------------------------------- /days/045-048-django-intro/demo/quotes/urls-cb.py: -------------------------------------------------------------------------------- 1 | from django.urls import path 2 | 3 | from . import views 4 | 5 | app_name = 'quotes' 6 | urlpatterns = [ 7 | path('', views.QuoteList.as_view(), name='quote_list'), 8 | path('', views.QuoteView.as_view(), name='quote_detail'), 9 | path('new', views.QuoteCreate.as_view(), name='quote_new'), 10 | path('edit/', views.QuoteUpdate.as_view(), name='quote_edit'), 11 | path('delete/', views.QuoteDelete.as_view(), name='quote_delete'), 12 | ] 13 | -------------------------------------------------------------------------------- /days/069-072-django-rest/demo/quotes/urls-cb.py: -------------------------------------------------------------------------------- 1 | from django.urls import path 2 | 3 | from . import views 4 | 5 | app_name = 'quotes' 6 | urlpatterns = [ 7 | path('', views.QuoteList.as_view(), name='quote_list'), 8 | path('', views.QuoteView.as_view(), name='quote_detail'), 9 | path('new', views.QuoteCreate.as_view(), name='quote_new'), 10 | path('edit/', views.QuoteUpdate.as_view(), name='quote_edit'), 11 | path('delete/', views.QuoteDelete.as_view(), name='quote_delete'), 12 | ] 13 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/bootstrap/scss/mixins/_text-emphasis.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // Typography 4 | 5 | @mixin text-emphasis-variant($parent, $color) { 6 | #{$parent} { 7 | color: $color !important; 8 | } 9 | @if $emphasized-link-hover-darken-percentage != 0 { 10 | a#{$parent} { 11 | @include hover-focus { 12 | color: darken($color, $emphasized-link-hover-darken-percentage) !important; 13 | } 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/bootstrap/scss/mixins/_transition.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable property-blacklist 2 | @mixin transition($transition...) { 3 | @if $enable-transitions { 4 | @if length($transition) == 0 { 5 | transition: $transition-base; 6 | } @else { 7 | transition: $transition; 8 | } 9 | } 10 | 11 | @if $enable-prefers-reduced-motion-media-query { 12 | @media (prefers-reduced-motion: reduce) { 13 | transition: none; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /days/045-048-django-intro/demo/quotes/migrations/0002_auto_20180828_1103.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.1 on 2018-08-28 11:03 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('quotes', '0001_initial'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='quote', 15 | name='inspiration', 16 | field=models.TextField(blank=True, null=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /days/053-056-django-registration/demo/quotes/urls-cb.py: -------------------------------------------------------------------------------- 1 | from django.urls import path 2 | 3 | from . import views 4 | 5 | app_name = 'quotes' 6 | urlpatterns = [ 7 | path('', views.QuoteList.as_view(), name='quote_list'), 8 | path('', views.QuoteView.as_view(), name='quote_detail'), 9 | path('new', views.QuoteCreate.as_view(), name='quote_new'), 10 | path('edit/', views.QuoteUpdate.as_view(), name='quote_edit'), 11 | path('delete/', views.QuoteDelete.as_view(), name='quote_delete'), 12 | ] 13 | -------------------------------------------------------------------------------- /days/069-072-django-rest/demo/quotes/migrations/0002_auto_20180828_1103.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.1 on 2018-08-28 11:03 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('quotes', '0001_initial'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='quote', 15 | name='inspiration', 16 | field=models.TextField(blank=True, null=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/bootstrap/scss/mixins/_float.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | @mixin float-left { 4 | float: left !important; 5 | @include deprecate("The `float-left` mixin", "v4.3.0", "v5"); 6 | } 7 | @mixin float-right { 8 | float: right !important; 9 | @include deprecate("The `float-right` mixin", "v4.3.0", "v5"); 10 | } 11 | @mixin float-none { 12 | float: none !important; 13 | @include deprecate("The `float-none` mixin", "v4.3.0", "v5"); 14 | } 15 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/bootstrap/scss/utilities/_align.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | .align-baseline { vertical-align: baseline !important; } // Browser default 4 | .align-top { vertical-align: top !important; } 5 | .align-middle { vertical-align: middle !important; } 6 | .align-bottom { vertical-align: bottom !important; } 7 | .align-text-bottom { vertical-align: text-bottom !important; } 8 | .align-text-top { vertical-align: text-top !important; } 9 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/shared/constants.js: -------------------------------------------------------------------------------- 1 | export const SSR_ATTR = 'data-server-rendered' 2 | 3 | export const ASSET_TYPES = [ 4 | 'component', 5 | 'directive', 6 | 'filter' 7 | ] 8 | 9 | export const LIFECYCLE_HOOKS = [ 10 | 'beforeCreate', 11 | 'created', 12 | 'beforeMount', 13 | 'mounted', 14 | 'beforeUpdate', 15 | 'updated', 16 | 'beforeDestroy', 17 | 'destroyed', 18 | 'activated', 19 | 'deactivated', 20 | 'errorCaptured', 21 | 'serverPrefetch' 22 | ] 23 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/shared/constants.js: -------------------------------------------------------------------------------- 1 | export const SSR_ATTR = 'data-server-rendered' 2 | 3 | export const ASSET_TYPES = [ 4 | 'component', 5 | 'directive', 6 | 'filter' 7 | ] 8 | 9 | export const LIFECYCLE_HOOKS = [ 10 | 'beforeCreate', 11 | 'created', 12 | 'beforeMount', 13 | 'mounted', 14 | 'beforeUpdate', 15 | 'updated', 16 | 'beforeDestroy', 17 | 'destroyed', 18 | 'activated', 19 | 'deactivated', 20 | 'errorCaptured', 21 | 'serverPrefetch' 22 | ] 23 | -------------------------------------------------------------------------------- /days/021-024-quart-async/python_async/.idea/python_async.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 11 | -------------------------------------------------------------------------------- /days/041-044-react/demo/tips/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import './index.css'; 4 | import App from './App'; 5 | import * as serviceWorker from './serviceWorker'; 6 | 7 | ReactDOM.render(, document.getElementById('root')); 8 | 9 | // If you want your app to work offline and load faster, you can change 10 | // unregister() to register() below. Note this comes with some pitfalls. 11 | // Learn more about service workers: https://bit.ly/CRA-PWA 12 | serviceWorker.unregister(); 13 | -------------------------------------------------------------------------------- /days/053-056-django-registration/demo/quotes/migrations/0002_auto_20180828_1103.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.1 on 2018-08-28 11:03 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('quotes', '0001_initial'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='quote', 15 | name='inspiration', 16 | field=models.TextField(blank=True, null=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /days/089-092-deployment/demo/billtracker/server/billtracker.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=uWSGI Bill Tracker server instance 3 | After=syslog.target 4 | 5 | [Service] 6 | ExecStart=/webapps/venv/bin/uwsgi -H /webapps/venv --ini-paste /webapps/app_repo/days/089-092-deployment/demo/billtracker/production.ini 7 | RuntimeDirectory=/webapps/app_repo/days/089-092-deployment/demo/billtracker/ 8 | Restart=always 9 | KillSignal=SIGQUIT 10 | Type=notify 11 | StandardError=syslog 12 | NotifyAccess=all 13 | 14 | [Install] 15 | WantedBy=multi-user.target -------------------------------------------------------------------------------- /days/041-044-react/demo/freemonkey/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import './index.css'; 4 | import App from './App'; 5 | import * as serviceWorker from './serviceWorker'; 6 | 7 | ReactDOM.render(, document.getElementById('root')); 8 | 9 | // If you want your app to work offline and load faster, you can change 10 | // unregister() to register() below. Note this comes with some pitfalls. 11 | // Learn more about service workers: https://bit.ly/CRA-PWA 12 | serviceWorker.unregister(); 13 | -------------------------------------------------------------------------------- /days/093-096-vuejs/starter_movie_exploder/views/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Movie Exploder! 6 | 7 | 8 | 9 | 10 | 11 | 12 |
    13 |

    Movie Exploder

    14 |
    15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/jquery/src/core/toType.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../var/class2type", 3 | "../var/toString" 4 | ], function( class2type, toString ) { 5 | 6 | "use strict"; 7 | 8 | function toType( obj ) { 9 | if ( obj == null ) { 10 | return obj + ""; 11 | } 12 | 13 | // Support: Android <=2.3 only (functionish RegExp) 14 | return typeof obj === "object" || typeof obj === "function" ? 15 | class2type[ toString.call( obj ) ] || "object" : 16 | typeof obj; 17 | } 18 | 19 | return toType; 20 | } ); 21 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/bootstrap/scss/bootstrap-reboot.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Reboot v4.3.1 (https://getbootstrap.com/) 3 | * Copyright 2011-2019 The Bootstrap Authors 4 | * Copyright 2011-2019 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 6 | * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) 7 | */ 8 | 9 | @import "functions"; 10 | @import "variables"; 11 | @import "mixins"; 12 | @import "reboot"; 13 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/jquery/src/manipulation/_evalUrl.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../ajax" 3 | ], function( jQuery ) { 4 | 5 | "use strict"; 6 | 7 | jQuery._evalUrl = function( url ) { 8 | return jQuery.ajax( { 9 | url: url, 10 | 11 | // Make this explicit, since user can override this through ajaxSetup (#11264) 12 | type: "GET", 13 | dataType: "script", 14 | cache: true, 15 | async: false, 16 | global: false, 17 | "throws": true 18 | } ); 19 | }; 20 | 21 | return jQuery._evalUrl; 22 | 23 | } ); 24 | -------------------------------------------------------------------------------- /days/073-076-webscraping/code/newspaper3k_code.py: -------------------------------------------------------------------------------- 1 | import newspaper 2 | 3 | from newspaper import Article 4 | 5 | URL = 'https://www.news.com.au/travel/travel-updates/the-sultan-of-brunei-created-a-30-million-gold-coast-real-estate-nightmare/news-story/8e4a4e1ee4137a9b014ce73563fda376' 6 | 7 | article = Article(URL) 8 | 9 | article.download() 10 | 11 | article.html 12 | 13 | article.parse() 14 | 15 | article.authors 16 | 17 | article.publish_date 18 | 19 | article.text 20 | 21 | article.top_image 22 | 23 | article.movies 24 | 25 | article.summary 26 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/bootstrap/scss/_jumbotron.scss: -------------------------------------------------------------------------------- 1 | .jumbotron { 2 | padding: $jumbotron-padding ($jumbotron-padding / 2); 3 | margin-bottom: $jumbotron-padding; 4 | color: $jumbotron-color; 5 | background-color: $jumbotron-bg; 6 | @include border-radius($border-radius-lg); 7 | 8 | @include media-breakpoint-up(sm) { 9 | padding: ($jumbotron-padding * 2) $jumbotron-padding; 10 | } 11 | } 12 | 13 | .jumbotron-fluid { 14 | padding-right: 0; 15 | padding-left: 0; 16 | @include border-radius(0); 17 | } 18 | -------------------------------------------------------------------------------- /days/045-048-django-intro/demo/quotes/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | 4 | class Quote(models.Model): 5 | quote = models.TextField() 6 | author = models.CharField(max_length=100) 7 | source = models.URLField(blank=True, null=True) 8 | cover = models.URLField(blank=True, null=True) 9 | added = models.DateTimeField(auto_now_add=True) 10 | edited = models.DateTimeField(auto_now=True) 11 | 12 | def __str__(self): 13 | return f'{self.quote} - {self.author}' 14 | 15 | class Meta: 16 | ordering = ['-added'] 17 | -------------------------------------------------------------------------------- /days/069-072-django-rest/demo/quotes/templates/quotes/quote_confirm_delete.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | 3 | {% block content %} 4 | 5 |

    Confirm Delete Quote

    6 | 7 |
    8 | {% csrf_token %} 9 |
    {{ quote.quote }}
    10 |

    Are you sure you want to delete this quote?

    11 | 12 | Go Back 13 |
    14 | 15 | {% endblock %} 16 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/bootstrap/scss/utilities/_background.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | @each $color, $value in $theme-colors { 4 | @include bg-variant(".bg-#{$color}", $value); 5 | } 6 | 7 | @if $enable-gradients { 8 | @each $color, $value in $theme-colors { 9 | @include bg-gradient-variant(".bg-gradient-#{$color}", $value); 10 | } 11 | } 12 | 13 | .bg-white { 14 | background-color: $white !important; 15 | } 16 | 17 | .bg-transparent { 18 | background-color: transparent !important; 19 | } 20 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/jquery/src/manipulation/setGlobalEval.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../data/var/dataPriv" 3 | ], function( dataPriv ) { 4 | 5 | "use strict"; 6 | 7 | // Mark scripts as having already been evaluated 8 | function setGlobalEval( elems, refElements ) { 9 | var i = 0, 10 | l = elems.length; 11 | 12 | for ( ; i < l; i++ ) { 13 | dataPriv.set( 14 | elems[ i ], 15 | "globalEval", 16 | !refElements || dataPriv.get( refElements[ i ], "globalEval" ) 17 | ); 18 | } 19 | } 20 | 21 | return setGlobalEval; 22 | } ); 23 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/jquery/src/selector-sizzle.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "./core", 3 | "../external/sizzle/dist/sizzle" 4 | ], function( jQuery, Sizzle ) { 5 | 6 | "use strict"; 7 | 8 | jQuery.find = Sizzle; 9 | jQuery.expr = Sizzle.selectors; 10 | 11 | // Deprecated 12 | jQuery.expr[ ":" ] = jQuery.expr.pseudos; 13 | jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; 14 | jQuery.text = Sizzle.getText; 15 | jQuery.isXMLDoc = Sizzle.isXML; 16 | jQuery.contains = Sizzle.contains; 17 | jQuery.escapeSelector = Sizzle.escape; 18 | 19 | } ); 20 | -------------------------------------------------------------------------------- /days/045-048-django-intro/demo/quotes/templates/quotes/quote_confirm_delete.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | 3 | {% block content %} 4 | 5 |

    Confirm Delete Quote

    6 | 7 |
    8 | {% csrf_token %} 9 |
    {{ quote.quote }}
    10 |

    Are you sure you want to delete this quote?

    11 | 12 | Go Back 13 |
    14 | 15 | {% endblock %} 16 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/core/vdom/helpers/get-first-component-child.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | import { isDef } from 'shared/util' 4 | import { isAsyncPlaceholder } from './is-async-placeholder' 5 | 6 | export function getFirstComponentChild (children: ?Array): ?VNode { 7 | if (Array.isArray(children)) { 8 | for (let i = 0; i < children.length; i++) { 9 | const c = children[i] 10 | if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) { 11 | return c 12 | } 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/core/vdom/helpers/get-first-component-child.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | import { isDef } from 'shared/util' 4 | import { isAsyncPlaceholder } from './is-async-placeholder' 5 | 6 | export function getFirstComponentChild (children: ?Array): ?VNode { 7 | if (Array.isArray(children)) { 8 | for (let i = 0; i < children.length; i++) { 9 | const c = children[i] 10 | if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) { 11 | return c 12 | } 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /days/053-056-django-registration/demo/quotes/templates/quotes/quote_confirm_delete.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | 3 | {% block content %} 4 | 5 |

    Confirm Delete Quote

    6 | 7 |
    8 | {% csrf_token %} 9 |
    {{ quote.quote }}
    10 |

    Are you sure you want to delete this quote?

    11 | 12 | Go Back 13 |
    14 | 15 | {% endblock %} 16 | -------------------------------------------------------------------------------- /days/057-060-flask-login/code/project_awesome/templates/loginpage.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Login Page 4 | 5 | 6 | 7 |

    This is the page where users will login to the site

    8 | 9 |
    10 |
    11 |
    12 |
    13 |
    14 | 15 |
    16 |
    17 | 18 | 19 | -------------------------------------------------------------------------------- /days/073-076-webscraping/code/talkpy_bs4.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import bs4 3 | 4 | URL = "https://training.talkpython.fm/courses/all" 5 | header_list = [] 6 | 7 | def main(): 8 | raw_site_page = requests.get(URL) 9 | raw_site_page.raise_for_status() 10 | 11 | soup = bs4.BeautifulSoup(raw_site_page.text, 'html.parser') 12 | html_header_list = soup.select('h3') 13 | for headers in html_header_list: 14 | header_list.append(headers.getText()) 15 | for headers in header_list: 16 | print(headers) 17 | 18 | if __name__ == "__main__": 19 | main() 20 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/platforms/web/runtime/patch.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | import * as nodeOps from 'web/runtime/node-ops' 4 | import { createPatchFunction } from 'core/vdom/patch' 5 | import baseModules from 'core/vdom/modules/index' 6 | import platformModules from 'web/runtime/modules/index' 7 | 8 | // the directive module should be applied last, after all 9 | // built-in modules have been applied. 10 | const modules = platformModules.concat(baseModules) 11 | 12 | export const patch: Function = createPatchFunction({ nodeOps, modules }) 13 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/platforms/web/runtime/patch.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | import * as nodeOps from 'web/runtime/node-ops' 4 | import { createPatchFunction } from 'core/vdom/patch' 5 | import baseModules from 'core/vdom/modules/index' 6 | import platformModules from 'web/runtime/modules/index' 7 | 8 | // the directive module should be applied last, after all 9 | // built-in modules have been applied. 10 | const modules = platformModules.concat(baseModules) 11 | 12 | export const patch: Function = createPatchFunction({ nodeOps, modules }) 13 | -------------------------------------------------------------------------------- /days/013-016-css-basics/demos/selectorville/static/css/float.css: -------------------------------------------------------------------------------- 1 | /*********** FLOAT DEMO ****************/ 2 | body { 3 | font-size: 24px; 4 | padding: 0; 5 | } 6 | 7 | #top-div img { 8 | float: right; 9 | height: 96px; 10 | } 11 | 12 | #top-div { 13 | background-color: #222; 14 | color: white; 15 | font-size: 48px; 16 | padding: 10px; 17 | } 18 | 19 | #top-div .msg { 20 | margin-top: 12px; 21 | margin-left: 10px; 22 | } 23 | 24 | a { 25 | font-weight: bold; 26 | } 27 | 28 | .page-content { 29 | font-size: 18px; 30 | padding: 10px; 31 | } -------------------------------------------------------------------------------- /days/089-092-deployment/demo/billtracker/billtracker/viewmodels/default/index_viewmodel.py: -------------------------------------------------------------------------------- 1 | from pyramid.request import Request 2 | 3 | from billtracker.data import repository 4 | from billtracker.viewmodels.viewmodelbase import ViewModelBase 5 | 6 | 7 | class IndexViewModel(ViewModelBase): 8 | 9 | def __init__(self, request: Request, user_id: int): 10 | super().__init__(request) 11 | 12 | self.user_id = user_id 13 | self.user = repository.get_user_by_id(user_id) 14 | 15 | if not self.user: 16 | self.error = "No user with ID {}.".format(user_id) 17 | -------------------------------------------------------------------------------- /days/029-032-static-site-gen/code/output/theme/fonts/font.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Yanone Kaffeesatz'; 3 | font-style: normal; 4 | font-weight: 400; 5 | src: 6 | local('Yanone Kaffeesatz Regular'), 7 | local('YanoneKaffeesatz-Regular'), 8 | /* from https://fonts.gstatic.com/s/yanonekaffeesatz/v8/YDAoLskQQ5MOAgvHUQCcLRTHiN2BPBirwIkMLKUspj4.woff */ 9 | url('Yanone_Kaffeesatz_400.woff') format('woff'), 10 | /* from https://fonts.gstatic.com/s/yanonekaffeesatz/v8/YDAoLskQQ5MOAgvHUQCcLfGwxTS8d1Q9KiDNCMKLFUM.woff2 */ 11 | url('Yanone_Kaffeesatz_400.woff2') format('woff2'); 12 | } 13 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/demo/billtracker/billtracker/viewmodels/default/index_viewmodel.py: -------------------------------------------------------------------------------- 1 | from pyramid.request import Request 2 | 3 | from billtracker.data import repository 4 | from billtracker.viewmodels.viewmodelbase import ViewModelBase 5 | 6 | 7 | class IndexViewModel(ViewModelBase): 8 | 9 | def __init__(self, request: Request, user_id: int): 10 | super().__init__(request) 11 | 12 | self.user_id = user_id 13 | self.user = repository.get_user_by_id(user_id) 14 | 15 | if not self.user: 16 | self.error = "No user with ID {}.".format(user_id) 17 | -------------------------------------------------------------------------------- /days/069-072-django-rest/demo/mysite/templates/registration/password_reset_form.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | 4 | {% block content %} 5 |
    6 | {% csrf_token %} 7 | 8 |
    9 | {% for error in form.non_field_errors %} 10 | {{error}} 11 | {% endfor %} 12 |
    13 | 14 |
    15 | {{ form.email.label }} 16 | {{ form.email }} 17 |
    18 | 19 | 20 |
    21 | {% endblock %} 22 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/vue/src/platforms/weex/compiler/modules/recycle-list/v-once.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | import { getAndRemoveAttr, addRawAttr } from 'compiler/helpers' 4 | 5 | function containVOnce (el: ASTElement): boolean { 6 | for (const attr in el.attrsMap) { 7 | if (/^v\-once$/i.test(attr)) { 8 | return true 9 | } 10 | } 11 | return false 12 | } 13 | 14 | export function preTransformVOnce (el: ASTElement) { 15 | if (containVOnce(el)) { 16 | getAndRemoveAttr(el, 'v-once', true) 17 | addRawAttr(el, '[[once]]', true) 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /days/097-100-docker/demo/frontend/movie_exploder/node_modules/vue/src/platforms/weex/compiler/modules/recycle-list/v-once.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | import { getAndRemoveAttr, addRawAttr } from 'compiler/helpers' 4 | 5 | function containVOnce (el: ASTElement): boolean { 6 | for (const attr in el.attrsMap) { 7 | if (/^v\-once$/i.test(attr)) { 8 | return true 9 | } 10 | } 11 | return false 12 | } 13 | 14 | export function preTransformVOnce (el: ASTElement) { 15 | if (containVOnce(el)) { 16 | getAndRemoveAttr(el, 'v-once', true) 17 | addRawAttr(el, '[[once]]', true) 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /days/021-024-quart-async/cityscape_api/views/home.py: -------------------------------------------------------------------------------- 1 | import flask 2 | 3 | # Post video edit **************************************** 4 | # Flask 2.0+ started raising an error on Blueprint(__name__, __name__) 5 | # ValueError: 'name' may not contain a dot '.' character. 6 | blueprint = flask.blueprints.Blueprint(__name__.replace('.', '_'), __name__) 7 | 8 | 9 | @blueprint.route('/') 10 | def index(): 11 | return "Welcome to the city_scape API. Use /api/city/* for API calls." 12 | 13 | 14 | @blueprint.errorhandler(404) 15 | def not_found(_): 16 | return flask.Response("The page was not found.", status=404) 17 | -------------------------------------------------------------------------------- /days/029-032-static-site-gen/code/output/theme/css/fonts.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Yanone Kaffeesatz'; 3 | font-style: normal; 4 | font-weight: 400; 5 | src: 6 | local('Yanone Kaffeesatz Regular'), 7 | local('YanoneKaffeesatz-Regular'), 8 | /* from https://fonts.gstatic.com/s/yanonekaffeesatz/v8/YDAoLskQQ5MOAgvHUQCcLRTHiN2BPBirwIkMLKUspj4.woff */ 9 | url('../fonts/Yanone_Kaffeesatz_400.woff') format('woff'), 10 | /* from https://fonts.gstatic.com/s/yanonekaffeesatz/v8/YDAoLskQQ5MOAgvHUQCcLfGwxTS8d1Q9KiDNCMKLFUM.woff2 */ 11 | url('../fonts/Yanone_Kaffeesatz_400.woff2') format('woff2'); 12 | } 13 | -------------------------------------------------------------------------------- /days/045-048-django-intro/demo/quotes/templates/quotes/quote_detail.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | {% load humanize %} 3 | 4 | {% block content %} 5 | 6 |
    7 |
    8 |
    {{ quote.quote }}
    9 | - {{ quote.author }} 10 |
    11 |
    12 | 13 |
    14 | Edit 15 | Go Back 16 |
    17 | 18 | {% endblock %} 19 | -------------------------------------------------------------------------------- /days/053-056-django-registration/demo/mysite/templates/registration/password_reset_form.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n %} 3 | 4 | {% block content %} 5 |
    6 | {% csrf_token %} 7 | 8 |
    9 | {% for error in form.non_field_errors %} 10 | {{error}} 11 | {% endfor %} 12 |
    13 | 14 |
    15 | {{ form.email.label }} 16 | {{ form.email }} 17 |
    18 | 19 | 20 |
    21 | {% endblock %} 22 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/bootstrap/scss/mixins/_list-group.scss: -------------------------------------------------------------------------------- 1 | // List Groups 2 | 3 | @mixin list-group-item-variant($state, $background, $color) { 4 | .list-group-item-#{$state} { 5 | color: $color; 6 | background-color: $background; 7 | 8 | &.list-group-item-action { 9 | @include hover-focus { 10 | color: $color; 11 | background-color: darken($background, 5%); 12 | } 13 | 14 | &.active { 15 | color: $white; 16 | background-color: $color; 17 | border-color: $color; 18 | } 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /days/093-096-vuejs/your-turn/your_movie_exploder/node_modules/bootstrap/scss/utilities/_stretched-link.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Stretched link 3 | // 4 | 5 | .stretched-link { 6 | &::after { 7 | position: absolute; 8 | top: 0; 9 | right: 0; 10 | bottom: 0; 11 | left: 0; 12 | z-index: 1; 13 | // Just in case `pointer-events: none` is set on a parent 14 | pointer-events: auto; 15 | content: ""; 16 | // IE10 bugfix, see https://stackoverflow.com/questions/16947967/ie10-hover-pseudo-class-doesnt-work-without-background-color 17 | background-color: rgba(0, 0, 0, 0); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /days/069-072-django-rest/demo/api/permissions.py: -------------------------------------------------------------------------------- 1 | from rest_framework import permissions 2 | 3 | 4 | class IsOwnerOrReadOnly(permissions.BasePermission): 5 | """ 6 | Make sure only owners of quotes can edit them. 7 | """ 8 | 9 | def has_object_permission(self, request, view, obj): 10 | # Read permissions are allowed to any request, 11 | # so we'll always allow GET, HEAD or OPTIONS requests. 12 | if request.method in permissions.SAFE_METHODS: 13 | return True 14 | 15 | # Instance must have an attribute named `owner`. 16 | return obj.user == request.user 17 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/demo/billtracker/.idea/dictionaries/screencaster.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | autogenerate 5 | billtracker 6 | dateutil 7 | debugtoolbar 8 | easom 9 | includeme 10 | mako 11 | maxcdn 12 | myapp 13 | mymodel 14 | pastedeploy 15 | pytest 16 | sqlalchemy 17 | tablename 18 | viewmodel 19 | 20 | 21 | -------------------------------------------------------------------------------- /days/021-024-quart-async/async_cityscape_api/views/home.py: -------------------------------------------------------------------------------- 1 | import quart 2 | 3 | # Post video edit **************************************** 4 | # Flask 2.0+ started raising an error on Blueprint(__name__, __name__) 5 | # ValueError: 'name' may not contain a dot '.' character. 6 | blueprint = quart.blueprints.Blueprint(__name__.replace('.', '_'), __name__) 7 | 8 | 9 | @blueprint.route('/') 10 | def index(): 11 | return "Welcome to the city_scape API. Use /api/city/* for API calls." 12 | 13 | 14 | @blueprint.errorhandler(404) 15 | def not_found(_): 16 | return quart.Response("The page was not found.", status=404) 17 | -------------------------------------------------------------------------------- /days/069-072-django-rest/demo/manage.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | import os 3 | import sys 4 | 5 | if __name__ == '__main__': 6 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings') 7 | try: 8 | from django.core.management import execute_from_command_line 9 | except ImportError as exc: 10 | raise ImportError( 11 | "Couldn't import Django. Are you sure it's installed and " 12 | "available on your PYTHONPATH environment variable? Did you " 13 | "forget to activate a virtual environment?" 14 | ) from exc 15 | execute_from_command_line(sys.argv) 16 | -------------------------------------------------------------------------------- /days/081-084-unit-testing/your-turn/billtracker_with_viewmodels/billtracker/billtracker/viewmodels/default/index_viewmodel.py: -------------------------------------------------------------------------------- 1 | from pyramid.request import Request 2 | 3 | from billtracker.data import repository 4 | from billtracker.viewmodels.viewmodelbase import ViewModelBase 5 | 6 | 7 | class IndexViewModel(ViewModelBase): 8 | 9 | def __init__(self, request: Request, user_id: int): 10 | super().__init__(request) 11 | 12 | self.user_id = user_id 13 | self.user = repository.get_user_by_id(user_id) 14 | 15 | if not self.user: 16 | self.error = "No user with ID {}.".format(user_id) 17 | -------------------------------------------------------------------------------- /days/013-016-css-basics/demos/selectorville/static/js/box.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function () { 2 | $("button").click(function () { 3 | 4 | var m = $("#margin").val(); 5 | var p = $("#padding").val(); 6 | var b = $("#border").val(); 7 | 8 | $(".inside").css("border-width", b + "px"); 9 | $(".inside").css("padding", p + "px"); 10 | $(".inside").css("margin", m + "px"); 11 | 12 | $(".msg").html("The values are set to:
    " + 13 | "padding: " + p + "px
    " + 14 | "margin: " + m + "px
    " + 15 | "border-width" + b + "px
    "); 16 | }); 17 | }); -------------------------------------------------------------------------------- /days/041-044-react/demo/freemonkey/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "freemonkey", 3 | "version": "0.1.0", 4 | "private": true, 5 | "dependencies": { 6 | "react": "^16.8.6", 7 | "react-dom": "^16.8.6", 8 | "react-scripts": "5.0.1" 9 | }, 10 | "scripts": { 11 | "start": "react-scripts start", 12 | "build": "react-scripts build", 13 | "test": "react-scripts test", 14 | "eject": "react-scripts eject" 15 | }, 16 | "eslintConfig": { 17 | "extends": "react-app" 18 | }, 19 | "browserslist": [ 20 | ">0.2%", 21 | "not dead", 22 | "not ie <= 11", 23 | "not op_mini all" 24 | ] 25 | } 26 | -------------------------------------------------------------------------------- /days/045-048-django-intro/demo/manage.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | import os 3 | import sys 4 | 5 | if __name__ == '__main__': 6 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings') 7 | try: 8 | from django.core.management import execute_from_command_line 9 | except ImportError as exc: 10 | raise ImportError( 11 | "Couldn't import Django. Are you sure it's installed and " 12 | "available on your PYTHONPATH environment variable? Did you " 13 | "forget to activate a virtual environment?" 14 | ) from exc 15 | execute_from_command_line(sys.argv) 16 | --------------------------------------------------------------------------------