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 flask_babel import gettext as _
 | 
				
			||||||
from sqlalchemy import and_
 | 
					from sqlalchemy import and_
 | 
				
			||||||
from sqlalchemy.exc import IntegrityError
 | 
					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 werkzeug.security import generate_password_hash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from . import constants, logger, helper, services
 | 
					from . import constants, logger, helper, services
 | 
				
			||||||
| 
						 | 
					@ -563,7 +563,6 @@ def edit_user(user_id):
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            if "password" in to_save and to_save["password"]:
 | 
					            if "password" in to_save and to_save["password"]:
 | 
				
			||||||
                content.password = generate_password_hash(to_save["password"])
 | 
					                content.password = generate_password_hash(to_save["password"])
 | 
				
			||||||
 | 
					 | 
				
			||||||
            anonymous = content.is_anonymous
 | 
					            anonymous = content.is_anonymous
 | 
				
			||||||
            content.role = constants.selected_roles(to_save)
 | 
					            content.role = constants.selected_roles(to_save)
 | 
				
			||||||
            if anonymous:
 | 
					            if anonymous:
 | 
				
			||||||
| 
						 | 
					@ -601,6 +600,22 @@ def edit_user(user_id):
 | 
				
			||||||
                    return render_title_template("user_edit.html", translations=translations, languages=languages,
 | 
					                    return render_title_template("user_edit.html", translations=translations, languages=languages,
 | 
				
			||||||
                                                 new_user=0, content=content, downloads=downloads, registered_oauth=oauth_check,
 | 
					                                                 new_user=0, content=content, downloads=downloads, registered_oauth=oauth_check,
 | 
				
			||||||
                                                 title=_(u"Edit User %(nick)s", nick=content.nickname), page="edituser")
 | 
					                                                 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:
 | 
					            if "kindle_mail" in to_save and to_save["kindle_mail"] != content.kindle_mail:
 | 
				
			||||||
                content.kindle_mail = to_save["kindle_mail"]
 | 
					                content.kindle_mail = to_save["kindle_mail"]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,7 +3,7 @@
 | 
				
			||||||
<div class="discover">
 | 
					<div class="discover">
 | 
				
			||||||
  <h1>{{title}}</h1>
 | 
					  <h1>{{title}}</h1>
 | 
				
			||||||
  <form role="form" method="POST" autocomplete="off">
 | 
					  <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">
 | 
					    <div class="form-group required">
 | 
				
			||||||
      <label for="nickname">{{_('Username')}}</label>
 | 
					      <label for="nickname">{{_('Username')}}</label>
 | 
				
			||||||
      <input type="text" class="form-control" name="nickname" id="nickname" value="{{ content.nickname if content.nickname != None }}" autocomplete="off">
 | 
					      <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_babel import gettext as _
 | 
				
			||||||
from flask_login import AnonymousUserMixin
 | 
					from flask_login import AnonymousUserMixin
 | 
				
			||||||
from werkzeug.local import LocalProxy
 | 
					from werkzeug.local import LocalProxy
 | 
				
			||||||
 | 
					
 | 
				
			||||||
try:
 | 
					try:
 | 
				
			||||||
    from flask_dance.consumer.backend.sqla import OAuthConsumerMixin
 | 
					    from flask_dance.consumer.backend.sqla import OAuthConsumerMixin
 | 
				
			||||||
    oauth_support = True
 | 
					    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_babel import gettext as _
 | 
				
			||||||
from flask_login import login_user, logout_user, login_required, current_user
 | 
					from flask_login import login_user, logout_user, login_required, current_user
 | 
				
			||||||
from sqlalchemy.exc import IntegrityError
 | 
					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.exceptions import default_exceptions
 | 
				
			||||||
from werkzeug.datastructures import Headers
 | 
					from werkzeug.datastructures import Headers
 | 
				
			||||||
from werkzeug.security import generate_password_hash, check_password_hash
 | 
					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,
 | 
					                return render_title_template("user_edit.html", content=current_user, downloads=downloads,
 | 
				
			||||||
                                             title=_(u"%(name)s's profile", name=current_user.nickname), page="me",
 | 
					                                             title=_(u"%(name)s's profile", name=current_user.nickname), page="me",
 | 
				
			||||||
                                             registered_oauth=oauth_check, oauth_status=oauth_status)
 | 
					                                             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"]
 | 
					            current_user.email = to_save["email"]
 | 
				
			||||||
        if "show_random" in to_save and to_save["show_random"] == "on":
 | 
					        if "show_random" in to_save and to_save["show_random"] == "on":
 | 
				
			||||||
            current_user.random_books = 1
 | 
					            current_user.random_books = 1
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user