Fix migration code so that LastName is populated correctly for users who only have one word in their FullName
Этот коммит содержится в:
@@ -47,10 +47,14 @@ func (us SqlUserStore) UpgradeSchemaIfNeeded() {
|
|||||||
us.CreateColumnIfNotExists("Users", "LastName", "FirstName", "varchar(64)", "")
|
us.CreateColumnIfNotExists("Users", "LastName", "FirstName", "varchar(64)", "")
|
||||||
|
|
||||||
// infer values of first and last name by splitting the previous full name
|
// infer values of first and last name by splitting the previous full name
|
||||||
if _, err := us.GetMaster().Exec("UPDATE Users SET " +
|
if _, err := us.GetMaster().Exec("UPDATE Users SET FirstName = SUBSTRING_INDEX(SUBSTRING_INDEX(Nickname, ' ', 1), ' ', -1)"); err != nil {
|
||||||
"FirstName = SUBSTRING_INDEX(SUBSTRING_INDEX(Nickname, ' ', 1), ' ', -1), " +
|
panic("Failed to set first name from nickname " + err.Error())
|
||||||
"LastName = SUBSTRING(Nickname, INSTR(Nickname, ' ') + 1)"); err != nil {
|
}
|
||||||
panic("Failed to set first and last name columns from nickname " + err.Error())
|
|
||||||
|
// only set the last name from full names that are comprised of multiple words (ie that have at least one space in them)
|
||||||
|
if _, err := us.GetMaster().Exec("Update Users SET LastName = SUBSTRING(Nickname, INSTR(Nickname, ' ') + 1) " +
|
||||||
|
"WHERE CHAR_LENGTH(REPLACE(Nickname, ' ', '')) < CHAR_LENGTH(Nickname)"); err != nil {
|
||||||
|
panic("Failed to set last name from nickname " + err.Error())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -774,14 +774,13 @@ var GeneralTab = React.createClass({
|
|||||||
var firstName = this.state.first_name.trim();
|
var firstName = this.state.first_name.trim();
|
||||||
var lastName = this.state.last_name.trim();
|
var lastName = this.state.last_name.trim();
|
||||||
|
|
||||||
var fullName = firstName + ' ' + lastName;
|
if (user.first_name === firstName && user.last_name === lastName) {
|
||||||
|
this.setState({client_error: "You must submit a new first or last name"})
|
||||||
if (user.nickname === fullName) {
|
|
||||||
this.setState({client_error: "You must submit a new name"})
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
user.nickname = fullName;
|
user.first_name = firstName;
|
||||||
|
user.last_name = lastName;
|
||||||
|
|
||||||
this.submitUser(user);
|
this.submitUser(user);
|
||||||
},
|
},
|
||||||
@@ -879,11 +878,7 @@ var GeneralTab = React.createClass({
|
|||||||
getInitialState: function() {
|
getInitialState: function() {
|
||||||
var user = this.props.user;
|
var user = this.props.user;
|
||||||
|
|
||||||
var splitStr = user.nickname.split(' ');
|
return { username: user.username, first_name: user.first_name, last_name: user.last_name, nickname: user.nickname,
|
||||||
var firstName = splitStr.shift();
|
|
||||||
var lastName = splitStr.join(' ');
|
|
||||||
|
|
||||||
return { username: user.username, first_name: firstName, last_name: lastName, nickname: user.nickname,
|
|
||||||
email: user.email, picture: null };
|
email: user.email, picture: null };
|
||||||
},
|
},
|
||||||
render: function() {
|
render: function() {
|
||||||
@@ -919,7 +914,7 @@ var GeneralTab = React.createClass({
|
|||||||
|
|
||||||
nameSection = (
|
nameSection = (
|
||||||
<SettingItemMax
|
<SettingItemMax
|
||||||
title="Name"
|
title="Full Name"
|
||||||
inputs={inputs}
|
inputs={inputs}
|
||||||
submit={this.submitName}
|
submit={this.submitName}
|
||||||
server_error={server_error}
|
server_error={server_error}
|
||||||
@@ -928,10 +923,20 @@ var GeneralTab = React.createClass({
|
|||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
|
var full_name = "";
|
||||||
|
|
||||||
|
if (user.first_name && user.last_name) {
|
||||||
|
full_name = user.first_name + " " + user.last_name;
|
||||||
|
} else if (user.first_name) {
|
||||||
|
full_name = user.first_name;
|
||||||
|
} else if (user.last_name) {
|
||||||
|
full_name = user.last_name;
|
||||||
|
}
|
||||||
|
|
||||||
nameSection = (
|
nameSection = (
|
||||||
<SettingItemMin
|
<SettingItemMin
|
||||||
title="Name"
|
title="Full Name"
|
||||||
describe={UserStore.getCurrentUser().nickname}
|
describe={full_name}
|
||||||
updateSection={function(){self.updateSection("name");}}
|
updateSection={function(){self.updateSection("name");}}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user