made settings work lamely, but functional for now, also removed test route

This commit is contained in:
2021-01-10 15:48:21 +11:00
parent bfaaf8b7e2
commit 0d7fe03e5a
2 changed files with 55 additions and 5 deletions

View File

@@ -17,7 +17,57 @@ class Settings(db.Model):
def __repr__(self): def __repr__(self):
return "<id: {}, name: {}, value: {}>".format(self.id, self.name, self.value) return "<id: {}, name: {}, value: {}>".format(self.id, self.name, self.value)
### modify the below to add a import path, assumption will be there is only 1 ever import_path, it will have : separated values ###############################################################################
#s = Settings( name="import_path", value="/home/ddp/src/photoassistant/images_to_process" ) # Helper class that inherits a .dump() method to turn class Author into json / useful in jinja2
#db.session.add(s) ################################################################################
#db.session.commit() class SettingsSchema(ma.SQLAlchemyAutoSchema):
class Meta:
model = Settings
ordered = True
settings_schema=SettingsSchema()
################################################################################
# Helper class that defines a form for Settings, used to make html <form>
# with field validation (via wtforms)
################################################################################
class SettingsForm(FlaskForm):
id = HiddenField()
name = StringField('Name:', [validators.DataRequired()])
value = StringField('value:', [validators.DataRequired()])
submit = SubmitField('Save' )
################################################################################
# /settings -> show current settings
################################################################################
@app.route("/settings", methods=["GET"])
def settings():
sets = Settings.query.all()
form = SettingsForm()
page_title='Show Settings'
return render_template("settings.html", objects=sets, form=form, page_title = page_title, alert=st.GetAlert(), message=st.GetMessage() )
################################################################################
# /setting/<id> -> show current settings
################################################################################
@app.route("/setting/<id>", methods=["GET", "POST"])
def setting(id):
form = SettingsForm(request.form)
if request.method == 'POST' and form.validate():
try:
s = Settings.query.get(id)
if 'submit' in request.form:
st.SetMessage("Successfully Updated Setting (name={})".format(s.name) )
s.name = request.form['name']
s.value = request.form['value']
db.session.commit()
return redirect( '/settings' )
except SQLAlchemyError as e:
st.SetAlert( "danger" )
st.SetMessage( "<b>Failed to modify Setting:</b>&nbsp;{}".format(e.orig) )
return render_template("edit_setting.html", form=form, page_title=page_title, alert=st.GetAlert(), message=st.GetMessage() )
else:
s = Settings.query.get(id)
page_title='Edit Setting: {}'.format(s.name)
form = SettingsForm(request.values, obj=s)
return render_template("setting.html", objects=s, form=form, page_title = page_title, alert=st.GetAlert(), message=st.GetMessage() )

View File

@@ -45,12 +45,12 @@
<div class="nav-item dropdown"> <div class="nav-item dropdown">
<a class="nav-item dropdown nav-link dropdown-toggle" href="#" id="PhotoMenu" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Photos</a> <a class="nav-item dropdown nav-link dropdown-toggle" href="#" id="PhotoMenu" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Photos</a>
<div class="dropdown-menu" aria-labelledby="PhotoMenu"> <div class="dropdown-menu" aria-labelledby="PhotoMenu">
<a class="dropdown-item" href="{{url_for('test')}}">Test (route not here yet)</a>
</div> </div>
</div class="nav-item dropdown"> </div class="nav-item dropdown">
<div class="nav-item dropdown"> <div class="nav-item dropdown">
<a class="nav-item dropdown nav-link dropdown-toggle" href="#" id="AdminMenu" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Admin</a> <a class="nav-item dropdown nav-link dropdown-toggle" href="#" id="AdminMenu" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Admin</a>
<div class="dropdown-menu" aria-labelledby="AdminMenu"> <div class="dropdown-menu" aria-labelledby="AdminMenu">
<a class="dropdown-item" href="{{url_for('settings')}}">Settings</a>
</div class="dropdow-menu"> </div class="dropdow-menu">
</div class="nav-item dropdown"> </div class="nav-item dropdown">
</div clas="navbar-nav"> </div clas="navbar-nav">