Handle blacklist (#84)

* Client: Add list blacklist feature

* Server: Add list blacklist feature

* Client: Add videoId column

* Server: Add some video infos in the REST api

* Client: Add video information in the blacklist list

* Fix sortable columns :)

* Client: Add removeFromBlacklist feature

* Server: Add removeFromBlacklist feature

* Move to TypeScript

* Move to TypeScript and Promises

* Server: Fix blacklist list sort

* Server: Fetch videos informations

* Use common shared interface for client and server

* Add check-params remove blacklisted video tests

* Add check-params list blacklisted videos tests

* Add list blacklist tests

* Add remove from blacklist tests

* Add video blacklist management tests

* Fix rebase onto develop issues

* Server: Add sort on blacklist id column

* Server: Add blacklists library

* Add blacklist id sort test

* Add check-params tests for blacklist list pagination, count and sort

* Fix coding style

* Increase Remote API tests timeout

* Increase Request scheduler API tests timeout

* Fix typo

* Increase video transcoding API tests timeout

* Move tests to Typescript

* Use lodash orderBy method

* Fix typos

* Client: Remove optional tests in blacklist model attributes

* Move blacklist routes from 'blacklists' to 'blacklist'

* CLient: Remove blacklist-list.component.scss

* Rename 'blacklists' files to 'blacklist'

* Use only BlacklistedVideo interface

* Server: Use getFormattedObjects method in listBlacklist method

* Client: Use new coding style

* Server: Use new sort validator methods

* Server: Use new checkParams methods

* Client: Fix sortable columns
This commit is contained in:
Green-Star
2017-09-22 09:13:43 +02:00
committed by Bigard Florian
parent c9d6d155c3
commit 792dbaf07f
36 changed files with 805 additions and 124 deletions

View File

@@ -1,6 +1,9 @@
import 'express-validator'
import * as express from 'express'
import { SortType } from '../helpers'
import { database } from '../initializers'
function setUsersSort (req: express.Request, res: express.Response, next: express.NextFunction) {
if (!req.query.sort) req.query.sort = '-createdAt'
@@ -19,10 +22,32 @@ function setVideosSort (req: express.Request, res: express.Response, next: expre
return next()
}
function setBlacklistSort (req: express.Request, res: express.Response, next: express.NextFunction) {
let newSort: SortType = { sortModel: undefined, sortValue: undefined }
if (!req.query.sort) req.query.sort = '-createdAt'
// Set model we want to sort onto
if (req.query.sort === '-createdAt' || req.query.sort === 'createdAt' ||
req.query.sort === '-id' || req.query.sort === 'id') {
// If we want to sort onto the BlacklistedVideos relation, we won't specify it in the query parameter ...
newSort.sortModel = undefined
} else {
newSort.sortModel = database.Video
}
newSort.sortValue = req.query.sort
req.query.sort = newSort
return next()
}
// ---------------------------------------------------------------------------
export {
setUsersSort,
setVideoAbusesSort,
setVideosSort
setVideosSort,
setBlacklistSort
}

View File

@@ -0,0 +1,35 @@
import { param } from 'express-validator/check'
import * as express from 'express'
import { database as db } from '../../initializers/database'
import { checkErrors } from './utils'
import { logger } from '../../helpers'
const blacklistRemoveValidator = [
param('id').isNumeric().not().isEmpty().withMessage('Should have a valid id'),
(req: express.Request, res: express.Response, next: express.NextFunction) => {
logger.debug('Checking blacklistRemove parameters.', { parameters: req.params })
checkErrors(req, res, () => {
db.BlacklistedVideo.loadById(req.params.id)
.then(entry => {
if (!entry) return res.status(404).send('Blacklisted video not found')
res.locals.blacklistEntryToRemove = entry
next()
})
.catch(err => {
logger.error('Error in blacklistRemove request validator', { error: err })
return res.sendStatus(500)
})
})
}
]
// ---------------------------------------------------------------------------
export {
blacklistRemoveValidator
}

View File

@@ -4,3 +4,4 @@ export * from './pods'
export * from './sort'
export * from './users'
export * from './videos'
export * from './blacklist'

View File

@@ -9,17 +9,20 @@ import { SORTABLE_COLUMNS } from '../../initializers'
const SORTABLE_USERS_COLUMNS = createSortableColumns(SORTABLE_COLUMNS.USERS)
const SORTABLE_VIDEO_ABUSES_COLUMNS = createSortableColumns(SORTABLE_COLUMNS.VIDEO_ABUSES)
const SORTABLE_VIDEOS_COLUMNS = createSortableColumns(SORTABLE_COLUMNS.VIDEOS)
const SORTABLE_BLACKLISTS_COLUMNS = createSortableColumns(SORTABLE_COLUMNS.BLACKLISTS)
const usersSortValidator = checkSort(SORTABLE_USERS_COLUMNS)
const videoAbusesSortValidator = checkSort(SORTABLE_VIDEO_ABUSES_COLUMNS)
const videosSortValidator = checkSort(SORTABLE_VIDEOS_COLUMNS)
const blacklistSortValidator = checkSort(SORTABLE_BLACKLISTS_COLUMNS)
// ---------------------------------------------------------------------------
export {
usersSortValidator,
videoAbusesSortValidator,
videosSortValidator
videosSortValidator,
blacklistSortValidator
}
// ---------------------------------------------------------------------------