Merge branch 'master' into production

This commit is contained in:
Nick Winter 2016-07-15 13:28:47 -07:00
commit 8a074b7777
5 changed files with 21 additions and 8 deletions

View file

@ -22,6 +22,7 @@ before_install:
- npm install -g npm@latest
before_script:
- npm update
- export DISPLAY=:99.0
- sh -e /etc/init.d/xvfb start
- "node index.js --unittest &"

View file

@ -11,6 +11,7 @@ _.extend CourseSchema.properties,
pricePerSeat: {type: 'number', description: 'Price per seat in USD cents.'} # deprecated
free: { type: 'boolean' }
screenshot: c.url {title: 'URL', description: 'Link to course screenshot.'}
adminOnly: {type: 'boolean', description: 'Whether the course is in admin-only testing mode still and will not show up for normal users.'}
c.extendBasicProperties CourseSchema, 'Course'

View file

@ -140,9 +140,11 @@ module.exports =
classroom.set 'ownerID', req.user._id
classroom.set 'members', []
database.assignBody(req, classroom)
# Copy over data from how courses are right now
courses = yield Course.find()
query = {}
query = {adminOnly: {$ne: true}} unless req.user?.isAdmin()
courses = yield Course.find(query)
campaigns = yield Campaign.find({_id: {$in: (course.get('campaignID') for course in courses)}})
campaignMap = {}
campaignMap[campaign.id] = campaign for campaign in campaigns

View file

@ -34,18 +34,27 @@ module.exports =
foundLevelOriginal = true
nextLevelOriginal = levels[index+1]?.original
break
if not foundLevelOriginal
throw new errors.NotFound('Level original ObjectId not found in that course')
if not nextLevelOriginal
return res.status(200).send({})
dbq = Level.findOne({original: mongoose.Types.ObjectId(nextLevelOriginal)})
dbq.sort({ 'version.major': -1, 'version.minor': -1 })
dbq.select(parse.getProjectFromReq(req))
level = yield dbq
level = level.toObject({req: req})
res.status(200).send(level)
get: (Model, options={}) -> wrap (req, res) ->
# Don't use standard rest middleware get, because we want to filter out adminOnly courses for non-admins
query = {}
query = {adminOnly: {$ne: true}} unless req.user?.isAdmin()
dbq = Model.find(query)
dbq.select(parse.getProjectFromReq(req))
results = yield database.viewSearch(dbq, req)
res.send(results)

View file

@ -79,7 +79,7 @@ module.exports.setup = (app) ->
app.get('/db/codelogs', mw.auth.checkHasPermission(['admin']), mw.rest.get(CodeLog))
Course = require '../models/Course'
app.get('/db/course', mw.rest.get(Course))
app.get('/db/course', mw.courses.get(Course))
app.get('/db/course/:handle', mw.rest.getByHandle(Course))
app.get('/db/course/:handle/levels/:levelOriginal/next', mw.courses.fetchNextLevel)