├── Python ├── 3.- Flask │ ├── tabla_paises │ │ ├── static │ │ │ └── style.css │ │ ├── Pipfile │ │ ├── server.py │ │ └── templates │ │ │ └── index.html │ ├── intro │ │ ├── static │ │ │ ├── style.css │ │ │ └── img │ │ │ │ └── gatito_small.jpg │ │ ├── .DS_Store │ │ ├── Pipfile │ │ ├── templates │ │ │ ├── index.html │ │ │ └── usuarios.html │ │ └── server.py │ ├── .DS_Store │ ├── crud │ │ ├── erd.mwb │ │ ├── Pipfile │ │ ├── templates │ │ │ ├── nuevo.html │ │ │ ├── editar.html │ │ │ └── index.html │ │ ├── script.sql │ │ ├── server.py │ │ ├── mysqlconnection.py │ │ └── usuario.py │ ├── eventos │ │ ├── .DS_Store │ │ ├── flask_app │ │ │ ├── .DS_Store │ │ │ ├── bd │ │ │ │ ├── erd.mwb │ │ │ │ ├── erd.mwb.bak │ │ │ │ └── script.sql │ │ │ ├── __pycache__ │ │ │ │ └── __init__.cpython-312.pyc │ │ │ ├── __init__.py │ │ │ ├── models │ │ │ │ └── __pycache__ │ │ │ │ │ ├── event.cpython-312.pyc │ │ │ │ │ └── user.cpython-312.pyc │ │ │ ├── config │ │ │ │ ├── __pycache__ │ │ │ │ │ └── mysqlconnection.cpython-312.pyc │ │ │ │ └── mysqlconnection.py │ │ │ ├── controllers │ │ │ │ ├── __pycache__ │ │ │ │ │ ├── users_controller.cpython-312.pyc │ │ │ │ │ └── events_controller.cpython-312.pyc │ │ │ │ ├── users_controller.py │ │ │ │ └── events_controller.py │ │ │ └── templates │ │ │ │ ├── view.html │ │ │ │ ├── dashboard.html │ │ │ │ ├── edit.html │ │ │ │ ├── new.html │ │ │ │ └── index.html │ │ ├── Pipfile │ │ └── server.py │ ├── formularios │ │ ├── .DS_Store │ │ ├── Pipfile │ │ ├── templates │ │ │ ├── exito.html │ │ │ └── index.html │ │ └── server.py │ ├── registro_login │ │ ├── .DS_Store │ │ ├── flask_app │ │ │ ├── .DS_Store │ │ │ ├── bd │ │ │ │ ├── erd.mwb │ │ │ │ └── script.sql │ │ │ ├── __init__.py │ │ │ ├── templates │ │ │ │ ├── dashboard.html │ │ │ │ └── index.html │ │ │ ├── config │ │ │ │ └── mysqlconnection.py │ │ │ └── controllers │ │ │ │ └── users_controller.py │ │ ├── Pipfile │ │ └── server.py │ ├── crud_modularizado │ │ ├── .DS_Store │ │ ├── flask_app │ │ │ ├── .DS_Store │ │ │ ├── bd │ │ │ │ ├── erd.mwb │ │ │ │ └── script.sql │ │ │ ├── templates │ │ │ │ ├── .DS_Store │ │ │ │ ├── nuevo.html │ │ │ │ ├── editar.html │ │ │ │ └── index.html │ │ │ ├── __init__.py │ │ │ ├── controllers │ │ │ │ └── usuarios_controller.py │ │ │ ├── config │ │ │ │ └── mysqlconnection.py │ │ │ └── models │ │ │ │ └── usuario.py │ │ ├── Pipfile │ │ └── server.py │ ├── estudiantes_cursos │ │ ├── .DS_Store │ │ ├── flask_app │ │ │ ├── .DS_Store │ │ │ ├── bd │ │ │ │ ├── erd.mwb │ │ │ │ └── script.sql │ │ │ ├── __init__.py │ │ │ ├── __pycache__ │ │ │ │ └── __init__.cpython-312.pyc │ │ │ ├── models │ │ │ │ ├── __pycache__ │ │ │ │ │ ├── curso.cpython-312.pyc │ │ │ │ │ └── estudiante.cpython-312.pyc │ │ │ │ ├── estudiante.py │ │ │ │ └── curso.py │ │ │ ├── config │ │ │ │ ├── __pycache__ │ │ │ │ │ └── mysqlconnection.cpython-312.pyc │ │ │ │ └── mysqlconnection.py │ │ │ ├── controllers │ │ │ │ ├── __pycache__ │ │ │ │ │ ├── curso_controller.cpython-312.pyc │ │ │ │ │ └── estudiante_controller.cpython-312.pyc │ │ │ │ ├── estudiante_controller.py │ │ │ │ └── curso_controller.py │ │ │ └── templates │ │ │ │ ├── curso_con_estudiantes.html │ │ │ │ ├── estudiante.html │ │ │ │ └── cursos.html │ │ ├── server.py │ │ └── Pipfile │ ├── foro_publicaciones │ │ ├── .DS_Store │ │ ├── flask_app │ │ │ ├── .DS_Store │ │ │ ├── bd │ │ │ │ ├── erd.mwb │ │ │ │ ├── erd.mwb.bak │ │ │ │ └── script.sql │ │ │ ├── __init__.py │ │ │ ├── controllers │ │ │ │ ├── posts_controller.py │ │ │ │ └── users_controller.py │ │ │ ├── models │ │ │ │ └── post.py │ │ │ ├── config │ │ │ │ └── mysqlconnection.py │ │ │ └── templates │ │ │ │ ├── dashboard.html │ │ │ │ └── index.html │ │ ├── Pipfile │ │ └── server.py │ ├── loteria_mexicana1 │ │ ├── .DS_Store │ │ ├── Pipfile │ │ ├── static │ │ │ └── style.css │ │ ├── templates │ │ │ ├── index.html │ │ │ └── loteria4xn.html │ │ └── server.py │ └── visitas │ │ ├── Pipfile │ │ ├── server.py │ │ └── templates │ │ └── index.html ├── .DS_Store ├── 2.- OOP │ ├── .DS_Store │ ├── __pycache__ │ │ ├── Gato.cpython-312.pyc │ │ ├── Perro.cpython-312.pyc │ │ ├── Animal.cpython-312.pyc │ │ └── Persona.cpython-312.pyc │ ├── usuarios_tarjetas │ │ ├── __pycache__ │ │ │ ├── Usuario.cpython-312.pyc │ │ │ └── tarjetadeCreditoTarea.cpython-312.pyc │ │ ├── mainUsuario.py │ │ ├── Usuario.py │ │ ├── mainTarjetaCreditoTarea.py │ │ └── tarjetadeCreditoTarea.py │ ├── Perro.py │ ├── Animal.py │ ├── Gato.py │ ├── main.py │ └── Persona.py ├── 4.- APIs │ ├── registro_login │ │ ├── .DS_Store │ │ ├── flask_app │ │ │ ├── .DS_Store │ │ │ ├── bd │ │ │ │ ├── erd.mwb │ │ │ │ └── script.sql │ │ │ ├── __init__.py │ │ │ ├── templates │ │ │ │ ├── dashboard.html │ │ │ │ └── index.html │ │ │ ├── static │ │ │ │ └── index.js │ │ │ ├── config │ │ │ │ └── mysqlconnection.py │ │ │ └── controllers │ │ │ │ └── users_controller.py │ │ ├── Pipfile │ │ └── server.py │ └── dogapi │ │ ├── index.html │ │ └── js │ │ └── script.js └── 1.- Intro │ └── funciones_intermedias.py ├── .DS_Store ├── MySQL ├── .DS_Store ├── ERD │ ├── erd.mwb │ └── estudiantes_cursos.mwb ├── Ejemplos.xlsx ├── ~$Ejemplos.xlsx └── Queries │ ├── funciones.sql │ ├── paises.sql │ ├── insert_delete_update.sql │ ├── joins.sql │ └── selects.sql ├── Fundamentos de la Web ├── .DS_Store ├── 1.- Intro │ ├── .DS_Store │ └── img │ │ ├── 1.jpg │ │ └── gatito_small.jpg ├── 4.- Position │ ├── .DS_Store │ ├── img │ │ └── gatito.jpg │ ├── index.html │ ├── style.css │ ├── tarjeta.css │ └── tarjeta.html ├── 5.- Javascript │ ├── .DS_Store │ ├── me-gusta │ │ ├── .DS_Store │ │ ├── img │ │ │ └── gatito_small.jpg │ │ ├── js │ │ │ └── script.js │ │ ├── megusta1.html │ │ ├── style.css │ │ └── megusta2.html │ ├── me-gustav2 │ │ ├── .DS_Store │ │ ├── img │ │ │ └── gatito_small.jpg │ │ ├── js │ │ │ └── script.js │ │ ├── css │ │ │ └── style.css │ │ └── index.html │ ├── pagina-perfil │ │ ├── .DS_Store │ │ ├── images │ │ │ ├── gear.png │ │ │ ├── .DS_Store │ │ │ ├── anne-s.jpg │ │ │ ├── arry-s.jpg │ │ │ ├── jane-m.jpg │ │ │ ├── phil-s.jpg │ │ │ ├── todd-s.jpg │ │ │ ├── adrien-s.jpg │ │ │ ├── alayne-s.jpg │ │ │ ├── map-marker.png │ │ │ ├── accept-circle.png │ │ │ └── close-circle.png │ │ ├── js │ │ │ └── script.js │ │ └── css │ │ │ └── style.css │ ├── tiempo-local │ │ ├── .DS_Store │ │ ├── assets │ │ │ ├── cookie.png │ │ │ ├── some_rain.png │ │ │ ├── some_sun.png │ │ │ └── some_clouds.png │ │ ├── css │ │ │ └── style.css │ │ ├── js │ │ │ └── script.js │ │ └── index.html │ ├── adivina-numero │ │ ├── script.js │ │ └── index.html │ ├── funciones.js │ └── reto_pokemon.js ├── 2.- Comandos │ ├── git.txt │ └── terminal.txt └── 3.- Flex │ ├── bloques.html │ ├── css │ ├── bloques.css │ └── style.css │ └── index.html ├── README.md ├── Pipfile └── AWS └── Instrucciones.txt /Python/3.- Flask/tabla_paises/static/style.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Python/3.- Flask/intro/static/style.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color: purple; 3 | } -------------------------------------------------------------------------------- /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/.DS_Store -------------------------------------------------------------------------------- /MySQL/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/MySQL/.DS_Store -------------------------------------------------------------------------------- /Python/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/.DS_Store -------------------------------------------------------------------------------- /MySQL/ERD/erd.mwb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/MySQL/ERD/erd.mwb -------------------------------------------------------------------------------- /MySQL/Ejemplos.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/MySQL/Ejemplos.xlsx -------------------------------------------------------------------------------- /Python/2.- OOP/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/2.- OOP/.DS_Store -------------------------------------------------------------------------------- /Python/3.- Flask/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/3.- Flask/.DS_Store -------------------------------------------------------------------------------- /Fundamentos de la Web/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Fundamentos de la Web/.DS_Store -------------------------------------------------------------------------------- /Python/3.- Flask/crud/erd.mwb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/3.- Flask/crud/erd.mwb -------------------------------------------------------------------------------- /MySQL/ERD/estudiantes_cursos.mwb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/MySQL/ERD/estudiantes_cursos.mwb -------------------------------------------------------------------------------- /Python/3.- Flask/intro/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/3.- Flask/intro/.DS_Store -------------------------------------------------------------------------------- /Python/3.- Flask/eventos/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/3.- Flask/eventos/.DS_Store -------------------------------------------------------------------------------- /Python/3.- Flask/formularios/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/3.- Flask/formularios/.DS_Store -------------------------------------------------------------------------------- /Fundamentos de la Web/1.- Intro/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Fundamentos de la Web/1.- Intro/.DS_Store -------------------------------------------------------------------------------- /Fundamentos de la Web/1.- Intro/img/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Fundamentos de la Web/1.- Intro/img/1.jpg -------------------------------------------------------------------------------- /Python/3.- Flask/registro_login/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/3.- Flask/registro_login/.DS_Store -------------------------------------------------------------------------------- /Python/4.- APIs/registro_login/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/4.- APIs/registro_login/.DS_Store -------------------------------------------------------------------------------- /Fundamentos de la Web/4.- Position/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Fundamentos de la Web/4.- Position/.DS_Store -------------------------------------------------------------------------------- /Fundamentos de la Web/5.- Javascript/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Fundamentos de la Web/5.- Javascript/.DS_Store -------------------------------------------------------------------------------- /Python/3.- Flask/crud_modularizado/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/3.- Flask/crud_modularizado/.DS_Store -------------------------------------------------------------------------------- /Python/3.- Flask/estudiantes_cursos/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/3.- Flask/estudiantes_cursos/.DS_Store -------------------------------------------------------------------------------- /Python/3.- Flask/eventos/flask_app/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/3.- Flask/eventos/flask_app/.DS_Store -------------------------------------------------------------------------------- /Python/3.- Flask/eventos/flask_app/bd/erd.mwb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/3.- Flask/eventos/flask_app/bd/erd.mwb -------------------------------------------------------------------------------- /Python/3.- Flask/foro_publicaciones/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/3.- Flask/foro_publicaciones/.DS_Store -------------------------------------------------------------------------------- /Python/3.- Flask/loteria_mexicana1/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/3.- Flask/loteria_mexicana1/.DS_Store -------------------------------------------------------------------------------- /Python/2.- OOP/__pycache__/Gato.cpython-312.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/2.- OOP/__pycache__/Gato.cpython-312.pyc -------------------------------------------------------------------------------- /Python/2.- OOP/__pycache__/Perro.cpython-312.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/2.- OOP/__pycache__/Perro.cpython-312.pyc -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ¡Hola chicas! Este repositorio va dedicado al Bootcamp Banco de Chile Python Mayo 2024. 2 | Aquí encontrarás todo el código que realizamos juntas en clase. -------------------------------------------------------------------------------- /Fundamentos de la Web/4.- Position/img/gatito.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Fundamentos de la Web/4.- Position/img/gatito.jpg -------------------------------------------------------------------------------- /Python/2.- OOP/__pycache__/Animal.cpython-312.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/2.- OOP/__pycache__/Animal.cpython-312.pyc -------------------------------------------------------------------------------- /Python/2.- OOP/__pycache__/Persona.cpython-312.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/2.- OOP/__pycache__/Persona.cpython-312.pyc -------------------------------------------------------------------------------- /Python/3.- Flask/eventos/flask_app/bd/erd.mwb.bak: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/3.- Flask/eventos/flask_app/bd/erd.mwb.bak -------------------------------------------------------------------------------- /Python/3.- Flask/intro/static/img/gatito_small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/3.- Flask/intro/static/img/gatito_small.jpg -------------------------------------------------------------------------------- /Python/3.- Flask/registro_login/flask_app/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/3.- Flask/registro_login/flask_app/.DS_Store -------------------------------------------------------------------------------- /Python/4.- APIs/registro_login/flask_app/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/4.- APIs/registro_login/flask_app/.DS_Store -------------------------------------------------------------------------------- /Python/4.- APIs/registro_login/flask_app/bd/erd.mwb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/4.- APIs/registro_login/flask_app/bd/erd.mwb -------------------------------------------------------------------------------- /Fundamentos de la Web/1.- Intro/img/gatito_small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Fundamentos de la Web/1.- Intro/img/gatito_small.jpg -------------------------------------------------------------------------------- /Python/3.- Flask/registro_login/flask_app/bd/erd.mwb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/3.- Flask/registro_login/flask_app/bd/erd.mwb -------------------------------------------------------------------------------- /Fundamentos de la Web/5.- Javascript/me-gusta/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Fundamentos de la Web/5.- Javascript/me-gusta/.DS_Store -------------------------------------------------------------------------------- /Python/3.- Flask/crud_modularizado/flask_app/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/3.- Flask/crud_modularizado/flask_app/.DS_Store -------------------------------------------------------------------------------- /Python/3.- Flask/crud_modularizado/flask_app/bd/erd.mwb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/3.- Flask/crud_modularizado/flask_app/bd/erd.mwb -------------------------------------------------------------------------------- /Python/3.- Flask/estudiantes_cursos/flask_app/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/3.- Flask/estudiantes_cursos/flask_app/.DS_Store -------------------------------------------------------------------------------- /Python/3.- Flask/estudiantes_cursos/flask_app/bd/erd.mwb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/3.- Flask/estudiantes_cursos/flask_app/bd/erd.mwb -------------------------------------------------------------------------------- /Python/3.- Flask/foro_publicaciones/flask_app/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/3.- Flask/foro_publicaciones/flask_app/.DS_Store -------------------------------------------------------------------------------- /Python/3.- Flask/foro_publicaciones/flask_app/bd/erd.mwb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/3.- Flask/foro_publicaciones/flask_app/bd/erd.mwb -------------------------------------------------------------------------------- /Fundamentos de la Web/5.- Javascript/me-gustav2/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Fundamentos de la Web/5.- Javascript/me-gustav2/.DS_Store -------------------------------------------------------------------------------- /MySQL/~$Ejemplos.xlsx: -------------------------------------------------------------------------------- 1 | Microsoft Office User Microsoft Office User -------------------------------------------------------------------------------- /Fundamentos de la Web/5.- Javascript/pagina-perfil/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Fundamentos de la Web/5.- Javascript/pagina-perfil/.DS_Store -------------------------------------------------------------------------------- /Fundamentos de la Web/5.- Javascript/tiempo-local/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Fundamentos de la Web/5.- Javascript/tiempo-local/.DS_Store -------------------------------------------------------------------------------- /Python/3.- Flask/foro_publicaciones/flask_app/bd/erd.mwb.bak: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/3.- Flask/foro_publicaciones/flask_app/bd/erd.mwb.bak -------------------------------------------------------------------------------- /Fundamentos de la Web/5.- Javascript/me-gusta/img/gatito_small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Fundamentos de la Web/5.- Javascript/me-gusta/img/gatito_small.jpg -------------------------------------------------------------------------------- /Fundamentos de la Web/5.- Javascript/pagina-perfil/images/gear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Fundamentos de la Web/5.- Javascript/pagina-perfil/images/gear.png -------------------------------------------------------------------------------- /Python/3.- Flask/crud_modularizado/flask_app/templates/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/3.- Flask/crud_modularizado/flask_app/templates/.DS_Store -------------------------------------------------------------------------------- /Fundamentos de la Web/5.- Javascript/me-gustav2/img/gatito_small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Fundamentos de la Web/5.- Javascript/me-gustav2/img/gatito_small.jpg -------------------------------------------------------------------------------- /Fundamentos de la Web/5.- Javascript/pagina-perfil/images/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Fundamentos de la Web/5.- Javascript/pagina-perfil/images/.DS_Store -------------------------------------------------------------------------------- /Fundamentos de la Web/5.- Javascript/pagina-perfil/images/anne-s.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Fundamentos de la Web/5.- Javascript/pagina-perfil/images/anne-s.jpg -------------------------------------------------------------------------------- /Fundamentos de la Web/5.- Javascript/pagina-perfil/images/arry-s.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Fundamentos de la Web/5.- Javascript/pagina-perfil/images/arry-s.jpg -------------------------------------------------------------------------------- /Fundamentos de la Web/5.- Javascript/pagina-perfil/images/jane-m.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Fundamentos de la Web/5.- Javascript/pagina-perfil/images/jane-m.jpg -------------------------------------------------------------------------------- /Fundamentos de la Web/5.- Javascript/pagina-perfil/images/phil-s.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Fundamentos de la Web/5.- Javascript/pagina-perfil/images/phil-s.jpg -------------------------------------------------------------------------------- /Fundamentos de la Web/5.- Javascript/pagina-perfil/images/todd-s.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Fundamentos de la Web/5.- Javascript/pagina-perfil/images/todd-s.jpg -------------------------------------------------------------------------------- /Fundamentos de la Web/5.- Javascript/tiempo-local/assets/cookie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Fundamentos de la Web/5.- Javascript/tiempo-local/assets/cookie.png -------------------------------------------------------------------------------- /Python/2.- OOP/usuarios_tarjetas/__pycache__/Usuario.cpython-312.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/2.- OOP/usuarios_tarjetas/__pycache__/Usuario.cpython-312.pyc -------------------------------------------------------------------------------- /Fundamentos de la Web/5.- Javascript/pagina-perfil/images/adrien-s.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Fundamentos de la Web/5.- Javascript/pagina-perfil/images/adrien-s.jpg -------------------------------------------------------------------------------- /Fundamentos de la Web/5.- Javascript/pagina-perfil/images/alayne-s.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Fundamentos de la Web/5.- Javascript/pagina-perfil/images/alayne-s.jpg -------------------------------------------------------------------------------- /Fundamentos de la Web/5.- Javascript/tiempo-local/assets/some_rain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Fundamentos de la Web/5.- Javascript/tiempo-local/assets/some_rain.png -------------------------------------------------------------------------------- /Fundamentos de la Web/5.- Javascript/tiempo-local/assets/some_sun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Fundamentos de la Web/5.- Javascript/tiempo-local/assets/some_sun.png -------------------------------------------------------------------------------- /Python/3.- Flask/eventos/flask_app/__pycache__/__init__.cpython-312.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/3.- Flask/eventos/flask_app/__pycache__/__init__.cpython-312.pyc -------------------------------------------------------------------------------- /Fundamentos de la Web/5.- Javascript/pagina-perfil/images/map-marker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Fundamentos de la Web/5.- Javascript/pagina-perfil/images/map-marker.png -------------------------------------------------------------------------------- /Fundamentos de la Web/5.- Javascript/tiempo-local/assets/some_clouds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Fundamentos de la Web/5.- Javascript/tiempo-local/assets/some_clouds.png -------------------------------------------------------------------------------- /Python/3.- Flask/eventos/flask_app/__init__.py: -------------------------------------------------------------------------------- 1 | from flask import Flask #importación de flask 2 | 3 | app = Flask(__name__) #Inicializamos la app 4 | 5 | app.secret_key = "Llave secreta ;)" #Necesaria para la sesión -------------------------------------------------------------------------------- /Fundamentos de la Web/5.- Javascript/pagina-perfil/images/accept-circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Fundamentos de la Web/5.- Javascript/pagina-perfil/images/accept-circle.png -------------------------------------------------------------------------------- /Fundamentos de la Web/5.- Javascript/pagina-perfil/images/close-circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Fundamentos de la Web/5.- Javascript/pagina-perfil/images/close-circle.png -------------------------------------------------------------------------------- /Python/3.- Flask/eventos/flask_app/models/__pycache__/event.cpython-312.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/3.- Flask/eventos/flask_app/models/__pycache__/event.cpython-312.pyc -------------------------------------------------------------------------------- /Python/3.- Flask/eventos/flask_app/models/__pycache__/user.cpython-312.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/3.- Flask/eventos/flask_app/models/__pycache__/user.cpython-312.pyc -------------------------------------------------------------------------------- /Python/3.- Flask/registro_login/flask_app/__init__.py: -------------------------------------------------------------------------------- 1 | from flask import Flask #importación de flask 2 | 3 | app = Flask(__name__) #Inicializamos la app 4 | 5 | app.secret_key = "Llave secreta ;)" #Necesaria para la sesión -------------------------------------------------------------------------------- /Python/4.- APIs/registro_login/flask_app/__init__.py: -------------------------------------------------------------------------------- 1 | from flask import Flask #importación de flask 2 | 3 | app = Flask(__name__) #Inicializamos la app 4 | 5 | app.secret_key = "Llave secreta ;)" #Necesaria para la sesión -------------------------------------------------------------------------------- /Pipfile: -------------------------------------------------------------------------------- 1 | [[source]] 2 | url = "https://pypi.org/simple" 3 | verify_ssl = true 4 | name = "pypi" 5 | 6 | [packages] 7 | flask-bcrypt = "*" 8 | 9 | [dev-packages] 10 | 11 | [requires] 12 | python_version = "3.12" 13 | -------------------------------------------------------------------------------- /Python/3.- Flask/estudiantes_cursos/flask_app/__init__.py: -------------------------------------------------------------------------------- 1 | #Importar flask 2 | from flask import Flask 3 | 4 | #Inicializar la app 5 | app = Flask(__name__) 6 | 7 | #Declarar la llave secreta 8 | app.secret_key = "Llave secreta" -------------------------------------------------------------------------------- /Python/3.- Flask/foro_publicaciones/flask_app/__init__.py: -------------------------------------------------------------------------------- 1 | from flask import Flask #importación de flask 2 | 3 | app = Flask(__name__) #Inicializamos la app 4 | 5 | app.secret_key = "Llave secreta ;)" #Necesaria para la sesión -------------------------------------------------------------------------------- /Python/3.- Flask/crud_modularizado/flask_app/__init__.py: -------------------------------------------------------------------------------- 1 | #Importar flask 2 | from flask import Flask 3 | 4 | #Inicializar la app 5 | app = Flask(__name__) 6 | 7 | #Declarar la llave secreta 8 | app.secret_key = "llave secretisima" -------------------------------------------------------------------------------- /Python/2.- OOP/usuarios_tarjetas/__pycache__/tarjetadeCreditoTarea.cpython-312.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/2.- OOP/usuarios_tarjetas/__pycache__/tarjetadeCreditoTarea.cpython-312.pyc -------------------------------------------------------------------------------- /Python/2.- OOP/usuarios_tarjetas/mainUsuario.py: -------------------------------------------------------------------------------- 1 | from Usuario import Usuario 2 | 3 | elena = Usuario("Elena", "De Troya", "elena@codingdojo.com") 4 | 5 | elena.hacer_compra(500).hacer_compra(200).pagar_tarjeta(100).mostrar_saldo_usuario() -------------------------------------------------------------------------------- /Python/3.- Flask/estudiantes_cursos/flask_app/__pycache__/__init__.cpython-312.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/3.- Flask/estudiantes_cursos/flask_app/__pycache__/__init__.cpython-312.pyc -------------------------------------------------------------------------------- /Python/3.- Flask/estudiantes_cursos/flask_app/models/__pycache__/curso.cpython-312.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/3.- Flask/estudiantes_cursos/flask_app/models/__pycache__/curso.cpython-312.pyc -------------------------------------------------------------------------------- /Python/3.- Flask/eventos/flask_app/config/__pycache__/mysqlconnection.cpython-312.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/3.- Flask/eventos/flask_app/config/__pycache__/mysqlconnection.cpython-312.pyc -------------------------------------------------------------------------------- /Python/3.- Flask/intro/Pipfile: -------------------------------------------------------------------------------- 1 | [[source]] 2 | url = "https://pypi.org/simple" 3 | verify_ssl = true 4 | name = "pypi" 5 | 6 | [packages] 7 | flask = "*" 8 | 9 | [dev-packages] 10 | 11 | [requires] 12 | python_version = "3.12" 13 | -------------------------------------------------------------------------------- /Python/3.- Flask/formularios/Pipfile: -------------------------------------------------------------------------------- 1 | [[source]] 2 | url = "https://pypi.org/simple" 3 | verify_ssl = true 4 | name = "pypi" 5 | 6 | [packages] 7 | flask = "*" 8 | 9 | [dev-packages] 10 | 11 | [requires] 12 | python_version = "3.12" 13 | -------------------------------------------------------------------------------- /Python/3.- Flask/visitas/Pipfile: -------------------------------------------------------------------------------- 1 | [[source]] 2 | url = "https://pypi.org/simple" 3 | verify_ssl = true 4 | name = "pypi" 5 | 6 | [packages] 7 | flask = "*" 8 | 9 | [dev-packages] 10 | 11 | [requires] 12 | python_version = "3.12" 13 | -------------------------------------------------------------------------------- /Python/3.- Flask/estudiantes_cursos/flask_app/models/__pycache__/estudiante.cpython-312.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/3.- Flask/estudiantes_cursos/flask_app/models/__pycache__/estudiante.cpython-312.pyc -------------------------------------------------------------------------------- /Python/3.- Flask/eventos/flask_app/controllers/__pycache__/users_controller.cpython-312.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/3.- Flask/eventos/flask_app/controllers/__pycache__/users_controller.cpython-312.pyc -------------------------------------------------------------------------------- /Python/3.- Flask/tabla_paises/Pipfile: -------------------------------------------------------------------------------- 1 | [[source]] 2 | url = "https://pypi.org/simple" 3 | verify_ssl = true 4 | name = "pypi" 5 | 6 | [packages] 7 | flask = "*" 8 | 9 | [dev-packages] 10 | 11 | [requires] 12 | python_version = "3.12" 13 | -------------------------------------------------------------------------------- /Python/3.- Flask/eventos/flask_app/controllers/__pycache__/events_controller.cpython-312.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/3.- Flask/eventos/flask_app/controllers/__pycache__/events_controller.cpython-312.pyc -------------------------------------------------------------------------------- /Python/3.- Flask/crud/Pipfile: -------------------------------------------------------------------------------- 1 | [[source]] 2 | url = "https://pypi.org/simple" 3 | verify_ssl = true 4 | name = "pypi" 5 | 6 | [packages] 7 | flask = "*" 8 | pymysql = "*" 9 | 10 | [dev-packages] 11 | 12 | [requires] 13 | python_version = "3.12" 14 | -------------------------------------------------------------------------------- /Python/3.- Flask/estudiantes_cursos/flask_app/config/__pycache__/mysqlconnection.cpython-312.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/3.- Flask/estudiantes_cursos/flask_app/config/__pycache__/mysqlconnection.cpython-312.pyc -------------------------------------------------------------------------------- /Python/3.- Flask/crud_modularizado/Pipfile: -------------------------------------------------------------------------------- 1 | [[source]] 2 | url = "https://pypi.org/simple" 3 | verify_ssl = true 4 | name = "pypi" 5 | 6 | [packages] 7 | flask = "*" 8 | pymysql = "*" 9 | 10 | [dev-packages] 11 | 12 | [requires] 13 | python_version = "3.12" 14 | -------------------------------------------------------------------------------- /Python/3.- Flask/estudiantes_cursos/flask_app/controllers/__pycache__/curso_controller.cpython-312.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/3.- Flask/estudiantes_cursos/flask_app/controllers/__pycache__/curso_controller.cpython-312.pyc -------------------------------------------------------------------------------- /Python/3.- Flask/loteria_mexicana1/Pipfile: -------------------------------------------------------------------------------- 1 | [[source]] 2 | url = "https://pypi.org/simple" 3 | verify_ssl = true 4 | name = "pypi" 5 | 6 | [packages] 7 | flask = "*" 8 | colorama = "*" 9 | 10 | [dev-packages] 11 | 12 | [requires] 13 | python_version = "3.12" 14 | -------------------------------------------------------------------------------- /Python/3.- Flask/estudiantes_cursos/flask_app/controllers/__pycache__/estudiante_controller.cpython-312.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cindychateau/PythonBancodeChile2024/HEAD/Python/3.- Flask/estudiantes_cursos/flask_app/controllers/__pycache__/estudiante_controller.cpython-312.pyc -------------------------------------------------------------------------------- /Python/3.- Flask/eventos/Pipfile: -------------------------------------------------------------------------------- 1 | [[source]] 2 | url = "https://pypi.org/simple" 3 | verify_ssl = true 4 | name = "pypi" 5 | 6 | [packages] 7 | flask = "*" 8 | pymysql = "*" 9 | flask-bcrypt = "*" 10 | 11 | [dev-packages] 12 | 13 | [requires] 14 | python_version = "3.12" 15 | -------------------------------------------------------------------------------- /Python/3.- Flask/estudiantes_cursos/server.py: -------------------------------------------------------------------------------- 1 | #Importación de app 2 | from flask_app import app 3 | 4 | #Importación Controladores 5 | from flask_app.controllers import curso_controller, estudiante_controller 6 | 7 | #Ejecución de app 8 | if __name__=="__main__": 9 | app.run(debug=True) -------------------------------------------------------------------------------- /Python/4.- APIs/registro_login/Pipfile: -------------------------------------------------------------------------------- 1 | [[source]] 2 | url = "https://pypi.org/simple" 3 | verify_ssl = true 4 | name = "pypi" 5 | 6 | [packages] 7 | flask = "*" 8 | pymysql = "*" 9 | flask-bcrypt = "*" 10 | 11 | [dev-packages] 12 | 13 | [requires] 14 | python_version = "3.12" 15 | -------------------------------------------------------------------------------- /Python/3.- Flask/estudiantes_cursos/Pipfile: -------------------------------------------------------------------------------- 1 | [[source]] 2 | url = "https://pypi.org/simple" 3 | verify_ssl = true 4 | name = "pypi" 5 | 6 | [packages] 7 | flask = "*" 8 | pymysql = "*" 9 | colorama = "*" 10 | 11 | [dev-packages] 12 | 13 | [requires] 14 | python_version = "3.12" 15 | -------------------------------------------------------------------------------- /Python/3.- Flask/foro_publicaciones/Pipfile: -------------------------------------------------------------------------------- 1 | [[source]] 2 | url = "https://pypi.org/simple" 3 | verify_ssl = true 4 | name = "pypi" 5 | 6 | [packages] 7 | flask = "*" 8 | pymysql = "*" 9 | flask-bcrypt = "*" 10 | 11 | [dev-packages] 12 | 13 | [requires] 14 | python_version = "3.12" 15 | -------------------------------------------------------------------------------- /Python/3.- Flask/registro_login/Pipfile: -------------------------------------------------------------------------------- 1 | [[source]] 2 | url = "https://pypi.org/simple" 3 | verify_ssl = true 4 | name = "pypi" 5 | 6 | [packages] 7 | flask = "*" 8 | pymysql = "*" 9 | flask-bcrypt = "*" 10 | 11 | [dev-packages] 12 | 13 | [requires] 14 | python_version = "3.12" 15 | -------------------------------------------------------------------------------- /Fundamentos de la Web/2.- Comandos/git.txt: -------------------------------------------------------------------------------- 1 | 1) git init - Inicializa una carpeta como un repositorio localmente 2 | 2) git add NombreArchivo git add . 3 | 3) git commit -m "Mensaje para el commit" 4 | 4) git remote add origin url-del-github 5 | 5) git push -u origin master | git push -u origin main 6 | 7 | Para actualizar se repiten: 8 | 2, 3, 5 -------------------------------------------------------------------------------- /Python/4.- APIs/registro_login/server.py: -------------------------------------------------------------------------------- 1 | #Terminal: pipenv install flask pymysql flask-bcrypt 2 | 3 | #Importar la app 4 | from flask_app import app 5 | 6 | #Importar controladores (puede ser más de uno) 7 | from flask_app.controllers import users_controller 8 | 9 | #Ejecución app 10 | if __name__ == "__main__": 11 | app.run(debug=True) -------------------------------------------------------------------------------- /Python/3.- Flask/registro_login/server.py: -------------------------------------------------------------------------------- 1 | #Terminal: pipenv install flask pymysql flask-bcrypt 2 | 3 | #Importar la app 4 | from flask_app import app 5 | 6 | #Importar controladores (puede ser más de uno) 7 | from flask_app.controllers import users_controller 8 | 9 | #Ejecución app 10 | if __name__ == "__main__": 11 | app.run(debug=True) -------------------------------------------------------------------------------- /Python/3.- Flask/eventos/server.py: -------------------------------------------------------------------------------- 1 | #Terminal: pipenv install flask pymysql flask-bcrypt 2 | 3 | #Importar la app 4 | from flask_app import app 5 | 6 | #Importar controladores (puede ser más de uno) 7 | from flask_app.controllers import users_controller, events_controller 8 | 9 | #Ejecución app 10 | if __name__ == "__main__": 11 | app.run(debug=True, port=5001) -------------------------------------------------------------------------------- /Python/3.- Flask/foro_publicaciones/server.py: -------------------------------------------------------------------------------- 1 | #Terminal: pipenv install flask pymysql flask-bcrypt 2 | 3 | #Importar la app 4 | from flask_app import app 5 | 6 | #Importar controladores (puede ser más de uno) 7 | from flask_app.controllers import users_controller, posts_controller 8 | 9 | #Ejecución app 10 | if __name__ == "__main__": 11 | app.run(debug=True) -------------------------------------------------------------------------------- /Python/2.- OOP/Perro.py: -------------------------------------------------------------------------------- 1 | from Animal import Animal 2 | 3 | class Perro(Animal): 4 | 5 | def __init__(self, nombre, sonido, raza): 6 | super().__init__(nombre, sonido) 7 | self.raza = raza 8 | 9 | def perseguir_autos(self): 10 | print(f"{self.nombre} está persiguiendo un auto!") 11 | 12 | def ir_al_bano(self): 13 | print("Sale a pasear, va al baño y su dueño recoge todo con una bolsita") -------------------------------------------------------------------------------- /Fundamentos de la Web/5.- Javascript/me-gusta/js/script.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | function like(tag) { 4 | //output = 0 5 | let output = document.querySelector(`#${tag}`); 6 | let contador=parseInt(output.textContent); 7 | contador+=1; 8 | //.innerText -> texto 9 | //.textContent -> texto 10 | //.innerHTML -> acepta etiquetas 11 | output.textContent = contador; 12 | 13 | 14 | alert("Hola"); 15 | } -------------------------------------------------------------------------------- /Python/4.- APIs/dogapi/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Dog API 7 | 8 | 9 |
10 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Fundamentos de la Web/5.- Javascript/adivina-numero/script.js: -------------------------------------------------------------------------------- 1 | //Generar un número aleatorio 2 | var numeroAleatorio = Math.random(); // 0 - 1 ¿Cómo hacerlo entre 0-100? 3 | 4 | /* 5 | var input = document.querySelector('#numero'); 6 | input.value; 7 | */ 8 | /* 9 | Comparar el numero aleatorio con el número ingresado y colocar un mensaje en la class resultado. 10 | NO es -> rojo 11 | SI es -> verde 12 | 13 | parseInt() -> texto en número entero 14 | */ 15 | function adivina() { 16 | 17 | } -------------------------------------------------------------------------------- /Fundamentos de la Web/5.- Javascript/adivina-numero/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Adivina el Número 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | -------------------------------------------------------------------------------- /Python/3.- Flask/loteria_mexicana1/static/style.css: -------------------------------------------------------------------------------- 1 | * { 2 | padding: 0; 3 | border:0; 4 | margin:0; 5 | } 6 | 7 | h1 { 8 | text-align: center; 9 | } 10 | 11 | table { 12 | display: flex; 13 | justify-content: center; 14 | } 15 | 16 | td { 17 | width: 80px; 18 | height: 120px; 19 | border: 1px solid; 20 | } 21 | 22 | .rosa { 23 | background-color: #fcc7e6; 24 | } 25 | 26 | .azul { 27 | background-color: #2b84f7; 28 | } 29 | 30 | .amarillo { 31 | background-color: #fdff00; 32 | } 33 | 34 | 35 | -------------------------------------------------------------------------------- /Fundamentos de la Web/2.- Comandos/terminal.txt: -------------------------------------------------------------------------------- 1 | cd -> Nos permite navegar. (.. nos permite ir a una carpeta arriba/padre) 2 | ls -> Nos dice qué archivos y carpetas se encuentran en mi locación actual 3 | ls -l -> COMPLETA 4 | pwd -> Nos dice en dónde estamos 5 | mkdir -> Creamos una nueva carpeta/directorio 6 | touch -> Nos permite crear un archivo 7 | mv -> Movemos un archivo de lugar 8 | chmod -> Permisos (777) 9 | rm -> Eliminar archivo o carpeta (vacío) 10 | rm -rf -> Eliminar archivo o carpeta (no vacío) 11 | rmdir -> Eliminar carpeta -------------------------------------------------------------------------------- /Python/3.- Flask/intro/templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Bienvenidas 7 | 8 | 9 | 10 |
11 |

