adds edit vehicle name

This commit is contained in:
Joachim Lusiardi 2016-04-23 11:20:39 +02:00
parent 729fee51e9
commit d19b0a5858
3 changed files with 80 additions and 55 deletions

View File

@ -14,8 +14,8 @@ from flask.ext.security import user_registered
from flask.ext.mail import Mail, Message
from flask_security.core import current_user
from flask_wtf import Form
from wtforms import DateField, IntegerField, DecimalField, SelectField
from wtforms.validators import DataRequired, ValidationError
from wtforms import DateField, IntegerField, StringField, DecimalField, SelectField
from wtforms.validators import DataRequired, ValidationError, Length
import os
app = Flask(__name__)
@ -99,55 +99,6 @@ class Pitstop(db.Model):
return '<Pitstop %r km, %r l>' % (self.odometer, self.litres)
user_datastore = SQLAlchemyUserDatastore(db, User, Role)
security = Security(app, user_datastore)
@user_registered.connect_via(app)
def user_registered_sighandler(app, user, confirm_token):
"""
Called after a user was created
"""
role = user_datastore.find_role('user')
user_datastore.add_role_to_user(user, role)
@app.before_first_request
def before_first_request():
db.create_all()
user_datastore.find_or_create_role(name='admin', description='Role for administrators')
user_datastore.find_or_create_role(name='user', description='Role for all users.')
db.session.commit()
user = User.query.filter(User.email=='someone@example.com').first()
if len(user.vehicles) == 0:
v = Vehicle('someone')
db.session.add(v)
user.vehicles.append(v)
db.session.commit()
user = User.query.filter(User.email=='admin@example.com').first()
if len(user.vehicles) == 0:
v = Vehicle('admin_1')
db.session.add(v)
user.vehicles.append(v)
v = Vehicle('admin_2')
db.session.add(v)
user.vehicles.append(v)
db.session.commit()
@app.before_request
def before_request():
g.data = {}
@app.route('/')
@login_required
def index():
return redirect(url_for('get_pit_stops'))
def date_check(form, field):
if field.data < form.pitstop.date:
raise ValidationError('The new date must after %s' % form.pitstop.date)
@ -174,6 +125,62 @@ class CreatePitstopForm(Form):
self.pitstop = pitstop
class EditVehicleForm(Form):
name = StringField('Name', validators=[Length(1, 255)])
user_datastore = SQLAlchemyUserDatastore(db, User, Role)
security = Security(app, user_datastore)
@user_registered.connect_via(app)
def user_registered_sighandler(app, user, confirm_token):
"""
Called after a user was created
"""
role = user_datastore.find_role('user')
user_datastore.add_role_to_user(user, role)
v = Vehicle('default vehicle')
db.session.add(v)
user.vehicles.append(v)
db.session.commit()
@app.before_first_request
def before_first_request():
db.create_all()
user_datastore.find_or_create_role(name='admin', description='Role for administrators')
user_datastore.find_or_create_role(name='user', description='Role for all users.')
db.session.commit()
@app.before_request
def before_request():
g.data = {}
@app.route('/')
@login_required
def index():
return redirect(url_for('get_pit_stops'))
@app.route('/account/edit_vehicle/<int:vid>', methods=['GET', 'POST'])
@login_required
def edit_vehicle(vid):
vehicle = Vehicle.query.filter(Vehicle.id == vid).first()
form = EditVehicleForm()
if form.validate_on_submit():
vehicle.name = form.name.data;
db.session.commit()
return redirect(url_for('get_account_page'))
form.name.default = vehicle.name
form.process()
return render_template('editVehicleForm.html', form=form)
@app.route('/pitstops/createForm', methods=['GET', 'POST'])
@login_required
def create_pit_stop_form():
@ -183,12 +190,9 @@ def create_pit_stop_form():
form = CreatePitstopForm()
form.set_pitstop(last_pitstop)
print(current_user.vehicles)
form.vehicle.choices = [(g.id, g.name) for g in current_user.vehicles]
if form.validate_on_submit():
print(form.vehicle.data)
v = Vehicle.query.filter(Vehicle.id==form.vehicle.data).first()
v = Vehicle.query.filter(Vehicle.id == form.vehicle.data).first()
new_stop = Pitstop(form.odometer.data, form.litres.data, form.date.data)
db.session.add(new_stop)
v.pitstops.append(new_stop)
@ -196,6 +200,7 @@ def create_pit_stop_form():
return redirect(url_for('get_pit_stops'))
# dynamically set values
form.vehicle.choices = [(g.id, g.name) for g in current_user.vehicles]
form.odometer.default = last_pitstop.odometer
form.litres.default = last_pitstop.litres
form.date.default = date.today()

View File

@ -4,4 +4,13 @@
<h1>Account management for {{current_user.email}}</h1>
<a href='{{ url_for('security.change_password') }}'>Change password</a>
<table>
{% for vehicle in current_user.vehicles %}
<tr>
<td>{{vehicle.name}}</td>
<td><a href="{{ url_for('edit_vehicle', vid=vehicle.id) }}">edit</a></td>
</tr>
{% endfor %}
</table>
{% endblock %}

View File

@ -0,0 +1,11 @@
{% extends "layout.html" %}
{% block body %}
<form class='form-horizontal' method="POST">
{{ form.hidden_tag() }}
{{ render_field_with_errors(form.name) }}
<input type="submit" value="Go">
</form>
{% endblock %}