Skip to content

Commit b3000ae

Browse files
lunnytechknowlogick
authored andcommitted
Fix create team, update team missing units (#5188)
1 parent d487a76 commit b3000ae

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
@@ -198,5 +198,6 @@ func ToTeam(team *models.Team) *api.Team {
198198
Name: team.Name,
199199
Description: team.Description,
200200
Permission: team.Authorize.String(),
201+
Units: team.GetUnitNames(),
201202
}
202203
}

routers/api/v1/org/team.go

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

templates/swagger/v1_json.tmpl

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6322,6 +6322,22 @@
63226322
"admin"
63236323
],
63246324
"x-go-name": "Permission"
6325+
},
6326+
"units": {
6327+
"type": "array",
6328+
"enum": [
6329+
"repo.code",
6330+
"repo.issues",
6331+
"repo.ext_issues",
6332+
"repo.wiki",
6333+
"repo.pulls",
6334+
"repo.releases",
6335+
"repo.ext_wiki"
6336+
],
6337+
"items": {
6338+
"type": "string"
6339+
},
6340+
"x-go-name": "Units"
63256341
}
63266342
},
63276343
"x-go-package": "code.gitea.io/gitea/vendor/code.gitea.io/sdk/gitea"
@@ -6697,6 +6713,22 @@
66976713
"admin"
66986714
],
66996715
"x-go-name": "Permission"
6716+
},
6717+
"units": {
6718+
"type": "array",
6719+
"enum": [
6720+
"repo.code",
6721+
"repo.issues",
6722+
"repo.ext_issues",
6723+
"repo.wiki",
6724+
"repo.pulls",
6725+
"repo.releases",
6726+
"repo.ext_wiki"
6727+
],
6728+
"items": {
6729+
"type": "string"
6730+
},
6731+
"x-go-name": "Units"
67006732
}
67016733
},
67026734
"x-go-package": "code.gitea.io/gitea/vendor/code.gitea.io/sdk/gitea"
@@ -7744,6 +7776,22 @@
77447776
"owner"
77457777
],
77467778
"x-go-name": "Permission"
7779+
},
7780+
"units": {
7781+
"type": "array",
7782+
"enum": [
7783+
"repo.code",
7784+
"repo.issues",
7785+
"repo.ext_issues",
7786+
"repo.wiki",
7787+
"repo.pulls",
7788+
"repo.releases",
7789+
"repo.ext_wiki"
7790+
],
7791+
"items": {
7792+
"type": "string"
7793+
},
7794+
"x-go-name": "Units"
77477795
}
77487796
},
77497797
"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)