Allow renaming teams like in `channel rename` command Example: `team rename myteam newteamname --display_name "My New Team Name`
Этот коммит содержится в:
коммит произвёл
Hanzei
родитель
06b579d18a
Коммит
3716918c57
28
app/team.go
28
app/team.go
@@ -142,6 +142,34 @@ func (a *App) updateTeamUnsanitized(team *model.Team) (*model.Team, *model.AppEr
|
||||
return result.Data.(*model.Team), nil
|
||||
}
|
||||
|
||||
// RenameTeam is used to rename the team Name and the DisplayName fields
|
||||
func (a *App) RenameTeam(team *model.Team, newTeamName string, newDisplayName string) (*model.Team, *model.AppError) {
|
||||
|
||||
// check if name is occupied
|
||||
_, errnf := a.GetTeamByName(newTeamName)
|
||||
|
||||
// "-" can be used as a newTeamName if only DisplayName change is wanted
|
||||
if errnf == nil && newTeamName != "-" {
|
||||
errbody := fmt.Sprintf("team with name %s already exists", newTeamName)
|
||||
return nil, model.NewAppError("RenameTeam", "app.team.rename_team.name_occupied", nil, errbody, http.StatusBadRequest)
|
||||
}
|
||||
|
||||
if newTeamName != "-" {
|
||||
team.Name = newTeamName
|
||||
}
|
||||
|
||||
if newDisplayName != "" {
|
||||
team.DisplayName = newDisplayName
|
||||
}
|
||||
|
||||
newTeam, err := a.updateTeamUnsanitized(team)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return newTeam, nil
|
||||
}
|
||||
|
||||
func (a *App) UpdateTeamScheme(team *model.Team) (*model.Team, *model.AppError) {
|
||||
oldTeam, err := a.GetTeam(team.Id)
|
||||
if err != nil {
|
||||
|
||||
@@ -90,6 +90,16 @@ var RestoreTeamsCmd = &cobra.Command{
|
||||
RunE: restoreTeamsCmdF,
|
||||
}
|
||||
|
||||
var TeamRenameCmd = &cobra.Command{
|
||||
Use: "rename",
|
||||
Short: "Rename a team",
|
||||
Long: `Rename a team.`,
|
||||
Example: ` team rename myteam newteamname --display_name "My New Team Name"
|
||||
team rename myteam - --display_name "My New Team Name"`,
|
||||
Args: cobra.MinimumNArgs(2),
|
||||
RunE: renameTeamCmdF,
|
||||
}
|
||||
|
||||
func init() {
|
||||
TeamCreateCmd.Flags().String("name", "", "Team Name")
|
||||
TeamCreateCmd.Flags().String("display_name", "", "Team Display Name")
|
||||
@@ -98,6 +108,8 @@ func init() {
|
||||
|
||||
DeleteTeamsCmd.Flags().Bool("confirm", false, "Confirm you really want to delete the team and a DB backup has been performed.")
|
||||
|
||||
TeamRenameCmd.Flags().String("display_name", "", "Team Display Name")
|
||||
|
||||
TeamCmd.AddCommand(
|
||||
TeamCreateCmd,
|
||||
RemoveUsersCmd,
|
||||
@@ -107,6 +119,7 @@ func init() {
|
||||
SearchTeamCmd,
|
||||
ArchiveTeamCmd,
|
||||
RestoreTeamsCmd,
|
||||
TeamRenameCmd,
|
||||
)
|
||||
RootCmd.AddCommand(TeamCmd)
|
||||
}
|
||||
@@ -362,3 +375,38 @@ func archiveTeamCmdF(command *cobra.Command, args []string) error {
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func renameTeamCmdF(command *cobra.Command, args []string) error {
|
||||
|
||||
a, err := InitDBCommandContextCobra(command)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer a.Shutdown()
|
||||
|
||||
team := getTeamFromTeamArg(a, args[0])
|
||||
if team == nil {
|
||||
return errors.New("Unable to find team '" + args[0] + "'")
|
||||
}
|
||||
|
||||
var newDisplayName, newTeamName string
|
||||
|
||||
newTeamName = args[1]
|
||||
|
||||
// let user use old team Name when only Display Name change is wanted
|
||||
if newTeamName == team.Name {
|
||||
newTeamName = "-"
|
||||
}
|
||||
|
||||
newDisplayName, errdn := command.Flags().GetString("display_name")
|
||||
if errdn != nil {
|
||||
return errdn
|
||||
}
|
||||
|
||||
_, errrt := a.RenameTeam(team, newTeamName, newDisplayName)
|
||||
if errrt != nil {
|
||||
CommandPrintErrorln("Unable to rename team to '"+newTeamName+"' error: ", errrt)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -205,3 +205,70 @@ func TestRestoreTeams(t *testing.T) {
|
||||
|
||||
require.True(t, found)
|
||||
}
|
||||
|
||||
func TestRenameTeam(t *testing.T) {
|
||||
th := Setup().InitBasic()
|
||||
defer th.TearDown()
|
||||
|
||||
team := th.CreateTeam()
|
||||
|
||||
newTeamName := "newteamnamex3"
|
||||
newDisplayName := "New Display NameX"
|
||||
|
||||
th.CheckCommand(t, "team", "rename", team.Name, newTeamName, "--display_name", newDisplayName)
|
||||
|
||||
// Get the team from the DB
|
||||
updatedTeam, _ := th.App.GetTeam(team.Id)
|
||||
|
||||
if updatedTeam.Name != newTeamName {
|
||||
t.Fatal("failed renaming team")
|
||||
}
|
||||
|
||||
if updatedTeam.DisplayName != newDisplayName {
|
||||
t.Fatal("failed updating team display name")
|
||||
}
|
||||
|
||||
// Try to rename to occupied name
|
||||
team2 := th.CreateTeam()
|
||||
n := team2.Name
|
||||
dn := team2.DisplayName
|
||||
|
||||
th.CheckCommand(t, "team", "rename", team2.Name, newTeamName, "--display_name", newDisplayName)
|
||||
|
||||
// No renaming should have occured
|
||||
if team2.Name != n {
|
||||
t.Fatal("team was renamed when it should have not been")
|
||||
}
|
||||
|
||||
if team2.DisplayName != dn {
|
||||
t.Fatal("team display name was changed when it should have not been")
|
||||
}
|
||||
|
||||
// Try to change only Display Name
|
||||
team3 := th.CreateTeam()
|
||||
|
||||
// trying to change only Display Name (using "-" as a new team name)
|
||||
th.CheckCommand(t, "team", "rename", team3.Name, "-", "--display_name", newDisplayName)
|
||||
|
||||
// Get the team from the DB
|
||||
updatedTeam, _ = th.App.GetTeam(team3.Id)
|
||||
|
||||
if updatedTeam.Name == "-" {
|
||||
t.Fatal("team was renamed to `-` but only display name should have been changed")
|
||||
}
|
||||
|
||||
if updatedTeam.DisplayName != newDisplayName {
|
||||
t.Fatal("team Display Name was not properly updated")
|
||||
}
|
||||
|
||||
// now try to change Display Name using old team name
|
||||
th.CheckCommand(t, "team", "rename", team3.Name, team3.Name, "--display_name", "Brand New DName")
|
||||
|
||||
// Get the team from the DB
|
||||
updatedTeam, _ = th.App.GetTeam(team3.Id)
|
||||
|
||||
if updatedTeam.DisplayName != "Brand New DName" {
|
||||
t.Fatal("team Display Name was not properly updated")
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -216,7 +216,6 @@ func (s SqlTeamStore) Update(team *model.Team) store.StoreChannel {
|
||||
oldTeam := oldResult.(*model.Team)
|
||||
team.CreateAt = oldTeam.CreateAt
|
||||
team.UpdateAt = model.GetMillis()
|
||||
team.Name = oldTeam.Name
|
||||
|
||||
count, err := s.GetMaster().Update(team)
|
||||
if err != nil {
|
||||
|
||||
Ссылка в новой задаче
Block a user