Add the posibility to change the username
This commit is contained in:
parent
0c40e40dc3
commit
3764c33a3a
19
cps/admin.py
19
cps/admin.py
|
@ -35,7 +35,7 @@ from flask_login import login_required, current_user, logout_user
|
|||
from flask_babel import gettext as _
|
||||
from sqlalchemy import and_
|
||||
from sqlalchemy.exc import IntegrityError
|
||||
from sqlalchemy.sql.expression import func
|
||||
from sqlalchemy.sql.expression import func, exists
|
||||
from werkzeug.security import generate_password_hash
|
||||
|
||||
from . import constants, logger, helper, services
|
||||
|
@ -563,7 +563,6 @@ def edit_user(user_id):
|
|||
else:
|
||||
if "password" in to_save and to_save["password"]:
|
||||
content.password = generate_password_hash(to_save["password"])
|
||||
|
||||
anonymous = content.is_anonymous
|
||||
content.role = constants.selected_roles(to_save)
|
||||
if anonymous:
|
||||
|
@ -601,6 +600,22 @@ def edit_user(user_id):
|
|||
return render_title_template("user_edit.html", translations=translations, languages=languages,
|
||||
new_user=0, content=content, downloads=downloads, registered_oauth=oauth_check,
|
||||
title=_(u"Edit User %(nick)s", nick=content.nickname), page="edituser")
|
||||
if "nickname" in to_save and to_save["nickname"] != content.nickname:
|
||||
existing_nickname = ub.session.query(exists().where(
|
||||
ub.User.nickname == to_save["nickname"])).scalar()
|
||||
if not existing_nickname:
|
||||
content.nickname = to_save["nickname"]
|
||||
else:
|
||||
flash(_(u"This username is already taken."), category="error")
|
||||
return render_title_template("user_edit.html",
|
||||
translations=translations,
|
||||
languages=languages,
|
||||
new_user=0, content=content,
|
||||
downloads=downloads,
|
||||
registered_oauth=oauth_check,
|
||||
title=_(u"Edit User %(nick)s",
|
||||
nick=content.nickname),
|
||||
page="edituser")
|
||||
|
||||
if "kindle_mail" in to_save and to_save["kindle_mail"] != content.kindle_mail:
|
||||
content.kindle_mail = to_save["kindle_mail"]
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<div class="discover">
|
||||
<h1>{{title}}</h1>
|
||||
<form role="form" method="POST" autocomplete="off">
|
||||
{% if g.user and g.user.role_admin() and new_user %}
|
||||
{% if g.user or g.user.role_admin() or new_user %}
|
||||
<div class="form-group required">
|
||||
<label for="nickname">{{_('Username')}}</label>
|
||||
<input type="text" class="form-control" name="nickname" id="nickname" value="{{ content.nickname if content.nickname != None }}" autocomplete="off">
|
||||
|
|
|
@ -27,6 +27,7 @@ from flask import g
|
|||
from flask_babel import gettext as _
|
||||
from flask_login import AnonymousUserMixin
|
||||
from werkzeug.local import LocalProxy
|
||||
|
||||
try:
|
||||
from flask_dance.consumer.backend.sqla import OAuthConsumerMixin
|
||||
oauth_support = True
|
||||
|
|
19
cps/web.py
19
cps/web.py
|
@ -38,7 +38,8 @@ from flask import render_template, request, redirect, send_from_directory, make_
|
|||
from flask_babel import gettext as _
|
||||
from flask_login import login_user, logout_user, login_required, current_user
|
||||
from sqlalchemy.exc import IntegrityError
|
||||
from sqlalchemy.sql.expression import text, func, true, false, not_, and_
|
||||
from sqlalchemy.sql.expression import text, func, true, false, not_, and_, \
|
||||
exists
|
||||
from werkzeug.exceptions import default_exceptions
|
||||
from werkzeug.datastructures import Headers
|
||||
from werkzeug.security import generate_password_hash, check_password_hash
|
||||
|
@ -1252,6 +1253,22 @@ def profile():
|
|||
return render_title_template("user_edit.html", content=current_user, downloads=downloads,
|
||||
title=_(u"%(name)s's profile", name=current_user.nickname), page="me",
|
||||
registered_oauth=oauth_check, oauth_status=oauth_status)
|
||||
if "nickname" in to_save and to_save["nickname"] != current_user.nickname:
|
||||
existing_nickname = ub.session.query(exists().where(
|
||||
ub.User.nickname == to_save["nickname"])).scalar()
|
||||
if not existing_nickname:
|
||||
current_user.nickname = to_save["nickname"]
|
||||
else:
|
||||
flash(_(u"This username is already taken."), category="error")
|
||||
return render_title_template("user_edit.html",
|
||||
translations=translations,
|
||||
languages=languages,
|
||||
new_user=0, content=current_user,
|
||||
downloads=downloads,
|
||||
registered_oauth=oauth_check,
|
||||
title=_(u"Edit User %(nick)s",
|
||||
nick=current_user.nickname),
|
||||
page="edituser")
|
||||
current_user.email = to_save["email"]
|
||||
if "show_random" in to_save and to_save["show_random"] == "on":
|
||||
current_user.random_books = 1
|
||||
|
|
Loading…
Reference in New Issue
Block a user