Fix create team, update team missing units (#5188)

This commit is contained in:
Lunny Xiao 2018-11-11 03:45:32 +08:00 committed by techknowlogick
parent d487a76ee2
commit b3000ae623
7 changed files with 128 additions and 2 deletions

View file

@ -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 {

View file

@ -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
}