Move web application in a separate module
This commit is contained in:
70
webapp.py
Normal file
70
webapp.py
Normal file
@@ -0,0 +1,70 @@
|
||||
from bottle import hook, request, route, run, static_file, view
|
||||
import models
|
||||
from models import Song, AirCast
|
||||
from balises import search_song
|
||||
from utils import project_dir
|
||||
|
||||
import datetime as dt
|
||||
import locale
|
||||
import os
|
||||
import urllib.parse
|
||||
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# Web application
|
||||
#
|
||||
# Very simple, just a page with an input for a date/time, a query button and a
|
||||
# list of results
|
||||
|
||||
@route('/', method=['GET', 'POST'])
|
||||
@view('search_results')
|
||||
def results_page():
|
||||
try:
|
||||
day = dt.date.fromisoformat(request.forms.date)
|
||||
except ValueError:
|
||||
day = dt.datetime.now().date()
|
||||
|
||||
try:
|
||||
hour = int(request.forms.time.split(':')[0])
|
||||
except ValueError:
|
||||
hour = dt.datetime.now().hour
|
||||
|
||||
delta = int(request.forms.timedelta or 0)
|
||||
hour = hour + delta
|
||||
time = '{:0>2}:00'.format(hour)
|
||||
results = [
|
||||
{ 'date': x.date,
|
||||
'song': x.song,
|
||||
'youtube_url': 'https://www.youtube.com/results?search_query=' +
|
||||
urllib.parse.quote_plus(x.song.artist + ' ' + x.song.title)
|
||||
}
|
||||
for x in search_song(day, hour)
|
||||
]
|
||||
return dict(results=results,
|
||||
date=day,
|
||||
time=time,
|
||||
start_time=time,
|
||||
end_time = '{:0>2}:00'.format(hour+1))
|
||||
|
||||
@route('/static/<filename>')
|
||||
def serve_static_file(filename):
|
||||
static_root = os.path.join(project_dir(), 'static')
|
||||
return static_file(filename, root=static_root)
|
||||
|
||||
@hook('before_request')
|
||||
def set_locale():
|
||||
"""Set the locale for all categories to the first lang in Accept-Language
|
||||
header. Default to fr_FR.UTF-8
|
||||
"""
|
||||
accept_language = request.get_header('Accept-Language', 'fr-FR')
|
||||
first_lang = accept_language.split(';')[0].split(',')[0]
|
||||
lang = first_lang.translate(str.maketrans('-', '_')) + '.UTF-8'
|
||||
locale.setlocale(locale.LC_ALL, lang)
|
||||
|
||||
@hook('before_request')
|
||||
def connect_to_db():
|
||||
models.db.connect()
|
||||
|
||||
@hook('after_request')
|
||||
def close_db_connection():
|
||||
models.db.close()
|
||||
Reference in New Issue
Block a user