Tue, 13 Jun 2017 00:47:24 +0300
Yleistä päivittelyä
0 | 1 | #!/usr/bin/env python3 |
11
e18ad36fbbf5
Lisätty favicon, korjattu tr()-funktio joka ei olettunut suomen kieleen (vaan kääntämättömään)
Teemu Piippo <teemu@hecknology.net>
parents:
10
diff
changeset
|
2 | from flask import Flask, render_template, abort, send_from_directory |
0 | 3 | from datetime import datetime, date, time, timedelta |
10
843c6ee340e7
Refaktoroitu käännä-funktio, kaikki kielet luetaan automaattisesti
Teemu Piippo <teemu@hecknology.net>
parents:
9
diff
changeset
|
4 | from os import path, listdir |
843c6ee340e7
Refaktoroitu käännä-funktio, kaikki kielet luetaan automaattisesti
Teemu Piippo <teemu@hecknology.net>
parents:
9
diff
changeset
|
5 | from configparser import ConfigParser |
843c6ee340e7
Refaktoroitu käännä-funktio, kaikki kielet luetaan automaattisesti
Teemu Piippo <teemu@hecknology.net>
parents:
9
diff
changeset
|
6 | import locale |
843c6ee340e7
Refaktoroitu käännä-funktio, kaikki kielet luetaan automaattisesti
Teemu Piippo <teemu@hecknology.net>
parents:
9
diff
changeset
|
7 | |
4 | 8 | from misc import * |
7
f3791dccfd03
Käännetty tiedostojen nimet englanniksi
Teemu Piippo <teemu@hecknology.net>
parents:
5
diff
changeset
|
9 | from busroute import supista_reitti |
0 | 10 | |
11 | app = Flask(__name__) | |
10
843c6ee340e7
Refaktoroitu käännä-funktio, kaikki kielet luetaan automaattisesti
Teemu Piippo <teemu@hecknology.net>
parents:
9
diff
changeset
|
12 | |
843c6ee340e7
Refaktoroitu käännä-funktio, kaikki kielet luetaan automaattisesti
Teemu Piippo <teemu@hecknology.net>
parents:
9
diff
changeset
|
13 | # Varmista ettei järjestelmän kieliasetukset sotke muotoiluja |
20
3199e289ae62
- Sivusto hieman edustuksellisempi
Teemu Piippo <teemu@hecknology.net>
parents:
19
diff
changeset
|
14 | def reset_locale(): |
3199e289ae62
- Sivusto hieman edustuksellisempi
Teemu Piippo <teemu@hecknology.net>
parents:
19
diff
changeset
|
15 | locale.setlocale(locale.LC_ALL, locale.getdefaultlocale()) |
3199e289ae62
- Sivusto hieman edustuksellisempi
Teemu Piippo <teemu@hecknology.net>
parents:
19
diff
changeset
|
16 | |
3199e289ae62
- Sivusto hieman edustuksellisempi
Teemu Piippo <teemu@hecknology.net>
parents:
19
diff
changeset
|
17 | def activate_locale(language = None): |
3199e289ae62
- Sivusto hieman edustuksellisempi
Teemu Piippo <teemu@hecknology.net>
parents:
19
diff
changeset
|
18 | language = language or language_for_page() |
3199e289ae62
- Sivusto hieman edustuksellisempi
Teemu Piippo <teemu@hecknology.net>
parents:
19
diff
changeset
|
19 | class result: |
3199e289ae62
- Sivusto hieman edustuksellisempi
Teemu Piippo <teemu@hecknology.net>
parents:
19
diff
changeset
|
20 | def __enter__(self): |
3199e289ae62
- Sivusto hieman edustuksellisempi
Teemu Piippo <teemu@hecknology.net>
parents:
19
diff
changeset
|
21 | locale.setlocale(locale.LC_ALL, tr('locale', 'other', language = language)) |
3199e289ae62
- Sivusto hieman edustuksellisempi
Teemu Piippo <teemu@hecknology.net>
parents:
19
diff
changeset
|
22 | def __exit__(self, *args): |
3199e289ae62
- Sivusto hieman edustuksellisempi
Teemu Piippo <teemu@hecknology.net>
parents:
19
diff
changeset
|
23 | reset_locale() |
3199e289ae62
- Sivusto hieman edustuksellisempi
Teemu Piippo <teemu@hecknology.net>
parents:
19
diff
changeset
|
24 | return result() |
3199e289ae62
- Sivusto hieman edustuksellisempi
Teemu Piippo <teemu@hecknology.net>
parents:
19
diff
changeset
|
25 | |
3199e289ae62
- Sivusto hieman edustuksellisempi
Teemu Piippo <teemu@hecknology.net>
parents:
19
diff
changeset
|
26 | reset_locale() |
0 | 27 | |
10
843c6ee340e7
Refaktoroitu käännä-funktio, kaikki kielet luetaan automaattisesti
Teemu Piippo <teemu@hecknology.net>
parents:
9
diff
changeset
|
28 | # Lataa käännökset |
843c6ee340e7
Refaktoroitu käännä-funktio, kaikki kielet luetaan automaattisesti
Teemu Piippo <teemu@hecknology.net>
parents:
9
diff
changeset
|
29 | class Translator: |
843c6ee340e7
Refaktoroitu käännä-funktio, kaikki kielet luetaan automaattisesti
Teemu Piippo <teemu@hecknology.net>
parents:
9
diff
changeset
|
30 | def __init__(self): |
843c6ee340e7
Refaktoroitu käännä-funktio, kaikki kielet luetaan automaattisesti
Teemu Piippo <teemu@hecknology.net>
parents:
9
diff
changeset
|
31 | self.languages = {} |
843c6ee340e7
Refaktoroitu käännä-funktio, kaikki kielet luetaan automaattisesti
Teemu Piippo <teemu@hecknology.net>
parents:
9
diff
changeset
|
32 | def load_language(self, file_path): |
843c6ee340e7
Refaktoroitu käännä-funktio, kaikki kielet luetaan automaattisesti
Teemu Piippo <teemu@hecknology.net>
parents:
9
diff
changeset
|
33 | language_name = path.splitext(path.basename(file_path))[0] |
843c6ee340e7
Refaktoroitu käännä-funktio, kaikki kielet luetaan automaattisesti
Teemu Piippo <teemu@hecknology.net>
parents:
9
diff
changeset
|
34 | ini = ConfigParser() |
843c6ee340e7
Refaktoroitu käännä-funktio, kaikki kielet luetaan automaattisesti
Teemu Piippo <teemu@hecknology.net>
parents:
9
diff
changeset
|
35 | ini.read(path.join(file_path)) |
843c6ee340e7
Refaktoroitu käännä-funktio, kaikki kielet luetaan automaattisesti
Teemu Piippo <teemu@hecknology.net>
parents:
9
diff
changeset
|
36 | self.languages[language_name] = ini |
843c6ee340e7
Refaktoroitu käännä-funktio, kaikki kielet luetaan automaattisesti
Teemu Piippo <teemu@hecknology.net>
parents:
9
diff
changeset
|
37 | def __call__(self, name, section, language = None): |
843c6ee340e7
Refaktoroitu käännä-funktio, kaikki kielet luetaan automaattisesti
Teemu Piippo <teemu@hecknology.net>
parents:
9
diff
changeset
|
38 | language = language or language_for_page() |
843c6ee340e7
Refaktoroitu käännä-funktio, kaikki kielet luetaan automaattisesti
Teemu Piippo <teemu@hecknology.net>
parents:
9
diff
changeset
|
39 | try: |
843c6ee340e7
Refaktoroitu käännä-funktio, kaikki kielet luetaan automaattisesti
Teemu Piippo <teemu@hecknology.net>
parents:
9
diff
changeset
|
40 | return self.languages[language][section][name] |
843c6ee340e7
Refaktoroitu käännä-funktio, kaikki kielet luetaan automaattisesti
Teemu Piippo <teemu@hecknology.net>
parents:
9
diff
changeset
|
41 | except KeyError: |
843c6ee340e7
Refaktoroitu käännä-funktio, kaikki kielet luetaan automaattisesti
Teemu Piippo <teemu@hecknology.net>
parents:
9
diff
changeset
|
42 | return name |
5 | 43 | |
10
843c6ee340e7
Refaktoroitu käännä-funktio, kaikki kielet luetaan automaattisesti
Teemu Piippo <teemu@hecknology.net>
parents:
9
diff
changeset
|
44 | tr = Translator() |
843c6ee340e7
Refaktoroitu käännä-funktio, kaikki kielet luetaan automaattisesti
Teemu Piippo <teemu@hecknology.net>
parents:
9
diff
changeset
|
45 | for file in listdir('tr'): |
843c6ee340e7
Refaktoroitu käännä-funktio, kaikki kielet luetaan automaattisesti
Teemu Piippo <teemu@hecknology.net>
parents:
9
diff
changeset
|
46 | tr.load_language(path.join('tr', file)) |
5 | 47 | |
10
843c6ee340e7
Refaktoroitu käännä-funktio, kaikki kielet luetaan automaattisesti
Teemu Piippo <teemu@hecknology.net>
parents:
9
diff
changeset
|
48 | def language_for_page(): |
5 | 49 | from flask import request |
10
843c6ee340e7
Refaktoroitu käännä-funktio, kaikki kielet luetaan automaattisesti
Teemu Piippo <teemu@hecknology.net>
parents:
9
diff
changeset
|
50 | if request.args.get('kääntämätön') is not None: |
843c6ee340e7
Refaktoroitu käännä-funktio, kaikki kielet luetaan automaattisesti
Teemu Piippo <teemu@hecknology.net>
parents:
9
diff
changeset
|
51 | return None |
5 | 52 | else: |
10
843c6ee340e7
Refaktoroitu käännä-funktio, kaikki kielet luetaan automaattisesti
Teemu Piippo <teemu@hecknology.net>
parents:
9
diff
changeset
|
53 | for language_name in tr.languages: |
843c6ee340e7
Refaktoroitu käännä-funktio, kaikki kielet luetaan automaattisesti
Teemu Piippo <teemu@hecknology.net>
parents:
9
diff
changeset
|
54 | if request.args.get(language_name) is not None: |
843c6ee340e7
Refaktoroitu käännä-funktio, kaikki kielet luetaan automaattisesti
Teemu Piippo <teemu@hecknology.net>
parents:
9
diff
changeset
|
55 | return language_name |
843c6ee340e7
Refaktoroitu käännä-funktio, kaikki kielet luetaan automaattisesti
Teemu Piippo <teemu@hecknology.net>
parents:
9
diff
changeset
|
56 | else: |
11
e18ad36fbbf5
Lisätty favicon, korjattu tr()-funktio joka ei olettunut suomen kieleen (vaan kääntämättömään)
Teemu Piippo <teemu@hecknology.net>
parents:
10
diff
changeset
|
57 | return 'fi' |
5 | 58 | |
19
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
59 | def sign(schedule_entry): |
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
60 | from math import ceil |
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
61 | sign = supista_reitti(schedule_entry['trip'].suppea_reitti(schedule_entry['stop'])) |
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
62 | sign = [tr(paikka, 'paikat') for paikka in sign] |
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
63 | sign_representation = ' - '.join(sign) |
21 | 64 | #if len(sign_representation) > 25: |
65 | # k = ceil(len(sign) / 2) | |
66 | # sign_representation = ' - '.join(sign[:k]) + '\n' + ' - '.join(sign[k:]) | |
19
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
67 | return sign_representation |
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
68 | |
0 | 69 | @app.route('/pysäkki/<tunniste>') |
70 | def pysäkkiaikataulu(tunniste): | |
7
f3791dccfd03
Käännetty tiedostojen nimet englanniksi
Teemu Piippo <teemu@hecknology.net>
parents:
5
diff
changeset
|
71 | from buses import pysäkit |
0 | 72 | aikataulu = [] |
3 | 73 | try: |
74 | pysäkki = pysäkit[tunniste] | |
75 | except KeyError: | |
76 | abort(404) | |
18 | 77 | for schedule_entry in pysäkki.schedule(100): |
0 | 78 | aikataulu.append({ |
18 | 79 | 'aika': time_representation(schedule_entry['time']), |
80 | 'linja': schedule_entry['trip'].linja.viite, | |
19
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
81 | 'kyltti': sign(schedule_entry), |
18 | 82 | 'ajovuoro': schedule_entry['stop'].ajo.nimi, |
83 | 'yö': is_night_time(schedule_entry['time']), | |
0 | 84 | }) |
5 | 85 | return render_template( |
86 | 'pysäkki.html', | |
87 | aikataulu = aikataulu, | |
19
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
88 | nimi = tunniste + ' ' + tr(pysäkki.nimi, 'pysäkit'), |
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
89 | linkki_karttaan = pysäkki.sijainti.link_to_map, |
5 | 90 | alue = pysäkki.alue, |
91 | sijainti = pysäkki.sijainti, | |
21 | 92 | cluster = pysäkki.cluster.url_name if len(pysäkki.cluster.stops) > 1 else None, |
20
3199e289ae62
- Sivusto hieman edustuksellisempi
Teemu Piippo <teemu@hecknology.net>
parents:
19
diff
changeset
|
93 | tr = tr, |
19
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
94 | ) |
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
95 | |
20
3199e289ae62
- Sivusto hieman edustuksellisempi
Teemu Piippo <teemu@hecknology.net>
parents:
19
diff
changeset
|
96 | def time_representation(aika, suhteellinen = True): |
3199e289ae62
- Sivusto hieman edustuksellisempi
Teemu Piippo <teemu@hecknology.net>
parents:
19
diff
changeset
|
97 | erotus = aika - nyt() |
21 | 98 | if suhteellinen and erotus > timedelta(0) and erotus < timedelta(minutes = 1): |
20
3199e289ae62
- Sivusto hieman edustuksellisempi
Teemu Piippo <teemu@hecknology.net>
parents:
19
diff
changeset
|
99 | return tr('right-now', 'misc-text') |
21 | 100 | elif suhteellinen and erotus > timedelta(0) and erotus < timedelta(minutes = 10): |
20
3199e289ae62
- Sivusto hieman edustuksellisempi
Teemu Piippo <teemu@hecknology.net>
parents:
19
diff
changeset
|
101 | return '%dm' % round(erotus.seconds / 60) |
3199e289ae62
- Sivusto hieman edustuksellisempi
Teemu Piippo <teemu@hecknology.net>
parents:
19
diff
changeset
|
102 | elif aika.date() == tänään(): |
3199e289ae62
- Sivusto hieman edustuksellisempi
Teemu Piippo <teemu@hecknology.net>
parents:
19
diff
changeset
|
103 | return '%d:%02d' % (aika.hour, aika.minute) |
3199e289ae62
- Sivusto hieman edustuksellisempi
Teemu Piippo <teemu@hecknology.net>
parents:
19
diff
changeset
|
104 | elif erotus < timedelta(7): |
3199e289ae62
- Sivusto hieman edustuksellisempi
Teemu Piippo <teemu@hecknology.net>
parents:
19
diff
changeset
|
105 | with activate_locale(): |
3199e289ae62
- Sivusto hieman edustuksellisempi
Teemu Piippo <teemu@hecknology.net>
parents:
19
diff
changeset
|
106 | return aika.strftime('%-a %H:%M') |
3199e289ae62
- Sivusto hieman edustuksellisempi
Teemu Piippo <teemu@hecknology.net>
parents:
19
diff
changeset
|
107 | else: |
3199e289ae62
- Sivusto hieman edustuksellisempi
Teemu Piippo <teemu@hecknology.net>
parents:
19
diff
changeset
|
108 | with activate_locale(): |
3199e289ae62
- Sivusto hieman edustuksellisempi
Teemu Piippo <teemu@hecknology.net>
parents:
19
diff
changeset
|
109 | return aika.strftime('%-d.%-m. %H:%M') |
3199e289ae62
- Sivusto hieman edustuksellisempi
Teemu Piippo <teemu@hecknology.net>
parents:
19
diff
changeset
|
110 | |
19
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
111 | @app.route('/pysäkkiryhmä/<cluster_name>') |
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
112 | def cluster_schedule(cluster_name): |
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
113 | from buses import pysäkit, clusters_by_name |
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
114 | aikataulu = [] |
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
115 | try: |
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
116 | cluster = clusters_by_name[cluster_name] |
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
117 | except KeyError: |
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
118 | abort(404) |
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
119 | for schedule_entry in cluster.schedule(100): |
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
120 | aikataulu.append({ |
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
121 | 'aika': time_representation(schedule_entry['time']), |
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
122 | 'linja': schedule_entry['trip'].linja.viite, |
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
123 | 'kyltti': sign(schedule_entry), |
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
124 | 'ajovuoro': schedule_entry['stop'].ajo.nimi, |
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
125 | 'yö': is_night_time(schedule_entry['time']), |
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
126 | 'stop_id': schedule_entry['stop'].pysäkki.tunniste, |
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
127 | 'stop_name': tr(schedule_entry['stop'].pysäkki.nimi, 'pysäkit'), |
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
128 | }) |
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
129 | return render_template( |
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
130 | 'cluster.html', |
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
131 | aikataulu = aikataulu, |
21 | 132 | nimi = cluster.name, |
19
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
133 | linkki_karttaan = cluster.center.link_to_map, |
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
134 | sijainti = cluster.center, |
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
135 | stops_in_cluster = sorted( |
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
136 | ({ |
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
137 | 'id': stop.tunniste, |
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
138 | 'name': tr(stop.nimi, 'pysäkit'), |
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
139 | } for stop in cluster.stops), |
16fa9fb20b32
Lisätty pysäkkiryhmän aikataulunäkymä
Teemu Piippo <teemu@hecknology.net>
parents:
18
diff
changeset
|
140 | key = lambda stop: (len(stop['id']), stop['id']) |
20
3199e289ae62
- Sivusto hieman edustuksellisempi
Teemu Piippo <teemu@hecknology.net>
parents:
19
diff
changeset
|
141 | ), |
3199e289ae62
- Sivusto hieman edustuksellisempi
Teemu Piippo <teemu@hecknology.net>
parents:
19
diff
changeset
|
142 | tr = tr, |
5 | 143 | ) |
0 | 144 | |
4 | 145 | @app.route('/ajovuoro/<numero>') |
0 | 146 | def ajoreitti(numero): |
2 | 147 | from flask import request |
7
f3791dccfd03
Käännetty tiedostojen nimet englanniksi
Teemu Piippo <teemu@hecknology.net>
parents:
5
diff
changeset
|
148 | from buses import ajot |
3 | 149 | try: |
150 | ajovuoro = ajot[numero] | |
151 | except KeyError: | |
152 | abort(404) | |
2 | 153 | suppea = request.args.get('suppea') is not None |
0 | 154 | reitti = [] |
2 | 155 | suppea_reitti = [] |
156 | käydyt_alueet = set() | |
0 | 157 | for pysähdys in ajovuoro.reitti: |
4 | 158 | aika = datetime.combine(tänään(), time()) + pysähdys.saapumisaika |
18 | 159 | muotoiltu_aika = time_representation(aika) |
0 | 160 | reitti.append({ |
2 | 161 | 'aika': muotoiltu_aika, |
0 | 162 | 'tunniste': pysähdys.pysäkki.tunniste, |
10
843c6ee340e7
Refaktoroitu käännä-funktio, kaikki kielet luetaan automaattisesti
Teemu Piippo <teemu@hecknology.net>
parents:
9
diff
changeset
|
163 | 'alue': tr(pysähdys.pysäkki.alue or '', 'paikat'), |
843c6ee340e7
Refaktoroitu käännä-funktio, kaikki kielet luetaan automaattisesti
Teemu Piippo <teemu@hecknology.net>
parents:
9
diff
changeset
|
164 | 'nimi': tr(pysähdys.pysäkki.nimi, 'pysäkit'), |
0 | 165 | }) |
2 | 166 | alue = pysähdys.pysäkki.alue |
167 | if alue: | |
168 | if alue not in käydyt_alueet: | |
169 | suppea_reitti.append({ | |
170 | 'aika': muotoiltu_aika, | |
21 | 171 | 'alue': tr(alue or '', 'paikat'), |
2 | 172 | }) |
173 | käydyt_alueet.add(alue) | |
5 | 174 | kyltti = supista_reitti([k['alue'] for k in suppea_reitti], kokonainen = True) |
21 | 175 | kyltti = [kyltti[0], kyltti[-1]] |
2 | 176 | sivu = suppea and 'ajovuoro-suppea.html' or 'ajovuoro.html' |
18 | 177 | return render_template(sivu, |
20
3199e289ae62
- Sivusto hieman edustuksellisempi
Teemu Piippo <teemu@hecknology.net>
parents:
19
diff
changeset
|
178 | reitti = reitti, |
3199e289ae62
- Sivusto hieman edustuksellisempi
Teemu Piippo <teemu@hecknology.net>
parents:
19
diff
changeset
|
179 | suppea_reitti = suppea_reitti, |
3199e289ae62
- Sivusto hieman edustuksellisempi
Teemu Piippo <teemu@hecknology.net>
parents:
19
diff
changeset
|
180 | numero = numero, |
3199e289ae62
- Sivusto hieman edustuksellisempi
Teemu Piippo <teemu@hecknology.net>
parents:
19
diff
changeset
|
181 | linja = ajovuoro.linja.viite, |
3199e289ae62
- Sivusto hieman edustuksellisempi
Teemu Piippo <teemu@hecknology.net>
parents:
19
diff
changeset
|
182 | selite = ' - '.join(tr(paikka, 'paikat') for paikka in kyltti), |
3199e289ae62
- Sivusto hieman edustuksellisempi
Teemu Piippo <teemu@hecknology.net>
parents:
19
diff
changeset
|
183 | yö = is_night_time(datetime.combine(tänään(), time()) + ajovuoro.reitti[-1].saapumisaika), |
3199e289ae62
- Sivusto hieman edustuksellisempi
Teemu Piippo <teemu@hecknology.net>
parents:
19
diff
changeset
|
184 | tr = tr, |
3199e289ae62
- Sivusto hieman edustuksellisempi
Teemu Piippo <teemu@hecknology.net>
parents:
19
diff
changeset
|
185 | ) |
0 | 186 | |
11
e18ad36fbbf5
Lisätty favicon, korjattu tr()-funktio joka ei olettunut suomen kieleen (vaan kääntämättömään)
Teemu Piippo <teemu@hecknology.net>
parents:
10
diff
changeset
|
187 | @app.route('/static/<path:path>') |
e18ad36fbbf5
Lisätty favicon, korjattu tr()-funktio joka ei olettunut suomen kieleen (vaan kääntämättömään)
Teemu Piippo <teemu@hecknology.net>
parents:
10
diff
changeset
|
188 | def static_file(path): |
e18ad36fbbf5
Lisätty favicon, korjattu tr()-funktio joka ei olettunut suomen kieleen (vaan kääntämättömään)
Teemu Piippo <teemu@hecknology.net>
parents:
10
diff
changeset
|
189 | return send_from_directory(path.join('static', path)) |
e18ad36fbbf5
Lisätty favicon, korjattu tr()-funktio joka ei olettunut suomen kieleen (vaan kääntämättömään)
Teemu Piippo <teemu@hecknology.net>
parents:
10
diff
changeset
|
190 | |
0 | 191 | if __name__ == '__main__': |
2 | 192 | from argparse import ArgumentParser |
193 | parser = ArgumentParser() | |
194 | parser.add_argument('-p', '--port', type = int, default = 5000) | |
10
843c6ee340e7
Refaktoroitu käännä-funktio, kaikki kielet luetaan automaattisesti
Teemu Piippo <teemu@hecknology.net>
parents:
9
diff
changeset
|
195 | parser.add_argument('-d', '--debug', action = 'store_true') |
2 | 196 | args = parser.parse_args() |
10
843c6ee340e7
Refaktoroitu käännä-funktio, kaikki kielet luetaan automaattisesti
Teemu Piippo <teemu@hecknology.net>
parents:
9
diff
changeset
|
197 | app.run(debug = args.debug, port = args.port) |