forked from nko2/website
/
judges.coffee
47 lines (40 loc) · 1.52 KB
/
judges.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
_ = require 'underscore'
app = require '../config/app'
Person = app.db.model 'Person'
# index
app.get '/judges', (req, res, next) ->
Person.find { role: 'judge' }, (err, judges) ->
return next err if err
res.render2 'judges', judges: _.shuffle(judges)
app.get '/judges/nominations', (req, res, next) ->
Person.find { role: 'nomination' }, {}, {sort: [['updatedAt', -1]]}, (err, judges) ->
return next err if err
res.render2 'judges/nominations', judges: judges
app.get '/judges/technical', (req, res, next) ->
Person.find { role: 'judge', technical: true }, (err, judges) ->
return next err if err
res.render2 'judges', judges: _.shuffle(judges), subset: 'Technical'
# new
app.get '/judges/new', (req, res, next) ->
res.render2 'judges/new', person: new Person(role: 'nomination')
# create
app.post '/judges', (req, res) ->
# sanitize the body
delete req.body[attr] for attr in ['admin', 'technical']
req.body.role = 'nomination'
judge = new Person req.body
judge.save (err) ->
if err
res.render2 'judges/new', person: judge
else
req.flash 'info', """
Thanks for nominating #{judge.name} as a judge.
We will review and process him/her shortly."""
res.redirect "people/#{judge}"
# edit (just redirects to person/edit with twitter login)
app.get '/judges/:judgeId/edit', (req, res, next) ->
editPersonPath = "/people/#{req.param('judgeId')}/edit"
if req.loggedIn
res.redirect editPersonPath
else
res.redirect "/login/twitter?returnTo=#{editPersonPath}"