From 268eebed921ac13a9ce0f4717f4923aa24190657 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 10 Aug 2018 16:54:01 +0200 Subject: Add state and moderationComment for abuses on server side --- server/models/video/video-abuse.ts | 54 +++++++++++++++++++++++++++++++++++-- server/models/video/video-import.ts | 1 + 2 files changed, 53 insertions(+), 2 deletions(-) (limited to 'server/models') diff --git a/server/models/video/video-abuse.ts b/server/models/video/video-abuse.ts index 39f0c2cb2..10a191372 100644 --- a/server/models/video/video-abuse.ts +++ b/server/models/video/video-abuse.ts @@ -1,11 +1,30 @@ -import { AfterCreate, AllowNull, BelongsTo, Column, CreatedAt, ForeignKey, Is, Model, Table, UpdatedAt } from 'sequelize-typescript' +import { + AfterCreate, + AllowNull, + BelongsTo, + Column, + CreatedAt, + DataType, + Default, + ForeignKey, + Is, + Model, + Table, + UpdatedAt +} from 'sequelize-typescript' import { VideoAbuseObject } from '../../../shared/models/activitypub/objects' import { VideoAbuse } from '../../../shared/models/videos' -import { isVideoAbuseReasonValid } from '../../helpers/custom-validators/videos' +import { + isVideoAbuseModerationCommentValid, + isVideoAbuseReasonValid, + isVideoAbuseStateValid +} from '../../helpers/custom-validators/video-abuses' import { Emailer } from '../../lib/emailer' import { AccountModel } from '../account/account' import { getSort, throwIfNotValid } from '../utils' import { VideoModel } from './video' +import { VideoAbuseState } from '../../../shared' +import { CONSTRAINTS_FIELDS, VIDEO_ABUSE_STATES } from '../../initializers' @Table({ tableName: 'videoAbuse', @@ -25,6 +44,18 @@ export class VideoAbuseModel extends Model { @Column reason: string + @AllowNull(false) + @Default(null) + @Is('VideoAbuseState', value => throwIfNotValid(value, isVideoAbuseStateValid, 'state')) + @Column + state: VideoAbuseState + + @AllowNull(true) + @Default(null) + @Is('VideoAbuseModerationComment', value => throwIfNotValid(value, isVideoAbuseModerationCommentValid, 'moderationComment')) + @Column(DataType.STRING(CONSTRAINTS_FIELDS.VIDEO_ABUSES.MODERATION_COMMENT.max)) + moderationComment: string + @CreatedAt createdAt: Date @@ -60,6 +91,16 @@ export class VideoAbuseModel extends Model { return Emailer.Instance.addVideoAbuseReportJob(instance.videoId) } + static loadByIdAndVideoId (id: number, videoId: number) { + const query = { + where: { + id, + videoId + } + } + return VideoAbuseModel.findOne(query) + } + static listForApi (start: number, count: number, sort: string) { const query = { offset: start, @@ -88,6 +129,11 @@ export class VideoAbuseModel extends Model { id: this.id, reason: this.reason, reporterAccount: this.Account.toFormattedJSON(), + state: { + id: this.state, + label: VideoAbuseModel.getStateLabel(this.state) + }, + moderationComment: this.moderationComment, video: { id: this.Video.id, uuid: this.Video.uuid, @@ -105,4 +151,8 @@ export class VideoAbuseModel extends Model { object: this.Video.url } } + + private static getStateLabel (id: number) { + return VIDEO_ABUSE_STATES[id] || 'Unknown' + } } diff --git a/server/models/video/video-import.ts b/server/models/video/video-import.ts index b794d8324..9d1f783c7 100644 --- a/server/models/video/video-import.ts +++ b/server/models/video/video-import.ts @@ -171,6 +171,7 @@ export class VideoImportModel extends Model { video } } + private static getStateLabel (id: number) { return VIDEO_IMPORT_STATES[id] || 'Unknown' } -- cgit v1.2.3