¡Bienvenidas!

12 |
13 | 14 | -------------------------------------------------------------------------------- /Python/3.- Flask/crud_modularizado/server.py: -------------------------------------------------------------------------------- 1 | #python3 o python -m pipenv install flask pymysql 2 | #pipenv install flask pymysql ->Instalar y generar los Pipfiles (OJO solo es necesaria 1 vez) 3 | #pipenv shell -> Activa entorno virtual 4 | #python3 server.py -> Ejecuta mi app 5 | 6 | #Ctrl + C -> Detener app 7 | #exit -> Salir del entorno virtual 8 | 9 | #Importación de flask_app 10 | from flask_app import app 11 | 12 | #Importación controladores 13 | from flask_app.controllers import usuarios_controller 14 | 15 | #Ejecución de la app 16 | if __name__ == "__main__": 17 | app.run(debug=True) -------------------------------------------------------------------------------- /Python/3.- Flask/estudiantes_cursos/flask_app/controllers/estudiante_controller.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, render_template, redirect, request 2 | 3 | from flask_app import app 4 | 5 | from flask_app.models.estudiante import Estudiante 6 | from flask_app.models.curso import Curso 7 | 8 | @app.route("/estudiante") 9 | def estudiante(): 10 | lista_cursos = Curso.todos_cursos() 11 | return render_template("estudiante.html", cursos = lista_cursos) 12 | 13 | @app.route("/crear/estudiante", methods=["POST"]) 14 | def crear_estudiante(): 15 | Estudiante.guardar(request.form) 16 | return redirect("/cursos") -------------------------------------------------------------------------------- /Fundamentos de la Web/4.- Position/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Práctica de Posiciones 7 | 8 | 9 | 10 |
11 |
12 | Elemento 13 |
14 |
15 | Elemento Principal 16 |
17 |
18 | Elemento 19 |
20 |
21 | 22 | -------------------------------------------------------------------------------- /Python/2.- OOP/Animal.py: -------------------------------------------------------------------------------- 1 | class Animal: 2 | 3 | #name="Michi", sound = "purrr" 4 | #michi.nombre = "Michi" 5 | #michi.sonido = "purrr" 6 | def __init__(self, name, sound): 7 | self.nombre = name 8 | self.sonido = sound 9 | self.vacunas = False #Valor por defecto 10 | 11 | def hacer_sonido(self): 12 | print(f"El animalito {self.nombre} dice: {self.sonido}") 13 | 14 | def ponerle_vacuna(self): 15 | print(f"Vacunaste a {self.nombre}") 16 | self.vacunas = True 17 | 18 | #Método "en blanco" que debe implementarse en las clases hijas 19 | def ir_al_bano(self): 20 | raise NotImplementedError -------------------------------------------------------------------------------- /Python/2.- OOP/usuarios_tarjetas/Usuario.py: -------------------------------------------------------------------------------- 1 | from tarjetadeCreditoTarea import TarjetaCredito 2 | class Usuario: 3 | 4 | def __init__(self, nombre, apellido, email): 5 | self.nombre = nombre 6 | self.apellido = apellido 7 | self.email = email 8 | self.tarjeta = TarjetaCredito(0, 30000, .02) 9 | 10 | def hacer_compra(self, monto): 11 | self.tarjeta.compra(monto) 12 | return self 13 | 14 | def pagar_tarjeta(self, monto): 15 | self.tarjeta.pago(monto) 16 | return self #Encadenacion de métodos 17 | 18 | def mostrar_saldo_usuario(self): 19 | print(f"Usuario:{self.nombre} {self.apellido}") 20 | self.tarjeta.mostrar_info_tarjeta() 21 | -------------------------------------------------------------------------------- /Python/3.- Flask/registro_login/flask_app/templates/dashboard.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Dashboard 7 | 8 | 9 | 10 |
11 |
12 |

Welcolme {{user.first_name}} {{user.last_name}}

13 | Log out 14 |
15 |
16 | 17 | -------------------------------------------------------------------------------- /Python/4.- APIs/registro_login/flask_app/templates/dashboard.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Dashboard 7 | 8 | 9 | 10 |
11 |
12 |

Welcolme {{user.first_name}} {{user.last_name}}

13 | Log out 14 |
15 |
16 | 17 | -------------------------------------------------------------------------------- /Python/3.- Flask/formularios/templates/exito.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Éxito 7 | 10 | 11 | 12 |
13 |

¡Gracias por tu registro!

14 |

Bienvenid@ {{session["usuario"]}}

