Basic User edit in tables

This commit is contained in:
Ozzie Isaacs
2021-01-31 10:17:57 +01:00
parent ff16afbf0b
commit 62447d6b89
4 changed files with 205 additions and 0 deletions
+58
View File
@@ -212,6 +212,64 @@ def view_configuration():
restrictColumns=restrict_columns,
title=_(u"UI Configuration"), page="uiconfig")
@admi.route("/admin/usertable")
@login_required
@admin_required
def edit_user_table():
visibility = current_user.view_settings.get('useredit', {})
allUser = ub.session.query(ub.User).all()
return render_title_template("user_table.html", users=allUser, visiblility=visibility,
title=_(u"Edit Users"), page="usertable")
@admi.route("/axjax/listusers")
@login_required
@admin_required
def list_users():
off = request.args.get("offset") or 0
limit = request.args.get("limit") or 10
total_count = ub.session.query(ub.User).count()
search = request.args.get("search")
if search:
users = ub.session.query(ub.User).filter().offset(off).limit(limit).all()
filtered_count = users.length()
# entries, filtered_count, pagination = calibre_db.get_search_results(search, off, order, limit)
else:
users = ub.session.query(ub.User).offset(off).limit(limit).all()
filtered_count = total_count
table_entries = {'totalNotFiltered': total_count, 'total': filtered_count, "rows": users}
js_list = json.dumps(table_entries, cls=db.AlchemyEncoder)
response = make_response(js_list)
response.headers["Content-Type"] = "application/json; charset=utf-8"
return response
@admi.route("/axjax/editlistusers/<param>", methods=['POST'])
@login_required
@admin_required
def edit_list_user(param):
vals = request.form.to_dict()
user = ub.session.query(ub.User).filter(ub.User.id == vals['pk']).one_or_none() # ub.User.query calibre_db.get_book(vals['pk'])
if param =='nickname':
if not ub.session.query(ub.User).filter(ub.User.nickname == vals['value']).scalar():
user.nickname = vals['value']
else:
log.error(u"This username is already taken")
return _(u"This username is already taken"), 400
elif param =='email':
existing_email = ub.session.query(ub.User).filter(ub.User.email == vals['value'].lower()).first()
if not existing_email:
user.email = vals['value']
else:
log.error(u"Found an existing account for this e-mail address.")
return _(u"Found an existing account for this e-mail address."), 400
elif param =='kindle_mail':
user.kindle_mail = vals['value']
ub.session_commit()
return ""
@admi.route("/admin/viewconfig", methods=["POST"])
@login_required