Skip to content

Commit 8ff8824

Browse files
Make proper language strings and fix error redirection.
1 parent 1739ef7 commit 8ff8824

File tree

7 files changed

+45
-27
lines changed

7 files changed

+45
-27
lines changed

models/error.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1370,6 +1370,23 @@ func (err ErrTeamAlreadyExist) Error() string {
13701370
return fmt.Sprintf("team already exists [org_id: %d, name: %s]", err.OrgID, err.Name)
13711371
}
13721372

1373+
// ErrTeamNotExist represents a "TeamNotExist" error
1374+
type ErrTeamNotExist struct {
1375+
OrgID int64
1376+
TeamID int64
1377+
Name string
1378+
}
1379+
1380+
// IsErrTeamNotExist checks if an error is a ErrTeamNotExist.
1381+
func IsErrTeamNotExist(err error) bool {
1382+
_, ok := err.(ErrTeamNotExist)
1383+
return ok
1384+
}
1385+
1386+
func (err ErrTeamNotExist) Error() string {
1387+
return fmt.Sprintf("team does not exist [org_id %d, team_id %d, name: %s]", err.OrgID, err.TeamID, err.Name)
1388+
}
1389+
13731390
//
13741391
// Two-factor authentication
13751392
//

models/org.go

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
package models
77

