diff --git a/README.md b/README.md index 83e8d32..2b001c2 100644 --- a/README.md +++ b/README.md @@ -88,7 +88,6 @@ app = Flask(__name__) app.config['DEBUG'] = True app.config['SECRET_KEY'] = 'mi secreto' - @app.route('/') def buscador(): return 'Hello PyConES17 !!!' @@ -463,10 +462,7 @@ db = SQLAlchemy(app) class Programado(db.Model): id = db.Column(db.Integer, primary_key=True) - item_id = db.Column(db.Integer) title = db.Column(db.String(128)) - picture_URL = db.Column(db.String(300)) - price = db.Column(db.String(10)) ``` @@ -490,10 +486,7 @@ manager.add_command('db', MigrateCommand) class Programado(db.Model): id = db.Column(db.Integer, primary_key=True) - item_id = db.Column(db.Integer) title = db.Column(db.String(128)) - picture_URL = db.Column(db.String(300)) - price = db.Column(db.String(10)) if __name__ == "__main__": @@ -519,7 +512,7 @@ sqlite3 database.sqlite --- #### 2.2 Save item -[ES] Para guarda un elemento necesitamos modificar nuestra plantilla **buscador.html** para enviar la información que queremos guardar usando *POST*. Qué sencillamente será un **
** con las variables ocultas. +[ES] Para guarda un elemento necesitamos modificar nuestra plantilla **buscador.html** para enviar la información que queremos guardar usando *POST*. Qué sencillamente será un **** con las variables ocultas. En este caso lo que haremos será mostrar un botón solo visible cuando recibamos una petición *POST*. Su finalidad será realizar una petición a la página *programadas_nuevo()* con el nombre que hemos buscado. ```jinja2 {% extends 'layouts/master.html' %} @@ -552,7 +545,13 @@ sqlite3 database.sqlite {% endif %} {% endfor %} -
+ + {% if results %} +
+ + +
+ {% endif %} {% if results %} @@ -562,15 +561,6 @@ sqlite3 database.sqlite {{ item.title }} {{ item.title }} {{ item.price }} - -
- - - - - -
- {% endfor %} @@ -578,7 +568,7 @@ sqlite3 database.sqlite {% endblock %} ``` -[ES] Ahora, tendremos que crear la función para **programadas_nuevo** en **app.py**. Lo primero que le decimos es que solo puede aceptar peticiones *POST*. A continuación creamos variables para guardar la información del formulario. Después creamos el registro en la base de datos. Por último redireccionamos a la anterior página para ver el nuevo elemento. +[ES] Ahora, tendremos que crear la función para *programadas_nuevo()* en **app.py**. Lo primero que le decimos es que solo puede aceptar peticiones *POST*. A continuación creamos variables para guardar la información del formulario. Después creamos el registro en la base de datos. Por último redireccionamos a la anterior página para ver el nuevo elemento. [ES] Por partes. Importamos **db** que será nuestro *ORM*, y **Programado** que será la tabla a manipular. @@ -590,10 +580,7 @@ from models import db, Programado ```python3 my_program = Programado( - item_id=itemId, - title=title, - picture_URL=pictureURL, - price=price + title=title ) ``` @@ -656,16 +643,10 @@ def get_resultados(name='', price_max=''): @app.route('/programadas/nuevo', methods=('POST',)) def programadas_nuevo(): - itemId = int(request.form['itemId']) title = request.form['title'] - pictureURL = request.form['pictureURL'] - price = request.form['price'] # We saved in the database my_program = Programado( - item_id=itemId, - title=title, - picture_URL=pictureURL, - price=price + title=title ) db.session.add(my_program) try: @@ -732,16 +713,11 @@ def get_resultados(name='', price_max=''): @app.route('/programadas/nuevo', methods=('POST',)) def programadas_nuevo(): - itemId = int(request.form['itemId']) title = request.form['title'] - pictureURL = request.form['pictureURL'] - price = request.form['price'] # We saved in the database + my_program = Programado( - item_id=itemId, - title=title, - picture_URL=pictureURL, - price=price + title=title ) db.session.add(my_program) try: @@ -767,19 +743,13 @@ if __name__ == '__main__': - - - {% for item in programado_all %} - - - {% endfor %} @@ -801,23 +771,20 @@ if __name__ == '__main__':
Imagen TituloPrecio
{{ item.title }} {{ item.title }}{{ item.price }}
- - {% for item in programado_all %} - - {% endfor %} @@ -886,16 +853,11 @@ def get_resultados(name='', price_max=''): @app.route('/programadas/nuevo', methods=('POST',)) def programadas_nuevo(): - itemId = int(request.form['itemId']) - title = request.form['title'] - pictureURL = request.form['pictureURL'] - price = request.form['price'] + title = request.form['title'] # We saved in the database + my_program = Programado( - item_id=itemId, - title=title, - picture_URL=pictureURL, - price=price + title=title ) db.session.add(my_program) try: @@ -1023,16 +985,11 @@ def get_resultados(name='', price_max=''): @app.route('/programadas/nuevo', methods=('POST',)) def programadas_nuevo(): - itemId = int(request.form['itemId']) - title = request.form['title'] - pictureURL = request.form['pictureURL'] - price = request.form['price'] + title = request.form['title'] # We saved in the database + my_program = Programado( - item_id=itemId, - title=title, - picture_URL=pictureURL, - price=price + title=title ) db.session.add(my_program) try: diff --git a/app.py b/app.py index bd76fe1..af0b3ff 100644 --- a/app.py +++ b/app.py @@ -45,16 +45,10 @@ def get_resultados(name='', price_max=''): @app.route('/programadas/nuevo', methods=('POST',)) def programadas_nuevo(): - itemId = int(request.form['itemId']) title = request.form['title'] - pictureURL = request.form['pictureURL'] - price = request.form['price'] # We saved in the database my_program = Programado( - item_id=itemId, - title=title, - picture_URL=pictureURL, - price=price + title=title ) db.session.add(my_program) try: diff --git a/avisador.py b/avisador.py new file mode 100644 index 0000000..aecb59e --- /dev/null +++ b/avisador.py @@ -0,0 +1,35 @@ +from flask_script import Manager +from flask_mail import Mail, Message +from models import db, Programado + +from app import app + +app.config.update( + MAIL_SERVER='smtp.mailgun.org', + MAIL_PORT=587, + MAIL_USERNAME='postmaster@sandboxcbf540cc1c514f818bce4f566e6a1477.mailgun.org', + MAIL_PASSWORD='9176ea5fc4c32da768f334c33f6c8b20' +) +mail = Mail(app) + +manager = Manager(app) + +@manager.command +def buscar_y_notificar(): + msg = Message( + "Nuevo aviso", + sender="no-reply@pycon17.es", + recipients=["andros@fenollosa.email"] + ) + msg.body = "testing" + msg.html = "testing" + mail.send(msg) + + +@manager.command +def test(): + programado_all = Programado.query.all() + app.get_resultados() + +if __name__ == "__main__": + manager.run() \ No newline at end of file diff --git a/models.py b/models.py index f59533c..c300b54 100644 --- a/models.py +++ b/models.py @@ -14,10 +14,7 @@ manager.add_command('db', MigrateCommand) class Programado(db.Model): id = db.Column(db.Integer, primary_key=True) - item_id = db.Column(db.Integer) title = db.Column(db.String(128)) - picture_URL = db.Column(db.String(300)) - price = db.Column(db.String(10)) if __name__ == "__main__": diff --git a/requirements.txt b/requirements.txt index 4ab0f64..db1ac1c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,4 +3,5 @@ Flask-Migrate==2.1.0 Flask-Script==2.0.5 Flask-SQLAlchemy==2.1 Flask-WTF==0.14.2 +Flask-Mail==0.9.1 urllib3==1.22 \ No newline at end of file diff --git a/templates/items/buscador.html b/templates/items/buscador.html index 3977a59..37bf0b9 100644 --- a/templates/items/buscador.html +++ b/templates/items/buscador.html @@ -29,6 +29,12 @@ {% endfor %} + {% if results %} + + + + + {% endif %} {% if results %} @@ -38,15 +44,6 @@ - {% endfor %}
Imagen TituloPrecio
{{ item.title }} {{ item.title }}{{ item.price }}
+
{{ item.title }} {{ item.title }} {{ item.price }} -
- - - - - -
-
diff --git a/templates/items/programadas.html b/templates/items/programadas.html index ad4beb6..548c41d 100644 --- a/templates/items/programadas.html +++ b/templates/items/programadas.html @@ -6,23 +6,20 @@ - - {% for item in programado_all %} - - {% endfor %}
Imagen TituloPrecio
{{ item.title }} {{ item.title }}{{ item.price }}
- +
+