Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # app.py
- from flask import Flask, request, render_template
- from tools import str_to_date,\
- diff_between_dates
- from datetime import datetime
- app = Flask(__name__)
- HTML_NAME_FOR_THE_DATE = "d"
- # NOT a view
- def obtain_user_date():
- str_user_date = None
- b_GET:bool = request.method=='GET'
- b_POST:bool = request.method=='POST'
- if(b_GET):
- b_caution:bool = HTML_NAME_FOR_THE_DATE in\
- request.args.keys()
- if(b_caution):
- str_user_date = \
- request.args[HTML_NAME_FOR_THE_DATE]
- return str_user_date
- # if
- else:
- if(b_POST):
- b_caution:bool = HTML_NAME_FOR_THE_DATE in\
- request.form.keys()
- if(b_caution):
- str_user_date = \
- request.form[HTML_NAME_FOR_THE_DATE]
- return str_user_date
- # if
- # if
- # if-else
- #return "no user date"
- return None
- # obtain_user_date
- # decorator
- @app.route("/", methods=['POST', 'GET'])
- def respond_to_distance_request():
- the_user_date = obtain_user_date()
- if(the_user_date!=None):
- the_date:datetime = \
- str_to_date(the_user_date)
- response:dict = diff_between_dates(
- the_date
- )
- #return response # dict (appears as a JSON response }
- return render_template(
- "date_input.html",
- response_available=True,
- d_days=response['days'],
- d_hours=response['hours']
- )
- #
- else:
- # tested OK - displays the input form
- return render_template(
- "date_input.html"
- )
- # def respond_to_distance_request
- app.run(
- host="0.0.0.0", # all network interfaces
- port=5555,
- debug=True
- )
- ***********************
- # tools.py
- from datetime import\
- datetime, timedelta
- def str_to_date(
- p_date:str,
- p_format:str="%Y-%m-%d"
- ):
- d:datetime =\
- datetime.strptime(
- p_date,
- p_format
- )
- return d
- # def str_to_date
- def diff_between_dates(
- p_d1:datetime,
- p_d2:datetime=None
- ):
- if(p_d2==None):
- p_d2=datetime.now()
- # if
- diff:timedelta = abs(p_d1-p_d2)
- diff_days:float = diff.days
- diff_seconds:float = diff.total_seconds()
- diff_hours:float = diff_seconds/60/60
- """
- dict_response:dict = dict()
- dict_response['days']=diff_days
- dict_response['hours']=diff_hours
- """
- dict_response:dict = {
- "days":diff_days,
- "hours":diff_hours
- }
- # import json
- # return json.dumps(dict_response)
- return dict_response
- # def diff_between_dates
- ********
- <!-- ./templates/date_input.html -->
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Date Input</title>
- </head>
- <body>
- <form
- action="http://127.0.0.1:5555/"
- method="POST"
- enctype="application/x-www-form-urlencoded"
- >
- <label for="id_d">Your date:</label>
- <input
- id="id_d"
- name="d"
- type="date"
- pattern="\d{2,4}-\d{1,2}-\d{1,2}"
- value="1969-06-21"
- ><br>
- <input
- type="submit"
- value="compute distance to today">
- </form>
- <hr>
- <!-- results in a conditional Jinja2 template -->
- {% if response_available is defined %}
- <ul>
- <li>Distance in days: {{d_days}}</li>
- <li>Distance in days: {{d_hours}}</li>
- </ul>
- {% endif %}
- </body>
- </html>
- ********
- cloudbuild.yaml
- steps:
- - name: "gcr.io/cloud-builders/gcloud"
- args: ["app", "deploy"]
- timeout: "1600s"
- app.yaml
- runtime: python38
- entrypoint: gunicorn -w 2 name-of-flask-app-python-module:name-of-flask-var
Advertisement
Add Comment
Please, Sign In to add comment