diff --git a/app.coffee b/app.coffee index cb47907..de6e6c7 100644 --- a/app.coffee +++ b/app.coffee @@ -16,4 +16,4 @@ require('./app/routes')(app) #setup express helpers for login and register mongooseAuth.helpExpress(app) -console.log "Express server listening on port %d in %s mode", app.port, app.settings.env \ No newline at end of file +console.log "Express server listening on port %d in %s mode", app.port, app.settings.env diff --git a/app/controllers/competitors_controller.coffee b/app/controllers/competitors_controller.coffee index 061f968..ab0eaa3 100644 --- a/app/controllers/competitors_controller.coffee +++ b/app/controllers/competitors_controller.coffee @@ -28,7 +28,7 @@ class CompetitorsController extends BaseController show: (request, response) -> Vote.find(competitor: request.competitor.id).populate("team").populate("round").sort("round.number","ascending").exec (err, votes) -> - console.log votes + #console.log votes response.render 'competitors/dash', title: 'Competitor Dashboard' competitor: request.competitor @@ -48,7 +48,7 @@ class CompetitorsController extends BaseController create: (request, response) -> uid = if request.user.is_admin and request.body.theUser then request.body.theUser.id else request.user.id User.findById(uid).exec (err, user) => - console.log err if err + #console.log err if err user.joinAsCompetitor request.currentEvent, (err) => return @error(request, response, "cannot join event.", redirect(request)) if err request.flash 'notice', 'Joined the event.' @@ -74,4 +74,4 @@ class CompetitorsController extends BaseController request.flash 'notice', 'competitor Deleted' response.redirect '/competitors' -module.exports = CompetitorsController \ No newline at end of file +module.exports = CompetitorsController diff --git a/app/controllers/events_controller.coffee b/app/controllers/events_controller.coffee index cec3802..4a76673 100644 --- a/app/controllers/events_controller.coffee +++ b/app/controllers/events_controller.coffee @@ -1,11 +1,11 @@ BaseController = require './base_controller' Event = require '../../models/event' UploadHelpers = require '../../helpers/upload_helpers' -EventHelpers = require '../../helpers/event_helpers' -Investor = require '../../models/investor' -Competitor = require '../../models/competitor' -MailHelpers = require '../../helpers/mail_helpers' -populater = require '../../processors/populate' +EventHelpers = require '../../helpers/event_helpers' +Investor = require '../../models/investor' +Competitor = require '../../models/competitor' +MailHelpers = require '../../helpers/mail_helpers' +populater = require '../../processors/populate' class EventsController extends BaseController @@ -102,13 +102,13 @@ class EventsController extends BaseController for recip in recipients email = recip.user.email if !request.session.passcodes[email] - console.log "no passcode for <#{email}>. skipped." + #console.log "no passcode for <#{email}>. skipped." continue fullname = if recip.user.fname and recip.user.fname then "\"#{recip.user.fname} #{recip.user.lname}\"" else "" password = request.session.passcodes[email] body = msg.replace(":password:", password).replace(":fname:", recip.user.fname).replace(":lname:", recip.user.lname).replace(":email:", email) MailHelpers.send [email, fullname], [fromEmail, from], "your TILT login", body, [fromEmail] - console.log "sending to #{fullname} <#{email}>" + #console.log "sending to #{fullname} <#{email}>" request.flash 'notice', "Emailed #{recipients.length} Recipients" response.redirect '/events' @@ -117,9 +117,9 @@ class EventsController extends BaseController if typeof results is 'string' request.flash 'error', results else - console.log results.passcodes + #console.log results.passcodes request.session.passcodes = results.passcodes request.flash 'notice', "Populated" response.redirect '/events' -module.exports = EventsController \ No newline at end of file +module.exports = EventsController diff --git a/app/controllers/votes_controller.coffee b/app/controllers/votes_controller.coffee index 2523f5e..26e49e0 100644 --- a/app/controllers/votes_controller.coffee +++ b/app/controllers/votes_controller.coffee @@ -48,7 +48,7 @@ class VotesController extends BaseController throw err if err votes.push v processVote i+1, done - console.log "here", i + #console.log "here", i processVote 0, () -> if request.params.format is 'json' @@ -62,4 +62,4 @@ class VotesController extends BaseController response.redirect '/competitor/dash' -module.exports = VotesController \ No newline at end of file +module.exports = VotesController diff --git a/app/routes.coffee b/app/routes.coffee index 8e285ac..7fab627 100644 --- a/app/routes.coffee +++ b/app/routes.coffee @@ -1,28 +1,28 @@ -Allocation = require '../processors/allocation' -AuthHelpers = require '../helpers/auth_helpers' -Investment = require '../models/investment' -EventsController = require '../app/controllers/events_controller' -InvestorsController = require '../app/controllers/investors_controller' -TeamsController = require '../app/controllers/teams_controller' -RoundsController = require '../app/controllers/rounds_controller' -ResultsController = require '../app/controllers/results_controller' +Allocation = require '../processors/allocation' +AuthHelpers = require '../helpers/auth_helpers' +Investment = require '../models/investment' +EventsController = require '../app/controllers/events_controller' +InvestorsController = require '../app/controllers/investors_controller' +TeamsController = require '../app/controllers/teams_controller' +RoundsController = require '../app/controllers/rounds_controller' +ResultsController = require '../app/controllers/results_controller' InvestmentsController = require '../app/controllers/investments_controller' CompetitorsController = require '../app/controllers/competitors_controller' -HomeController = require '../app/controllers/home_controller' -VotesController = require '../app/controllers/votes_controller' -Process = require '../processors/investments' -Result = require '../models/result' -Round = require '../models/round' -RoundHelpers = require '../helpers/round_helpers' -EventHelpers = require '../helpers/event_helpers' -SystemHelpers = require '../helpers/system_helpers' -UploadHelpers = require '../helpers/upload_helpers' -CompetitorHelpers = require '../helpers/competitor_helpers' -InvestorHelpers = require '../helpers/investor_helpers' -TeamHelpers = require '../helpers/team_helpers' -Transaction = require '../models/transaction' -UsersController = require '../app/controllers/users_controller' -UserHelpers = require '../helpers/user_helpers' +HomeController = require '../app/controllers/home_controller' +VotesController = require '../app/controllers/votes_controller' +Process = require '../processors/investments' +Result = require '../models/result' +Round = require '../models/round' +RoundHelpers = require '../helpers/round_helpers' +EventHelpers = require '../helpers/event_helpers' +SystemHelpers = require '../helpers/system_helpers' +UploadHelpers = require '../helpers/upload_helpers' +CompetitorHelpers = require '../helpers/competitor_helpers' +InvestorHelpers = require '../helpers/investor_helpers' +TeamHelpers = require '../helpers/team_helpers' +Transaction = require '../models/transaction' +UsersController = require '../app/controllers/users_controller' +UserHelpers = require '../helpers/user_helpers' module.exports = (app) -> @@ -75,7 +75,7 @@ module.exports = (app) -> path: '/events/:event_id' method: 'put' action: 'update' - middleware: [AuthHelpers.restricted, UploadHelpers.uniquifyObjectNames("events"), UploadHelpers.uploader] + middleware: [ AuthHelpers.restricted, UploadHelpers.uniquifyObjectNames("events"), UploadHelpers.uploader ] , path: '/event/:event_id' method: 'del' @@ -92,13 +92,13 @@ module.exports = (app) -> path: '/event/:event_id/mail' middleware: AuthHelpers.restricted method: 'post' - ] + ] mapToController UsersController, [ path: '/user/profile' - middleware: [AuthHelpers.loggedIn, RoundHelpers.loadCurrentRound] + middleware: [ AuthHelpers.loggedIn, RoundHelpers.loadCurrentRound ] , path: '/user/:id/profile' , @@ -273,10 +273,10 @@ module.exports = (app) -> mapToController InvestmentsController, [ path: '/investment/new' - middleware: [AuthHelpers.loggedIn, RoundHelpers.loadCurrentRound, InvestorHelpers.isInvestor] + middleware: [AuthHelpers.loggedIn, RoundHelpers.loadCurrentRound, InvestorHelpers.isInvestor] , path: '/investments.:format?' - middleware: [AuthHelpers.loggedIn, RoundHelpers.loadCurrentRound] + middleware: [AuthHelpers.loggedIn, RoundHelpers.loadCurrentRound] method: 'post' action: 'create' ] @@ -284,10 +284,10 @@ module.exports = (app) -> mapToController VotesController, [ path: '/vote/new' - middleware: [AuthHelpers.loggedIn, RoundHelpers.loadCurrentRound, CompetitorHelpers.isCompetitor, CompetitorHelpers.loadCompetitor] + middleware: [AuthHelpers.loggedIn, RoundHelpers.loadCurrentRound, CompetitorHelpers.isCompetitor, CompetitorHelpers.loadCompetitor] , path: '/votes.:format?' - middleware: [AuthHelpers.loggedIn, RoundHelpers.loadCurrentRound, CompetitorHelpers.isCompetitor, CompetitorHelpers.loadCompetitor] + middleware: [AuthHelpers.loggedIn, RoundHelpers.loadCurrentRound, CompetitorHelpers.isCompetitor, CompetitorHelpers.loadCompetitor] method: 'post' action: 'create' ] @@ -299,4 +299,4 @@ module.exports = (app) -> , path: '/login.json' action: 'login' - ] \ No newline at end of file + ] diff --git a/helpers/mail_helpers.coffee b/helpers/mail_helpers.coffee index 4afa618..6bfe06f 100644 --- a/helpers/mail_helpers.coffee +++ b/helpers/mail_helpers.coffee @@ -19,4 +19,4 @@ exports.send = (to, from, subject, body, bcc = []) -> text: body bcc: bcc , (success, msg) -> - console.log msg if !success \ No newline at end of file + #console.log msg if !success diff --git a/helpers/upload_helpers.coffee b/helpers/upload_helpers.coffee index 0b2aec5..e2cd8ab 100644 --- a/helpers/upload_helpers.coffee +++ b/helpers/upload_helpers.coffee @@ -24,7 +24,7 @@ exports.resizeImages = (width = 100) -> width: width , (err, stdout, stderr) -> if err - console.log err + #console.log err return next err file.path += suffix fs.stat file.path, (err, stat) -> @@ -43,4 +43,4 @@ exports.uploader = connectStreamS3 exports.getImageURIs = (req) -> base = "https://s3.amazonaws.com/tiltnyc/" - (base + value.s3ObjectName for key, value of req.files when value.size) \ No newline at end of file + (base + value.s3ObjectName for key, value of req.files when value.size) diff --git a/lib/sluggable.coffee b/lib/sluggable.coffee new file mode 100644 index 0000000..4309c0a --- /dev/null +++ b/lib/sluggable.coffee @@ -0,0 +1,30 @@ +slug = require 'slug' + +module.exports = + sluggable: ( schema, field ) -> + + schema.add({ _slug: { type: String } }) + + schema.pre 'save', (next) -> + this._slug = slug this[field].toLowerCase() + next() + + schema.static 'findBySlug', (slug, next) -> + this.findOne({ _slug: slug }, next) + + schema + + findable: ( model ) -> + model.__findById = model.findById + + model.findById = (idOrSlug, next) -> + if typeof idOrSlug == 'string' + model.findBySlug idOrSlug, (error, doc) -> + if doc + next(error, doc) + else + model.__findById idOrSlug, next + else + model.__findById idOrSlug, next + + model diff --git a/lib/timestamps.coffee b/lib/timestamps.coffee new file mode 100644 index 0000000..77b0e79 --- /dev/null +++ b/lib/timestamps.coffee @@ -0,0 +1,11 @@ +module.exports = ( schema ) -> + + schema.add + created_at: + type: Date + default: Date.now + updated_at: + type: Date + default: Date.now + + schema diff --git a/models/competitor.coffee b/models/competitor.coffee index 4126fa9..27793f5 100644 --- a/models/competitor.coffee +++ b/models/competitor.coffee @@ -1,37 +1,30 @@ -{mongoose, Schema, ObjectId} = require("./db_connect") +addTimestamps = require '../lib/timestamps' +Team = require './team' -mongooseAuth = require("mongoose-auth") +{ mongoose, Schema, ObjectId } = require('./db_connect') -Competitor = new Schema( +Competitor = new Schema user: type: ObjectId - ref: "User" + ref: 'User' required: true event: - type: ObjectId - ref: "Event" + type: ObjectId + ref: 'Event' required: true - + team: type: ObjectId - ref: "Team" - - created_at: - type: Date - default: Date.now + ref: 'Team' - updated_at: - type: Date - default: Date.now -) +Competitor = addTimestamps(Competitor) Competitor.methods.addToTeam = (team) -> @oldTeam = @team @team = team -Team = require("./team") -Competitor.pre "save", (next) -> +Competitor.pre 'save', (next) -> leaveTeam = (competitor, callback) -> return callback() unless competitor.oldTeam Team.findById competitor.oldTeam, (err, team) -> @@ -55,4 +48,4 @@ Competitor.pre "save", (next) -> if err then next err else joinTeam competitor, (err) -> next(err ? null) -exports = module.exports = mongoose.model("Competitor", Competitor) +exports = module.exports = mongoose.model('Competitor', Competitor) diff --git a/models/db_connect.coffee b/models/db_connect.coffee index 648a283..41acb6e 100644 --- a/models/db_connect.coffee +++ b/models/db_connect.coffee @@ -1,12 +1,13 @@ -fs = require("fs") -exports = mongoose = require("mongoose") -environment = process.env.NODE_ENV or "development" -if environment is "production" +fs = require('fs') +exports = mongoose = require('mongoose') +environment = process.env.NODE_ENV or 'development' +if environment is 'production' mongo_uri = process.env.MONGOLAB_URI else - mongo_uri = JSON.parse(fs.readFileSync(process.cwd() + "/config.json", encoding = "utf8"))[environment].mongo_uri + mongo_uri = JSON.parse(fs.readFileSync(process.cwd() + '/config.json', encoding = 'utf8'))[environment].mongo_uri mongoose.connect mongo_uri -module.exports = + +module.exports = mongoose: mongoose Schema: mongoose.Schema - ObjectId: mongoose.Schema.ObjectId \ No newline at end of file + ObjectId: mongoose.Schema.ObjectId diff --git a/models/event.coffee b/models/event.coffee index 100e4a7..6813a49 100644 --- a/models/event.coffee +++ b/models/event.coffee @@ -1,7 +1,10 @@ -{mongoose, Schema, ObjectId} = require("./db_connect") +Sluggize = require '../lib/sluggable' +addTimestamps = require '../lib/timestamps' + +{ mongoose, Schema, ObjectId } = require './db_connect' Event = new Schema - name: + name: type: String required: true @@ -12,17 +15,12 @@ Event = new Schema type: String theme: - type: String - - picture: type: String - created_at: - type: Date - default: Date.now + picture: + type: String - updated_at: - type: Date - default: Date.now +Event = addTimestamps(Event) +Event = Sluggize.sluggable(Event, 'name') -exports = module.exports = mongoose.model("Event", Event) \ No newline at end of file +module.exports = Sluggize.findable(mongoose.model('Event', Event)) diff --git a/models/investment.coffee b/models/investment.coffee index 1af4529..1934313 100644 --- a/models/investment.coffee +++ b/models/investment.coffee @@ -1,6 +1,8 @@ -{mongoose, Schema, ObjectId} = require("./db_connect") +addTimestamps = require '../lib/timestamps' -Investment = new Schema( +{ mongoose, Schema, ObjectId } = require './db_connect' + +Investment = new Schema percentage: type: Number required: true @@ -30,5 +32,7 @@ Investment = new Schema( updated_at: type: Date default: Date.now -) -exports = module.exports = mongoose.model("Investment", Investment) \ No newline at end of file + +Investment = addTimestamps(Investment) + +exports = module.exports = mongoose.model('Investment', Investment) diff --git a/models/investor.coffee b/models/investor.coffee index fca8f03..20c33a1 100644 --- a/models/investor.coffee +++ b/models/investor.coffee @@ -1,30 +1,23 @@ -{mongoose, Schema, ObjectId} = require("./db_connect") +addTimestamps = require '../lib/timestamps' -mongooseAuth = require("mongoose-auth") +{ mongoose, Schema, ObjectId } = require './db_connect' -Investor = new Schema( +Investor = new Schema user: type: ObjectId - ref: "User" + ref: 'User' required: true event: type: ObjectId - ref: "Event" + ref: 'Event' required: true funds: type: [ Number ] default: [] - created_at: - type: Date - default: Date.now - - updated_at: - type: Date - default: Date.now -) +Investor = addTimestamps(Investor) Investor.methods.getFundsForRoundNbr = (roundNbr) -> @funds[roundNbr - 1] ? 0 @@ -37,4 +30,4 @@ Investor.methods.addFundsForRoundNbr = (roundNbr, funds) -> _funds[i] += funds @funds = _funds -exports = module.exports = mongoose.model("Investor", Investor) \ No newline at end of file +exports = module.exports = mongoose.model('Investor', Investor) diff --git a/models/result.coffee b/models/result.coffee index 0c16733..9a53e36 100644 --- a/models/result.coffee +++ b/models/result.coffee @@ -1,19 +1,21 @@ -{mongoose, Schema, ObjectId} = require("./db_connect") +addTimestamps = require '../lib/timestamps' -Result = new Schema( +{ mongoose, Schema, ObjectId } = require './db_connect' + +Result = new Schema team: type: ObjectId - ref: "Team" + ref: 'Team' required: true event: - type: ObjectId - ref: "Event" - required: true - + type: ObjectId + ref: 'Event' + required: true + round: type: ObjectId - ref: "Round" + ref: 'Round' required: true before_price: @@ -48,12 +50,6 @@ Result = new Schema( type: Number required: true - created_at: - type: Date - default: Date.now +Result = addTimestamps(Result) - updated_at: - type: Date - default: Date.now -) -exports = module.exports = mongoose.model("Result", Result) \ No newline at end of file +exports = module.exports = mongoose.model('Result', Result) diff --git a/models/round.coffee b/models/round.coffee index 83ac3de..6f0bb3d 100644 --- a/models/round.coffee +++ b/models/round.coffee @@ -1,15 +1,17 @@ -{mongoose, Schema, ObjectId} = require("./db_connect") +addTimestamps = require '../lib/timestamps' -Round = new Schema( +{ mongoose, Schema, ObjectId } = require './db_connect' + +Round = new Schema number: type: Number required: true event: - type: ObjectId - ref: "Event" - required: true - + type: ObjectId + ref: 'Event' + required: true + is_current: type: Boolean default: false @@ -40,7 +42,7 @@ Round = new Schema( average_team_votes: type: Number default: 0 - + factor: type: Number default: 1 @@ -49,19 +51,12 @@ Round = new Schema( type: Number default: 0 - created_at: - type: Date - default: Date.now - - updated_at: - type: Date - default: Date.now -) +Round = addTimestamps(Round) -Round.virtual("processed").get -> +Round.virtual('processed').get -> @standard_deviation? -Round.virtual("is_first").get -> +Round.virtual('is_first').get -> Number(@number) is 1 -exports = module.exports = mongoose.model("Round", Round) \ No newline at end of file +exports = module.exports = mongoose.model('Round', Round) diff --git a/models/team.coffee b/models/team.coffee index 3d62d7f..5d57f71 100644 --- a/models/team.coffee +++ b/models/team.coffee @@ -1,17 +1,20 @@ -{mongoose, Schema, ObjectId} = require("./db_connect") +addTimestamps = require '../lib/timestamps' + +{ mongoose, Schema, ObjectId } = require './db_connect' + Team = new Schema name: type: String required: true - event: + event: type: ObjectId - ref: "Event" + ref: 'Event' required: true - + competitors: [ type: ObjectId - ref: "Competitor" + ref: 'Competitor' ] out_since: @@ -23,22 +26,22 @@ Team = new Schema desc: type: String - + twitter: type: String - - picture: + + picture: type: String - default: "https://s3.amazonaws.com/tiltnyc/teams/generic-team.jpg" - + default: 'https://s3.amazonaws.com/tiltnyc/teams/generic-team.jpg' + last_price: type: Number default: 1.00 - rank: + rank: type: Number default: 0 - + movement: type: Number default: 0 @@ -47,14 +50,8 @@ Team = new Schema type: Number default: 0 - created_at: - type: Date - default: Date.now - - updated_at: - type: Date - default: Date.now +Team = addTimestamps(Team) -Team.virtual("is_out").get -> @out_since > 0 +Team.virtual('is_out').get -> @out_since > 0 -exports = module.exports = mongoose.model("Team", Team) \ No newline at end of file +exports = module.exports = mongoose.model('Team', Team) diff --git a/models/transaction.coffee b/models/transaction.coffee index 3004684..8ebd998 100644 --- a/models/transaction.coffee +++ b/models/transaction.coffee @@ -1,7 +1,9 @@ -{mongoose, Schema, ObjectId} = require("./db_connect") +addTimestamps = require '../lib/timestamps' -Investor = require("./investor") -Round = require("./round") +Investor = require './investor' +Round = require './round' + +{ mongoose, Schema, ObjectId } = require './db_connect' Transaction = new Schema amount: @@ -10,31 +12,25 @@ Transaction = new Schema investor: type: ObjectId - ref: "Investor" + ref: 'Investor' required: true event: type: ObjectId - ref: "Event" - required: true + ref: 'Event' + required: true round: type: ObjectId - ref: "Round" + ref: 'Round' required: true label: type: String - created_at: - type: Date - default: Date.now - - updated_at: - type: Date - default: Date.now +Transaction = addTimestamps(Transaction) -Transaction.pre "save", (next) -> +Transaction.pre 'save', (next) -> transaction = @ Round.findById(transaction.round).exec (err, round) -> return next(err) if err @@ -45,4 +41,4 @@ Transaction.pre "save", (next) -> return next err if err next() -exports = module.exports = mongoose.model("Transaction", Transaction) \ No newline at end of file +exports = module.exports = mongoose.model('Transaction', Transaction) diff --git a/models/user.coffee b/models/user.coffee index 8a18402..07f5689 100644 --- a/models/user.coffee +++ b/models/user.coffee @@ -1,10 +1,12 @@ -{mongoose, Schema, ObjectId} = require("./db_connect") +addTimestamps = require '../lib/timestamps' -mongooseAuth = require("mongoose-auth") -Competitor = require("./competitor") -Investor = require("./investor") +{ mongoose, Schema, ObjectId } = require './db_connect' -UserSchema = new Schema( +mongooseAuth = require 'mongoose-auth' +Competitor = require './competitor' +Investor = require './investor' + +UserSchema = new Schema username: type: String required: true @@ -12,17 +14,17 @@ UserSchema = new Schema( fname: type: String - lname: + lname: type: String - + email: type: String required: true - picture: + picture: type: String - default: "https://s3.amazonaws.com/tiltnyc/users/GenericUser.png" - + default: 'https://s3.amazonaws.com/tiltnyc/users/GenericUser.png' + company: type: String @@ -32,26 +34,19 @@ UserSchema = new Schema( role: type: String #engineer | designer | investor | marketer | strategy - + twitter: type: String - + is_admin: type: Boolean default: false - created_at: - type: Date - default: Date.now - - updated_at: - type: Date - default: Date.now -) +UserSchema = addTimestamps(UserSchema) UserSchema.methods.joinAsCompetitor = (event, done) -> Competitor.findOne(event: event.id, user: @id).exec (err, comp) => - return done "already joined" if comp + return done 'already joined' if comp new Competitor user: @id event: event.id @@ -61,7 +56,7 @@ UserSchema.methods.joinAsCompetitor = (event, done) -> UserSchema.methods.joinAsInvestor = (event, done) -> Investor.findOne(event: event.id, user: @id).exec (err, inv) => - return done "already joined" if inv + return done 'already joined' if inv new Investor user: @id event: event.id @@ -87,44 +82,44 @@ UserSchema.plugin mongooseAuth, User password: - loginWith: "email" + loginWith: 'email' extraParams: username: String everyauth: - getLoginPath: "/login" - postLoginPath: "/login" - loginView: "login.jade" + getLoginPath: '/login' + postLoginPath: '/login' + loginView: 'login.jade' loginLocals: - title: "Login" + title: 'Login' - getRegisterPath: "/register" - postRegisterPath: "/register" - registerView: "register.jade" + getRegisterPath: '/register' + postRegisterPath: '/register' + registerView: 'register.jade' registerLocals: - title: "Register" + title: 'Register' - loginSuccessRedirect: "/user/profile" - registerSuccessRedirect: "/" + loginSuccessRedirect: '/user/profile' + registerSuccessRedirect: '/' respondToLoginSucceed: (res, user) -> if user if res.req.query.json? - res.redirect "/login.json" + res.redirect '/login.json' else - res.redirect "/user/profile" + res.redirect '/user/profile' res.end() respondToLoginFail: (req, res, errors, login) -> if errors and errors.length > 0 if req.query.json? - res.redirect "/login.json" + res.redirect '/login.json' res.end() else - res.render "login", + res.render 'login', errors: errors - title: "Login" + title: 'Login' email: login -mongoose.model "User", UserSchema -exports = module.exports = User = mongoose.model("User") +mongoose.model 'User', UserSchema +exports = module.exports = User = mongoose.model('User') diff --git a/models/vote.coffee b/models/vote.coffee index 17c573a..bbb3052 100644 --- a/models/vote.coffee +++ b/models/vote.coffee @@ -1,23 +1,28 @@ -{mongoose, Schema, ObjectId} = require("./db_connect") +addTimestamps = require '../lib/timestamps' + +{ mongoose, Schema, ObjectId } = require './db_connect' + Vote = new Schema competitor: type: ObjectId - ref: "Competitor" + ref: 'Competitor' required: true team: type: ObjectId - ref: "Team" + ref: 'Team' required: true round: type: ObjectId - ref: "Round" + ref: 'Round' required: true event: - type: ObjectId - ref: "Event" + type: ObjectId + ref: 'Event' required: true -exports = module.exports = mongoose.model("Vote", Vote) \ No newline at end of file +Vote = addTimestamps(Vote) + +exports = module.exports = mongoose.model('Vote', Vote) diff --git a/package.json b/package.json index 0049739..10d062d 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,9 @@ , "imagemagick" : "0.1.3" , "connect-redis" : "1.4.4" , "bcrypt" : "0.7.2" - , "sendgrid" : "0.2.4" + , "sendgrid" : "0.2.4" + , "sugar" : "1.3.6" + , "slug" : "0.2.2" } , "scripts": { "test": "cake mocha" diff --git a/processors/populate.coffee b/processors/populate.coffee index 408a36c..a0df5f0 100644 --- a/processors/populate.coffee +++ b/processors/populate.coffee @@ -38,7 +38,7 @@ module.exports = (userlist, event, usersInTeam, done) -> hash = bcrypt.hashSync(passcode, salt) passcodes[email.trim()] = passcode if user - console.log "found user #{email}, updating" + #console.log "found user #{email}, updating" user.fname = fname user.lname = lname user.role = role @@ -47,7 +47,7 @@ module.exports = (userlist, event, usersInTeam, done) -> user.salt = salt user.hash = hash else - console.log "creating user #{email}" + #console.log "creating user #{email}" user = new User fname: fname lname: lname @@ -84,7 +84,7 @@ module.exports = (userlist, event, usersInTeam, done) -> event: event.id name: popRandomData().city team.save (err, team) -> - console.log "created team: " + team.name if usersInTeam > 1 + #console.log "created team: " + team.name if usersInTeam > 1 processCompetitor = (c, competitorDone) -> return competitorDone() if c >= usersInTeam user = popUser() @@ -95,7 +95,7 @@ module.exports = (userlist, event, usersInTeam, done) -> team: team.id competitor.save (err, competitor) -> processCompetitor c+1, competitorDone - console.log "added competitor #{user.email} to #{team.name}" if usersInTeam > 1 + #console.log "added competitor #{user.email} to #{team.name}" if usersInTeam > 1 processCompetitor 0, () -> processTeams i+1, teamsDone diff --git a/test/models/event.spec.coffee b/test/models/event.spec.coffee new file mode 100644 index 0000000..c71a5f1 --- /dev/null +++ b/test/models/event.spec.coffee @@ -0,0 +1,40 @@ +{ should, clean, factory } = require '../test-base' + +Event = require '../../models/event' + +describe 'Event', -> + eventOne = undefined + + beforeEach (done) -> + eventOne = new Event({name: 'Event One'}) + eventOne.save (error) -> + throw error if error + done() + + afterEach (done) -> + clean done + + it 'creates a _slug from the name', ( done ) -> + event = new Event({name: 'Event Two'}) + event.save (error) -> + throw error if error + event._slug.should.eql 'event-two' + done() + + it '.findBySlug finds by slug', ( done ) -> + Event.findBySlug eventOne._slug, (error, event) -> + throw error if error + event._id.should.eql eventOne._id + done() + + it '.findById finds by id', ( done ) -> + Event.findById eventOne._id, (error, event) -> + throw error if error + event._id.should.eql eventOne._id + done() + + it '.findById finds by slug', ( done ) -> + Event.findById eventOne._slug, (error, event) -> + throw error if error + event._id.should.eql eventOne._id + done() diff --git a/views/events/_event_list.jade b/views/events/_event_list.jade index 683769a..97b0843 100644 --- a/views/events/_event_list.jade +++ b/views/events/_event_list.jade @@ -12,7 +12,7 @@ li br br strong= event.theme - + br if (event.teams) if (event.date >= new Date()) @@ -24,7 +24,7 @@ li strong= event.teams[0].name else |? - + br a(href="/event/#{event._id}/load", title="load") Load Event @@ -34,4 +34,4 @@ li   a(href='/event/'+event._id+'/admin', title="admin") Admin   - a(class='destroy', href="/event/"+event._id, title="delete") Del \ No newline at end of file + a(class='destroy', href="/event/"+event._id, title="delete") Del diff --git a/views/events/index.jade b/views/events/index.jade index 66e5761..480cf26 100644 --- a/views/events/index.jade +++ b/views/events/index.jade @@ -8,6 +8,6 @@ ul.no-bullets.items#events != partial('_event_list', {collection: events, as: 'event'}) else #no-results No events found. - + if (is_admin) a(href='/events/new') Create one here.