* Prevent cloud limited installations from restoring teams when at or above the teams limit * Code clean up * fix i18n * Actually fix i18n * updates for govet * Update model/client4.go Co-authored-by: Vishal <vish9812@gmail.com> * [MM-44397] Restrict team creation based on subscription limits (#20282) * restrict team creation based on limits * Update api4/team.go Co-authored-by: Maria A Nunez <maria.nunez@mattermost.com> * Fix tests Co-authored-by: Mattermod <mattermod@users.noreply.github.com> Co-authored-by: Maria A Nunez <maria.nunez@mattermost.com> * Add additional field to teamsusage * Fix * remove useless test * Fix error for team creation * Remove apostrophe Co-authored-by: Mattermod <mattermod@users.noreply.github.com> Co-authored-by: Vishal <vish9812@gmail.com> Co-authored-by: Maria A Nunez <maria.nunez@mattermost.com>
85 строки
2.4 KiB
Go
85 строки
2.4 KiB
Go
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
package app
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/mattermost/mattermost-server/v6/model"
|
|
"github.com/mattermost/mattermost-server/v6/utils"
|
|
)
|
|
|
|
// CheckFreemiumLimitsForConfigSave returns an error if the configuration being saved violates the Cloud Freemium limits
|
|
func (a *App) CheckFreemiumLimitsForConfigSave(oldConfig, newConfig *model.Config) *model.AppError {
|
|
if !a.Config().FeatureFlags.CloudFree {
|
|
return nil
|
|
}
|
|
|
|
appErr := a.checkIntegrationLimitsForConfigSave(oldConfig, newConfig)
|
|
if appErr != nil {
|
|
return appErr
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
// GetIntegrationsUsage returns usage information on enabled integrations
|
|
func (a *App) GetIntegrationsUsage() (*model.IntegrationsUsage, *model.AppError) {
|
|
return a.ch.getIntegrationsUsage()
|
|
}
|
|
|
|
func (ch *Channels) getIntegrationsUsage() (*model.IntegrationsUsage, *model.AppError) {
|
|
installed, appErr := ch.getInstalledIntegrations()
|
|
if appErr != nil {
|
|
return nil, appErr
|
|
}
|
|
|
|
var count = 0
|
|
for _, i := range installed {
|
|
if i.Enabled {
|
|
count++
|
|
}
|
|
}
|
|
|
|
return &model.IntegrationsUsage{Enabled: count}, nil
|
|
}
|
|
|
|
// GetPostsUsage returns "rounded off" total posts count like returns 900 instead of 987
|
|
func (a *App) GetPostsUsage() (int64, *model.AppError) {
|
|
count, err := a.Srv().Store.Post().AnalyticsPostCount(&model.PostCountOptions{ExcludeDeleted: true, UsersPostsOnly: true, AllowFromCache: true})
|
|
if err != nil {
|
|
return 0, model.NewAppError("GetPostsUsage", "app.post.analytics_posts_count.app_error", nil, err.Error(), http.StatusInternalServerError)
|
|
}
|
|
|
|
return utils.RoundOffToZeroes(float64(count)), nil
|
|
}
|
|
|
|
func (a *App) GetTeamsUsage() (*model.TeamsUsage, *model.AppError) {
|
|
usage := &model.TeamsUsage{}
|
|
includeDeleted := false
|
|
teamCount, err := a.Srv().Store.Team().AnalyticsTeamCount(&model.TeamSearch{IncludeDeleted: &includeDeleted})
|
|
if err != nil {
|
|
return nil, model.NewAppError("GetTeamsUsage", "app.post.analytics_teams_count.app_error", nil, err.Error(), http.StatusInternalServerError)
|
|
}
|
|
|
|
usage.Active = teamCount
|
|
|
|
allTeams, appErr := a.GetAllTeams()
|
|
if appErr != nil {
|
|
return nil, appErr
|
|
}
|
|
|
|
cloudArchivedTeamCount := 0
|
|
|
|
for _, team := range allTeams {
|
|
if team.DeleteAt > 0 && team.CloudLimitsArchived {
|
|
cloudArchivedTeamCount += 1
|
|
}
|
|
}
|
|
|
|
usage.CloudArchived = int64(cloudArchivedTeamCount)
|
|
|
|
return usage, nil
|
|
}
|