service.py

changeset 20
3199e289ae62
parent 19
16fa9fb20b32
child 21
6a0394d5a159
equal deleted inserted replaced
19:16fa9fb20b32 20:3199e289ae62
9 from busroute import supista_reitti 9 from busroute import supista_reitti
10 10
11 app = Flask(__name__) 11 app = Flask(__name__)
12 12
13 # Varmista ettei järjestelmän kieliasetukset sotke muotoiluja 13 # Varmista ettei järjestelmän kieliasetukset sotke muotoiluja
14 locale.setlocale(locale.LC_ALL, locale.getdefaultlocale()) 14 def reset_locale():
15 locale.setlocale(locale.LC_ALL, locale.getdefaultlocale())
16
17 def activate_locale(language = None):
18 language = language or language_for_page()
19 class result:
20 def __enter__(self):
21 locale.setlocale(locale.LC_ALL, tr('locale', 'other', language = language))
22 def __exit__(self, *args):
23 reset_locale()
24 return result()
25
26 reset_locale()
15 27
16 # Lataa käännökset 28 # Lataa käännökset
17 class Translator: 29 class Translator:
18 def __init__(self): 30 def __init__(self):
19 self.languages = {} 31 self.languages = {}
75 aikataulu = aikataulu, 87 aikataulu = aikataulu,
76 nimi = tunniste + ' ' + tr(pysäkki.nimi, 'pysäkit'), 88 nimi = tunniste + ' ' + tr(pysäkki.nimi, 'pysäkit'),
77 linkki_karttaan = pysäkki.sijainti.link_to_map, 89 linkki_karttaan = pysäkki.sijainti.link_to_map,
78 alue = pysäkki.alue, 90 alue = pysäkki.alue,
79 sijainti = pysäkki.sijainti, 91 sijainti = pysäkki.sijainti,
80 cluster = pysäkki.cluster.name, 92 cluster = pysäkki.cluster.name if len(pysäkki.cluster.stops) > 1 else None,
93 tr = tr,
81 ) 94 )
95
96 def time_representation(aika, suhteellinen = True):
97 erotus = aika - nyt()
98 if suhteellinen and erotus < timedelta(minutes = 1):
99 return tr('right-now', 'misc-text')
100 elif suhteellinen and erotus < timedelta(minutes = 10):
101 return '%dm' % round(erotus.seconds / 60)
102 elif aika.date() == tänään():
103 return '%d:%02d' % (aika.hour, aika.minute)
104 elif erotus < timedelta(7):
105 with activate_locale():
106 return aika.strftime('%-a %H:%M')
107 else:
108 with activate_locale():
109 return aika.strftime('%-d.%-m. %H:%M')
82 110
83 @app.route('/pysäkkiryhmä/<cluster_name>') 111 @app.route('/pysäkkiryhmä/<cluster_name>')
84 def cluster_schedule(cluster_name): 112 def cluster_schedule(cluster_name):
85 from buses import pysäkit, clusters_by_name 113 from buses import pysäkit, clusters_by_name
86 aikataulu = [] 114 aikataulu = []
108 ({ 136 ({
109 'id': stop.tunniste, 137 'id': stop.tunniste,
110 'name': tr(stop.nimi, 'pysäkit'), 138 'name': tr(stop.nimi, 'pysäkit'),
111 } for stop in cluster.stops), 139 } for stop in cluster.stops),
112 key = lambda stop: (len(stop['id']), stop['id']) 140 key = lambda stop: (len(stop['id']), stop['id'])
113 ) 141 ),
142 tr = tr,
114 ) 143 )
115 144
116 @app.route('/ajovuoro/<numero>') 145 @app.route('/ajovuoro/<numero>')
117 def ajoreitti(numero): 146 def ajoreitti(numero):
118 from flask import request 147 from flask import request
143 }) 172 })
144 käydyt_alueet.add(alue) 173 käydyt_alueet.add(alue)
145 kyltti = supista_reitti([k['alue'] for k in suppea_reitti], kokonainen = True) 174 kyltti = supista_reitti([k['alue'] for k in suppea_reitti], kokonainen = True)
146 sivu = suppea and 'ajovuoro-suppea.html' or 'ajovuoro.html' 175 sivu = suppea and 'ajovuoro-suppea.html' or 'ajovuoro.html'
147 return render_template(sivu, 176 return render_template(sivu,
148 reitti = reitti, 177 reitti = reitti,
149 suppea_reitti = suppea_reitti, 178 suppea_reitti = suppea_reitti,
150 numero = numero, 179 numero = numero,
151 linja = ajovuoro.linja.viite, 180 linja = ajovuoro.linja.viite,
152 selite = ' - '.join(tr(paikka, 'paikat') for paikka in kyltti), 181 selite = ' - '.join(tr(paikka, 'paikat') for paikka in kyltti),
153 yö = time_representation(datetime.combine(tänään(), time()) + ajovuoro.reitti[-1].saapumisaika), 182 yö = is_night_time(datetime.combine(tänään(), time()) + ajovuoro.reitti[-1].saapumisaika),
154 ) 183 tr = tr,
184 )
155 185
156 @app.route('/static/<path:path>') 186 @app.route('/static/<path:path>')
157 def static_file(path): 187 def static_file(path):
158 return send_from_directory(path.join('static', path)) 188 return send_from_directory(path.join('static', path))
159 189

mercurial