Skip to content

Commit 8670dec

Browse files
lunnytechknowlogick
authored andcommitted
Fix create team, update team missing units (#5188) (#5313)
1 parent 297e619 commit 8670dec

File tree

7 files changed

+128
-2
lines changed

7 files changed

+128
-2
lines changed

Gopkg.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

models/org_team.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,14 @@ func (t *Team) getUnits(e Engine) (err error) {
4040
return err
4141
}
4242

43+
// GetUnitNames returns the team units names
44+
func (t *Team) GetUnitNames() (res []string) {
45+
for _, u := range t.Units {
46+
res = append(res, Units[u.Type].NameKey)
47+
}
48+
return
49+
}
50+
4351
// HasWriteAccess returns true if team has at least write level access mode.
4452
func (t *Team) HasWriteAccess() bool {
4553
return t.Authorize >= AccessModeWrite
@@ -367,6 +375,24 @@ func UpdateTeam(t *Team, authChanged bool) (err error) {
367375
return fmt.Errorf("update: %v", err)
368376
}
369377

378+
// update units for team
379+
if len(t.Units) > 0 {
380+
for _, unit := range t.Units {
381+
unit.TeamID = t.ID
382+
}
383+
// Delete team-unit.
384+
if _, err := sess.
385+
Where("team_id=?", t.ID).
386+
Delete(new(TeamUnit)); err != nil {
387+
return err
388+
}
389+
390+
if _, err = sess.Insert(&t.Units); err != nil {
391+
sess.Rollback()
392+
return err
393+
}
394+
}
395+
370396
// Update access for team members if needed.
371397
if authChanged {
372398
if err = t.getRepositories(sess); err != nil {

models/unit.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@
44

55
package models
66

7+
import (
8+
"strings"
9+
)
10+
711
// UnitType is Unit's Type
812
type UnitType int
913

@@ -137,3 +141,16 @@ var (
137141
UnitTypeExternalWiki: UnitExternalWiki,
138142
}
139143
)
144+
145+
// FindUnitTypes give the unit key name and return unit
146+
func FindUnitTypes(nameKeys ...string) (res []UnitType) {
147+
for _, key := range nameKeys {
148+
for t, u := range Units {
149+
if strings.EqualFold(key, u.NameKey) {
150+
res = append(res, t)
151+
break
152+
}
153+
}
154+
}
155+
return
156+
}

routers/api/v1/convert/convert.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,5 +196,6 @@ func ToTeam(team *models.Team) *api.Team {
196196
Name: team.Name,
197197
Description: team.Description,
198198
Permission: team.Authorize.String(),
199+
Units: team.GetUnitNames(),
199200
}
200201
}

routers/api/v1/org/team.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,20 @@ func CreateTeam(ctx *context.APIContext, form api.CreateTeamOption) {
8989
Description: form.Description,
9090
Authorize: models.ParseAccessMode(form.Permission),
9191
}
92+
93+
unitTypes := models.FindUnitTypes(form.Units...)
94+
95+
if team.Authorize < models.AccessModeOwner {
96+
var units = make([]*models.TeamUnit, 0, len(form.Units))
97+
for _, tp := range unitTypes {
98+
units = append(units, &models.TeamUnit{
99+
OrgID: ctx.Org.Organization.ID,
100+
Type: tp,
101+
})
102+
}
103+
team.Units = units
104+
}
105+
92106
if err := models.NewTeam(team); err != nil {
93107
if models.IsErrTeamAlreadyExist(err) {
94108
ctx.Error(422, "", err)
@@ -127,6 +141,19 @@ func EditTeam(ctx *context.APIContext, form api.EditTeamOption) {
127141
team.Name = form.Name
128142
team.Description = form.Description
129143
team.Authorize = models.ParseAccessMode(form.Permission)
144+
unitTypes := models.FindUnitTypes(form.Units...)
145+
146+
if team.Authorize < models.AccessModeOwner {
147+
var units = make([]*models.TeamUnit, 0, len(form.Units))
148+
for _, tp := range unitTypes {
149+
units = append(units, &models.TeamUnit{
150+
OrgID: ctx.Org.Organization.ID,
151+
Type: tp,
152+
})
153+
}
154+
team.Units = units
155+
}
156+
130157
if err := models.UpdateTeam(team, true); err != nil {
131158
ctx.Error(500, "EditTeam", err)
132159
return

templates/swagger/v1_json.tmpl

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6128,6 +6128,22 @@
61286128
"admin"
61296129
],
61306130
"x-go-name": "Permission"
6131+
},
6132+
"units": {
6133+
"type": "array",
6134+
"enum": [
6135+
"repo.code",
6136+
"repo.issues",
6137+
"repo.ext_issues",
6138+
"repo.wiki",
6139+
"repo.pulls",
6140+
"repo.releases",
6141+
"repo.ext_wiki"
6142+
],
6143+
"items": {
6144+
"type": "string"
6145+
},
6146+
"x-go-name": "Units"
61316147
}
61326148
},
61336149
"x-go-package": "code.gitea.io/gitea/vendor/code.gitea.io/sdk/gitea"
@@ -6503,6 +6519,22 @@
65036519
"admin"
65046520
],
65056521
"x-go-name": "Permission"
6522+
},
6523+
"units": {
6524+
"type": "array",
6525+
"enum": [
6526+
"repo.code",
6527+
"repo.issues",
6528+
"repo.ext_issues",
6529+
"repo.wiki",
6530+
"repo.pulls",
6531+
"repo.releases",
6532+
"repo.ext_wiki"
6533+
],
6534+
"items": {
6535+
"type": "string"
6536+
},
6537+
"x-go-name": "Units"
65066538
}
65076539
},
65086540
"x-go-package": "code.gitea.io/gitea/vendor/code.gitea.io/sdk/gitea"
@@ -7550,6 +7582,22 @@
75507582
"owner"
75517583
],
75527584
"x-go-name": "Permission"
7585+
},
7586+
"units": {
7587+
"type": "array",
7588+
"enum": [
7589+
"repo.code",
7590+
"repo.issues",
7591+
"repo.ext_issues",
7592+
"repo.wiki",
7593+
"repo.pulls",
7594+
"repo.releases",
7595+
"repo.ext_wiki"
7596+
],
7597+
"items": {
7598+
"type": "string"
7599+
},
7600+
"x-go-name": "Units"
75537601
}
75547602
},
75557603
"x-go-package": "code.gitea.io/gitea/vendor/code.gitea.io/sdk/gitea"

vendor/code.gitea.io/sdk/gitea/org_team.go

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)