react to closed stations

This commit is contained in:
Joachim Lusiardi 2017-11-12 22:50:25 +01:00
parent 9427ed50ad
commit 543d3e1658
5 changed files with 71 additions and 26 deletions

View File

@ -49,27 +49,6 @@ def select_consumable_for_new_pitstop(vid):
return render_template('selectConsumableForVehicle.html', vehicle=vehicle, form=form) return render_template('selectConsumableForVehicle.html', vehicle=vehicle, form=form)
@app.route('/pitstops/vehicle/<int:vid>/consumable/<int:cid>/plan', methods=['GET', 'POST'])
@login_required
def plan_pit_stop_form(vid, cid):
vehicle = Vehicle.query.get(vid)
if vehicle is None or vehicle not in current_user.vehicles:
return redirect(url_for('select_vehicle_for_new_pitstop'))
consumable = Consumable.query.get(cid)
if consumable not in vehicle.consumables:
return redirect(url_for('select_consumable_for_new_pitstop', vid=vid))
update_filling_station_prices([x.id for x in current_user.favourite_filling_stations])
offers = []
for fs in current_user.favourite_filling_stations:
if fs.open:
offers.append((fs, getattr(fs, consumable.ext_id),))
return render_template('planPitStopForm.html', vehicle=vehicle, consumable=consumable, offers=offers)
@app.route('/pitstops/vehicle/<int:vid>/consumable/<int:cid>/create', methods=['GET', 'POST']) @app.route('/pitstops/vehicle/<int:vid>/consumable/<int:cid>/create', methods=['GET', 'POST'])
@login_required @login_required
def create_pit_stop_form(vid, cid): def create_pit_stop_form(vid, cid):
@ -202,3 +181,64 @@ def get_pit_stops():
user['vehicles'].append(v) user['vehicles'].append(v)
return render_template('pitstops.html', user=user) return render_template('pitstops.html', user=user)
@app.route('/pitstops/plan/vehicle/select', methods=['GET', 'POST'])
@login_required
def select_vehicle_for_plan_pitstop():
if len(current_user.vehicles) == 1:
return redirect(url_for('select_consumable_for_plan_pitstop', vid=current_user.vehicles[0].id))
form = SelectVehicleForm()
form.vehicle.choices = [(g.id, g.name) for g in current_user.vehicles]
if form.validate_on_submit():
return redirect(url_for('select_consumable_for_plan_pitstop', vid=form.vehicle.data))
return render_template('selectVehicle.html', form=form)
@app.route('/pitstops/plan/vehicle/<int:vid>/consumable/select', methods=['GET', 'POST'])
@login_required
def select_consumable_for_plan_pitstop(vid):
vehicle = Vehicle.query.get(vid)
if vehicle is None or vehicle not in current_user.vehicles:
return redirect(url_for('select_consumable_for_plan_pitstop'))
if len(vehicle.consumables) == 0:
flash('Please choose at least one consumable!', 'warning')
return redirect(url_for('edit_vehicle', vid=vid))
if len(vehicle.consumables) == 1:
return redirect(url_for('plan_pit_stop_form', vid=vid, cid=vehicle.consumables[0].id))
form = SelectConsumableForm()
form.consumable.choices = [(g.id, g.name) for g in vehicle.consumables]
if form.validate_on_submit():
return redirect(url_for('plan_pit_stop_form', vid=vid, cid=form.consumable.data))
return render_template('selectConsumableForVehicle.html', vehicle=vehicle, form=form)
@app.route('/pitstops/plan/vehicle/<int:vid>/consumable/<int:cid>', methods=['GET', 'POST'])
@login_required
def plan_pit_stop_form(vid, cid):
vehicle = Vehicle.query.get(vid)
if vehicle is None or vehicle not in current_user.vehicles:
return redirect(url_for('select_vehicle_for_new_pitstop'))
consumable = Consumable.query.get(cid)
if consumable not in vehicle.consumables:
return redirect(url_for('select_consumable_for_new_pitstop', vid=vid))
update_filling_station_prices([x.id for x in current_user.favourite_filling_stations])
offers = []
for fs in current_user.favourite_filling_stations:
# if fs.open:
offers.append((fs, getattr(fs, consumable.ext_id),))
return render_template('planPitStopForm.html', vehicle=vehicle, consumable=consumable, offers=offers)

View File

@ -121,3 +121,6 @@ th.headerSortDown {
background-image: url(../img/up.gif); background-image: url(../img/up.gif);
} }
.filling_station_closed {
text-decoration: line-through;
}

View File

@ -1,5 +1,6 @@
{% macro navigation() -%} {% macro navigation() -%}
{% if current_user.email %} {% if current_user.email %}
<li><a id='plan_pitstop_link' href='{{ url_for('select_vehicle_for_plan_pitstop') }}'>Plan Pitstop</a></li>
<li><a id='new_pitstop_link' href='{{ url_for('select_vehicle_for_new_pitstop') }}'>Create Pitstop</a></li> <li><a id='new_pitstop_link' href='{{ url_for('select_vehicle_for_new_pitstop') }}'>Create Pitstop</a></li>
<li><a id='new_service_link' href='{{ url_for('select_vehicle_for_new_service') }}'>Create Service</a></li> <li><a id='new_service_link' href='{{ url_for('select_vehicle_for_new_service') }}'>Create Service</a></li>
<li><a id='statistics_limk' href='{{ url_for('get_statistics') }}'>Statistics</a></li> <li><a id='statistics_limk' href='{{ url_for('get_statistics') }}'>Statistics</a></li>

View File

@ -30,7 +30,7 @@
</div> </div>
</div> </div>
</td> </td>
<td> <td class="filling_station_{{ 'open' if offer[0].open else 'closed'}}">
{{ offer[1] }} €/{{ consumable.unit }} {{ offer[1] }} €/{{ consumable.unit }}
</td> </td>
</tr> </tr>

View File

@ -190,9 +190,10 @@ def update_filling_station_prices(ids):
id = price id = price
station_status = prices[id] station_status = prices[id]
print(id, station_status) print(id, station_status)
map[id].open = station_status['status'] == 'open'
if map[id].open:
map[id].diesel = station_status['diesel'] map[id].diesel = station_status['diesel']
map[id].e10 = station_status['e10'] map[id].e10 = station_status['e10']
map[id].e5 = station_status['e5'] map[id].e5 = station_status['e5']
map[id].open = station_status['status'] == 'open'
map[id].last_update = datetime.now() map[id].last_update = datetime.now()
db.session.commit() db.session.commit()