def manage(): """Allow editing or accessing account details.""" from run import app form = AccountForm(request.form, g.user) if form.validate_on_submit(): user_to_update = User.query.filter(User.id == g.user.id).first() old_email = None password = False if user_to_update.email != form.email.data: old_email = user_to_update.email user_to_update.email = form.email.data if len(form.new_password.data) >= 10: password = True user_to_update.password = User.generate_hash( form.new_password.data) if user_to_update.name != form.name.data: user_to_update.name = form.name.data g.user = user_to_update g.db.commit() if old_email is not None: template = app.jinja_env.get_or_select_template( 'email/email_changed.txt') message = template.render(name=user_to_update.name, email=user_to_update.email) g.mailer.send_simple_message({ "to": [old_email, user_to_update.email], "subject": "CCExtractor CI platform email changed", "text": message }) if password: template = app.jinja_env.get_or_select_template( 'email/password_changed.txt') message = template.render(name=user_to_update.name) to = user_to_update.email if old_email is None else [ old_email, user_to_update.email ] g.mailer.send_simple_message({ "to": to, "subject": "CCExtractor CI platform password changed", "text": message }) flash('Settings saved') github_url = github_redirect() return {'form': form, 'url': github_url}
def manage(): form = AccountForm(request.form, g.user) if not g.user.is_admin(): form.email.validators = [] if request.method == 'POST': result = {'status': 'error', 'errors': []} if form.validate_on_submit(): user = User.query.filter(User.id == g.user.id).first() if user.is_admin(): user.email = form.email.data if len(form.new_password.data) >= 10: user.password = User.generate_hash(form.new_password.data) g.user = user g.db.commit() result['status'] = 'success' result['errors'] = form.errors return jsonify(result) return {'form': form}