88
import (
9-
"errors"
109
"fmt"
1110
"os"
1211
"strings"
@@ -20,11 +19,6 @@ import (
2019
"xorm.io/builder"
2120
)
2221

23-
var (
24-
// ErrTeamNotExist team does not exist
25-
ErrTeamNotExist = errors.New("Team does not exist")
26-
)
27-
2822
// IsOwnedBy returns true if given user is in the owner team.
2923
func (org *User) IsOwnedBy(uid int64) (bool, error) {
3024
return IsOrganizationOwner(org.ID, uid)
@@ -304,7 +298,7 @@ type OrgUser struct {
304298
func isOrganizationOwner(e Engine, orgID, uid int64) (bool, error) {
305299
ownerTeam, err := getOwnerTeam(e, orgID)
306300
if err != nil {
307-
if err == ErrTeamNotExist {
301+
if IsErrTeamNotExist(err) {
308302
log.Error("Organization does not have owner team: %d", orgID)
309303
return false, nil
310304
}

models/org_team.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -352,7 +352,7 @@ func getTeam(e Engine, orgID int64, name string) (*Team, error) {
352352
if err != nil {
353353
return nil, err
354354
} else if !has {
355-
return nil, ErrTeamNotExist
355+
return nil, ErrTeamNotExist{orgID, 0, name}
356356
}
357357
return t, nil
358358
}
@@ -373,7 +373,7 @@ func getTeamByID(e Engine, teamID int64) (*Team, error) {
373373
if err != nil {
374374
return nil, err
375375
} else if !has {
376-
return nil, ErrTeamNotExist
376+
return nil, ErrTeamNotExist{0, teamID, ""}
377377
}
378378
return t, nil
379379
}

models/org_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,11 +64,11 @@ func TestUser_GetTeam(t *testing.T) {
6464
assert.Equal(t, "team1", team.LowerName)
6565

6666
_, err = org.GetTeam("does not exist")
67-
assert.Equal(t, ErrTeamNotExist, err)
67+
assert.True(t, IsErrTeamNotExist(err))
6868

6969
nonOrg := AssertExistsAndLoadBean(t, &User{ID: 2}).(*User)
7070
_, err = nonOrg.GetTeam("team")
71-
assert.Equal(t, ErrTeamNotExist, err)
71+
assert.True(t, IsErrTeamNotExist(err))
7272
}
7373

7474
func TestUser_GetOwnerTeam(t *testing.T) {
@@ -80,7 +80,7 @@ func TestUser_GetOwnerTeam(t *testing.T) {
8080

8181
nonOrg := AssertExistsAndLoadBean(t, &User{ID: 2}).(*User)
8282
_, err = nonOrg.GetOwnerTeam()
83-
assert.Equal(t, ErrTeamNotExist, err)
83+
assert.True(t, IsErrTeamNotExist(err))
8484
}
8585

8686
func TestUser_GetTeams(t *testing.T) {

models/userlist.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ func (users UserList) loadOrganizationOwners(e Engine, orgID int64) (map[int64]*
4343
}
4444
ownerTeam, err := getOwnerTeam(e, orgID)
4545
if err != nil {
46-
if err == ErrTeamNotExist {
46+
if IsErrTeamNotExist(err) {
4747
log.Error("Organization does not have owner team: %d", orgID)
4848
return nil, nil
4949
}

options/locale/locale_en-US.ini

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -319,6 +319,7 @@ enterred_invalid_repo_name = The repository name you entered is incorrect.
319319
enterred_invalid_owner_name = The new owner name is not valid.
320320
enterred_invalid_password = The password you entered is incorrect.
321321
user_not_exist = The user does not exist.
322+
team_not_exist = The team does not exist.
322323
last_org_owner = You cannot remove the last user from the 'owners' team. There must be at least one owner in any given team.
323324
cannot_add_org_to_team = An organization cannot be added as a team member.
324325

@@ -1214,6 +1215,11 @@ settings.collaborator_deletion_desc = Removing a collaborator will revoke their
12141215
settings.remove_collaborator_success = The collaborator has been removed.
12151216
settings.search_user_placeholder = Search user…
12161217
settings.org_not_allowed_to_be_collaborator = Organizations cannot be added as a collaborator.
1218+
settings.change_team_access_not_allowed = Changing team access for repository has been restricted to organization owner
1219+
settings.team_not_in_organization = The team is not in the same organization as the repository
1220+
settings.add_team_duplicate = Team already has the repository
1221+
settings.add_team_success = The team now have access to the repository.
1222+
settings.remove_team_success = The team's access to the repository has been removed.
12171223
settings.add_webhook = Add Webhook
12181224
settings.add_webhook.invalid_channel_name = Webhook channel name cannot be empty and cannot contain only a # character.
12191225
settings.hooks_desc = Webhooks automatically make HTTP POST requests to a server when certain Gitea events trigger. Read more in the <a target="_blank" rel="noopener noreferrer" href="%s">webhooks guide</a>.

routers/repo/setting.go

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -581,7 +581,7 @@ func DeleteCollaboration(ctx *context.Context) {
581581
// AddTeamPost response for adding a team to a repository
582582
func AddTeamPost(ctx *context.Context) {
583583
if !ctx.Repo.Owner.RepoAdminChangeTeamAccess && !ctx.Repo.IsOwner() {
584-
ctx.Flash.Error("Changing team access for repository has been restricted to organization owner")
584+
ctx.Flash.Error(ctx.Tr("repo.settings.change_team_access_not_allowed"))
585585
ctx.Redirect(ctx.Repo.RepoLink + "/settings/collaboration")
586586
return
587587
}
@@ -594,55 +594,56 @@ func AddTeamPost(ctx *context.Context) {
594594

595595
team, err := ctx.Repo.Owner.GetTeam(name)
596596
if err != nil {
597-
ctx.Flash.Error("AddTeamPost: " + err.Error())
598-
ctx.Redirect(ctx.Repo.RepoLink + "/settings/collaboration")
597+
if models.IsErrTeamNotExist(err) {
598+
ctx.Flash.Error(ctx.Tr("form.team_not_exist"))
599+
ctx.Redirect(setting.AppSubURL + ctx.Req.URL.Path)
600+
} else {
601+
ctx.ServerError("GetTeam", err)
602+
}
599603
return
600604
}
601605

602606
if team.OrgID != ctx.Repo.Repository.OwnerID {
603-
ctx.Flash.Error("AddTeamPost: Team not in organization")
607+
ctx.Flash.Error(ctx.Tr("repo.settings.team_not_in_organization"))
604608
ctx.Redirect(ctx.Repo.RepoLink + "/settings/collaboration")
605609
return
606610
}
607611

608612
if models.HasTeamRepo(ctx.Repo.Repository.OwnerID, team.ID, ctx.Repo.Repository.ID) {
609-
ctx.Flash.Error("Team already has repository")
613+
ctx.Flash.Error(ctx.Tr("repo.settings.add_team_duplicate"))
610614
ctx.Redirect(ctx.Repo.RepoLink + "/settings/collaboration")
611615
return
612616
}
613617

614618
if err = team.AddRepository(ctx.Repo.Repository); err != nil {
615-
ctx.Flash.Error("AddTeamPost: " + err.Error())
616-
ctx.Redirect(ctx.Repo.RepoLink + "/settings/collaboration")
619+
ctx.ServerError("team.AddRepository", err)
617620
return
618621
}
619622

620-
ctx.Flash.Success("Successfully added team to repo.")
623+
ctx.Flash.Success(ctx.Tr("repo.settings.add_team_success"))
621624
ctx.Redirect(ctx.Repo.RepoLink + "/settings/collaboration")
622625
}
623626

624627
// DeleteTeam response for deleting a team from a repository
625628
func DeleteTeam(ctx *context.Context) {
626629
if !ctx.Repo.Owner.RepoAdminChangeTeamAccess && !ctx.Repo.IsOwner() {
627-
ctx.Flash.Error("Changing team access for repository has been restricted to organization owner")
630+
ctx.Flash.Error(ctx.Tr("repo.settings.change_team_access_not_allowed"))
628631
ctx.Redirect(ctx.Repo.RepoLink + "/settings/collaboration")
629632
return
630633
}
631634

632635
team, err := models.GetTeamByID(ctx.QueryInt64("id"))
633636
if err != nil {
634-
ctx.Flash.Error("DeleteTeam: " + err.Error())
635-
ctx.Redirect(ctx.Repo.RepoLink + "/settings/collaboration")
637+
ctx.ServerError("GetTeamByID", err)
636638
return
637639
}
638640

639641
if err = team.RemoveRepository(ctx.Repo.Repository.ID); err != nil {
640-
ctx.Flash.Error("DeleteTeam: " + err.Error())
641-
ctx.Redirect(ctx.Repo.RepoLink + "/settings/collaboration")
642+
ctx.ServerError("team.RemoveRepositorys", err)
642643
return
643644
}
644645

645-
ctx.Flash.Success("Successfully removed team from repo.")
646+
ctx.Flash.Success(ctx.Tr("repo.settings.remove_team_success"))
646647
ctx.JSON(200, map[string]interface{}{
647648
"redirect": ctx.Repo.RepoLink + "/settings/collaboration",
648649
})

0 commit comments

Comments
 (0)