Allow editing users' email address via /u/
Also reloads the user info after a succesful edit.
This commit is contained in:
parent
08cb2b8438
commit
e061d6c29d
@ -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.'
|
||||
)
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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!');
|
||||
|
@ -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();
|
||||
|
@ -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'])
|
||||
|
Loading…
x
Reference in New Issue
Block a user