aboutsummaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2018-11-11 03:45:32 +0800
committertechknowlogick <hello@techknowlogick.com>2018-11-10 14:45:32 -0500
commitb3000ae623c30a58d3eb25c9fd7104db274381b7 (patch)
tree9905bc54b6d151baf2de69b4a9b3d41935f1e8be /models
parentd487a76ee2843cc94ec6185dfdb676b4482dc8d8 (diff)
downloadgitea-b3000ae623c30a58d3eb25c9fd7104db274381b7.tar.gz
gitea-b3000ae623c30a58d3eb25c9fd7104db274381b7.zip
Fix create team, update team missing units (#5188)
Diffstat (limited to 'models')
-rw-r--r--models/org_team.go26
-rw-r--r--models/unit.go17
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
+}