Allow editing users' email address via /u/

Also reloads the user info after a succesful edit.
This commit is contained in:
Sybren A. Stüvel 2017-06-29 10:55:50 +02:00
parent 08cb2b8438
commit e061d6c29d
5 changed files with 24 additions and 3 deletions

View File

@ -2,6 +2,7 @@ from flask_login import current_user
from flask_wtf import Form
from pillar.web import system_util
from pillarsdk.users import User
from wtforms import BooleanField
from wtforms import PasswordField
from wtforms import RadioField
@ -10,6 +11,7 @@ from wtforms import StringField
from wtforms.validators import DataRequired
from wtforms.validators import Length
from wtforms.validators import Regexp
import wtforms.validators as wtvalid
class UserLoginForm(Form):
@ -75,3 +77,7 @@ class RolesField(SelectMultipleField):
class UserEditForm(Form):
roles = RolesField('Roles')
email = StringField(
validators=[wtvalid.DataRequired(), wtvalid.Email()],
description='Make sure this matches the Store and Blender ID email address.'
)

View File

@ -227,6 +227,7 @@ def users_edit(user_id):
_users_edit(form, user, api)
else:
form.roles.data = user.roles
form.email.data = user.email
return render_template('users/edit_embed.html',
user=user,
form=form)
@ -255,6 +256,7 @@ def _users_edit(form, user, api):
user.roles = list((current_user_roles - revoked_roles).union(granted_roles))
user.groups = list((current_user_groups - revoked_groups).union(granted_groups))
user.email = form.email.data
user.update(api=api)

View File

@ -51,7 +51,7 @@
li {{ error }}
| {% endfor %}
| {% endif %}
span.field-description {{ field.description }}
| {% endif %}
@ -77,7 +77,11 @@ script(type="text/javascript").
//- console.log($(this).serialize());
$.post($(this).attr('action'), $(this).serialize())
.done(function(data){
// This function is defined in index.jade.
displayUser('{{ user._id }}')
.done(function() {
$('#user-edit-notification').addClass('success').html('Success!');
});
})
.fail(function(data){
$('#user-edit-notification').addClass('fail').html('Houston!');

View File

@ -1,5 +1,12 @@
| {% extends 'layout.html' %}
| {% block page_title %}Users{% endblock %}
| {% block head %}
style.
span.field-description {
font-size: smaller;
color: #999;
}
| {% endblock %}
| {% block body %}
@ -96,9 +103,10 @@ script(src="{{ url_for('static_pillar', filename='assets/js/vendor/jquery.select
script(type="text/javascript").
// This function is also used in edit_embed.jade.
function displayUser(userId) {
var url = '/u/' + userId + '/edit?embed=1';
$.get(url, function(dataHtml){
return $.get(url, function(dataHtml){
$('#search-hit-container')
.html(dataHtml)
.show();

View File

@ -62,6 +62,7 @@ class UserAdminTest(AbstractPillarTest):
form = UserEditForm()
form.roles.data = roles
form.email.data = user.email
pillar.web.users.routes._users_edit(form, user, api)
edit_user(['subscriber', 'demo'])