def _get_last_name() -> Optional[str]: while True: last_name = obtain_input('Last name: ') if not last_name: return None try: Journalist.check_name_acceptable(last_name) return last_name except FirstOrLastNameError as e: print('Invalid name: ' + str(e))
def edit_user(user_id: int) -> Union[str, werkzeug.Response]: user = Journalist.query.get(user_id) if request.method == 'POST': if request.form.get('username', None): new_username = request.form['username'] try: Journalist.check_username_acceptable(new_username) except InvalidUsernameException as e: flash('Invalid username: '******'error') return redirect(url_for("admin.edit_user", user_id=user_id)) if new_username == user.username: pass elif Journalist.query.filter_by( username=new_username).one_or_none(): flash( gettext('Username "{user}" already taken.').format( user=new_username), "error") return redirect(url_for("admin.edit_user", user_id=user_id)) else: user.username = new_username try: first_name = request.form['first_name'] Journalist.check_name_acceptable(first_name) user.first_name = first_name except FirstOrLastNameError as e: flash(gettext('Name not updated: {}'.format(e)), "error") return redirect(url_for("admin.edit_user", user_id=user_id)) try: last_name = request.form['last_name'] Journalist.check_name_acceptable(last_name) user.last_name = last_name except FirstOrLastNameError as e: flash(gettext('Name not updated: {}'.format(e)), "error") return redirect(url_for("admin.edit_user", user_id=user_id)) user.is_admin = bool(request.form.get('is_admin')) commit_account_changes(user) password = PassphraseGenerator.get_default().generate_passphrase( preferred_language=g.localeinfo.language) return render_template("edit_account.html", user=user, password=password)