[MM-28422] Enable processing of import files through API (#16062)
* Implement unzip function * Implement FileSize method * Implement path rewriting for bulk import * Small improvements * Add ImportSettings to config * Implement ListImports API endpoint * Enable uploading import files * Implement import process job * Add missing license headers * Address reviews * Make path sanitization a bit smarter * Clean path before calculating Dir * [MM-30008] Add mmctl support for file imports (#16301) * Add mmctl support for import files * Improve test * Remove unnecessary handlers * Use th.TestForSystemAdminAndLocal * Make nouser id a constant
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
f733ee9332
Коммит
df906cad9d
@@ -117,6 +117,9 @@ const (
|
||||
|
||||
FILE_SETTINGS_DEFAULT_DIRECTORY = "./data/"
|
||||
|
||||
IMPORT_SETTINGS_DEFAULT_DIRECTORY = "./import"
|
||||
IMPORT_SETTINGS_DEFAULT_RETENTION_DAYS = 30
|
||||
|
||||
EMAIL_SETTINGS_DEFAULT_FEEDBACK_ORGANIZATION = ""
|
||||
|
||||
SUPPORT_SETTINGS_DEFAULT_TERMS_OF_SERVICE_LINK = "https://about.mattermost.com/default-terms/"
|
||||
@@ -2854,6 +2857,37 @@ func (s *ImageProxySettings) SetDefaults(ss ServiceSettings) {
|
||||
}
|
||||
}
|
||||
|
||||
// ImportSettings defines configuration settings for file imports.
|
||||
type ImportSettings struct {
|
||||
// The directory where to store the imported files.
|
||||
Directory *string
|
||||
// The number of days to retain the imported files before deleting them.
|
||||
RetentionDays *int
|
||||
}
|
||||
|
||||
func (s *ImportSettings) isValid() *AppError {
|
||||
if *s.Directory == "" {
|
||||
return NewAppError("Config.IsValid", "model.config.is_valid.import.directory.app_error", nil, "", http.StatusBadRequest)
|
||||
}
|
||||
|
||||
if *s.RetentionDays <= 0 {
|
||||
return NewAppError("Config.IsValid", "model.config.is_valid.import.retention_days_too_low.app_error", nil, "", http.StatusBadRequest)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// SetDefaults applies the default settings to the struct.
|
||||
func (s *ImportSettings) SetDefaults() {
|
||||
if s.Directory == nil || *s.Directory == "" {
|
||||
s.Directory = NewString(IMPORT_SETTINGS_DEFAULT_DIRECTORY)
|
||||
}
|
||||
|
||||
if s.RetentionDays == nil {
|
||||
s.RetentionDays = NewInt(IMPORT_SETTINGS_DEFAULT_RETENTION_DAYS)
|
||||
}
|
||||
}
|
||||
|
||||
type ConfigFunc func() *Config
|
||||
|
||||
const ConfigAccessTagType = "access"
|
||||
@@ -2929,6 +2963,7 @@ type Config struct {
|
||||
ImageProxySettings ImageProxySettings
|
||||
CloudSettings CloudSettings
|
||||
FeatureFlags *FeatureFlags `json:",omitempty"`
|
||||
ImportSettings ImportSettings
|
||||
}
|
||||
|
||||
func (o *Config) Clone() *Config {
|
||||
@@ -3032,6 +3067,7 @@ func (o *Config) SetDefaults() {
|
||||
o.FeatureFlags = &FeatureFlags{}
|
||||
o.FeatureFlags.SetDefaults()
|
||||
}
|
||||
o.ImportSettings.SetDefaults()
|
||||
}
|
||||
|
||||
func (o *Config) IsValid() *AppError {
|
||||
@@ -3110,6 +3146,10 @@ func (o *Config) IsValid() *AppError {
|
||||
if err := o.ImageProxySettings.isValid(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := o.ImportSettings.isValid(); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
Ссылка в новой задаче
Block a user