diff --git a/app/__init__.py b/app/__init__.py index d9343ec..bb238a8 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -61,9 +61,21 @@ def user_registered_sighandler(application, user, confirm_token): tools.db_log_add(new_vehicle) +def assure_consumable(name, ext_id, unit): + if not Consumable.query.filter(Consumable.ext_id == ext_id).first(): + c = Consumable(name, ext_id, unit) + db.session.add(c) + + @app.before_first_request def before_first_request(): db.create_all() + + # make sure all consumables from tankerkoenig exist: diesel, e5, e10 + assure_consumable('Diesel', 'diesel', 'L') + assure_consumable('Super','e5', 'L') + assure_consumable('Super E10','e10', 'L') + 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() diff --git a/app/entities.py b/app/entities.py index e47b614..fe86c52 100644 --- a/app/entities.py +++ b/app/entities.py @@ -142,6 +142,7 @@ class Consumable(db.Model): """ id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(255), unique=True) + ext_id = db.Column(db.String(255)) unit = db.Column(db.String(255)) vehicles = db.relationship( @@ -149,8 +150,9 @@ class Consumable(db.Model): secondary=vehicles_consumables ) - def __init__(self, name, unit): + def __init__(self, name, ext_id, unit): self.name = name + self.ext_id = ext_id self.unit = unit def __repr__(self): diff --git a/app/forms/consumable.py b/app/forms/consumable.py index a63b3e6..59ed312 100644 --- a/app/forms/consumable.py +++ b/app/forms/consumable.py @@ -10,12 +10,14 @@ class SelectConsumableForm(FlaskForm): class CreateConsumableForm(FlaskForm): name = StringField('Name', validators=[Length(1, 255)]) + ext_id = SelectField('Tankerkönig ID', coerce=int) unit = StringField('Unit', validators=[Length(1, 255)]) submit = SubmitField(label='Do it!') class EditConsumableForm(FlaskForm): name = StringField('Name', validators=[Length(1, 255)]) + ext_id = SelectField('Tankerkönig ID', coerce=int) unit = StringField('Unit', validators=[Length(1, 255)]) submit = SubmitField(label='Do it!') diff --git a/app/routes/admin.py b/app/routes/admin.py index a978daf..dc63702 100644 --- a/app/routes/admin.py +++ b/app/routes/admin.py @@ -22,6 +22,8 @@ def get_admin_page(): @login_required def create_consumable(): form = CreateConsumableForm() + choices = [(0, ''), (1, 'diesel'), (2, 'e5'), (3, 'e10')] + form.ext_id.choices = choices # preinitialize the defaults with potentially existing values from a try before if form.name.data is not None: @@ -30,7 +32,7 @@ def create_consumable(): form.unit.default = form.unit.data if form.validate_on_submit(): - new_consumable = Consumable(form.name.data, form.unit.data) + new_consumable = Consumable(form.name.data, choices[form.ext_id.data][1], form.unit.data) db.session.add(new_consumable) try: db.session.commit() @@ -70,19 +72,30 @@ def edit_consumable(cid): return redirect(url_for('get_admin_page')) form = EditConsumableForm() + choices = [(0, ''), (1, 'diesel'), (2, 'e5'), (3, 'e10')] + form.ext_id.choices = choices form.name.default = consumable.name form.unit.default = consumable.unit + form.ext_id.default = 3 + for c in choices: + if c[1] == consumable.ext_id: + form.ext_id.default = c[0] # preinitialize the defaults with potentially existing values from a try before if form.name.data is not None: form.name.default = form.name.data if form.unit.data is not None: form.unit.default = form.unit.data + if form.ext_id.data is not None: + form.ext_id.default = form.ext_id.data if form.validate_on_submit(): consumable.name = form.name.data consumable.unit = form.unit.data + print(form.ext_id.data) + consumable.ext_id = choices[form.ext_id.data][1] + print(consumable.ext_id) try: db.session.commit() db_log_update(consumable) diff --git a/app/templates/createConsumableForm.html b/app/templates/createConsumableForm.html index 1634ccf..270e363 100644 --- a/app/templates/createConsumableForm.html +++ b/app/templates/createConsumableForm.html @@ -9,6 +9,7 @@
{{ form.hidden_tag() }} {{ render_field_with_errors(form.name) }} + {{ render_field_with_errors(form.ext_id) }} {{ render_field_with_errors(form.unit) }} {{ render_field_with_errors(form.submit) }}
diff --git a/app/templates/editConsumableForm.html b/app/templates/editConsumableForm.html index cea6d0e..0289b65 100644 --- a/app/templates/editConsumableForm.html +++ b/app/templates/editConsumableForm.html @@ -9,6 +9,7 @@
{{ form.hidden_tag() }} {{ render_field_with_errors(form.name) }} + {{ render_field_with_errors(form.ext_id) }} {{ render_field_with_errors(form.unit) }} {{ render_field_with_errors(form.submit) }}