15 | 16 | Cerrar Sesión 17 | 18 |
19 | 20 | -------------------------------------------------------------------------------- /MySQL/Queries/funciones.sql: -------------------------------------------------------------------------------- 1 | SELECT UPPER(nombre) as nombre_mayus FROM usuarios; 2 | 3 | SELECT LOWER(nombre) as nombre_min FROM usuarios; 4 | 5 | SELECT * FROM pedidos ORDER BY usuario_id; 6 | 7 | SELECT SUM(total) FROM pedidos; -- Suma de la columna total 8 | 9 | SELECT AVG(total) FROM pedidos; -- Promedio de la columna total 10 | 11 | SELECT COUNT(total) FROM pedidos; -- Contando el total de registros 12 | 13 | SELECT SUM(total), usuario_id 14 | FROM pedidos 15 | GROUP BY usuario_id; 16 | 17 | SELECT AVG(total), usuario_id, nombre 18 | FROM pedidos 19 | JOIN usuarios ON pedidos.usuario_id = usuarios.id 20 | GROUP BY usuario_id; 21 | 22 | SELECT COUNT(*), usuario_id, nombre 23 | FROM pedidos 24 | JOIN usuarios ON pedidos.usuario_id = usuarios.id 25 | GROUP BY usuario_id; -------------------------------------------------------------------------------- /Fundamentos de la Web/3.- Flex/bloques.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Posición de práctica FLEX 7 | 8 | 9 | 10 |
11 |
12 |
13 |
14 |
15 |
16 | 17 |
18 |
19 |
20 | 21 | -------------------------------------------------------------------------------- /Fundamentos de la Web/3.- Flex/css/bloques.css: -------------------------------------------------------------------------------- 1 | .container { 2 | width: 950px; 3 | background-color: #eaeaea; 4 | margin: 0 auto; 5 | padding: 20px; 6 | } 7 | 8 | .top-nav { 9 | height: 150px; 10 | background-color: #ffcc00; 11 | margin-bottom: 10px; 12 | flex: 0 0 100%; 13 | } 14 | 15 | .side-nav { 16 | height: 380px; 17 | width: 210px; 18 | background-color: #66ccff; 19 | margin: 10px; 20 | } 21 | 22 | .main { 23 | height: 400px; 24 | width: 700px; 25 | background-color: deeppink; 26 | } 27 | 28 | .sub-content { 29 | height: 200px; 30 | width: 210px; 31 | background-color: mediumblue; 32 | margin: 10px; 33 | } 34 | 35 | #advertisement { 36 | height: 120px; 37 | width: 660px; 38 | background-color: #33cc33; 39 | } -------------------------------------------------------------------------------- /Python/2.- OOP/Gato.py: -------------------------------------------------------------------------------- 1 | #from Archivo import Clase 2 | from Animal import Animal 3 | 4 | #class Hijo(Padre): 5 | class Gato(Animal): 6 | 7 | #michi = Gato("Michi", "purrrr", "corto") 8 | #nombre = "Michi", sonido="purrr", tipo_pelaje="corto" 9 | #Animal("Michi", "purrr") 10 | def __init__(self, nombre, sonido, tipo_pelaje): 11 | super().__init__(nombre, sonido) 12 | self.tipo_pelaje = tipo_pelaje 13 | 14 | #rascarSofa 15 | def rascar_sofa(self): 16 | print(f"{self.nombre} está rascando el sofá de su casa") 17 | 18 | #Sobreescritura/Anulación 19 | def hacer_sonido(self): 20 | print(f"El gato te ve un momento, se aleja de ti y dice: {self.sonido}") 21 | 22 | def ir_al_bano(self): 23 | print("Va a su caja, razca la arena y va al baño") -------------------------------------------------------------------------------- /Python/3.- Flask/visitas/server.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, render_template, request, redirect, session 2 | 3 | app = Flask(__name__) #Creando Instancia 4 | 5 | app.secret_key = "llave secreta!" 6 | 7 | @app.route("/") 8 | def index(): 9 | #la primera vez que entro 10 | if "contador" not in session: 11 | #No existe en sesión contador 12 | session["contador"] = 0 13 | else: 14 | #SI existe 15 | session["contador"] += 1 16 | 17 | return render_template("index.html") 18 | 19 | @app.route("/destruir_sesion") 20 | def destruir_sesion(): 21 | session.clear() 22 | return redirect("/") 23 | 24 | @app.route("/visitar_2") 25 | def visitar_2(): 26 | session["contador"] += 1 27 | return redirect("/") 28 | 29 | if __name__ == "__main__": 30 | app.run(debug=True) -------------------------------------------------------------------------------- /Python/3.- Flask/foro_publicaciones/flask_app/controllers/posts_controller.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, render_template, redirect, request, session, flash 2 | from flask_app import app 3 | 4 | #Modelos que vamos a utilizar 5 | from flask_app.models.post import Post 6 | 7 | @app.route("/create_post", methods=["POST"]) 8 | def create_post(): 9 | #request.form = {"content": "contenido publ", "user_id": 1} 10 | if not Post.validate_post(request.form): 11 | return redirect("/dashboard") 12 | 13 | Post.save(request.form) 14 | return redirect("/dashboard") 15 | 16 | @app.route("/delete_post/") 17 | def delete_post(id): 18 | #Método que borrar un registro en base a su ID 19 | dicc = {"id": id} 20 | Post.delete(dicc) 21 | 22 | #Post.delete(id) 23 | return redirect("/dashboard") -------------------------------------------------------------------------------- /Python/3.- Flask/tabla_paises/server.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, render_template, request, redirect 2 | 3 | app = Flask(__name__) 4 | 5 | @app.route("/") 6 | def index(): #(recibiendo de la url) 7 | paises = [ 8 | 9 | {'pais': 'Argentina' , 'capital': 'Buenos Aires'}, 10 | 11 | {'pais': 'Brasil' , 'capital': 'Brasilia'}, 12 | 13 | {'pais': 'Chile' , 'capital': 'Santiago de Chile'}, 14 | 15 | {'pais': 'Colombia' , 'capital': 'Bogotá'}, 16 | 17 | {'pais': 'Costa Rica' , 'capital': 'San José'}, 18 | 19 | {'pais': 'Paraguay' , 'capital': 'Asunción'}, 20 | 21 | {'pais': 'Perú' , 'capital': 'Lima'} 22 | 23 | ] 24 | return render_template("index.html", lista_paises = paises) 25 | 26 | 27 | 28 | if __name__ == "__main__": 29 | app.run(debug=True) 30 | -------------------------------------------------------------------------------- /Fundamentos de la Web/5.- Javascript/me-gustav2/js/script.js: -------------------------------------------------------------------------------- 1 | var contador1 = 9; 2 | var contador2 = 12; 3 | var contador3 = 9; 4 | 5 | function like_1() { 6 | contador1++; 7 | var cantidad = document.querySelector('#cantidad1'); 8 | cantidad.innerText = contador1; 9 | } 10 | 11 | function like_2() { 12 | contador2++; 13 | var cantidad = document.querySelector('#cantidad2'); 14 | cantidad.innerText = contador2; 15 | } 16 | 17 | function like_3(){ 18 | contador3++; 19 | var cantidad = document.querySelector('#cantidad3'); 20 | cantidad.innerText = contador3; 21 | } 22 | 23 | function like(num) { 24 | var cantidad = document.querySelector('#cantidad'+num); 25 | var nueva_cantidad = parseInt(cantidad.innerText); //"9" Convierto en entero 26 | nueva_cantidad++; 27 | cantidad.innerText = nueva_cantidad; 28 | } -------------------------------------------------------------------------------- /Fundamentos de la Web/5.- Javascript/me-gusta/megusta1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Me gusta 1 7 | 8 | 9 | 10 |
11 |
12 |

Elena de Troya

13 |

14 | 15 | 0 like(s) 16 | 17 |

18 |
19 |

20 | Lorem ipsum dolor, sit amet consectetur adipisicing elit. Debitis, expedita. 21 |

22 |
23 | 24 | 25 | -------------------------------------------------------------------------------- /MySQL/Queries/paises.sql: -------------------------------------------------------------------------------- 1 | -- ¿Qué consulta ejecutarías para obtener todos los países que hablan español? 2 | -- Tu consulta debe devolver el nombre del país, el idioma y el porcentaje de habla del idioma. 3 | -- Tu consulta debe ordenar el resultado por porcentaje de habla del idioma en orden descendente. 4 | SELECT nombre, idioma, porcentage FROM paises 5 | JOIN idiomas ON paises.id = idiomas.pais_id 6 | WHERE idioma = "Español" 7 | ORDER BY porcentage DESC; 8 | 9 | -- ¿Qué consulta ejecutarías para mostrar el número total de ciudades de cada país? 10 | -- Tu consulta debe devolver el nombre del país y el número total de ciudades. 11 | -- Tu consulta debe ordenar el resultado por el número de ciudades en orden descendente. 12 | SELECT paises.nombre, COUNT(*) as total_ciudades FROM paises 13 | JOIN ciudades ON ciudades.pais_id = paises.id 14 | GROUP BY pais_id; 15 | -------------------------------------------------------------------------------- /Python/3.- Flask/visitas/templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Visitas 7 | 10 | 11 | 12 |
13 |

14 | Has visitado este sitio: {{session["contador"]}} 15 |

16 | 17 | Visitar +2 18 | 19 | 20 | Reiniciar Visitas 21 | 22 |
23 | 24 | -------------------------------------------------------------------------------- /MySQL/Queries/insert_delete_update.sql: -------------------------------------------------------------------------------- 1 | SELECT * FROM usuarios; 2 | 3 | -- Guardar un nuevo registro en la tabla de usuarios 4 | -- INSERT INTO tabla (columna1, columnas2) VALUES ("Valor1", "valor2"); 5 | INSERT INTO usuarios (nombre, edad, direccion_id) VALUES ("Juana", 18, 2); -- no me da un resultado 6 | 7 | -- Borrar un registro 8 | DELETE FROM usuarios WHERE id = 8; 9 | 10 | -- Actualizamos un registro 11 | -- UPDATE tabla SET columna1 = "valor1", columna2 = "valor2" WHERE id = x 12 | UPDATE usuarios SET edad = 19 WHERE id = 10; 13 | UPDATE usuarios SET edad = 20, nombre = "Juanita" WHERE id = 10; 14 | 15 | -- Mas de un registro en un solo insert 16 | INSERT INTO usuarios (nombre, edad, direccion_id) VALUES 17 | ("Pablo", 55, 2), 18 | ("Mare", 21, 3), 19 | ("Pastora", 22, 4); 20 | 21 | INSERT INTO cursos (nombre) VALUES 22 | ("Python"), 23 | ("Java"), 24 | ("Fundamentos de la Web"); -------------------------------------------------------------------------------- /Python/3.- Flask/estudiantes_cursos/flask_app/controllers/curso_controller.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, render_template, redirect, request 2 | 3 | #Importo app 4 | from flask_app import app 5 | 6 | #Importo modelos 7 | from flask_app.models.curso import Curso 8 | 9 | @app.route("/") 10 | def index(): 11 | return redirect("/cursos") 12 | 13 | @app.route("/cursos") 14 | def cursos(): 15 | lista_cursos = Curso.todos_cursos() 16 | return render_template("cursos.html", cursos = lista_cursos) 17 | 18 | 19 | @app.route("/crear/curso", methods=['POST']) 20 | def crear_curso(): 21 | Curso.guardar(request.form) 22 | return redirect("/cursos") 23 | 24 | @app.route("/curso/") 25 | def estudiantes_del_curso(id): 26 | data={"id": id} 27 | curso_seleccionado = Curso.curso_con_estudiantes(data) 28 | return render_template("curso_con_estudiantes.html", curso_seleccionado = curso_seleccionado) 29 | -------------------------------------------------------------------------------- /Python/3.- Flask/estudiantes_cursos/flask_app/models/estudiante.py: -------------------------------------------------------------------------------- 1 | from flask_app.config.mysqlconnection import connectToMySQL 2 | 3 | class Estudiante: 4 | 5 | def __init__(self, data): 6 | #data es el diccionario con toda la info del estudiante 7 | self.id = data["id"] 8 | self.nombre = data["nombre"] 9 | self.apellido = data["apellido"] 10 | self.edad = data["edad"] 11 | self.created_at = data["created_at"] 12 | self.updated_at = data["updated_at"] 13 | self.curso_id = data["curso_id"] 14 | 15 | @classmethod 16 | def guardar(cls, formulario): 17 | #formulario = {"nombre": "Elena", "apellido": "De Troya", "edad": 15, "curso_id": 1} 18 | query = "INSERT INTO estudiantes (nombre, apellido, edad, curso_id) VALUES (%(nombre)s, %(apellido)s, %(edad)s, %(curso_id)s) " 19 | return connectToMySQL("esquema_estudiantes_cursos").query_db(query, formulario) 20 | 21 | -------------------------------------------------------------------------------- /Python/3.- Flask/loteria_mexicana1/templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Loteria 7 | 8 | 9 | 10 |

Lotería Mexicana

11 | 12 | {% for x in range(filas) %} 13 | 14 | {% for y in range(columnas) %} 15 | {% if (x+y)%3 == 0 %} 16 | 17 | {% elif (x+y)%3 == 1 %} 18 | 19 | {% else %} 20 | 21 | {% endif %} 22 | {% endfor %} 23 | 24 | {% endfor %} 25 |
{{cartas[(columnas*x)+y]}}{{cartas[(columnas*x)+y]}}{{cartas[(columnas*x)+y]}}
26 | 27 | -------------------------------------------------------------------------------- /Python/3.- Flask/loteria_mexicana1/templates/loteria4xn.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Loteria 8 | 9 | 10 | 11 | 12 |

Lotería Mexicana

13 | 14 | {% set color_index = namespace(value=0) %} 15 | 16 | {% for x in range(4*filas): %} 17 | {% if x%4 == 0 %} 18 | 19 | 20 | {% endif %} 21 | 22 | {% set color_index.value = color_index.value+1 %} 23 | {% if color_index.value>2 %} 24 | {% set color_index.value = 0 %} 25 | {% endif %} 26 | {% endfor %} 27 | 28 |
{{colores[color_index.value]}}
29 | 30 | 31 | -------------------------------------------------------------------------------- /Python/2.- OOP/usuarios_tarjetas/mainTarjetaCreditoTarea.py: -------------------------------------------------------------------------------- 1 | from tarjetadeCreditoTarea import TarjetaCredito 2 | 3 | 4 | tarjetaVisa = TarjetaCredito(0,3000,0.02) 5 | tarjetaMaestro = TarjetaCredito(0,3000,0.02) 6 | tarjetaPlatinum = TarjetaCredito(0,5000,0.02) 7 | 8 | #----- Acciones Tarjeta 1------ 9 | print("INICIO TARJETA VISA") 10 | tarjetaVisa.compra(400),tarjetaVisa.compra(200),tarjetaVisa.pago(100),tarjetaVisa.cobrar_interes(),tarjetaVisa.mostrar_info_tarjeta() 11 | 12 | #----- Acciones Tarjeta 2------ 13 | print("INICIO TARJETA MAESTRO") 14 | tarjetaMaestro.compra(1000),tarjetaMaestro.compra(200),tarjetaMaestro.compra(200),tarjetaMaestro.pago(500),tarjetaMaestro.pago(500),tarjetaMaestro.cobrar_interes(),tarjetaMaestro.mostrar_info_tarjeta() 15 | 16 | #----- Acciones Tarjeta 3------ 17 | print("INICIO TARJETA PLATINUM") 18 | tarjetaPlatinum.compra(1000),tarjetaPlatinum.compra(500),tarjetaPlatinum.compra(500),tarjetaPlatinum.compra(1000),tarjetaPlatinum.compra(6500),tarjetaPlatinum.mostrar_info_tarjeta() 19 | 20 | 21 | -------------------------------------------------------------------------------- /Python/4.- APIs/registro_login/flask_app/static/index.js: -------------------------------------------------------------------------------- 1 | let form_login = document.querySelector("#form-login"); 2 | form_login.onsubmit = function(event) { 3 | //event = evento que estoy escuchando por defecto. 4 | event.preventDefault(); //Prevenimos comportamiento por default 5 | 6 | //Obteniendo todos los datos del formulario 7 | let formulario = new FormData(form_login); 8 | /* 9 | formulario = { 10 | "email": "elena@cd.com", 11 | "password": "1234" 12 | } 13 | */ 14 | 15 | fetch("/login", {method: "POST", body: formulario}) 16 | .then(response => response.json()) 17 | .then(data => { 18 | if(data.message == "success") { 19 | window.location.href = "/dashboard"; 20 | } else { 21 | let mensajes_alerta = document.querySelector('.mensajes-alerta'); 22 | mensajes_alerta.innerHTML = data.message; 23 | mensajes_alerta.classList.add("alert"); 24 | mensajes_alerta.classList.add("alert-danger"); 25 | } 26 | }) 27 | } -------------------------------------------------------------------------------- /Fundamentos de la Web/5.- Javascript/me-gusta/style.css: -------------------------------------------------------------------------------- 1 | * { 2 | padding: 0; 3 | margin: 0; 4 | border: 0; 5 | } 6 | 7 | .card { 8 | background-color: #f4f4f4; 9 | border: 1.5px solid black; 10 | border-radius: 4px; 11 | margin: 0 auto; /*me centra cuando tengo un width*/ 12 | padding: 12px; 13 | } 14 | 15 | .card-header { 16 | display: flex; 17 | justify-content: space-between; 18 | margin-bottom: 15px; 19 | } 20 | 21 | .card-header button { 22 | background-color: #ffd700; 23 | border-radius: 4px; 24 | padding: 5px 10px; 25 | margin-left: 5px; 26 | font-weight: bold; 27 | cursor: pointer; 28 | } 29 | 30 | .card-header button:hover { /*Cuando pasas el mouse sobre elemento*/ 31 | background-color: yellow; 32 | } 33 | 34 | header { 35 | background-color: black; 36 | color: white; 37 | text-align: center; 38 | font-size: 30px; 39 | font-weight: bold; 40 | padding: 10px; 41 | margin-bottom: 15px; 42 | } 43 | 44 | main { 45 | /*Acomoda los elementos de adentro de manera horizontal*/ 46 | display:flex; 47 | justify-content: space-around; 48 | flex-wrap: wrap; 49 | } -------------------------------------------------------------------------------- /Fundamentos de la Web/4.- Position/style.css: -------------------------------------------------------------------------------- 1 | /*CSS RESET*/ 2 | * { 3 | padding: 0; 4 | margin: 0; 5 | border: 0; 6 | } 7 | 8 | .container { 9 | border: 3px solid black; 10 | height: 1500px; 11 | position: relative; 12 | } 13 | 14 | .element { 15 | background-color: gray; 16 | padding: 10px; 17 | } 18 | 19 | .main-element { 20 | background-color: yellow; 21 | padding: 10px; 22 | /*position: static; /*POR DEFAULT: no se mueve*/ 23 | /*position: relative; /*Me permite el uso de las propiedades de movimiento. Se mueve en base a la posición original. SIN afectar el resto de los elementos*/ 24 | /*position: absolute; /*Se mueve en base al contenedor padre (relative), e ignora al resto de los elementos*/ 25 | /*position: fixed; /*No se ve afectado por el scroll, ignorado por los elementos alrededor*/ 26 | position: sticky; /*Va a tener la posición original, al hacer scroll se PEGA a la posición establecida*/ 27 | 28 | /*Movimiento: top, left, bottom, right*/ 29 | top: 20px; 30 | left: 15px; 31 | 32 | z-index: 2; /* Eje z, qué tan adelante/atrás quiero mi elemento. Entre más alto el número más adelante */ 33 | 34 | } -------------------------------------------------------------------------------- /Python/2.- OOP/usuarios_tarjetas/tarjetadeCreditoTarea.py: -------------------------------------------------------------------------------- 1 | class TarjetaCredito: 2 | 3 | 4 | def __init__(self, saldo_pagar, limite_credito, intereses): 5 | 6 | self.saldo_pagar = saldo_pagar 7 | self.limite_credito = limite_credito 8 | self.interes = intereses 9 | 10 | 11 | def compra(self, monto): 12 | if (monto+self.saldo_pagar) < self.limite_credito: 13 | self.saldo_pagar += monto 14 | 15 | else: 16 | print( "Tarjeta Rechazada, has alcanzado tu límite de crédito") 17 | print(f"Total Comprado hasta ahora: {self.saldo_pagar}") 18 | 19 | def pago(self, monto): 20 | self.saldo_pagar -= monto 21 | print(f"Pagaste: {monto} Redujiste tu deuda, ahora solo debes: {self.saldo_pagar}") 22 | 23 | 24 | def cobrar_interes(self): 25 | print(f"esto es lo q hay en saldo a pagar: {self.saldo_pagar}") 26 | self.saldo_pagar += self.saldo_pagar * self.interes 27 | print(f"tus saldo a pagar sumado con intereses ahora es: {self.saldo_pagar}") 28 | 29 | def mostrar_info_tarjeta(self): 30 | print(f"Saldo a Pagar: ${self.saldo_pagar}") 31 | -------------------------------------------------------------------------------- /Fundamentos de la Web/5.- Javascript/funciones.js: -------------------------------------------------------------------------------- 1 | /* 2 | Función: Bloque de código al que nombramos y al que podemos llamar/invocar las veces que yo necesite 3 | 4 | function nombre_funcion(parametros1, parametro2...) { 5 | //Código 6 | return valor/variable 7 | } 8 | 9 | */ 10 | 11 | function saludo() { 12 | console.log("Hola"); 13 | console.log("¿Cómo estás?"); 14 | } 15 | 16 | saludo(); 17 | saludo(); 18 | saludo(); 19 | saludo(); 20 | 21 | //nombre = "Juana" 22 | function saludo_nombre(nombre) { //let 23 | console.log(`¡Hola ${nombre}!`); 24 | } 25 | 26 | saludo_nombre("Elena"); 27 | saludo_nombre("Juana"); 28 | 29 | //nombre = "Elena", apellido = "De Troya" 30 | function saludo_especial(nombre, apellido) { 31 | console.log(`¡Hola ${nombre} ${apellido}!`); 32 | } 33 | 34 | saludo_especial("Elena", "De Troya"); 35 | 36 | //num1 = 10, num2 = 20 37 | //<- 30 38 | function sumatoria(num1, num2) { 39 | return num1 + num2; 40 | } 41 | 42 | var resultado = sumatoria(10, 20); //resultado = 30 43 | console.log(resultado*2); 44 | console.log(sumatoria(5, 2)); 45 | 46 | function bucle(num) { 47 | for(let i=0; i 2 | 3 | 4 | 5 | 6 | Práctica de Flex 7 | 8 | 9 | 10 |
11 | 12 |
13 | 1 14 |
15 |
16 | 2 17 |
18 |
19 | 3 20 |
21 |
22 | 4 23 |
24 |
25 | 5 26 |
27 |
28 | 6 29 |
30 |
31 | 7 32 |
33 |
34 | 35 |
36 |
37 | 1 38 |
39 |
40 | 2 41 |
42 |
43 | 3 44 |
45 |
46 | 47 | 48 | -------------------------------------------------------------------------------- /MySQL/Queries/joins.sql: -------------------------------------------------------------------------------- 1 | SELECT * FROM usuarios; 2 | -- SELECT columna1, columna2 FROM tabla1 3 | -- JOIN tabla2 ON tabla1.llave_foranea = tabla2.llaveprimaria 4 | -- WHERE 5 | -- ORDER 6 | -- LIMIT 7 | 8 | -- 1:1 Desplegar la unión entre usuarios y direcciones 9 | -- Unir en base a direccion_id (columna de usuarios, llave foránea) = id de la tabla de direcciones 10 | SELECT nombre, edad, direccion_id, ciudad FROM usuarios 11 | JOIN direcciones ON usuarios.direccion_id = direcciones.id 12 | ORDER BY ciudad ASC; 13 | 14 | 15 | -- 1:n Desplegar la unión entre pedidos y usuarios 16 | -- Unir en base a usuario_id (tabla de pedidos, llave foránea) = id de la tabla de usuarios 17 | SELECT nombre, total, envio FROM pedidos 18 | JOIN usuarios ON usuario_id = usuarios.id; 19 | 20 | -- 1:n 21 | SELECT * FROM usuarios 22 | JOIN pedidos ON usuarios.id = usuario_id; -- SOLO los que coinciden en ambas tablas 23 | 24 | -- 1:n 25 | SELECT * FROM usuarios 26 | LEFT JOIN pedidos ON usuarios.id = usuario_id; -- TODOS los de la primera tabla, y los coincidentes de la segunda 27 | 28 | -- n:m 29 | SELECT nombre, edad, actividad AS hobby FROM usuarios 30 | JOIN usuarios_has_hobbies ON usuarios.id = usuarios_has_hobbies.usuario_id 31 | JOIN hobbies ON hobbies.id = usuarios_has_hobbies.hobbie_id; 32 | -------------------------------------------------------------------------------- /Python/3.- Flask/intro/templates/usuarios.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Bienvenidas 7 | 8 | 9 | 10 | 11 |
12 |

¡Bienvenida {{nombre}} !

13 | 14 | {% for x in range(numero) %} 15 |

¡Saludos!

16 | {% endfor %} 17 | 18 |
    19 | {% for usuario in usuarios %} 20 |
  • 21 | {% if usuario == "Pablo Picasso" %} 22 | ¡Arte! 23 | {% else %} 24 | {{usuario}} 25 | {% endif %} 26 |
  • 27 | {% endfor %} 28 |
29 | gatito 30 |
31 | 32 | -------------------------------------------------------------------------------- /Python/3.- Flask/tabla_paises/templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Tabla de Países 7 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 24 | {% for pais in lista_paises %} 25 | 26 | 27 | 28 | 29 | {% endfor %} 30 | 31 |
PaísCapital
{{pais["pais"]}}{{pais["capital"]}}
32 |
33 | 34 | -------------------------------------------------------------------------------- /Python/3.- Flask/crud/templates/nuevo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Nuevo Usuario 7 | 10 | 11 | 12 |
13 |
14 |

Nuevo Usuario

15 |
16 | 17 | 18 |
19 |
20 | 21 | 22 |
23 |
24 | 25 | 26 |
27 | 28 |
29 |
30 | 31 | -------------------------------------------------------------------------------- /Fundamentos de la Web/4.- Position/tarjeta.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Tarjeta de Usuario 7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 |
15 | Avatar Gato 16 |
17 |
18 |

Cynthia Castillo

19 |

Monterrey, México

20 |

Instructora de Coding Dojo | Mamá de gatitas | Aventurera profesional

21 |

22 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Vel quo eveniet alias, illum quis laudantium quas nihil officia fugit aut, fuga mollitia? Aut provident molestiae dolor ab blanditiis quae labore. 23 |

24 | 25 |
26 |
27 | 28 | -------------------------------------------------------------------------------- /Python/3.- Flask/crud_modularizado/flask_app/templates/nuevo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Nuevo Usuario 7 | 10 | 11 | 12 |
13 |
14 |

Nuevo Usuario

15 |
16 | 17 | 18 |
19 |
20 | 21 | 22 |
23 |
24 | 25 | 26 |
27 | 28 |
29 |
30 | 31 | -------------------------------------------------------------------------------- /Python/3.- Flask/eventos/flask_app/templates/view.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Ver Evento 7 | 8 | 9 | 10 |
11 |
12 |

{{event.name}}

13 | Inicio 14 | Cerrar Sesión 15 |
16 |

Publicado por: {{event.user_name}}

17 |
18 |
19 |

20 | Ubicación: {{event.location}} 21 |

22 |

23 | Fecha: {{event.date}} 24 |

25 |

26 | Detalles: {{event.details}} 27 |

28 |
29 |
30 |
31 | 32 | -------------------------------------------------------------------------------- /Python/1.- Intro/funciones_intermedias.py: -------------------------------------------------------------------------------- 1 | cantantes = [ 2 | 3 | {"nombre": "Ricky Martin", "pais": "Puerto Rico"}, 4 | 5 | {"nombre": "Chayanne", "pais": "Puerto Rico"}, 6 | 7 | {"nombre": "José José", "pais": "México"}, 8 | 9 | {"nombre": "Juan Luis Guerra", "pais": "República Dominicana"} 10 | 11 | ] 12 | 13 | def iterarDiccionario2(llave, lista): #funcion 14 | for dicc in lista: 15 | print(dicc[llave]) 16 | 17 | iterarDiccionario2("nombre", cantantes) #llamada a la funcion 18 | 19 | costa_rica = { 20 | 21 | "ciudades": ["San José", "Limón", "Cartago", "Puntarenas"], 22 | 23 | "comidas": ["gallo pinto", "casado", "tamales", "chifrijo", "olla de carne"] 24 | 25 | } 26 | ''' 27 | diccionario = { 28 | 29 | "ciudades": ["San José", "Limón", "Cartago", "Puntarenas"], 30 | 31 | "comidas": ["gallo pinto", "casado", "tamales", "chifrijo", "olla de carne"] 32 | 33 | } 34 | clave = "ciudades" 35 | diccionario[clave] = diccionario["ciudades"] 36 | lista = ["San José", "Limón", "Cartago", "Puntarenas"] 37 | ''' 38 | def imprimirInformacion(diccionario): 39 | for clave in diccionario: #recorro un diccionario, sus claves 40 | lista = diccionario[clave] 41 | print(len(lista), clave.upper()) 42 | for elemento in lista: 43 | print(elemento) 44 | 45 | 46 | imprimirInformacion(costa_rica) -------------------------------------------------------------------------------- /Python/3.- Flask/formularios/templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Formulario 7 | 10 | 11 | 12 |
13 |
14 |
15 |

Registrar Usuario

16 |
17 |
18 | 19 | 20 |
21 |
22 | 23 | 24 |
25 | 26 |
27 |
28 |
29 |
30 | 31 | -------------------------------------------------------------------------------- /Python/4.- APIs/dogapi/js/script.js: -------------------------------------------------------------------------------- 1 | //API = Application Programming Interfaces 2 | //AJAX = Asynchronous Javascript and XML 3 | 4 | /* PROMESAS */ 5 | function muestra_perrito() { 6 | fetch("https://dog.ceo/api/breeds/image/random") 7 | .then(response => response.json()) 8 | .then(data => { 9 | /* 10 | data = { 11 | "message": "url/img.jpg", 12 | "status": "success" 13 | } 14 | */ 15 | 16 | console.log(data); 17 | // data["message"] o data.message 18 | let img_perrito = `perrito`; 19 | let img_otra = "perrito"; 20 | 21 | document.querySelector(".imagen-perrito").innerHTML = img_perrito; 22 | }); 23 | } 24 | 25 | /* 26 | parametros => codigo 27 | */ 28 | 29 | /* ASYNC/AWAIT */ 30 | async function muestra_perritoAsync() { 31 | let response = await fetch("https://dog.ceo/api/breeds/image/random"); 32 | let data = await response.json(); 33 | /* 34 | data = { 35 | "message": "url/img.jpg", 36 | "status": "success" 37 | } 38 | */ 39 | let img_perrito = `perrito`; 40 | document.querySelector(".imagen-perrito").innerHTML = img_perrito; 41 | } -------------------------------------------------------------------------------- /Python/2.- OOP/main.py: -------------------------------------------------------------------------------- 1 | #Importar la clase 2 | from Persona import Persona 3 | # from Animal import Animal 4 | from Gato import Gato 5 | from Perro import Perro 6 | 7 | # miu = Animal("Miusita", "miau") 8 | # firulais = Animal("Firulais", "guau") 9 | 10 | # miu.hacer_sonido() 11 | 12 | elena = Persona("Elena", "De Troya", "elena@codingdojo.com", 18, "Michi", "purrrr") #creando instancia de Persona 13 | juana = Persona("Juana", "De Arco", "juana@codingdojo.com", 22, "Garfield", "quiero lasaña") 14 | 15 | print(elena.nombre) 16 | print(juana.nombre) 17 | elena.imprimir() 18 | 19 | juana.saludar() 20 | elena.saludar() 21 | 22 | juana.codificar(15) 23 | 24 | juana.codificar(100) 25 | print(juana.lineas_codigo) 26 | 27 | print(juana.escuela) 28 | print(elena.escuela) 29 | 30 | #Cambiando para toda la clase la escuela 31 | Persona.escuela = "Escuela de Programación" 32 | print(juana.escuela) 33 | print(elena.escuela) 34 | 35 | pedro = Persona("Pedro", "Paramo", "pedro@codingdojo.com", 32, "Snoopy", "woof") 36 | 37 | print(len(Persona.lista_personas)) 38 | 39 | Persona.imprimir_todos() 40 | 41 | pedro.licencia_conducir() 42 | 43 | pedro.mascota.hacer_sonido() 44 | 45 | michi = Gato("Michi", "meow", "corto") 46 | pluto = Perro("Pluto", "woof", "golden") 47 | 48 | michi.rascar_sofa() 49 | michi.hacer_sonido() 50 | pluto.hacer_sonido() 51 | pluto.perseguir_autos() 52 | michi.ir_al_bano() 53 | pluto.ir_al_bano() -------------------------------------------------------------------------------- /Fundamentos de la Web/5.- Javascript/me-gustav2/css/style.css: -------------------------------------------------------------------------------- 1 | /*CSS RESET*/ 2 | * { 3 | margin: 0; 4 | padding: 0; 5 | border: 0; 6 | } 7 | 8 | .container { 9 | width: 800px; 10 | margin: 0 auto; 11 | font-family: "Poppins", sans-serif; 12 | } 13 | 14 | header { 15 | background-color: black; 16 | padding: 10px 20px; 17 | } 18 | 19 | /*header h1*/ 20 | /*.container h1*/ 21 | .container > header > h1 { 22 | color: white; 23 | } 24 | 25 | main h2 { 26 | text-align: center; 27 | margin-top: 20px; 28 | margin-bottom: 20px; 29 | } 30 | 31 | .row { 32 | display: flex; 33 | justify-content: space-between; 34 | gap: 5%; 35 | } 36 | 37 | aside { 38 | flex: 1; 39 | /* height: 100px; */ 40 | border: 1px solid black; 41 | text-align: center; 42 | padding: 30px 0; 43 | } 44 | 45 | .right { 46 | flex: 3; 47 | /* height: 100px; 48 | border: 1px solid black; */ 49 | } 50 | 51 | aside a { 52 | display: block; 53 | margin: 20px 0; 54 | } 55 | 56 | aside img { 57 | border-radius: 50%; 58 | } 59 | 60 | .card { 61 | border: 1px solid black; 62 | padding: 10px 20px; 63 | margin-bottom: 20px; 64 | } 65 | 66 | .header-card { 67 | display: flex; 68 | justify-content: space-between; 69 | } 70 | 71 | .header-card button { 72 | background-color: gold; 73 | border: 1px solid black; 74 | padding: 5px 8px; 75 | } 76 | -------------------------------------------------------------------------------- /Python/3.- Flask/crud/script.sql: -------------------------------------------------------------------------------- 1 | -- MySQL Workbench Forward Engineering 2 | 3 | SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; 4 | SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; 5 | SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; 6 | 7 | -- ----------------------------------------------------- 8 | -- Schema crud_bc 9 | -- ----------------------------------------------------- 10 | 11 | -- ----------------------------------------------------- 12 | -- Schema crud_bc 13 | -- ----------------------------------------------------- 14 | CREATE SCHEMA IF NOT EXISTS `crud_bc` DEFAULT CHARACTER SET utf8 ; 15 | USE `crud_bc` ; 16 | 17 | -- ----------------------------------------------------- 18 | -- Table `crud_bc`.`usuarios` 19 | -- ----------------------------------------------------- 20 | CREATE TABLE IF NOT EXISTS `crud_bc`.`usuarios` ( 21 | `id` INT NOT NULL AUTO_INCREMENT, 22 | `nombre` VARCHAR(45) NULL, 23 | `apellido` VARCHAR(45) NULL, 24 | `email` VARCHAR(150) NULL, 25 | `created_at` DATETIME NULL DEFAULT CURRENT_TIMESTAMP, 26 | `updated_at` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 27 | PRIMARY KEY (`id`)) 28 | ENGINE = InnoDB; 29 | 30 | 31 | SET SQL_MODE=@OLD_SQL_MODE; 32 | SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; 33 | SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; 34 | -------------------------------------------------------------------------------- /Python/3.- Flask/estudiantes_cursos/flask_app/templates/curso_con_estudiantes.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | {{curso_seleccionado.nombre}} 8 | 10 | 11 | 12 | 13 |
14 |

ESTUDIANTES DE {{curso_seleccionado.nombre}}

15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | {% for estudiante in curso_seleccionado.estudiantes %} 25 | 26 | 27 | 28 | 29 | 30 | {% endfor %} 31 | 32 |
NombreApellidoEdad
{{estudiante.nombre}}{{estudiante.apellido}}{{estudiante.edad}}
33 | 34 | INICIO 35 | 36 |
37 | 38 | 39 | -------------------------------------------------------------------------------- /Python/3.- Flask/crud_modularizado/flask_app/bd/script.sql: -------------------------------------------------------------------------------- 1 | -- MySQL Workbench Forward Engineering 2 | 3 | SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; 4 | SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; 5 | SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; 6 | 7 | -- ----------------------------------------------------- 8 | -- Schema crud_bc 9 | -- ----------------------------------------------------- 10 | 11 | -- ----------------------------------------------------- 12 | -- Schema crud_bc 13 | -- ----------------------------------------------------- 14 | CREATE SCHEMA IF NOT EXISTS `crud_bc` DEFAULT CHARACTER SET utf8 ; 15 | USE `crud_bc` ; 16 | 17 | -- ----------------------------------------------------- 18 | -- Table `crud_bc`.`usuarios` 19 | -- ----------------------------------------------------- 20 | CREATE TABLE IF NOT EXISTS `crud_bc`.`usuarios` ( 21 | `id` INT NOT NULL AUTO_INCREMENT, 22 | `nombre` VARCHAR(45) NULL, 23 | `apellido` VARCHAR(45) NULL, 24 | `email` VARCHAR(150) NULL, 25 | `created_at` DATETIME NULL DEFAULT CURRENT_TIMESTAMP, 26 | `updated_at` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 27 | PRIMARY KEY (`id`)) 28 | ENGINE = InnoDB; 29 | 30 | 31 | SET SQL_MODE=@OLD_SQL_MODE; 32 | SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; 33 | SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; 34 | -------------------------------------------------------------------------------- /Fundamentos de la Web/5.- Javascript/tiempo-local/css/style.css: -------------------------------------------------------------------------------- 1 | * { 2 | margin: 0; 3 | padding: 0; 4 | border: 0; 5 | } 6 | /*HEADER*/ 7 | header { 8 | background-color: #339aff; 9 | text-align: center; 10 | color: white; 11 | padding: 10px; 12 | } 13 | 14 | nav ul { 15 | display: flex; 16 | gap: 30px; 17 | justify-content: center; 18 | list-style: none; /*Viñeta*/ 19 | margin: 15px 0; 20 | } 21 | 22 | nav a { 23 | color: white; 24 | text-decoration: none; 25 | } 26 | 27 | /*MAIN*/ 28 | main h2 { 29 | text-align: center; 30 | margin: 30px 0; 31 | font-weight: normal; 32 | } 33 | 34 | .semana { 35 | display:flex; 36 | gap: 15px; /*solo display flex. hueco entre elementos*/ 37 | justify-content:center; 38 | } 39 | 40 | .temp-card { 41 | background-color: #f9f9f9; 42 | border: 1px solid lightgray; 43 | border-radius: 4px; 44 | box-shadow: 2px 2px 2px gray; 45 | text-align: center; 46 | width: 130px; 47 | padding: 15px 0; 48 | } 49 | 50 | .temp-card img { 51 | width: 70px; 52 | } 53 | 54 | .temp-card p { 55 | margin: 5px 0; 56 | } 57 | 58 | /*FOOTER*/ 59 | footer { 60 | background-color: black; 61 | color: white; 62 | text-align: center; 63 | position: fixed; /*width: auto no funciona*/ 64 | bottom: 0; 65 | width: 100%; 66 | padding: 15px 0; 67 | } 68 | 69 | footer button { 70 | background-color: #ffd700; 71 | padding: 5px; 72 | margin-left: 10px; 73 | } -------------------------------------------------------------------------------- /Python/3.- Flask/crud/templates/editar.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Editar Usuario 7 | 10 | 11 | 12 |
13 |
14 |

Editar Usuario

15 |
16 | 17 | 18 |
19 |
20 | 21 | 22 |
23 |
24 | 25 | 26 |
27 | 28 | 29 |
30 |
31 | 32 | -------------------------------------------------------------------------------- /Python/3.- Flask/registro_login/flask_app/bd/script.sql: -------------------------------------------------------------------------------- 1 | -- MySQL Workbench Forward Engineering 2 | 3 | SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; 4 | SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; 5 | SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; 6 | 7 | -- ----------------------------------------------------- 8 | -- Schema loginreg_bc 9 | -- ----------------------------------------------------- 10 | 11 | -- ----------------------------------------------------- 12 | -- Schema loginreg_bc 13 | -- ----------------------------------------------------- 14 | CREATE SCHEMA IF NOT EXISTS `loginreg_bc` DEFAULT CHARACTER SET utf8 ; 15 | USE `loginreg_bc` ; 16 | 17 | -- ----------------------------------------------------- 18 | -- Table `loginreg_bc`.`users` 19 | -- ----------------------------------------------------- 20 | CREATE TABLE IF NOT EXISTS `loginreg_bc`.`users` ( 21 | `id` INT NOT NULL AUTO_INCREMENT, 22 | `first_name` VARCHAR(100) NULL, 23 | `last_name` VARCHAR(100) NULL, 24 | `email` VARCHAR(200) NULL, 25 | `password` VARCHAR(255) NULL, 26 | `created_at` DATETIME NULL DEFAULT CURRENT_TIMESTAMP, 27 | `updated_at` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 28 | PRIMARY KEY (`id`)) 29 | ENGINE = InnoDB; 30 | 31 | 32 | SET SQL_MODE=@OLD_SQL_MODE; 33 | SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; 34 | SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; 35 | -------------------------------------------------------------------------------- /Python/4.- APIs/registro_login/flask_app/bd/script.sql: -------------------------------------------------------------------------------- 1 | -- MySQL Workbench Forward Engineering 2 | 3 | SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; 4 | SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; 5 | SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; 6 | 7 | -- ----------------------------------------------------- 8 | -- Schema loginreg_bc 9 | -- ----------------------------------------------------- 10 | 11 | -- ----------------------------------------------------- 12 | -- Schema loginreg_bc 13 | -- ----------------------------------------------------- 14 | CREATE SCHEMA IF NOT EXISTS `loginreg_bc` DEFAULT CHARACTER SET utf8 ; 15 | USE `loginreg_bc` ; 16 | 17 | -- ----------------------------------------------------- 18 | -- Table `loginreg_bc`.`users` 19 | -- ----------------------------------------------------- 20 | CREATE TABLE IF NOT EXISTS `loginreg_bc`.`users` ( 21 | `id` INT NOT NULL AUTO_INCREMENT, 22 | `first_name` VARCHAR(100) NULL, 23 | `last_name` VARCHAR(100) NULL, 24 | `email` VARCHAR(200) NULL, 25 | `password` VARCHAR(255) NULL, 26 | `created_at` DATETIME NULL DEFAULT CURRENT_TIMESTAMP, 27 | `updated_at` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 28 | PRIMARY KEY (`id`)) 29 | ENGINE = InnoDB; 30 | 31 | 32 | SET SQL_MODE=@OLD_SQL_MODE; 33 | SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; 34 | SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; 35 | -------------------------------------------------------------------------------- /Python/3.- Flask/crud_modularizado/flask_app/templates/editar.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Editar Usuario 7 | 10 | 11 | 12 |
13 |
14 |

Editar Usuario

15 |
16 | 17 | 18 |
19 |
20 | 21 | 22 |
23 |
24 | 25 | 26 |
27 | 28 | 29 |
30 |
31 | 32 | -------------------------------------------------------------------------------- /Python/3.- Flask/intro/server.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Activamos entorno virtual --> pipenv shell 3 | Despliegue servidor ---> python server.py o python3 server.py 4 | ctrl + c ---> Para detener el servidor 5 | exit ---> Para salirnos del entorno virtual 6 | ''' 7 | from flask import Flask, render_template #Importa Flask y me permite crear la aplicación web 8 | 9 | app = Flask(__name__) #Crea una nueva instancia de la clase Flask llamada "app" 10 | 11 | @app.route("/") #Decorado @, genera la ruta "/" (raíz) y asociamos con la función inmediata 12 | def inicio(): 13 | return "¡Hola desde Flask! :)" #Devolver el texto "¡Hola desde Flask!" 14 | 15 | @app.route("/hola/") #/hola/Elena name="Elena" 16 | def hola(name): 17 | return "Hola "+name 18 | 19 | @app.route("/numero/") #Forzosamente indico que en ese espacio debe ir un entero 20 | def numero(n): 21 | print(f"El usuario ingresó {n}") 22 | respuesta = f"

Ingresaste el numero {n}

" 23 | return respuesta 24 | 25 | @app.route("/bienvenidas") 26 | def bienvenidas(): 27 | return render_template("index.html") 28 | 29 | # /usuarios/Pedro Paramo/5 30 | @app.route("/usuarios//") 31 | def usuarios(name, num): 32 | #name = "Pedro Paramo" 33 | #num = 5 34 | usuarios = ["Juana de Arco", "Pablo Picasso", "Pedro Páramo"] 35 | return render_template("usuarios.html", nombre=name, numero=num, usuarios=usuarios) 36 | 37 | #Asegura que este archivo que el se está ejecutando directamente en el módulo 38 | if __name__ == "__main__": 39 | app.run(debug=True) #Ejecuta mi aplicación, en modo depuración -------------------------------------------------------------------------------- /Fundamentos de la Web/3.- Flex/css/style.css: -------------------------------------------------------------------------------- 1 | * { 2 | margin: 0; 3 | padding: 0; 4 | border: 0; 5 | } 6 | 7 | section, div { 8 | border: 1px solid black; 9 | padding: 10px; 10 | margin: 5px; 11 | } 12 | 13 | .container1 { 14 | background-color: red; 15 | width: 1200px; 16 | height: 200px; 17 | display: flex; /*Se coloca al padre*/ 18 | /*Acomodo vertical*/ 19 | align-items: stretch; /*stretch, center, flex-start, flex-end*/ 20 | /*Acomodo horizontal*/ 21 | justify-content: flex-start; /*flex-start, flex-end, center, space-between, space-around, space-evenly*/ 22 | /*Direccion*/ 23 | flex-direction: row; /*row, column, row-reverse, column-reverse*/ 24 | /*Si se llena la fila, me pone los elementos abajo*/ 25 | flex-wrap: wrap; 26 | } 27 | 28 | /* 29 | section 30 | .container1 section 31 | .container1 > section 32 | .s1, .s2, .s3 33 | */ 34 | .container1 section { 35 | width: 200px; 36 | background-color: yellow; 37 | } 38 | 39 | .container2 { 40 | background-color: blueviolet; 41 | width: 1200px; 42 | height: 200px; 43 | display: flex; 44 | gap: 5%; /*Espacio entre elementos*/ 45 | } 46 | 47 | .container2 section { /*Todas las etiquetas section dentro de contianer2*/ 48 | background-color: white; 49 | flex: 1; 50 | } 51 | 52 | .container2 .section2 { /* la clase section2 dentro de container2 */ 53 | flex: 2; /*sobreescribiendo*/ 54 | } 55 | 56 | .container2 .section3 { 57 | flex: 3; 58 | } 59 | 60 | /* 61 | section1 = 1 -> 1/6 62 | section2 = 2 -> 2/6 = 1/3 63 | section3 = 3 -> 3/6 = 1/2 64 | TOTAL = 6 65 | */ 66 | -------------------------------------------------------------------------------- /Python/3.- Flask/crud/server.py: -------------------------------------------------------------------------------- 1 | # CRUD: Create Read Update Delete = Crear Leer Actualizar Borrar 2 | # pipenv install flask pymysql 3 | from flask import Flask, render_template, request, redirect 4 | 5 | from usuario import Usuario 6 | 7 | app = Flask(__name__) 8 | 9 | @app.route("/") 10 | def index(): 11 | #enviar todos los usuarios 12 | usuarios = Usuario.mostrar_usuarios() #lista con todos los usuarios 13 | return render_template("index.html", listado_usuarios = usuarios) 14 | 15 | @app.route("/nuevo") 16 | def nuevo(): 17 | return render_template("nuevo.html") 18 | 19 | @app.route("/crear", methods=["POST"]) 20 | def crear(): 21 | #Recibimos lo que el usuario ingreso en form 22 | #request.form = DICCIONARIO con la info 23 | Usuario.guardar(request.form) 24 | return redirect("/") 25 | 26 | @app.route("/borrar/") #/borrar/2 27 | def borrar(id): #id = 2 28 | diccionario = {"id": id} #{"id": 2} 29 | Usuario.eliminar(diccionario) 30 | return redirect("/") 31 | 32 | @app.route("/editar/") #/editar/2 33 | def editar(id): 34 | #Una función en Usuario que en base a un ID me regrese una instancia de Usuario 35 | diccionario = {"id": id} #{"id": 2} 36 | usuario = Usuario.mostrar_un_usuario(diccionario) 37 | return render_template("editar.html", usuario=usuario) #enviando el objeto de Usuario a editar 38 | 39 | @app.route("/actualizar", methods=['POST']) 40 | def actualizar(): 41 | #recibimos el request.form 42 | #Un método en Usuario que actulice la info de un registro enviando request.form 43 | Usuario.actualizar_usuario(request.form) 44 | return redirect("/") 45 | 46 | if __name__=="__main__": 47 | app.run(debug=True) -------------------------------------------------------------------------------- /Python/3.- Flask/crud_modularizado/flask_app/controllers/usuarios_controller.py: -------------------------------------------------------------------------------- 1 | #Importaciones 2 | from flask import Flask, render_template, request, redirect, session 3 | 4 | #Importar la app 5 | from flask_app import app 6 | 7 | #Importar los modelos a utilizar 8 | from flask_app.models.usuario import Usuario 9 | 10 | #RUTAS 11 | @app.route("/") 12 | def index(): 13 | #enviar todos los usuarios 14 | usuarios = Usuario.mostrar_usuarios() #lista con todos los usuarios 15 | return render_template("index.html", listado_usuarios = usuarios) 16 | 17 | @app.route("/nuevo") 18 | def nuevo(): 19 | return render_template("nuevo.html") 20 | 21 | @app.route("/crear", methods=["POST"]) 22 | def crear(): 23 | #Recibimos lo que el usuario ingreso en form 24 | #request.form = DICCIONARIO con la info 25 | Usuario.guardar(request.form) 26 | return redirect("/") 27 | 28 | @app.route("/borrar/") #/borrar/2 29 | def borrar(id): #id = 2 30 | diccionario = {"id": id} #{"id": 2} 31 | Usuario.eliminar(diccionario) 32 | return redirect("/") 33 | 34 | @app.route("/editar/") #/editar/2 35 | def editar(id): 36 | #Una función en Usuario que en base a un ID me regrese una instancia de Usuario 37 | diccionario = {"id": id} #{"id": 2} 38 | usuario = Usuario.mostrar_un_usuario(diccionario) 39 | return render_template("editar.html", usuario=usuario) #enviando el objeto de Usuario a editar 40 | 41 | @app.route("/actualizar", methods=['POST']) 42 | def actualizar(): 43 | #recibimos el request.form 44 | #Un método en Usuario que actulice la info de un registro enviando request.form 45 | Usuario.actualizar_usuario(request.form) 46 | return redirect("/") -------------------------------------------------------------------------------- /Python/3.- Flask/formularios/server.py: -------------------------------------------------------------------------------- 1 | #Importamos Flask (encargado de crear la aplicación) 2 | #render_template (renderizar los HTML) 3 | #request (con el cual nosotros podemos recibir información de formularios) 4 | #redirect (redireccionar) 5 | from flask import Flask, render_template, request, redirect, session 6 | 7 | app = Flask(__name__) #Instancia de Flask = Aplicación Web 8 | 9 | app.secret_key = "llave super secreta" #una capa extra de seguridad para las cookies 10 | 11 | #Formulario necesita 3 rutas: 12 | #1.- Renderiza/Muestra el formulario 13 | @app.route("/") 14 | def index(): 15 | return render_template("index.html") 16 | 17 | #2.- Recibe la info del formulario 18 | @app.route("/registrar", methods=['POST']) 19 | def registrar(): 20 | print(request.form) 21 | print(request.form['email']) 22 | ''' 23 | request.form = { 24 | "nombre": "Juana de Arco", 25 | "email": "juana@codingdojo.com" 26 | } 27 | ''' 28 | #Guardar en sesión 29 | session["usuario"] = request.form["nombre"] 30 | session["correo"] = request.form["email"] 31 | 32 | #Renderizar = Mostrar una plantilla HTML 33 | #NUNCA renderizamos una plantilla cuando recibo un POST 34 | #En su lugar: redirigimos a otra ruta /exito 35 | return redirect("/exito") 36 | 37 | #3.- Ruta a la que redirigimos 38 | @app.route("/exito") 39 | def exito(): 40 | #reviso que en sesión exista algo llamado usuario 41 | if "usuario" not in session: 42 | return redirect("/") 43 | 44 | return render_template("exito.html") 45 | 46 | @app.route("/logout") 47 | def logout(): 48 | #Eliminar sesión 49 | session.clear() 50 | return redirect("/") 51 | 52 | 53 | 54 | if __name__ == "__main__": 55 | app.run(debug=True) -------------------------------------------------------------------------------- /Python/3.- Flask/estudiantes_cursos/flask_app/templates/estudiante.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Estudiante 7 | 9 | 10 | 11 |
12 |
13 |

Nuevo Estudiante

14 |
15 |
16 | 17 | 22 |
23 |
24 | 25 | 26 |
27 |
28 | 29 | 30 |
31 |
32 | 33 | 34 |
35 | 36 |
37 |
38 | Inicio 39 |
40 | 41 | -------------------------------------------------------------------------------- /Python/3.- Flask/crud/templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Usuarios 7 | 10 | 11 | 12 |
13 |
14 |

Usuarios

15 | Nuevo Usuario 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | {% for usuario in listado_usuarios %} 29 | 30 | 31 | 32 | 33 | 34 | 38 | 39 | {% endfor %} 40 | 41 |
NombreApellidoE-mailFecha de CreaciónAcciones
{{ usuario.nombre }}{{ usuario.apellido }}{{ usuario.email }}{{ usuario.created_at.strftime("%d %B %y") }} 35 | Borrar 36 | Editar 37 |
42 |
43 | 44 | -------------------------------------------------------------------------------- /MySQL/Queries/selects.sql: -------------------------------------------------------------------------------- 1 | -- Queries = Consultas 2 | -- SELECTS -> buscar/seleccionar registros de una tabla 3 | SELECT * FROM usuarios; -- SELECT *(todas las columnas) FROM tabla; 4 | 5 | -- Selecciono solo las columnas de nombre y edad 6 | SELECT nombre, edad FROM usuarios; 7 | 8 | -- Seleccionando solo las columnas de nombre y edad DONDE el id del registro sea 2 9 | SELECT nombre, edad FROM usuarios WHERE id = 2; 10 | 11 | -- Seleccionando solo las columnas de nombre y edad DONDE el nombre sea Alejandro 12 | SELECT nombre, edad FROM usuarios WHERE nombre LIKE "Alejandro"; -- = "Alejandro" 13 | 14 | -- Seleccionando todas las columnas de usuarios donde el nombre comienza con Al 15 | SELECT * FROM usuarios WHERE nombre LIKE "Al%"; -- % = comodin, es decir CUALQUIER caracter 16 | 17 | -- Seleccionando todas las columnas de usuarios donde el nombre termina con o 18 | SELECT * FROM usuarios WHERE nombre LIKE "%o"; 19 | 20 | -- Seleccionando todas las columnas de usuarios donde el nombre termina con o y la edad mayor a 24 21 | SELECT * FROM usuarios WHERE nombre LIKE "%o" AND edad > 24; 22 | 23 | -- Seleccionando todas las columnas de usuarios donde el nombre termina con o O la edad mayor a 24 24 | SELECT * FROM usuarios WHERE nombre LIKE "%o" OR edad > 24; 25 | 26 | -- Seleccionando todas las columnas de usuarios donde nombre contenga la letra a 27 | SELECT * FROM usuarios WHERE nombre LIKE "%a%"; 28 | 29 | -- Seleccionando todas las columnas de usuarios donde nombre contenga la letra a ordenado por edad de mayor a menor 30 | SELECT * FROM usuarios WHERE nombre LIKE "%a%" ORDER BY edad DESC; 31 | 32 | -- SELECT columnas FROM tabla WHERE condicional ORDER BY columna LIMIT 0,cantidad 33 | 34 | SELECT * FROM usuarios 35 | WHERE nombre LIKE "%a%" 36 | ORDER BY edad DESC 37 | LIMIT 2, 3; -- donde comenzar, cantidad 38 | 39 | 40 | -------------------------------------------------------------------------------- /Python/3.- Flask/crud_modularizado/flask_app/templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Usuarios 7 | 10 | 11 | 12 |
13 |
14 |

Usuarios

15 | Nuevo Usuario 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | {% for usuario in listado_usuarios %} 29 | 30 | 31 | 32 | 33 | 34 | 38 | 39 | {% endfor %} 40 | 41 |
NombreApellidoE-mailFecha de CreaciónAcciones
{{ usuario.nombre }}{{ usuario.apellido }}{{ usuario.email }}{{ usuario.created_at.strftime("%d %B %y") }} 35 | Borrar 36 | Editar 37 |
42 |
43 | 44 | -------------------------------------------------------------------------------- /Python/3.- Flask/estudiantes_cursos/flask_app/templates/cursos.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Cursos 8 | 10 | 11 | 12 | 13 |
14 |
15 | 16 |
17 |
18 |

Nuevo Curso

19 |
20 | 21 | 22 |
23 | 24 |
25 |
26 | 27 |
28 |

Todos Cursos

29 |
30 | {% for curso in cursos %} 31 |
32 |

33 | {{curso.nombre}} 34 | 35 |

36 | 37 | ver 38 | 39 |
40 | {% endfor %} 41 |
42 | Agregar estudiante 43 |
44 |
45 |
46 | 47 | 48 | -------------------------------------------------------------------------------- /Python/3.- Flask/estudiantes_cursos/flask_app/models/curso.py: -------------------------------------------------------------------------------- 1 | from flask_app.config.mysqlconnection import connectToMySQL 2 | from flask_app.models.estudiante import Estudiante 3 | 4 | #PEND: Importar tambien Estudiante 5 | 6 | class Curso: 7 | 8 | def __init__(self, data): 9 | #data diccionario que tiene toda la información para el objeto 10 | self.id = data["id"] 11 | self.nombre = data["nombre"] 12 | self.created_at = data["created_at"] 13 | self.updated_at = data["updated_at"] 14 | 15 | #Lo llenamos en una función 16 | self.estudiantes = [] 17 | 18 | @classmethod 19 | def todos_cursos(cls): 20 | query = "SELECT * FROM cursos" 21 | resultados = connectToMySQL('esquema_estudiantes_cursos').query_db(query) #Lista de diccionarios 22 | cursos = [] 23 | 24 | for curso in resultados: 25 | cursos.append(cls(curso)) #1.- cls(curso) crea el objeto. 2.- el objeto se ingresa en la lista cursos 26 | return cursos 27 | 28 | @classmethod 29 | def guardar(cls, formulario): 30 | #formulario = {"nombre": "MERN"} 31 | query = "INSERT INTO cursos (nombre) VALUES (%(nombre)s) " 32 | resultado = connectToMySQL('esquema_estudiantes_cursos').query_db(query, formulario) 33 | return resultado 34 | 35 | #Método que me regrese UN curso con sus estudiantes 36 | @classmethod 37 | def curso_con_estudiantes(cls, data): 38 | #data = {"id": 2} 39 | query="SELECT * FROM cursos WHERE cursos.id =%(id)s " 40 | resultado = connectToMySQL('esquema_estudiantes_cursos').query_db(query,data) 41 | if len(resultado)<1: 42 | return False 43 | curso_seleccionado = cls(resultado[0]) 44 | query="SELECT * FROM estudiantes WHERE curso_id=%(id)s " 45 | resultado = connectToMySQL('esquema_estudiantes_cursos').query_db(query,data) 46 | for estudiante in resultado: 47 | curso_seleccionado.estudiantes.append(Estudiante(estudiante)) 48 | return curso_seleccionado 49 | 50 | -------------------------------------------------------------------------------- /Python/3.- Flask/foro_publicaciones/flask_app/models/post.py: -------------------------------------------------------------------------------- 1 | from flask_app.config.mysqlconnection import connectToMySQL 2 | 3 | from flask import flash #flash es el encargado de mostrar los mensajes 4 | 5 | class Post: 6 | 7 | def __init__(self, data): 8 | #data = {diccionario con la info de mi bd} 9 | self.id = data["id"] 10 | self.content = data["content"] 11 | self.created_at = data["created_at"] 12 | self.updated_at = data["updated_at"] 13 | self.user_id = data["user_id"] 14 | 15 | self.user_name = data["user_name"] 16 | 17 | @classmethod 18 | def save(cls, form): 19 | #form = {"content": "contenido de la publicación", "user_id": 1} 20 | query = "INSERT INTO posts (content, user_id) VALUES (%(content)s, %(user_id)s) " 21 | return connectToMySQL("foro_publicaciones").query_db(query, form) 22 | 23 | @staticmethod 24 | def validate_post(form): 25 | #form = {"content": "contenido de la publicación", "user_id": 1} 26 | is_valid = True 27 | 28 | if len(form["content"]) < 1: 29 | flash("Post content is required.", "post") #(mensaje, categoria) 30 | is_valid = False 31 | 32 | return is_valid 33 | 34 | @classmethod 35 | def get_all(cls): 36 | query = "SELECT posts.*, users.first_name as user_name FROM posts JOIN users ON posts.user_id = users.id ORDER BY created_at DESC;" 37 | results = connectToMySQL("foro_publicaciones").query_db(query) #results = Lista de diccionarios 38 | posts = [] 39 | for p in results: 40 | #p = {"id": 1, "content": "Hola"....., "user_name": "Elena"} 41 | posts.append(cls(p)) #1.- cls(post): Genera el objeto de publicacion con el diccionario. 2.- .append agrega el objeto a la lista de posts 42 | return posts 43 | 44 | @classmethod 45 | def delete(cls, data): #(cls, post_id) 46 | #data = {"id": 2} -> data = {"id": post_id} 47 | query = "DELETE FROM posts WHERE id = %(id)s" 48 | connectToMySQL("foro_publicaciones").query_db(query, data) -------------------------------------------------------------------------------- /Python/3.- Flask/crud/mysqlconnection.py: -------------------------------------------------------------------------------- 1 | import pymysql.cursors #Utilizamos un cursos para interactuar con BD 2 | class MySQLConnection: #Clase que permite generar instancia de conexión con BD 3 | def __init__(self, db): 4 | connection = pymysql.connect(host = 'localhost', 5 | user = 'root', # Cambia el usuario y contraseña 6 | password = '', 7 | db = db, 8 | charset = 'utf8mb4', 9 | cursorclass = pymysql.cursors.DictCursor, 10 | autocommit = True) 11 | self.connection = connection #Establecemos conexión con BD 12 | #El método que se encarga de la consulta 13 | def query_db(self, query, data=None): 14 | with self.connection.cursor() as cursor: 15 | try: 16 | query = cursor.mogrify(query, data) 17 | print("Running Query:", query) 18 | 19 | executable = cursor.execute(query, data) 20 | if query.lower().find("insert") >= 0: 21 | # La consulta INSERT regresan el id del nuevo registro 22 | self.connection.commit() 23 | return cursor.lastrowid 24 | elif query.lower().find("select") >= 0: 25 | # La consulta SELECT regresa una LISTA DE DICCIONARIOS con los datos 26 | result = cursor.fetchall() 27 | return result 28 | else: 29 | # UPDATE y DELETE no regresan nada 30 | self.connection.commit() 31 | except Exception as e: 32 | # En caso de alguna falla, regresa FALSE 33 | print("Something went wrong", e) 34 | return False 35 | finally: 36 | # Cerramos conexión 37 | self.connection.close() 38 | # connectToMySQL recibe el nombre de la base de datos y genera una instancia de MySQLConnection 39 | def connectToMySQL(db): 40 | return MySQLConnection(db) -------------------------------------------------------------------------------- /Python/3.- Flask/eventos/flask_app/config/mysqlconnection.py: -------------------------------------------------------------------------------- 1 | import pymysql.cursors #Utilizamos un cursos para interactuar con BD 2 | class MySQLConnection: #Clase que permite generar instancia de conexión con BD 3 | def __init__(self, db): 4 | connection = pymysql.connect(host = 'localhost', 5 | user = 'root', # Cambia el usuario y contraseña 6 | password = '', 7 | db = db, 8 | charset = 'utf8mb4', 9 | cursorclass = pymysql.cursors.DictCursor, 10 | autocommit = True) 11 | self.connection = connection #Establecemos conexión con BD 12 | #El método que se encarga de la consulta 13 | def query_db(self, query, data=None): 14 | with self.connection.cursor() as cursor: 15 | try: 16 | query = cursor.mogrify(query, data) 17 | print("Running Query:", query) 18 | 19 | executable = cursor.execute(query, data) 20 | if query.lower().find("insert") >= 0: 21 | # La consulta INSERT regresan el id del nuevo registro 22 | self.connection.commit() 23 | return cursor.lastrowid 24 | elif query.lower().find("select") >= 0: 25 | # La consulta SELECT regresa una LISTA DE DICCIONARIOS con los datos 26 | result = cursor.fetchall() 27 | return result 28 | else: 29 | # UPDATE y DELETE no regresan nada 30 | self.connection.commit() 31 | except Exception as e: 32 | # En caso de alguna falla, regresa FALSE 33 | print("Something went wrong", e) 34 | return False 35 | finally: 36 | # Cerramos conexión 37 | self.connection.close() 38 | # connectToMySQL recibe el nombre de la base de datos y genera una instancia de MySQLConnection 39 | def connectToMySQL(db): 40 | return MySQLConnection(db) -------------------------------------------------------------------------------- /Python/3.- Flask/registro_login/flask_app/config/mysqlconnection.py: -------------------------------------------------------------------------------- 1 | import pymysql.cursors #Utilizamos un cursos para interactuar con BD 2 | class MySQLConnection: #Clase que permite generar instancia de conexión con BD 3 | def __init__(self, db): 4 | connection = pymysql.connect(host = 'localhost', 5 | user = 'root', # Cambia el usuario y contraseña 6 | password = '', 7 | db = db, 8 | charset = 'utf8mb4', 9 | cursorclass = pymysql.cursors.DictCursor, 10 | autocommit = True) 11 | self.connection = connection #Establecemos conexión con BD 12 | #El método que se encarga de la consulta 13 | def query_db(self, query, data=None): 14 | with self.connection.cursor() as cursor: 15 | try: 16 | query = cursor.mogrify(query, data) 17 | print("Running Query:", query) 18 | 19 | executable = cursor.execute(query, data) 20 | if query.lower().find("insert") >= 0: 21 | # La consulta INSERT regresan el id del nuevo registro 22 | self.connection.commit() 23 | return cursor.lastrowid 24 | elif query.lower().find("select") >= 0: 25 | # La consulta SELECT regresa una LISTA DE DICCIONARIOS con los datos 26 | result = cursor.fetchall() 27 | return result 28 | else: 29 | # UPDATE y DELETE no regresan nada 30 | self.connection.commit() 31 | except Exception as e: 32 | # En caso de alguna falla, regresa FALSE 33 | print("Something went wrong", e) 34 | return False 35 | finally: 36 | # Cerramos conexión 37 | self.connection.close() 38 | # connectToMySQL recibe el nombre de la base de datos y genera una instancia de MySQLConnection 39 | def connectToMySQL(db): 40 | return MySQLConnection(db) -------------------------------------------------------------------------------- /Python/4.- APIs/registro_login/flask_app/config/mysqlconnection.py: -------------------------------------------------------------------------------- 1 | import pymysql.cursors #Utilizamos un cursos para interactuar con BD 2 | class MySQLConnection: #Clase que permite generar instancia de conexión con BD 3 | def __init__(self, db): 4 | connection = pymysql.connect(host = 'localhost', 5 | user = 'root', # Cambia el usuario y contraseña 6 | password = '', 7 | db = db, 8 | charset = 'utf8mb4', 9 | cursorclass = pymysql.cursors.DictCursor, 10 | autocommit = True) 11 | self.connection = connection #Establecemos conexión con BD 12 | #El método que se encarga de la consulta 13 | def query_db(self, query, data=None): 14 | with self.connection.cursor() as cursor: 15 | try: 16 | query = cursor.mogrify(query, data) 17 | print("Running Query:", query) 18 | 19 | executable = cursor.execute(query, data) 20 | if query.lower().find("insert") >= 0: 21 | # La consulta INSERT regresan el id del nuevo registro 22 | self.connection.commit() 23 | return cursor.lastrowid 24 | elif query.lower().find("select") >= 0: 25 | # La consulta SELECT regresa una LISTA DE DICCIONARIOS con los datos 26 | result = cursor.fetchall() 27 | return result 28 | else: 29 | # UPDATE y DELETE no regresan nada 30 | self.connection.commit() 31 | except Exception as e: 32 | # En caso de alguna falla, regresa FALSE 33 | print("Something went wrong", e) 34 | return False 35 | finally: 36 | # Cerramos conexión 37 | self.connection.close() 38 | # connectToMySQL recibe el nombre de la base de datos y genera una instancia de MySQLConnection 39 | def connectToMySQL(db): 40 | return MySQLConnection(db) -------------------------------------------------------------------------------- /Python/3.- Flask/crud_modularizado/flask_app/config/mysqlconnection.py: -------------------------------------------------------------------------------- 1 | import pymysql.cursors #Utilizamos un cursos para interactuar con BD 2 | class MySQLConnection: #Clase que permite generar instancia de conexión con BD 3 | def __init__(self, db): 4 | connection = pymysql.connect(host = 'localhost', 5 | user = 'root', # Cambia el usuario y contraseña 6 | password = '', 7 | db = db, 8 | charset = 'utf8mb4', 9 | cursorclass = pymysql.cursors.DictCursor, 10 | autocommit = True) 11 | self.connection = connection #Establecemos conexión con BD 12 | #El método que se encarga de la consulta 13 | def query_db(self, query, data=None): 14 | with self.connection.cursor() as cursor: 15 | try: 16 | query = cursor.mogrify(query, data) 17 | print("Running Query:", query) 18 | 19 | executable = cursor.execute(query, data) 20 | if query.lower().find("insert") >= 0: 21 | # La consulta INSERT regresan el id del nuevo registro 22 | self.connection.commit() 23 | return cursor.lastrowid 24 | elif query.lower().find("select") >= 0: 25 | # La consulta SELECT regresa una LISTA DE DICCIONARIOS con los datos 26 | result = cursor.fetchall() 27 | return result 28 | else: 29 | # UPDATE y DELETE no regresan nada 30 | self.connection.commit() 31 | except Exception as e: 32 | # En caso de alguna falla, regresa FALSE 33 | print("Something went wrong", e) 34 | return False 35 | finally: 36 | # Cerramos conexión 37 | self.connection.close() 38 | # connectToMySQL recibe el nombre de la base de datos y genera una instancia de MySQLConnection 39 | def connectToMySQL(db): 40 | return MySQLConnection(db) -------------------------------------------------------------------------------- /Python/3.- Flask/estudiantes_cursos/flask_app/config/mysqlconnection.py: -------------------------------------------------------------------------------- 1 | import pymysql.cursors #Utilizamos un cursos para interactuar con BD 2 | class MySQLConnection: #Clase que permite generar instancia de conexión con BD 3 | def __init__(self, db): 4 | connection = pymysql.connect(host = 'localhost', 5 | user = 'root', # Cambia el usuario y contraseña 6 | password = '', 7 | db = db, 8 | charset = 'utf8mb4', 9 | cursorclass = pymysql.cursors.DictCursor, 10 | autocommit = True) 11 | self.connection = connection #Establecemos conexión con BD 12 | #El método que se encarga de la consulta 13 | def query_db(self, query, data=None): 14 | with self.connection.cursor() as cursor: 15 | try: 16 | query = cursor.mogrify(query, data) 17 | print("Running Query:", query) 18 | 19 | executable = cursor.execute(query, data) 20 | if query.lower().find("insert") >= 0: 21 | # La consulta INSERT regresan el id del nuevo registro 22 | self.connection.commit() 23 | return cursor.lastrowid 24 | elif query.lower().find("select") >= 0: 25 | # La consulta SELECT regresa una LISTA DE DICCIONARIOS con los datos 26 | result = cursor.fetchall() 27 | return result 28 | else: 29 | # UPDATE y DELETE no regresan nada 30 | self.connection.commit() 31 | except Exception as e: 32 | # En caso de alguna falla, regresa FALSE 33 | print("Something went wrong", e) 34 | return False 35 | finally: 36 | # Cerramos conexión 37 | self.connection.close() 38 | # connectToMySQL recibe el nombre de la base de datos y genera una instancia de MySQLConnection 39 | def connectToMySQL(db): 40 | return MySQLConnection(db) -------------------------------------------------------------------------------- /Python/3.- Flask/foro_publicaciones/flask_app/config/mysqlconnection.py: -------------------------------------------------------------------------------- 1 | import pymysql.cursors #Utilizamos un cursos para interactuar con BD 2 | class MySQLConnection: #Clase que permite generar instancia de conexión con BD 3 | def __init__(self, db): 4 | connection = pymysql.connect(host = 'localhost', 5 | user = 'root', # Cambia el usuario y contraseña 6 | password = '', 7 | db = db, 8 | charset = 'utf8mb4', 9 | cursorclass = pymysql.cursors.DictCursor, 10 | autocommit = True) 11 | self.connection = connection #Establecemos conexión con BD 12 | #El método que se encarga de la consulta 13 | def query_db(self, query, data=None): 14 | with self.connection.cursor() as cursor: 15 | try: 16 | query = cursor.mogrify(query, data) 17 | print("Running Query:", query) 18 | 19 | executable = cursor.execute(query, data) 20 | if query.lower().find("insert") >= 0: 21 | # La consulta INSERT regresan el id del nuevo registro 22 | self.connection.commit() 23 | return cursor.lastrowid 24 | elif query.lower().find("select") >= 0: 25 | # La consulta SELECT regresa una LISTA DE DICCIONARIOS con los datos 26 | result = cursor.fetchall() 27 | return result 28 | else: 29 | # UPDATE y DELETE no regresan nada 30 | self.connection.commit() 31 | except Exception as e: 32 | # En caso de alguna falla, regresa FALSE 33 | print("Something went wrong", e) 34 | return False 35 | finally: 36 | # Cerramos conexión 37 | self.connection.close() 38 | # connectToMySQL recibe el nombre de la base de datos y genera una instancia de MySQLConnection 39 | def connectToMySQL(db): 40 | return MySQLConnection(db) -------------------------------------------------------------------------------- /Python/3.- Flask/eventos/flask_app/templates/dashboard.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Dashboard 7 | 8 | 9 | 10 |
11 |
12 |

Bienvenid@ {{user.first_name}} {{user.last_name}}

13 | Crear Evento 14 | Cerrar Sesión 15 |
16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | {% for event in events %} 29 | 30 | 31 | 32 | 33 | 34 | 41 | 42 | {% endfor %} 43 | 44 |
NombreUbicaciónFechaPublicado porAcciones
{{event.name}}{{event.location}}{{event.date}}{{event.user_name}} 35 | Ver 36 | {% if session['user_id'] == event.user_id %} 37 | Editar 38 | Borrar 39 | {% endif %} 40 |
45 |
46 |
47 | 48 | -------------------------------------------------------------------------------- /Python/3.- Flask/eventos/flask_app/bd/script.sql: -------------------------------------------------------------------------------- 1 | -- MySQL Workbench Forward Engineering 2 | 3 | SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; 4 | SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; 5 | SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; 6 | 7 | -- ----------------------------------------------------- 8 | -- Schema events_bc 9 | -- ----------------------------------------------------- 10 | 11 | -- ----------------------------------------------------- 12 | -- Schema events_bc 13 | -- ----------------------------------------------------- 14 | CREATE SCHEMA IF NOT EXISTS `events_bc` DEFAULT CHARACTER SET utf8 ; 15 | USE `events_bc` ; 16 | 17 | -- ----------------------------------------------------- 18 | -- Table `events_bc`.`users` 19 | -- ----------------------------------------------------- 20 | CREATE TABLE IF NOT EXISTS `events_bc`.`users` ( 21 | `id` INT NOT NULL AUTO_INCREMENT, 22 | `first_name` VARCHAR(100) NULL, 23 | `last_name` VARCHAR(100) NULL, 24 | `email` VARCHAR(200) NULL, 25 | `password` VARCHAR(255) NULL, 26 | `created_at` DATETIME NULL DEFAULT CURRENT_TIMESTAMP, 27 | `updated_at` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 28 | PRIMARY KEY (`id`)) 29 | ENGINE = InnoDB; 30 | 31 | 32 | -- ----------------------------------------------------- 33 | -- Table `events_bc`.`events` 34 | -- ----------------------------------------------------- 35 | CREATE TABLE IF NOT EXISTS `events_bc`.`events` ( 36 | `id` INT NOT NULL AUTO_INCREMENT, 37 | `name` VARCHAR(45) NULL, 38 | `location` VARCHAR(100) NULL, 39 | `date` DATE NULL, 40 | `details` TEXT NULL, 41 | `created_at` DATETIME NULL DEFAULT CURRENT_TIMESTAMP, 42 | `updated_at` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 43 | `user_id` INT NOT NULL, 44 | PRIMARY KEY (`id`), 45 | INDEX `fk_events_users_idx` (`user_id` ASC), 46 | CONSTRAINT `fk_events_users` 47 | FOREIGN KEY (`user_id`) 48 | REFERENCES `events_bc`.`users` (`id`) 49 | ON DELETE NO ACTION 50 | ON UPDATE NO ACTION) 51 | ENGINE = InnoDB; 52 | 53 | 54 | SET SQL_MODE=@OLD_SQL_MODE; 55 | SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; 56 | SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; 57 | -------------------------------------------------------------------------------- /Python/3.- Flask/foro_publicaciones/flask_app/bd/script.sql: -------------------------------------------------------------------------------- 1 | -- MySQL Workbench Forward Engineering 2 | 3 | SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; 4 | SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; 5 | SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; 6 | 7 | -- ----------------------------------------------------- 8 | -- Schema foro_publicaciones 9 | -- ----------------------------------------------------- 10 | 11 | -- ----------------------------------------------------- 12 | -- Schema foro_publicaciones 13 | -- ----------------------------------------------------- 14 | CREATE SCHEMA IF NOT EXISTS `foro_publicaciones` DEFAULT CHARACTER SET utf8 ; 15 | USE `foro_publicaciones` ; 16 | 17 | -- ----------------------------------------------------- 18 | -- Table `foro_publicaciones`.`users` 19 | -- ----------------------------------------------------- 20 | CREATE TABLE IF NOT EXISTS `foro_publicaciones`.`users` ( 21 | `id` INT NOT NULL AUTO_INCREMENT, 22 | `first_name` VARCHAR(100) NULL, 23 | `last_name` VARCHAR(100) NULL, 24 | `email` VARCHAR(200) NULL, 25 | `password` VARCHAR(255) NULL, 26 | `created_at` DATETIME NULL DEFAULT CURRENT_TIMESTAMP, 27 | `updated_at` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 28 | PRIMARY KEY (`id`)) 29 | ENGINE = InnoDB; 30 | 31 | 32 | -- ----------------------------------------------------- 33 | -- Table `foro_publicaciones`.`posts` 34 | -- ----------------------------------------------------- 35 | CREATE TABLE IF NOT EXISTS `foro_publicaciones`.`posts` ( 36 | `id` INT NOT NULL AUTO_INCREMENT, 37 | `content` TEXT NOT NULL, 38 | `created_at` DATETIME NULL DEFAULT CURRENT_TIMESTAMP, 39 | `updated_at` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 40 | `user_id` INT NOT NULL, 41 | PRIMARY KEY (`id`), 42 | INDEX `fk_posts_users_idx` (`user_id` ASC), 43 | CONSTRAINT `fk_posts_users` 44 | FOREIGN KEY (`user_id`) 45 | REFERENCES `foro_publicaciones`.`users` (`id`) 46 | ON DELETE NO ACTION 47 | ON UPDATE NO ACTION) 48 | ENGINE = InnoDB; 49 | 50 | 51 | SET SQL_MODE=@OLD_SQL_MODE; 52 | SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; 53 | SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; 54 | -------------------------------------------------------------------------------- /Fundamentos de la Web/5.- Javascript/pagina-perfil/js/script.js: -------------------------------------------------------------------------------- 1 | console.log("¡Entramos a la página!"); 2 | 3 | function alerta() { 4 | alert("Hiciste click en profile"); 5 | console.log("El usuario hizo click en el título Profile"); 6 | } 7 | 8 | //elemento = View More 9 | /* this se refiere al elemento con el cual estoy interactuando */ 10 | function eliminar(elemento) { 11 | elemento.remove(); 12 | } 13 | 14 | //elemento = Home 15 | function cambiar_texto(abc1) { 16 | //innerText -> texto interno 17 | abc1.innerText = "Texto distinto"; 18 | } 19 | 20 | function cambia_imagen(elemento_img) { 21 | elemento_img.src = "images/todd-s.jpg"; 22 | } 23 | 24 | function regresa_imagen(elemento_img) { 25 | //src -> la ruta de la imagen 26 | elemento_img.src = "images/jane-m.jpg"; 27 | } 28 | 29 | function editar_perfil() { 30 | //querySelector -> seleccionar cualquier elemento de mi documento HTML, usando selectores 31 | 32 | //.getElementById("identificador") 33 | var elemento_nombre = document.querySelector("#nombre"); 34 | elemento_nombre.innerText = "Cynthia Castillo"; 35 | 36 | //.getElementByClassname("clase") 37 | var lugar = document.querySelector('.lugar'); 38 | lugar.innerText = "Monterrey"; 39 | //.style -> cambia estilos 40 | //.propiedadACambiar 41 | lugar.style.color = "purple"; 42 | //.lugar { text-transform: "uppercase" } 43 | lugar.style.textTransform = "uppercase"; 44 | 45 | var parrafito = document.querySelector(".card-body p"); //Primer párrafo 46 | //innerHTML -> ingresar texto+etiquetas 47 | parrafito.innerHTML = "Desarrolladora, Instructora de Programación
Mamá gatuna"; 48 | 49 | //.querySelectorAll -> Lista/array 50 | /* 51 | var parrafos = document.querySelectorAll('.card-body p'); 52 | parrafos[0] = primerparrafo; 53 | parrafos[1] = segundoparrafo; 54 | */ 55 | 56 | } 57 | 58 | function cambiar_mode() { 59 | var elemento_body = document.querySelector("body"); 60 | //classList -> array con las clases que tiene mi elemento 61 | 62 | if(elemento_body.classList.contains("dark-mode")) { 63 | elemento_body.classList.remove("dark-mode"); 64 | } else { 65 | elemento_body.classList.add("dark-mode"); 66 | } 67 | 68 | 69 | } -------------------------------------------------------------------------------- /Fundamentos de la Web/5.- Javascript/reto_pokemon.js: -------------------------------------------------------------------------------- 1 | var pokemon = [ //Arreglo 2 | { "id": 1, "name": "Bulbasaur", "types": ["poison", "grass"] }, 3 | { "id": 5, "name": "Charmeleon", "types": ["fire"] }, 4 | { "id": 9, "name": "Blastoise", "types": ["water"] }, 5 | { "id": 12, "name": "Butterfree", "types": ["bug", "flying"] }, 6 | { "id": 16, "name": "Pidgey", "types": ["normal", "flying"] }, 7 | { "id": 23, "name": "Ekans", "types": ["poison"] }, 8 | { "id": 24, "name": "Arbok", "types": ["poison"] }, 9 | { "id": 25, "name": "Pikachu", "types": ["electric"] }, 10 | { "id": 37, "name": "Vulpix", "types": ["fire"] }, 11 | { "id": 52, "name": "Meowth", "types": ["normal"] }, 12 | { "id": 63, "name": "Abra", "types": ["psychic"] }, 13 | { "id": 67, "name": "Machamp", "types": ["fighting"] }, 14 | { "id": 72, "name": "Tentacool", "types": ["water", "poison"] }, 15 | { "id": 74, "name": "Geodude", "types": ["rock", "ground"] }, 16 | { "id": 87, "name": "Dewgong", "types": ["water", "ice"] }, 17 | { "id": 98, "name": "Krabby", "types": ["water"] }, 18 | { "id": 115, "name": "Kangaskhan", "types": ["normal"] }, 19 | { "id": 122, "name": "Mr. Mime", "types": ["psychic"] }, 20 | { "id": 133, "name": "Eevee", "types": ["normal"] }, 21 | { "id": 144, "name": "Articuno", "types": ["ice", "flying"] }, 22 | { "id": 145, "name": "Zapdos", "types": ["electric", "flying"] }, 23 | { "id": 146, "name": "Moltres", "types": ["fire", "flying"] }, 24 | { "id": 148, "name": "Dragonair", "types": ["dragon"] } 25 | ]; 26 | 27 | /* PRINT all the NAMES of the pokemons that have ID greater than 99 28 | Imprimir todos los NOMBRES de pokemones con ID mayor a 99 29 | */ 30 | for(var i=0; i99){ 32 | console.log(pokemon[i].name); 33 | } 34 | } 35 | 36 | /* PRINT the pokémon objects whose id is evenly divisible by 3 37 | Imprimir el OBJETO en el cual el id es divisible entre 3 38 | 10 / 5 = 2 39 | 10 % 3 = 1 40 | 10 % 3 == 1 -> true o false 41 | */ 42 | 43 | /* PRINT the pokémon objects that have more than one type 44 | Imprimir el OBJETO con más de un tipo 45 | */ 46 | 47 | /* PRINT the names of the pokémon whose only type is "poison" 48 | Imprimir NOMBRE de pokemon que SOLO TIENE tipo "poison" 49 | */ -------------------------------------------------------------------------------- /Python/3.- Flask/estudiantes_cursos/flask_app/bd/script.sql: -------------------------------------------------------------------------------- 1 | -- MySQL Workbench Forward Engineering 2 | 3 | SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; 4 | SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; 5 | SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; 6 | 7 | -- ----------------------------------------------------- 8 | -- Schema esquema_estudiantes_cursos 9 | -- ----------------------------------------------------- 10 | DROP SCHEMA IF EXISTS `esquema_estudiantes_cursos` ; 11 | 12 | -- ----------------------------------------------------- 13 | -- Schema esquema_estudiantes_cursos 14 | -- ----------------------------------------------------- 15 | CREATE SCHEMA IF NOT EXISTS `esquema_estudiantes_cursos` DEFAULT CHARACTER SET utf8 ; 16 | USE `esquema_estudiantes_cursos` ; 17 | 18 | -- ----------------------------------------------------- 19 | -- Table `esquema_estudiantes_cursos`.`cursos` 20 | -- ----------------------------------------------------- 21 | CREATE TABLE IF NOT EXISTS `esquema_estudiantes_cursos`.`cursos` ( 22 | `id` INT NOT NULL AUTO_INCREMENT, 23 | `nombre` VARCHAR(45) NULL, 24 | `created_at` DATETIME NULL DEFAULT CURRENT_TIMESTAMP, 25 | `updated_at` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 26 | PRIMARY KEY (`id`)) 27 | ENGINE = InnoDB; 28 | 29 | 30 | -- ----------------------------------------------------- 31 | -- Table `esquema_estudiantes_cursos`.`estudiantes` 32 | -- ----------------------------------------------------- 33 | CREATE TABLE IF NOT EXISTS `esquema_estudiantes_cursos`.`estudiantes` ( 34 | `id` INT NOT NULL AUTO_INCREMENT, 35 | `nombre` VARCHAR(45) NULL, 36 | `apellido` VARCHAR(45) NULL, 37 | `edad` INT NULL, 38 | `created_at` DATETIME NULL DEFAULT CURRENT_TIMESTAMP, 39 | `updated_at` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 40 | `curso_id` INT NOT NULL, 41 | PRIMARY KEY (`id`), 42 | INDEX `fk_estudiantes_cursos_idx` (`curso_id` ASC), 43 | CONSTRAINT `fk_estudiantes_cursos` 44 | FOREIGN KEY (`curso_id`) 45 | REFERENCES `esquema_estudiantes_cursos`.`cursos` (`id`) 46 | ON DELETE NO ACTION 47 | ON UPDATE NO ACTION) 48 | ENGINE = InnoDB; 49 | 50 | 51 | SET SQL_MODE=@OLD_SQL_MODE; 52 | SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; 53 | SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; 54 | -------------------------------------------------------------------------------- /Fundamentos de la Web/5.- Javascript/me-gusta/megusta2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Me gusta 2 7 | 8 | 9 | 10 |
11 | Network 12 |
13 |
14 |
15 | Gatito 16 |

Juana de Arco

17 |
18 |
19 |

Your Feed

20 |
21 |
22 |

Elena de Troya

23 |

24 | 25 | 0 like(s) 26 | 27 |

28 |
29 |

30 | Lorem ipsum dolor, sit amet consectetur adipisicing elit. Debitis, expedita. 31 |

32 |
33 |
34 |
35 |

Elena de Troya

36 |

37 | 38 | 0 like(s) 39 | 40 |

41 |
42 |

43 | Lorem ipsum dolor, sit amet consectetur adipisicing elit. Debitis, expedita. 44 |

45 |
46 |
47 |
48 |

Elena de Troya

49 |

50 | 51 | 0 like(s) 52 | 53 |

54 |
55 |

56 | Lorem ipsum dolor, sit amet consectetur adipisicing elit. Debitis, expedita. 57 |

58 |
59 |
60 |
61 | 62 | 63 | -------------------------------------------------------------------------------- /Fundamentos de la Web/5.- Javascript/tiempo-local/js/script.js: -------------------------------------------------------------------------------- 1 | alert("Cargando Reporte del Clima"); 2 | 3 | const temperatures = { 4 | BuenosAires: ["22C 15C", "23C 28C", "21C 23C", "14C 18C", "12C 15C"], 5 | CiudadDeMexico: ["23C 15C", "24C 28C", "23C 23C", "14C 18C", "10C 15C"], 6 | Santiago: ["24C 15C", "25C 28C", "21C 24C", "14C 13C", "16C 15C"], 7 | SaoPaulo: ["25C 15C", "26C 28C", "21C 26C", "13C 18C", "19C 15C"], 8 | Quito: ["26C 15C", "27C 28C", "21C 28C", "11C 18C", "18C 15C"], 9 | } //ACÁ tenemos un objeto con nuestras temperaturas si? 10 | 11 | /* 12 | temperatures.BuenosAires = ["22C 15C", "23C 28C", "21C 23C", "14C 18C", "12C 15C"] 13 | 14 | temperatures.BuenosAires[0] = "22C 15C" 15 | */ 16 | 17 | 18 | 19 | 20 | function eliminar_cookies() { 21 | let pie_de_pagina = document.querySelector("footer"); 22 | pie_de_pagina.remove(); //Elmina el elemento 23 | } 24 | 25 | function eliminar(elemento) { 26 | elemento.remove(); 27 | } 28 | 29 | function cambiar_temperatura(elemento, ciudadSelect) { 30 | //elemento = Buenos Aires 31 | //ciudad = Buenos Aires 32 | let ciudad = elemento.innerText; 33 | console.log(ciudad); 34 | 35 | //.innerText -> texto interno 36 | let h2_ciudad = document.querySelector("#titulo_ciudad"); 37 | h2_ciudad.innerText = ciudad; 38 | 39 | //SELECCIONAMOS todoo los campos de temperaturas: 40 | let temperaturas = document.querySelectorAll(".temperatura_label"); //Regresa una lista con todos los que cumplen con ese querySelector 41 | 42 | /* 43 | temperaturas = [ 44 |

22C 15C

, 45 |

22C 15C

, 46 |

22C 15C

, 47 |

22C 15C

, 48 |

22C 15C

49 | ] 50 | */ 51 | 52 | 53 | //ciudadSelect = BuenosAires 54 | 55 | //VAMOS A VERLAS EN CONSOLA 56 | console.log(temperaturas); 57 | 58 | //la lista de temperaturas para esa ciudad 59 | console.log(temperatures[ciudadSelect]);//ESTO SERIA LAS TEMPERATURAS SELECCIONADAS DEL OBJETO DE TEMPERATURAS,SI? 60 | temperaturas.forEach((temp, indice) => { 61 | //temp =

22C 15C

62 | console.log(temp); 63 | temp.innerText = temperatures[ciudadSelect][indice]; 64 | //Selecciona la ciudad correspondiente y lo hace indice por indice 65 | }) 66 | 67 | } 68 | -------------------------------------------------------------------------------- /AWS/Instrucciones.txt: -------------------------------------------------------------------------------- 1 | -Abrir el proyecto que queremos subir 2 | -Crear el archivo requirements.txt (pipenv requirements > requirements.txt) 3 | -Crear .gitignore (https://www.toptal.com/developers/gitignore/api/flask) 4 | -Crear repositorio remoto y conectarlo con el proyecto 5 | -Generamos la instancia 6 | *Lanzar instancia 7 | *Ubuntu 22.04 8 | *t2.micro 9 | *Generamos el par de claves 10 | *Grupo de seguridad: SSH elegimos nuestra IP, Tráfico HTTP y HTTPS desde Internet 11 | *Lanzar instancia 12 | 13 | -Cambiar los permisos de las claves 14 | -Conectarnos al servidor con SSH 15 | -sudo apt-get update 16 | -sudo apt-get install python3-pip nginx git -y 17 | -sudo apt-get update 18 | -sudo apt-get install python3-venv 19 | -sudo apt-get install mysql-server 20 | -sudo apt-get update 21 | -sudo mysql -uroot -p 22 | -ALTER USER 'root'@'localhost' IDENTIFIED with mysql_native_password BY 'root'; 23 | -FLUSH PRIVILEGES; 24 | -quit 25 | -sudo mysql_secure_installation 26 | -2 no, 3 Y 27 | -mysql -uroot -p 28 | -Copiar y pegar el script.sql 29 | -git clone {{ url copied from github project }} 30 | -cd {{ repo_name }} 31 | -python3 -m venv venv 32 | -source venv/bin/activate 33 | -pip3 install -r requirements.txt 34 | -pip3 install gunicorn==19.6.0 35 | -sudo vim wsgi.py 36 | -i 37 | from server import app as application 38 | if __name__ == "__main__": 39 | application.run() 40 | 41 | esc :wq 42 | 43 | -gunicorn --bind 0.0.0.0:5000 wsgi:application 44 | -Ctrl + C 45 | -deactivate 46 | -sudo vim /etc/systemd/system/gunicorn.service 47 | -i 48 | [Unit] 49 | Description=Gunicorn instance 50 | After=network.target 51 | [Service] 52 | User=ubuntu 53 | Group=www-data 54 | WorkingDirectory=/home/ubuntu/{{repo name}} 55 | Environment="PATH=/home/ubuntu/{{repo name}}/venv/bin" 56 | ExecStart=/home/ubuntu/{{repo name}}/venv/bin/gunicorn --workers 3 --bind unix:{{project}}.sock -m 007 wsgi:application 57 | [Install] 58 | WantedBy=multi-user.target 59 | 60 | -sudo systemctl start gunicorn 61 | -sudo systemctl enable gunicorn 62 | -ls (debe aparecer un .sock) 63 | 64 | -sudo vim /etc/nginx/sites-available/{{project}} 65 | 66 | server { 67 | listen 80; 68 | server_name {{your public ip}}; 69 | location / { 70 | include proxy_params; 71 | proxy_pass http://unix:/home/ubuntu/{{repo name}}/{{project}}.sock; 72 | } 73 | } 74 | 75 | -sudo ln -s /etc/nginx/sites-available/{{project}} /etc/nginx/sites-enabled 76 | -sudo nginx -t 77 | 78 | -sudo rm /etc/nginx/sites-enabled/default 79 | -sudo service nginx restart 80 | -sudo chmod 755 /home/ubuntu 81 | -------------------------------------------------------------------------------- /Python/3.- Flask/foro_publicaciones/flask_app/templates/dashboard.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Dashboard 7 | 8 | 9 | 10 |
11 |
12 |

Forum

13 |

Welcolme {{user.first_name}} {{user.last_name}}

14 | Log out 15 |
16 |
17 |
18 |
19 |
20 | 21 | 22 | {% with messages = get_flashed_messages(category_filter=['post']) %} 23 | {% if messages %} 24 |
25 | {% for message in messages %} 26 |

{{message}}

27 | {% endfor %} 28 |
29 | {% endif %} 30 | {% endwith %} 31 | 32 |
33 | 34 | 35 |
36 |
37 |
38 | 39 |

Todas las publicaciones

40 | {% for post in posts %} 41 |
42 |
43 |

{{post.user_name}} - {{post.created_at.strftime("%d %B, %Y")}}

44 |

45 | {{post.content}} 46 |

47 | {% if session["user_id"] == post.user_id %} 48 | Borrar 49 | {% endif %} 50 |
51 |
52 | {% endfor %} 53 |
54 | 55 | -------------------------------------------------------------------------------- /Python/3.- Flask/registro_login/flask_app/controllers/users_controller.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, render_template, redirect, request, session, flash 2 | from flask_app import app 3 | 4 | #Importamos los modelos 5 | from flask_app.models.user import User 6 | 7 | #Importar BCrypt 8 | from flask_bcrypt import Bcrypt 9 | bcrypt = Bcrypt(app) 10 | 11 | #Plantilla que muestra formularios 12 | @app.route("/") 13 | def index(): 14 | return render_template("index.html") 15 | 16 | #Ruta que recibe el formulario 17 | @app.route("/register", methods=['POST']) 18 | def register(): 19 | #request.form = {"first_name": "Elena", "last_name": "De Troya"....} 20 | 21 | #Validar la info que recibimos 22 | if not User.validate_user(request.form): 23 | #No es valida la info, redirecciono al form 24 | return redirect("/") 25 | 26 | #Hashear contraseña 27 | pass_hash = bcrypt.generate_password_hash(request.form["password"]) 28 | 29 | #Crear un diccionario que simule el form, incluyendo la contraseña hasheada 30 | form = { 31 | "first_name": request.form["first_name"], 32 | "last_name": request.form["last_name"], 33 | "email": request.form["email"], 34 | "password": pass_hash 35 | } 36 | 37 | id = User.save(form) #Recibo el ID del nuevo usuario 1 38 | session["user_id"] = id 39 | return redirect("/dashboard") 40 | 41 | @app.route("/dashboard") 42 | def dashboard(): 43 | #Verificar que el usuario haya iniciado sesión 44 | if 'user_id' not in session: 45 | return redirect("/") 46 | 47 | dicc = {"id": session['user_id']} 48 | user = User.get_by_id(dicc) #Obtener el objeto User 49 | 50 | return render_template("dashboard.html", user=user) 51 | 52 | @app.route("/login", methods=["POST"]) 53 | def login(): 54 | #request.form = {"email": "elena@codingdojo.com", "password": "Hola123"} 55 | #Verifico que el email esté en mi BD 56 | user = User.get_by_email(request.form) #Recibo False o recibo un objeto de Usuario 57 | 58 | if not user: #Si user = False 59 | flash("E-mail not found", "login") 60 | return redirect("/") 61 | 62 | #Si user SI ES objeto User 63 | #user = User() .id=1, .first_name="Elena", .last_name="De Troya"....... .password="$2asdansjdansdjkjasbabdans" 64 | if not bcrypt.check_password_hash(user.password, request.form["password"]): #(pass_hasheado, pass_nohasheado) 65 | flash("Password incorrect", "login") 66 | return redirect("/") 67 | 68 | session["user_id"] = user.id 69 | return redirect("/dashboard") 70 | 71 | @app.route("/logout") 72 | def logout(): 73 | session.clear() 74 | return redirect("/") -------------------------------------------------------------------------------- /Python/3.- Flask/eventos/flask_app/templates/edit.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Editar Evento 7 | 8 | 9 | 10 |
11 |
12 |

Editar Evento

13 | Inicio 14 | Cerrar Sesión 15 |
16 |
17 |
18 | 19 | {% with messages = get_flashed_messages(category_filter=['evento']) %} 20 | {% if messages %} 21 |
22 | {% for message in messages %} 23 |

{{message}}

24 | {% endfor %} 25 |
26 | {% endif %} 27 | {% endwith %} 28 |
29 |
30 | 31 | 32 |
33 |
34 | 35 | 36 |
37 |
38 | 39 | 40 |
41 |
42 | 43 | 44 |
45 | 46 | 47 | 48 |
49 |
50 |
51 |
52 | 53 | -------------------------------------------------------------------------------- /Fundamentos de la Web/5.- Javascript/me-gustav2/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Me gusta 7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 |
15 |

Red Social

16 |
17 |
18 |

Tu Feed

19 |
20 | 25 |
26 |
27 |
28 |

Juana de Arco

29 |

9 like(s)

30 | 31 |
32 |

33 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. 34 |

35 |
36 |
37 |
38 |

Pablo Picasso

39 |

12 like(s)

40 | 41 |
42 |

43 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. 44 |

45 |
46 |
47 |
48 |

Pedro Páramo

49 |

9 like(s)

50 | 51 |
52 |

53 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. 54 |

55 |
56 |
57 |
58 |
59 |
60 | 61 | 62 | -------------------------------------------------------------------------------- /Python/3.- Flask/eventos/flask_app/controllers/users_controller.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, render_template, redirect, request, session, flash 2 | from flask_app import app 3 | 4 | #Importamos los modelos 5 | from flask_app.models.user import User 6 | from flask_app.models.event import Event 7 | 8 | #Importar BCrypt 9 | from flask_bcrypt import Bcrypt 10 | bcrypt = Bcrypt(app) 11 | 12 | #Plantilla que muestra formularios 13 | @app.route("/") 14 | def index(): 15 | return render_template("index.html") 16 | 17 | #Ruta que recibe el formulario 18 | @app.route("/register", methods=['POST']) 19 | def register(): 20 | #request.form = {"first_name": "Elena", "last_name": "De Troya"....} 21 | 22 | #Validar la info que recibimos 23 | if not User.validate_user(request.form): 24 | #No es valida la info, redirecciono al form 25 | return redirect("/") 26 | 27 | #Hashear contraseña 28 | pass_hash = bcrypt.generate_password_hash(request.form["password"]) 29 | 30 | #Crear un diccionario que simule el form, incluyendo la contraseña hasheada 31 | form = { 32 | "first_name": request.form["first_name"], 33 | "last_name": request.form["last_name"], 34 | "email": request.form["email"], 35 | "password": pass_hash 36 | } 37 | 38 | id = User.save(form) #Recibo el ID del nuevo usuario 1 39 | session["user_id"] = id 40 | return redirect("/dashboard") 41 | 42 | @app.route("/dashboard") 43 | def dashboard(): 44 | #Verificar que el usuario haya iniciado sesión 45 | if 'user_id' not in session: 46 | return redirect("/") 47 | 48 | dicc = {"id": session['user_id']} 49 | user = User.get_by_id(dicc) #Obtener el objeto User 50 | 51 | events = Event.read_all() 52 | 53 | return render_template("dashboard.html", user=user, events=events) 54 | 55 | @app.route("/login", methods=["POST"]) 56 | def login(): 57 | #request.form = {"email": "elena@codingdojo.com", "password": "Hola123"} 58 | #Verifico que el email esté en mi BD 59 | user = User.get_by_email(request.form) #Recibo False o recibo un objeto de Usuario 60 | 61 | if not user: #Si user = False 62 | flash("E-mail not found", "login") 63 | return redirect("/") 64 | 65 | #Si user SI ES objeto User 66 | #user = User() .id=1, .first_name="Elena", .last_name="De Troya"....... .password="$2asdansjdansdjkjasbabdans" 67 | if not bcrypt.check_password_hash(user.password, request.form["password"]): #(pass_hasheado, pass_nohasheado) 68 | flash("Password incorrect", "login") 69 | return redirect("/") 70 | 71 | session["user_id"] = user.id 72 | return redirect("/dashboard") 73 | 74 | @app.route("/logout") 75 | def logout(): 76 | session.clear() 77 | return redirect("/") -------------------------------------------------------------------------------- /Python/4.- APIs/registro_login/flask_app/controllers/users_controller.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, render_template, redirect, request, session, flash, jsonify 2 | from flask_app import app 3 | 4 | #Importamos los modelos 5 | from flask_app.models.user import User 6 | 7 | #Importar BCrypt 8 | from flask_bcrypt import Bcrypt 9 | bcrypt = Bcrypt(app) 10 | 11 | #Plantilla que muestra formularios 12 | @app.route("/") 13 | def index(): 14 | return render_template("index.html") 15 | 16 | #Ruta que recibe el formulario 17 | @app.route("/register", methods=['POST']) 18 | def register(): 19 | #request.form = {"first_name": "Elena", "last_name": "De Troya"....} 20 | 21 | #Validar la info que recibimos 22 | if not User.validate_user(request.form): 23 | #No es valida la info, redirecciono al form 24 | return redirect("/") 25 | 26 | #Hashear contraseña 27 | pass_hash = bcrypt.generate_password_hash(request.form["password"]) 28 | 29 | #Crear un diccionario que simule el form, incluyendo la contraseña hasheada 30 | form = { 31 | "first_name": request.form["first_name"], 32 | "last_name": request.form["last_name"], 33 | "email": request.form["email"], 34 | "password": pass_hash 35 | } 36 | 37 | id = User.save(form) #Recibo el ID del nuevo usuario 1 38 | session["user_id"] = id 39 | return redirect("/dashboard") 40 | 41 | @app.route("/dashboard") 42 | def dashboard(): 43 | #Verificar que el usuario haya iniciado sesión 44 | if 'user_id' not in session: 45 | return redirect("/") 46 | 47 | dicc = {"id": session['user_id']} 48 | user = User.get_by_id(dicc) #Obtener el objeto User 49 | 50 | return render_template("dashboard.html", user=user) 51 | 52 | @app.route("/login", methods=["POST"]) 53 | def login(): 54 | #request.form = {"email": "elena@codingdojo.com", "password": "Hola123"} 55 | #Verifico que el email esté en mi BD 56 | user = User.get_by_email(request.form) #Recibo False o recibo un objeto de Usuario 57 | 58 | if not user: #Si user = False 59 | #flash("E-mail not found", "login") 60 | #return redirect("/") 61 | return jsonify(message="E-mail not found") 62 | 63 | #Si user SI ES objeto User 64 | #user = User() .id=1, .first_name="Elena", .last_name="De Troya"....... .password="$2asdansjdansdjkjasbabdans" 65 | if not bcrypt.check_password_hash(user.password, request.form["password"]): #(pass_hasheado, pass_nohasheado) 66 | #flash("Password incorrect", "login") 67 | #return redirect("/") 68 | return jsonify(message="Password incorrect") 69 | 70 | session["user_id"] = user.id 71 | #return redirect("/dashboard") 72 | return jsonify(message="success") 73 | 74 | @app.route("/logout") 75 | def logout(): 76 | session.clear() 77 | return redirect("/") -------------------------------------------------------------------------------- /Python/2.- OOP/Persona.py: -------------------------------------------------------------------------------- 1 | from Animal import Animal 2 | class Persona: 3 | 4 | #Atributo de Clase: es un atributo que pertenece a la clase completa y que el valor es compartido por todas las instancias 5 | escuela = "Coding Dojo LATAM" 6 | lista_personas = [] 7 | 8 | #Método constructor: se encarga de inicializar el objeto 9 | ''' 10 | self = juana 11 | nombre = "Juana" 12 | apellido = "De Arco" 13 | email = "juana@codingdojo.com" 14 | edad = 22 15 | ''' 16 | def __init__(self, name, last_name, e_mail, age, nombre_mascota, sonido_mascota): 17 | # Codigo 18 | self.nombre = name #juana.nombre = "Juana" 19 | self.apellido = last_name #juana.apellido = "De Arco" 20 | self.email = e_mail #juana.email = "juana@codingdojo.com" 21 | self.lineas_codigo = 0 #lineas de codigo que ha desarrollado 22 | self.edad = age #juana.edad = 22 23 | #self.mascota = animalito #juana.mascota = firulais 24 | self.mascota = Animal(nombre_mascota, sonido_mascota) 25 | 26 | 27 | # Cada nueva instancia se agrega a la lista de personas 28 | #lista_personas = [elena, juana] 29 | Persona.lista_personas.append(self) 30 | 31 | #self = elena 32 | def imprimir(self): 33 | print(self.nombre, self.apellido, self.email) 34 | 35 | #self es el objeto que invoca a la función 36 | #self = elena 37 | def saludar(self): 38 | print(f"Te saluda {self.nombre}. ¡Holiiii!") 39 | 40 | #self = juana 41 | #cantidad_lineas = 100 42 | #juana.lineas_codigo = 15 + 100 = 115 43 | def codificar(self, cantidad_lineas): 44 | self.lineas_codigo += cantidad_lineas 45 | 46 | #método de clase 47 | #cls se refiere a la clase que invoca al métodos 48 | ''' 49 | Persona.lista_personas = [elena, juana, pedro] 50 | cls = Persona 51 | p = elena 52 | Elena De Troya 18 53 | --- 54 | p = juana 55 | Juana De Arco 22 56 | --- 57 | p = pedro 58 | Pedro Paramo 32 59 | ''' 60 | @classmethod 61 | def imprimir_todos(cls): 62 | #cls = Persona 63 | for p in cls.lista_personas: 64 | p.imprimir() 65 | 66 | 67 | #Métodos estáticos: ayudantes/auxiliares 68 | @staticmethod 69 | def mayor_edad(edad): 70 | #edad = 22 71 | if edad < 18: 72 | return False 73 | else: 74 | return True 75 | 76 | 77 | 78 | def licencia_conducir(self): 79 | #mayor_edad(22) 80 | if(Persona.mayor_edad(self.edad)): 81 | print("Puedes obtener tu licencia") 82 | else: 83 | print("No tienes la mayoria de edad") 84 | 85 | def pasear_mascota(self): 86 | print("Estas paseando a tu mascota, y como se puso feliz hizo un sonido") 87 | self.mascota.hacer_sonido() 88 | 89 | -------------------------------------------------------------------------------- /Python/3.- Flask/foro_publicaciones/flask_app/controllers/users_controller.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, render_template, redirect, request, session, flash 2 | from flask_app import app 3 | 4 | #Importamos los modelos 5 | from flask_app.models.user import User 6 | from flask_app.models.post import Post 7 | 8 | #Importar BCrypt 9 | from flask_bcrypt import Bcrypt 10 | bcrypt = Bcrypt(app) 11 | 12 | #Plantilla que muestra formularios 13 | @app.route("/") 14 | def index(): 15 | return render_template("index.html") 16 | 17 | #Ruta que recibe el formulario 18 | @app.route("/register", methods=['POST']) 19 | def register(): 20 | #request.form = {"first_name": "Elena", "last_name": "De Troya"....} 21 | 22 | #Validar la info que recibimos 23 | if not User.validate_user(request.form): 24 | #No es valida la info, redirecciono al form 25 | return redirect("/") 26 | 27 | #Hashear contraseña 28 | pass_hash = bcrypt.generate_password_hash(request.form["password"]) 29 | 30 | #Crear un diccionario que simule el form, incluyendo la contraseña hasheada 31 | form = { 32 | "first_name": request.form["first_name"], 33 | "last_name": request.form["last_name"], 34 | "email": request.form["email"], 35 | "password": pass_hash 36 | } 37 | 38 | id = User.save(form) #Recibo el ID del nuevo usuario 1 39 | session["user_id"] = id 40 | return redirect("/dashboard") 41 | 42 | @app.route("/dashboard") 43 | def dashboard(): 44 | #Verificar que el usuario haya iniciado sesión 45 | if 'user_id' not in session: 46 | return redirect("/") 47 | 48 | dicc = {"id": session['user_id']} 49 | user = User.get_by_id(dicc) #Obtener el objeto User 50 | 51 | #Enviar todas las publicaciones 52 | posts = Post.get_all() 53 | 54 | return render_template("dashboard.html", user=user, posts=posts) 55 | 56 | @app.route("/login", methods=["POST"]) 57 | def login(): 58 | #request.form = {"email": "elena@codingdojo.com", "password": "Hola123"} 59 | #Verifico que el email esté en mi BD 60 | user = User.get_by_email(request.form) #Recibo False o recibo un objeto de Usuario 61 | 62 | if not user: #Si user = False 63 | flash("E-mail not found", "login") 64 | return redirect("/") 65 | 66 | #Si user SI ES objeto User 67 | #user = User() .id=1, .first_name="Elena", .last_name="De Troya"....... .password="$2asdansjdansdjkjasbabdans" 68 | if not bcrypt.check_password_hash(user.password, request.form["password"]): #(pass_hasheado, pass_nohasheado) 69 | flash("Password incorrect", "login") 70 | return redirect("/") 71 | 72 | session["user_id"] = user.id 73 | return redirect("/dashboard") 74 | 75 | @app.route("/logout") 76 | def logout(): 77 | session.clear() 78 | return redirect("/") 79 | 80 | #Objeto: user.id 81 | #Diccionario: session["user_id"] 82 | #Lista: result[0] -------------------------------------------------------------------------------- /Python/3.- Flask/crud/usuario.py: -------------------------------------------------------------------------------- 1 | from mysqlconnection import connectToMySQL 2 | class Usuario: 3 | 4 | def __init__(self, data): 5 | ''' 6 | data = {"id":1, "nombre": "Elena", "apellido": "De Troya", "email": "elena@cd.com", ...} 7 | ''' 8 | self.id = data["id"] 9 | self.nombre = data["nombre"] 10 | self.apellido = data["apellido"] 11 | self.email = data["email"] 12 | self.created_at = data["created_at"] 13 | self.updated_at = data["updated_at"] 14 | 15 | #Métodos que realicen las consultas 16 | @classmethod 17 | def guardar(cls, formulario): 18 | #formulario = {"nombre": "Juana", "apellido": "De Arco"....} 19 | consulta = "INSERT INTO usuarios (nombre, apellido, email) VALUES (%(nombre)s, %(apellido)s, %(email)s)" 20 | 21 | resultado = connectToMySQL('crud_bc').query_db(consulta, formulario) 22 | return resultado #el id del nuevo registro 23 | 24 | #Método que regrese todos los usuarios 25 | @classmethod 26 | def mostrar_usuarios(cls): 27 | query = "SELECT * FROM usuarios" 28 | resultado = connectToMySQL("crud_bc").query_db(query) #lista de diccionarios 29 | ''' 30 | resultado = [ 31 | {"id":1, "nombre": "Elena", "apellido": "De Troya", "email": "elena@cd.com", ...}, 32 | {"id":2,"nombre": "Juana", "apellido": "De Arco"...} 33 | ] 34 | ''' 35 | 36 | lista_usuarios = [] 37 | for u in resultado: 38 | #u = {"id":1, "nombre": "Elena", "apellido": "De Troya", "email": "elena@cd.com", ...} 39 | usuario = cls(u) #Crea una instancia de usuario con los datos de un diccionario 40 | lista_usuarios.append(usuario) #Esa instancia la agrega a la lista 41 | 42 | return lista_usuarios #lista de instancias 43 | 44 | @classmethod 45 | def eliminar(cls, data): 46 | #data = {"id": 1} 47 | query = "DELETE FROM usuarios WHERE id = %(id)s" 48 | return connectToMySQL('crud_bc').query_db(query, data) 49 | 50 | @classmethod 51 | def mostrar_un_usuario(cls, data): 52 | #data = {"id": 1} 53 | query = "SELECT * FROM usuarios WHERE id = %(id)s" 54 | resultado = connectToMySQL('crud_bc').query_db(query, data) #Select me regresa una lista de diccionarios 55 | #resultado = [ {"id": 1, "nombre": "Elena", "apellido": "De Troya"....} ] 56 | usuario = cls(resultado[0]) #creo un objeto, con la info de la BD 57 | return usuario #instancia de Usuario 58 | 59 | @classmethod 60 | def actualizar_usuario(cls, formulario): 61 | ''' 62 | formulario= { 63 | "id": 1 64 | "nombre": "elenita", 65 | "apellido":"de troya", 66 | "email": "elenita@cd.com" 67 | } 68 | ''' 69 | query = "UPDATE usuarios SET nombre = %(nombre)s, apellido = %(apellido)s, email = %(email)s WHERE id = %(id)s" 70 | return connectToMySQL('crud_bc').query_db(query, formulario) 71 | -------------------------------------------------------------------------------- /Python/3.- Flask/crud_modularizado/flask_app/models/usuario.py: -------------------------------------------------------------------------------- 1 | from flask_app.config.mysqlconnection import connectToMySQL 2 | class Usuario: 3 | 4 | def __init__(self, data): 5 | ''' 6 | data = {"id":1, "nombre": "Elena", "apellido": "De Troya", "email": "elena@cd.com", ...} 7 | ''' 8 | self.id = data["id"] 9 | self.nombre = data["nombre"] 10 | self.apellido = data["apellido"] 11 | self.email = data["email"] 12 | self.created_at = data["created_at"] 13 | self.updated_at = data["updated_at"] 14 | 15 | #Métodos que realicen las consultas 16 | @classmethod 17 | def guardar(cls, formulario): 18 | #formulario = {"nombre": "Juana", "apellido": "De Arco"....} 19 | consulta = "INSERT INTO usuarios (nombre, apellido, email) VALUES (%(nombre)s, %(apellido)s, %(email)s)" 20 | 21 | resultado = connectToMySQL('crud_bc').query_db(consulta, formulario) 22 | return resultado #el id del nuevo registro 23 | 24 | #Método que regrese todos los usuarios 25 | @classmethod 26 | def mostrar_usuarios(cls): 27 | query = "SELECT * FROM usuarios" 28 | resultado = connectToMySQL("crud_bc").query_db(query) #lista de diccionarios 29 | ''' 30 | resultado = [ 31 | {"id":1, "nombre": "Elena", "apellido": "De Troya", "email": "elena@cd.com", ...}, 32 | {"id":2,"nombre": "Juana", "apellido": "De Arco"...} 33 | ] 34 | ''' 35 | 36 | lista_usuarios = [] 37 | for u in resultado: 38 | #u = {"id":1, "nombre": "Elena", "apellido": "De Troya", "email": "elena@cd.com", ...} 39 | usuario = cls(u) #Crea una instancia de usuario con los datos de un diccionario 40 | lista_usuarios.append(usuario) #Esa instancia la agrega a la lista 41 | 42 | return lista_usuarios #lista de instancias 43 | 44 | @classmethod 45 | def eliminar(cls, data): 46 | #data = {"id": 1} 47 | query = "DELETE FROM usuarios WHERE id = %(id)s" 48 | return connectToMySQL('crud_bc').query_db(query, data) 49 | 50 | @classmethod 51 | def mostrar_un_usuario(cls, data): 52 | #data = {"id": 1} 53 | query = "SELECT * FROM usuarios WHERE id = %(id)s" 54 | resultado = connectToMySQL('crud_bc').query_db(query, data) #Select me regresa una lista de diccionarios 55 | #resultado = [ {"id": 1, "nombre": "Elena", "apellido": "De Troya"....} ] 56 | usuario = cls(resultado[0]) #creo un objeto, con la info de la BD 57 | return usuario #instancia de Usuario 58 | 59 | @classmethod 60 | def actualizar_usuario(cls, formulario): 61 | ''' 62 | formulario= { 63 | "id": 1 64 | "nombre": "elenita", 65 | "apellido":"de troya", 66 | "email": "elenita@cd.com" 67 | } 68 | ''' 69 | query = "UPDATE usuarios SET nombre = %(nombre)s, apellido = %(apellido)s, email = %(email)s WHERE id = %(id)s" 70 | return connectToMySQL('crud_bc').query_db(query, formulario) 71 | -------------------------------------------------------------------------------- /Python/3.- Flask/eventos/flask_app/templates/new.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Nuevo Evento 8 | 10 | 11 | 12 | 13 |
14 |
15 |

Nuevo Evento

16 | Inicio 17 | Cerrar Sesión 18 |
19 |
20 |
21 | 22 | {% with messages = get_flashed_messages(category_filter=['evento']) %} 23 | {% if messages %} 24 |
25 | {% for message in messages %} 26 |

{{message}}

27 | {% endfor %} 28 |
29 | {% endif %} 30 | {% endwith %} 31 | 32 |
33 |
34 | {% with messages = get_flashed_messages(category_filter=['evento_name']) %} 35 | 36 | 37 | {% endwith %} 38 |
39 |
40 | {% with messages = get_flashed_messages(category_filter=['evento_location']) %} 41 | 42 | 43 | {% endwith %} 44 |
45 |
46 | {% with messages = get_flashed_messages(category_filter=['evento_date']) %} 47 | 48 | 49 | {% endwith %} 50 |
51 |
52 | {% with messages = get_flashed_messages(category_filter=['evento_details']) %} 53 | 54 | 55 | {% endwith %} 56 |
57 | 58 | 59 |
60 | 61 |
62 |
63 |
64 | 65 | 66 | -------------------------------------------------------------------------------- /Python/4.- APIs/registro_login/flask_app/templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Register and Login 7 | 8 | 9 | 10 |
11 |
12 | 13 |
14 |

Register

15 | 16 | {% with messages = get_flashed_messages(category_filter=['register']) %} 17 | {% if messages %} 18 |
19 | {% for message in messages %} 20 |

{{message}}

21 | {% endfor %} 22 |
23 | {% endif %} 24 | {% endwith %} 25 |
26 |
27 | 28 | 29 |
30 |
31 | 32 | 33 |
34 |
35 | 36 | 37 |
38 |
39 | 40 | 41 |
42 |
43 | 44 | 45 |
46 | 47 |
48 |
49 | 50 |
51 |

Login

52 | 53 |
54 |
55 |
56 | 57 | 58 |
59 |
60 | 61 | 62 |
63 | 64 |
65 |
66 |
67 |
68 | 69 | 70 | -------------------------------------------------------------------------------- /Fundamentos de la Web/5.- Javascript/tiempo-local/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Tiempo Local 8 | 9 | 10 | 11 | 12 |
13 |

Tiempo Local

14 | 33 |
34 | 35 | 39 |
40 |
41 |
42 |

Buenos Aires

43 |
44 |
45 | nublado 46 |

Hoy

47 |

Nublado

48 |

22C 15C

49 |
50 |
51 | nublado 52 |

Mañana

53 |

Soleado

54 |

22C 15C

55 |
56 |
57 | nublado 58 |

Miércoles

59 |

Soleado

60 |

22C 15C

61 |
62 |
63 | nublado 64 |

Jueves

65 |

Parcialmente
nublado

66 |

22C 15C

67 |
68 |
69 | nublado 70 |

Viernes

71 |

Lluvioso

72 |

22C 15C

73 |
74 |
75 |
76 |
77 |

78 | Lorem, ipsum dolor sit amet consectetur adipisicing elit. Iste dicta optio officia rem minus molestias? Leer más ... 80 | 81 |

82 |
83 | 84 | 85 | 86 | -------------------------------------------------------------------------------- /Fundamentos de la Web/5.- Javascript/pagina-perfil/css/style.css: -------------------------------------------------------------------------------- 1 | * { 2 | margin: 0; 3 | padding: 0; 4 | } 5 | 6 | body { 7 | font-family: 'Roboto', sans-serif; 8 | background-color: #f3f3f3; 9 | } 10 | 11 | .top { 12 | background-color: #333333; 13 | } 14 | 15 | .nav { 16 | width: 1080px; 17 | margin: 0 auto; 18 | color: #ffffff; 19 | height: 80px; 20 | display: flex; 21 | align-items: center; 22 | justify-content: space-between; 23 | } 24 | 25 | .nav-links { 26 | width: 50%; 27 | display: flex; 28 | align-items: center; 29 | list-style-type: none; 30 | justify-content: space-around; 31 | } 32 | 33 | .nav a { 34 | color: #ffffff; 35 | text-decoration: none; 36 | } 37 | 38 | .nav-title { 39 | margin-left: 20px; 40 | } 41 | 42 | .btn { 43 | height: 35px; 44 | width: 100px; 45 | background-color: #17a2b8; 46 | color: #ffffff; 47 | border: none; 48 | font-size: 16px; 49 | box-shadow: 5px 5px #000000; 50 | } 51 | 52 | .container { 53 | width: 1080px; 54 | margin: 0 auto; 55 | } 56 | 57 | .row { 58 | display: flex; 59 | } 60 | 61 | .col, .col-2 { 62 | margin: 10px; 63 | padding: 10px; 64 | flex: 1; 65 | } 66 | 67 | .col-2 { 68 | flex: 2; 69 | } 70 | 71 | .flex-container { 72 | width: 1000px; 73 | margin: 0 auto; 74 | display: flex; 75 | justify-content: space-between; 76 | align-items: center; 77 | } 78 | 79 | .user-card, .card { 80 | width: 100%; 81 | background-color: #fff; 82 | border: 2px solid #999; 83 | margin-bottom: 20px; 84 | border-radius: 5px; 85 | font-size: 1.2rem; 86 | overflow: hidden; 87 | } 88 | 89 | .card-header { 90 | background-color: #17a2b8; 91 | height: 125px; 92 | margin-bottom: 70px; 93 | } 94 | 95 | .card-body { 96 | padding: 20px; 97 | } 98 | 99 | .card-body h1, 100 | .card-body h2, 101 | .card-body h3, 102 | .card-body p { 103 | margin: 20px 0px; 104 | } 105 | 106 | .avatar-m { 107 | border-radius: 50%; 108 | background-color: #fff; 109 | height: 190px; 110 | padding: 5px; 111 | margin-top: 20px; 112 | margin-left: 20px; 113 | } 114 | 115 | .icon-s { 116 | height: 20px; 117 | } 118 | 119 | a { 120 | color: #3a81e6; 121 | } 122 | 123 | .header { 124 | background-color: #333333; 125 | padding: 20px; 126 | color: #ffffff; 127 | font-size: 24px; 128 | display: flex; 129 | align-items: center; 130 | } 131 | 132 | .avatar-s { 133 | border-radius: 50%; 134 | height: 48px; 135 | margin-right: 10px; 136 | } 137 | 138 | .user-line { 139 | display: flex; 140 | justify-content: space-between; 141 | margin: 20px; 142 | } 143 | 144 | .start, .end { 145 | display: flex; 146 | align-items: center; 147 | font-size: 24px; 148 | } 149 | 150 | .dates { 151 | font-size: 20px; 152 | color: #777; 153 | } 154 | 155 | .footer { 156 | padding: 20px; 157 | border-top: 2px solid #999; 158 | } 159 | 160 | .connections { 161 | background-color: #eee; 162 | color: #333; 163 | font-size: 20px; 164 | border-radius: 12px; 165 | height: 24px; 166 | padding: 0 10px; 167 | margin-right: 10px; 168 | } 169 | 170 | .dark-mode { 171 | background-color: #000000; 172 | /* color: white; */ 173 | } -------------------------------------------------------------------------------- /Python/3.- Flask/eventos/flask_app/controllers/events_controller.py: -------------------------------------------------------------------------------- 1 | #BONUS** 2 | #<3 Orden de Dashboard sea en base a fecha asc 3 | #<3 Que en dashboard no aparezcan eventos en el pasado 4 | #<3 Validar que el evento sea en el futuro 5 | #<3 Almacenara detalle en algún lado, para si hay errores no volverlo a escribir 6 | #<3 Al editar, hacer un double check de que la persona de sesión sea el creador del evento 7 | #Revisar que el nombre del evento sea único -> Validemos edición cambiará un poco 8 | 9 | from flask import Flask, render_template, redirect, request, session, flash 10 | from flask_app import app 11 | 12 | #Objetos: user.id 13 | #Diccionarios: session["user_id"] 14 | #Lista: result[0] 15 | 16 | #Modelos 17 | from flask_app.models.event import Event 18 | from flask_app.models.user import User 19 | 20 | @app.route("/nuevo") 21 | def nuevo(): 22 | #Verificar que el usuario haya iniciado sesión 23 | if 'user_id' not in session: 24 | return redirect("/") 25 | 26 | return render_template("new.html") 27 | 28 | @app.route("/create", methods=["POST"]) 29 | def create(): 30 | #Va a recibir el formulario... request.form = diccionario con toda la info del formulario 31 | #Verificar que el usuario haya iniciado sesión 32 | if 'user_id' not in session: 33 | return redirect("/") 34 | 35 | 36 | if not Event.validate_event(request.form): 37 | #Guardamos en flash, por si hay error que no se pierda esta info 38 | flash(request.form["name"], "evento_name") 39 | flash(request.form["location"], "evento_location") 40 | flash(request.form["date"], "evento_date") 41 | flash(request.form["details"], "evento_details") 42 | return redirect("/nuevo") 43 | 44 | Event.create(request.form) 45 | return redirect("/dashboard") 46 | 47 | @app.route("/ver/") #/ver/1 48 | def read(id): #id = 1 49 | #Verificar que el usuario haya iniciado sesión 50 | if 'user_id' not in session: 51 | return redirect("/") 52 | 53 | dicc = {"id": id} #{"id": 1} 54 | event = Event.read_one(dicc) #Invoco de la clase Event a read_one, enviamos el diccionario y recibimos un objeto Events 55 | 56 | return render_template("view.html", event=event) 57 | 58 | @app.route("/borrar/") #/borrar/2 59 | def eliminar(id): 60 | #Verificar que el usuario haya iniciado sesión 61 | if 'user_id' not in session: 62 | return redirect("/") 63 | 64 | dicc = {"id": id} #{"id": 1} 65 | Event.delete(dicc) 66 | return redirect("/dashboard") 67 | 68 | @app.route("/editar/") #/editar/3 69 | def edit(id): 70 | #Verificar que el usuario haya iniciado sesión 71 | if 'user_id' not in session: 72 | return redirect("/") 73 | 74 | dicc = {"id": id} #{"id": 1} 75 | event = Event.read_one(dicc) #Invoco de la clase Event a read_one, enviamos el diccionario y recibimos un objeto Events 76 | 77 | #Revisar que si sea el usuario en sesión el que creó el evento 78 | if session['user_id'] != event.user_id: 79 | return redirect("/dashboard") 80 | 81 | return render_template("edit.html", event=event) 82 | 83 | @app.route("/update", methods=["POST"]) 84 | def update(): 85 | #Verificar que el usuario haya iniciado sesión 86 | if 'user_id' not in session: 87 | return redirect("/") 88 | 89 | #Recibir request.form = diccionario con la informacion del formulario 90 | 91 | #Validamos 92 | if not Event.validate_event(request.form): 93 | return redirect("/editar/"+request.form["id"]) 94 | 95 | Event.update(request.form) 96 | return redirect("/dashboard") -------------------------------------------------------------------------------- /Python/3.- Flask/eventos/flask_app/templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Register and Login 7 | 8 | 9 | 10 |
11 |
12 | 13 |
14 |

Register

15 | 16 | {% with messages = get_flashed_messages(category_filter=['register']) %} 17 | {% if messages %} 18 |
19 | {% for message in messages %} 20 |

{{message}}

21 | {% endfor %} 22 |
23 | {% endif %} 24 | {% endwith %} 25 |
26 |
27 | 28 | 29 |
30 |
31 | 32 | 33 |
34 |
35 | 36 | 37 |
38 |
39 | 40 | 41 |
42 |
43 | 44 | 45 |
46 | 47 |
48 |
49 | 50 |
51 |

Login

52 | 53 | {% with messages = get_flashed_messages(category_filter=['login']) %} 54 | {% if messages %} 55 |
56 | {% for message in messages %} 57 |

{{message}}

58 | {% endfor %} 59 |
60 | {% endif %} 61 | {% endwith %} 62 |
63 |
64 | 65 | 66 |
67 |
68 | 69 | 70 |
71 | 72 |
73 |
74 |
75 |
76 | 77 | -------------------------------------------------------------------------------- /Python/3.- Flask/registro_login/flask_app/templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Register and Login 7 | 8 | 9 | 10 |
11 |
12 | 13 |
14 |

Register

15 | 16 | {% with messages = get_flashed_messages(category_filter=['register']) %} 17 | {% if messages %} 18 |
19 | {% for message in messages %} 20 |

{{message}}

21 | {% endfor %} 22 |
23 | {% endif %} 24 | {% endwith %} 25 |
26 |
27 | 28 | 29 |
30 |
31 | 32 | 33 |
34 |
35 | 36 | 37 |
38 |
39 | 40 | 41 |
42 |
43 | 44 | 45 |
46 | 47 |
48 |
49 | 50 |
51 |

Login

52 | 53 | {% with messages = get_flashed_messages(category_filter=['login']) %} 54 | {% if messages %} 55 |
56 | {% for message in messages %} 57 |

{{message}}

58 | {% endfor %} 59 |
60 | {% endif %} 61 | {% endwith %} 62 |
63 |
64 | 65 | 66 |
67 |
68 | 69 | 70 |
71 | 72 |
73 |
74 |
75 |
76 | 77 | -------------------------------------------------------------------------------- /Python/3.- Flask/foro_publicaciones/flask_app/templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Register and Login 7 | 8 | 9 | 10 |
11 |
12 | 13 |
14 |

Register

15 | 16 | {% with messages = get_flashed_messages(category_filter=['register']) %} 17 | {% if messages %} 18 |
19 | {% for message in messages %} 20 |

{{message}}

21 | {% endfor %} 22 |
23 | {% endif %} 24 | {% endwith %} 25 |
26 |
27 | 28 | 29 |
30 |
31 | 32 | 33 |
34 |
35 | 36 | 37 |
38 |
39 | 40 | 41 |
42 |
43 | 44 | 45 |
46 | 47 |
48 |
49 | 50 |
51 |

Login

52 | 53 | {% with messages = get_flashed_messages(category_filter=['login']) %} 54 | {% if messages %} 55 |
56 | {% for message in messages %} 57 |

{{message}}

58 | {% endfor %} 59 |
60 | {% endif %} 61 | {% endwith %} 62 |
63 |
64 | 65 | 66 |
67 |
68 | 69 | 70 |
71 | 72 |
73 |
74 |
75 |
76 | 77 | -------------------------------------------------------------------------------- /Python/3.- Flask/loteria_mexicana1/server.py: -------------------------------------------------------------------------------- 1 | import math 2 | import random 3 | from flask import Flask, render_template 4 | 5 | app = Flask(__name__) 6 | 7 | 8 | cartas = ["1 El Gallo", 9 | 10 | "2 El Diablito", 11 | 12 | "3 La Dama", 13 | 14 | "4 El catrín", 15 | 16 | "5 El paraguas", 17 | 18 | "6 La sirena", 19 | 20 | "7 La escalera", 21 | 22 | "8 La botella", 23 | 24 | "9 El barril", 25 | 26 | "10 El árbol", 27 | 28 | "11 El melón", 29 | 30 | "12 El valiente", 31 | 32 | "13 El gorrito", 33 | 34 | "14 La muerte", 35 | 36 | "15 La pera", 37 | 38 | "16 La bandera", 39 | 40 | "17 El bandolón", 41 | 42 | "18 El violoncello", 43 | 44 | "19 La garza", 45 | 46 | "20 El pájaro", 47 | 48 | "21 La mano", 49 | 50 | "22 La bota", 51 | 52 | "23 La luna", 53 | 54 | "24 El cotorro", 55 | 56 | "25 El borracho", 57 | 58 | "26 El negrito", 59 | 60 | "27 El corazón", 61 | 62 | "28 La sandía", 63 | 64 | "29 El tambor", 65 | 66 | "30 El camarón", 67 | 68 | "31 Las jaras", 69 | 70 | "32 El músico", 71 | 72 | "33 La araña", 73 | 74 | "34 El soldado", 75 | 76 | "35 La estrella", 77 | 78 | "36 El cazo", 79 | 80 | "37 El mundo", 81 | 82 | "38 El apache", 83 | 84 | "39 El nopal", 85 | 86 | "40 El alacrán", 87 | 88 | "41 La rosa", 89 | 90 | "42 La calavera", 91 | 92 | "43 La campana", 93 | 94 | "44 El cantarito", 95 | 96 | "45 El venado", 97 | 98 | "46 El sol", 99 | 100 | "47 La corona", 101 | 102 | "48 La chalupa", 103 | 104 | "49 El pino", 105 | 106 | "50 El pescado", 107 | 108 | "51 La palma", 109 | 110 | "52 La maceta", 111 | 112 | "53 El arpa", 113 | 114 | "54 La rana"] 115 | 116 | # RUTAS 117 | 118 | 119 | @app.route("/loteria") 120 | def nivel1(): 121 | 122 | aleatorias = random.sample(cartas, 4*4) 123 | return render_template("index.html", filas=4, columnas=4, cartas=aleatorias) 124 | 125 | # @app.route("/loteria/") 126 | # def nivel2(filas): 127 | # print(filas) 128 | # colores=["rosa","azul","amarillo"] 129 | # return render_template("loteria4xn.html", filas=filas,colores=colores) 130 | 131 | 132 | @app.route("/loteria/") # /loteria/10 133 | def nivel2(filas): # filas = 10 134 | # enviando filas=10 135 | # PERMITE SABER CUANTOS SETS DE CARTAS SE NECESITAN 136 | repeticiones = math.ceil((filas*4)/len(cartas)) 137 | # crea un arreglo con las repeticiones necesarias por cartas 138 | counts = [repeticiones] * len(cartas) 139 | aleatorias = random.sample(cartas, filas*4, counts=counts) 140 | return render_template("index.html", filas=filas, columnas=4, cartas=aleatorias) 141 | 142 | 143 | @app.route("/loteria//") 144 | def nivel3(filas, columnas): 145 | 146 | # PERMITE SABER CUANTOS SETS DE CARTAS SE NECESITAN 147 | repeticiones = math.ceil((filas*columnas)/len(cartas)) 148 | # crea un arreglo con las repeticiones necesarias por cartas 149 | counts = [repeticiones] * len(cartas) 150 | 151 | aleatorias = random.sample( 152 | population=cartas, k=filas*columnas, counts=counts) 153 | print(aleatorias) 154 | return render_template("index.html", filas=filas, columnas=columnas, cartas=aleatorias) 155 | 156 | 157 | if __name__ == "__main__": 158 | app.run(debug=True) 159 | --------------------------------------------------------------------------------