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 flask_wtf import Form
|
||||||
from pillar.web import system_util
|
from pillar.web import system_util
|
||||||
from pillarsdk.users import User
|
from pillarsdk.users import User
|
||||||
|
|
||||||
from wtforms import BooleanField
|
from wtforms import BooleanField
|
||||||
from wtforms import PasswordField
|
from wtforms import PasswordField
|
||||||
from wtforms import RadioField
|
from wtforms import RadioField
|
||||||
@ -10,6 +11,7 @@ from wtforms import StringField
|
|||||||
from wtforms.validators import DataRequired
|
from wtforms.validators import DataRequired
|
||||||
from wtforms.validators import Length
|
from wtforms.validators import Length
|
||||||
from wtforms.validators import Regexp
|
from wtforms.validators import Regexp
|
||||||
|
import wtforms.validators as wtvalid
|
||||||
|
|
||||||
|
|
||||||
class UserLoginForm(Form):
|
class UserLoginForm(Form):
|
||||||
@ -75,3 +77,7 @@ class RolesField(SelectMultipleField):
|
|||||||
|
|
||||||
class UserEditForm(Form):
|
class UserEditForm(Form):
|
||||||
roles = RolesField('Roles')
|
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)
|
_users_edit(form, user, api)
|
||||||
else:
|
else:
|
||||||
form.roles.data = user.roles
|
form.roles.data = user.roles
|
||||||
|
form.email.data = user.email
|
||||||
return render_template('users/edit_embed.html',
|
return render_template('users/edit_embed.html',
|
||||||
user=user,
|
user=user,
|
||||||
form=form)
|
form=form)
|
||||||
@ -255,6 +256,7 @@ def _users_edit(form, user, api):
|
|||||||
|
|
||||||
user.roles = list((current_user_roles - revoked_roles).union(granted_roles))
|
user.roles = list((current_user_roles - revoked_roles).union(granted_roles))
|
||||||
user.groups = list((current_user_groups - revoked_groups).union(granted_groups))
|
user.groups = list((current_user_groups - revoked_groups).union(granted_groups))
|
||||||
|
user.email = form.email.data
|
||||||
|
|
||||||
user.update(api=api)
|
user.update(api=api)
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@
|
|||||||
li {{ error }}
|
li {{ error }}
|
||||||
| {% endfor %}
|
| {% endfor %}
|
||||||
| {% endif %}
|
| {% endif %}
|
||||||
|
span.field-description {{ field.description }}
|
||||||
|
|
||||||
| {% endif %}
|
| {% endif %}
|
||||||
|
|
||||||
@ -77,7 +77,11 @@ script(type="text/javascript").
|
|||||||
//- console.log($(this).serialize());
|
//- console.log($(this).serialize());
|
||||||
$.post($(this).attr('action'), $(this).serialize())
|
$.post($(this).attr('action'), $(this).serialize())
|
||||||
.done(function(data){
|
.done(function(data){
|
||||||
$('#user-edit-notification').addClass('success').html('Success!');
|
// This function is defined in index.jade.
|
||||||
|
displayUser('{{ user._id }}')
|
||||||
|
.done(function() {
|
||||||
|
$('#user-edit-notification').addClass('success').html('Success!');
|
||||||
|
});
|
||||||
})
|
})
|
||||||
.fail(function(data){
|
.fail(function(data){
|
||||||
$('#user-edit-notification').addClass('fail').html('Houston!');
|
$('#user-edit-notification').addClass('fail').html('Houston!');
|
||||||
|
@ -1,5 +1,12 @@
|
|||||||
| {% extends 'layout.html' %}
|
| {% extends 'layout.html' %}
|
||||||
| {% block page_title %}Users{% endblock %}
|
| {% block page_title %}Users{% endblock %}
|
||||||
|
| {% block head %}
|
||||||
|
style.
|
||||||
|
span.field-description {
|
||||||
|
font-size: smaller;
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
| {% endblock %}
|
||||||
|
|
||||||
| {% block body %}
|
| {% block body %}
|
||||||
|
|
||||||
@ -96,9 +103,10 @@ script(src="{{ url_for('static_pillar', filename='assets/js/vendor/jquery.select
|
|||||||
|
|
||||||
script(type="text/javascript").
|
script(type="text/javascript").
|
||||||
|
|
||||||
|
// This function is also used in edit_embed.jade.
|
||||||
function displayUser(userId) {
|
function displayUser(userId) {
|
||||||
var url = '/u/' + userId + '/edit?embed=1';
|
var url = '/u/' + userId + '/edit?embed=1';
|
||||||
$.get(url, function(dataHtml){
|
return $.get(url, function(dataHtml){
|
||||||
$('#search-hit-container')
|
$('#search-hit-container')
|
||||||
.html(dataHtml)
|
.html(dataHtml)
|
||||||
.show();
|
.show();
|
||||||
|
@ -62,6 +62,7 @@ class UserAdminTest(AbstractPillarTest):
|
|||||||
|
|
||||||
form = UserEditForm()
|
form = UserEditForm()
|
||||||
form.roles.data = roles
|
form.roles.data = roles
|
||||||
|
form.email.data = user.email
|
||||||
pillar.web.users.routes._users_edit(form, user, api)
|
pillar.web.users.routes._users_edit(form, user, api)
|
||||||
|
|
||||||
edit_user(['subscriber', 'demo'])
|
edit_user(['subscriber', 'demo'])
|
||||||
|
Loading…
x
Reference in New Issue
Block a user