diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2018-11-11 03:45:32 +0800 |
---|---|---|
committer | techknowlogick <hello@techknowlogick.com> | 2018-11-10 14:45:32 -0500 |
commit | b3000ae623c30a58d3eb25c9fd7104db274381b7 (patch) | |
tree | 9905bc54b6d151baf2de69b4a9b3d41935f1e8be /models | |
parent | d487a76ee2843cc94ec6185dfdb676b4482dc8d8 (diff) | |
download | gitea-b3000ae623c30a58d3eb25c9fd7104db274381b7.tar.gz gitea-b3000ae623c30a58d3eb25c9fd7104db274381b7.zip |
Fix create team, update team missing units (#5188)
Diffstat (limited to 'models')
-rw-r--r-- | models/org_team.go | 26 | ||||
-rw-r--r-- | models/unit.go | 17 |
2 files changed, 43 insertions, 0 deletions
diff --git a/models/org_team.go b/models/org_team.go index ad11431a49..53c1ec34d8 100644 --- a/models/org_team.go +++ b/models/org_team.go @@ -40,6 +40,14 @@ func (t *Team) getUnits(e Engine) (err error) { return err } +// GetUnitNames returns the team units names +func (t *Team) GetUnitNames() (res []string) { + for _, u := range t.Units { + res = append(res, Units[u.Type].NameKey) + } + return +} + // HasWriteAccess returns true if team has at least write level access mode. func (t *Team) HasWriteAccess() bool { return t.Authorize >= AccessModeWrite @@ -367,6 +375,24 @@ func UpdateTeam(t *Team, authChanged bool) (err error) { return fmt.Errorf("update: %v", err) } + // update units for team + if len(t.Units) > 0 { + for _, unit := range t.Units { + unit.TeamID = t.ID + } + // Delete team-unit. + if _, err := sess. + Where("team_id=?", t.ID). + Delete(new(TeamUnit)); err != nil { + return err + } + + if _, err = sess.Insert(&t.Units); err != nil { + sess.Rollback() + return err + } + } + // Update access for team members if needed. if authChanged { if err = t.getRepositories(sess); err != nil { diff --git a/models/unit.go b/models/unit.go index 1d26359528..9619232cf4 100644 --- a/models/unit.go +++ b/models/unit.go @@ -4,6 +4,10 @@ package models +import ( + "strings" +) + // UnitType is Unit's Type type UnitType int @@ -137,3 +141,16 @@ var ( UnitTypeExternalWiki: UnitExternalWiki, } ) + +// FindUnitTypes give the unit key name and return unit +func FindUnitTypes(nameKeys ...string) (res []UnitType) { + for _, key := range nameKeys { + for t, u := range Units { + if strings.EqualFold(key, u.NameKey) { + res = append(res, t) + break + } + } + } + return +} |