* Implemented initial changes for files table * Removed *_benchmark_test.go files * Re-implemented GetPublicFile and added support for old path * Localization for files table * Moved file system code into utils package * Finished server-side changes and added initial upgrade script * Added getPostFiles api * Re-add Extension and HasPreviewImage fields to FileInfo * Removed unused translation * Fixed merge conflicts left over after permissions changes * Forced FileInfo.extension to be lower case * Changed FileUploadResponse to contain the FileInfos instead of FileIds * Fixed permissions on getFile* calls * Fixed notifications for file uploads * Added initial version of client code for files changes * Permanently added FileIds field to Post object and removed Post.HasFiles * Updated PostStore.Update to be usable in more circumstances * Re-added Filenames field and switched file migration to be entirely lazy-loaded * Increased max listener count for FileStore * Removed unused fileInfoCache * Moved file system code back into api * Removed duplicate test case * Fixed unit test running on ports other than 8065 * Renamed HasPermissionToPostContext to HasPermissionToChannelByPostContext * Refactored handleImages to make it more easily understandable * Renamed getPostFiles to getFileInfosForPost * Re-added pre-FileIds posts to analytics * Changed files to be saved as their ids as opposed to id/filename.ext * Renamed FileInfo.UserId to FileInfo.CreatorId * Fixed detection of language in CodePreview * Fixed switching between threads in the RHS not loading new files * Add serverside protection against a rare bug where the client sends the same file twice for a single post * Refactored the important parts of uploadFile api call into a function that can be called without a web context
105 строки
1.8 KiB
Go
105 строки
1.8 KiB
Go
// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
|
|
// See License.txt for license information.
|
|
|
|
package model
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
type CompliancePost struct {
|
|
|
|
// From Team
|
|
TeamName string
|
|
TeamDisplayName string
|
|
|
|
// From Channel
|
|
ChannelName string
|
|
ChannelDisplayName string
|
|
|
|
// From User
|
|
UserUsername string
|
|
UserEmail string
|
|
UserNickname string
|
|
|
|
// From Post
|
|
PostId string
|
|
PostCreateAt int64
|
|
PostUpdateAt int64
|
|
PostDeleteAt int64
|
|
PostRootId string
|
|
PostParentId string
|
|
PostOriginalId string
|
|
PostMessage string
|
|
PostType string
|
|
PostProps string
|
|
PostHashtags string
|
|
PostFileIds string
|
|
}
|
|
|
|
func CompliancePostHeader() []string {
|
|
return []string{
|
|
"TeamName",
|
|
"TeamDisplayName",
|
|
|
|
"ChannelName",
|
|
"ChannelDisplayName",
|
|
|
|
"UserUsername",
|
|
"UserEmail",
|
|
"UserNickname",
|
|
|
|
"PostId",
|
|
"PostCreateAt",
|
|
"PostUpdateAt",
|
|
"PostDeleteAt",
|
|
"PostRootId",
|
|
"PostParentId",
|
|
"PostOriginalId",
|
|
"PostMessage",
|
|
"PostType",
|
|
"PostProps",
|
|
"PostHashtags",
|
|
"PostFileIds",
|
|
}
|
|
}
|
|
|
|
func (me *CompliancePost) Row() []string {
|
|
|
|
postDeleteAt := ""
|
|
if me.PostDeleteAt > 0 {
|
|
postDeleteAt = time.Unix(0, me.PostDeleteAt*int64(1000*1000)).Format(time.RFC3339)
|
|
}
|
|
|
|
postUpdateAt := ""
|
|
if me.PostUpdateAt != me.PostCreateAt {
|
|
postUpdateAt = time.Unix(0, me.PostUpdateAt*int64(1000*1000)).Format(time.RFC3339)
|
|
}
|
|
|
|
return []string{
|
|
me.TeamName,
|
|
me.TeamDisplayName,
|
|
|
|
me.ChannelName,
|
|
me.ChannelDisplayName,
|
|
|
|
me.UserUsername,
|
|
me.UserEmail,
|
|
me.UserNickname,
|
|
|
|
me.PostId,
|
|
time.Unix(0, me.PostCreateAt*int64(1000*1000)).Format(time.RFC3339),
|
|
postUpdateAt,
|
|
postDeleteAt,
|
|
|
|
me.PostRootId,
|
|
me.PostParentId,
|
|
me.PostOriginalId,
|
|
me.PostMessage,
|
|
me.PostType,
|
|
me.PostProps,
|
|
me.PostHashtags,
|
|
me.PostFileIds,
|
|
}
|
|
}
|