From 8c48e4fc14ce7f152fc9e372cc7e9e1a0769ad45 Mon Sep 17 00:00:00 2001 From: Nick Winter Date: Fri, 8 Jul 2016 17:04:24 -0700 Subject: [PATCH] Remove transpiledCode and screenshot from LevelSession --- app/schemas/models/level_session.coffee | 13 +----------- app/styles/admin/level_sessions.sass | 14 ------------- app/templates/admin.jade | 2 -- app/templates/admin/level_sessions.jade | 17 --------------- app/views/admin/LevelSessionsView.coffee | 19 ----------------- app/views/play/level/PlayLevelView.coffee | 25 ----------------------- server/handlers/level_handler.coffee | 2 +- server/models/LevelSession.coffee | 6 +++--- 8 files changed, 5 insertions(+), 93 deletions(-) delete mode 100644 app/styles/admin/level_sessions.sass delete mode 100644 app/templates/admin/level_sessions.jade delete mode 100644 app/views/admin/LevelSessionsView.coffee diff --git a/app/schemas/models/level_session.coffee b/app/schemas/models/level_session.coffee index 339d1f491..95be39816 100644 --- a/app/schemas/models/level_session.coffee +++ b/app/schemas/models/level_session.coffee @@ -54,7 +54,7 @@ _.extend LevelSessionSchema.properties, changed: c.date title: 'Changed' readOnly: true - + dateFirstCompleted: {} # c.stringDate # title: 'Completed' # readOnly: true @@ -62,9 +62,6 @@ _.extend LevelSessionSchema.properties, team: c.shortString() level: LevelSessionLevelSchema - screenshot: - type: 'string' - heroConfig: c.HeroConfigSchema state: c.object {}, @@ -208,14 +205,6 @@ _.extend LevelSessionSchema.properties, submittedCodeLanguage: type: 'string' - transpiledCode: - type: 'object' - additionalProperties: - type: 'object' - additionalProperties: - type: 'string' - format: 'code' - isRanking: type: 'boolean' description: 'Whether this session is still in the first ranking chain after being submitted.' diff --git a/app/styles/admin/level_sessions.sass b/app/styles/admin/level_sessions.sass deleted file mode 100644 index b84a7813e..000000000 --- a/app/styles/admin/level_sessions.sass +++ /dev/null @@ -1,14 +0,0 @@ -#admin-level-sessions-view - .session_tile - display: inline-block - position: relative - margin: 8px - - .session_info - position: absolute - top: 0 - left: 0 - right: 0 - text-align: center - background: rgba(0, 0, 0, 0.5) - color: white diff --git a/app/templates/admin.jade b/app/templates/admin.jade index 4a507a440..cd323fc39 100644 --- a/app/templates/admin.jade +++ b/app/templates/admin.jade @@ -30,8 +30,6 @@ block content h4 Entities ul - li - a(href="/admin/level-sessions") Active Instances li a(href="/admin/trial-requests") Trial Requests li diff --git a/app/templates/admin/level_sessions.jade b/app/templates/admin/level_sessions.jade deleted file mode 100644 index 6d36de660..000000000 --- a/app/templates/admin/level_sessions.jade +++ /dev/null @@ -1,17 +0,0 @@ -extends /templates/base - -block content - - h1 Latest Games - - each session in view.sessions.models - - var url = '/play/level/'+session.get('levelID')+'?session='+session.id - .session_tile - a(href=url) - if session.get('screenshot') - img(src=session.get('screenshot')) - else - img(src="/images/generic-icon.png") - .session_info - .level_name= session.get('levelName') - .creator_name= session.get('creatorName') diff --git a/app/views/admin/LevelSessionsView.coffee b/app/views/admin/LevelSessionsView.coffee deleted file mode 100644 index bd19ac763..000000000 --- a/app/views/admin/LevelSessionsView.coffee +++ /dev/null @@ -1,19 +0,0 @@ -RootView = require 'views/core/RootView' -template = require 'templates/admin/level_sessions' -LevelSession = require 'models/LevelSession' -CocoCollection = require 'collections/CocoCollection' - -class LevelSessionCollection extends CocoCollection - url: '/db/level.session/x/active?project=screenshot,levelName,creatorName' - model: LevelSession - -module.exports = class LevelSessionsView extends RootView - id: 'admin-level-sessions-view' - template: template - - constructor: (options) -> - super options - @getLevelSessions() - - getLevelSessions: -> - @sessions = @supermodel.loadCollection(new LevelSessionCollection(), 'sessions', {cache: false}).model diff --git a/app/views/play/level/PlayLevelView.coffee b/app/views/play/level/PlayLevelView.coffee index b764b6251..ef48795d7 100644 --- a/app/views/play/level/PlayLevelView.coffee +++ b/app/views/play/level/PlayLevelView.coffee @@ -69,7 +69,6 @@ module.exports = class PlayLevelView extends RootView 'god:infinite-loop': 'onInfiniteLoop' 'level:reload-from-data': 'onLevelReloadFromData' 'level:reload-thang-type': 'onLevelReloadThangType' - 'level:session-will-save': 'onSessionWillSave' 'level:started': 'onLevelStarted' 'level:loading-view-unveiling': 'onLoadingViewUnveiling' 'level:loading-view-unveiled': 'onLoadingViewUnveiled' @@ -112,7 +111,6 @@ module.exports = class PlayLevelView extends RootView @gameUIState = new GameUIState() $(window).on 'resize', @onWindowResize - @saveScreenshot = _.throttle @saveScreenshot, 30000 application.tracker?.enableInspectletJS(@levelID) @@ -594,15 +592,6 @@ module.exports = class PlayLevelView extends RootView @bus.removeFirebaseData => @bus.disconnect() - onSessionWillSave: (e) -> - # Something interesting has happened, so (at a lower frequency), we'll save a screenshot. - #@saveScreenshot e.session - - # Throttled - saveScreenshot: (session) => - return unless screenshot = @surface?.screenshot() - session.save {screenshot: screenshot}, {patch: true, type: 'PUT'} - onContactClicked: (e) -> Backbone.Mediator.publish 'level:contact-button-pressed', {} @openModalView contactModal = new ContactModal levelID: @level.get('slug') or @level.id, courseID: @courseID, courseInstanceID: @courseInstanceID @@ -954,20 +943,6 @@ module.exports = class PlayLevelView extends RootView console.error 'Failed to read sessionState in onRealTimeMultiplayerCast' console.info 'Submitting my code' - # Transpiling code copied from scripts/transpile.coffee - # TODO: Should this live somewhere else? - transpiledCode = {} - for thang, spells of @session.get('code') - transpiledCode[thang] = {} - for spellID, spell of spells - spellName = thang + '/' + spellID - continue if @session.get('teamSpells') and not (spellName in @session.get('teamSpells')[@session.get('team')]) - # console.log "PlayLevelView Transpiling spell #{spellName}" - aetherOptions = createAetherOptions functionName: spellID, codeLanguage: @session.get('submittedCodeLanguage'), includeFlow: true - aether = new Aether aetherOptions - transpiledCode[thang][spellID] = aether.transpile spell - # console.log "PlayLevelView transpiled code", transpiledCode - @session.set 'transpiledCode', transpiledCode permissions = @session.get 'permissions' ? [] unless _.find(permissions, (p) -> p.target is 'public' and p.access is 'read') permissions.push target:'public', access:'read' diff --git a/server/handlers/level_handler.coffee b/server/handlers/level_handler.coffee index a44a4e34b..549d49a9c 100644 --- a/server/handlers/level_handler.coffee +++ b/server/handlers/level_handler.coffee @@ -195,7 +195,7 @@ LevelHandler = class LevelHandler extends Handler majorVersion: level.version.major creator: req.user._id+'' - query = Session.find(sessionQuery).select('-screenshot -transpiledCode') + query = Session.find(sessionQuery) # TODO: take out "code" as well, since that can get huge containing the transpiled code for the lat hero, and find another way of having the LadderSubmissionViews in the MyMatchesTab determine ranking readiness query.exec (err, results) => if err then @sendDatabaseError(res, err) else @sendSuccess res, results diff --git a/server/models/LevelSession.coffee b/server/models/LevelSession.coffee index 8edecb749..87ae2320b 100644 --- a/server/models/LevelSession.coffee +++ b/server/models/LevelSession.coffee @@ -84,9 +84,9 @@ LevelSessionSchema.pre 'save', (next) -> LevelSessionSchema.statics.privateProperties = ['code', 'submittedCode', 'unsubscribed'] LevelSessionSchema.statics.editableProperties = ['multiplayer', 'players', 'code', 'codeLanguage', 'completed', 'state', - 'levelName', 'creatorName', 'levelID', 'screenshot', + 'levelName', 'creatorName', 'levelID', 'chat', 'teamSpells', 'submitted', 'submittedCodeLanguage', - 'unsubscribed', 'playtime', 'heroConfig', 'team', 'transpiledCode', + 'unsubscribed', 'playtime', 'heroConfig', 'team', 'browser'] LevelSessionSchema.statics.jsonSchema = jsonschema @@ -94,7 +94,7 @@ LevelSessionSchema.set('toObject', { transform: (doc, ret, options) -> req = options.req return ret unless req # TODO: Make deleting properties the default, but the consequences are far reaching - + submittedCode = doc.get('submittedCode') unless req.user?.isAdmin() or req.user?.id is doc.get('creator') or ('employer' in (req.user?.get('permissions') ? [])) or not doc.get('submittedCode') # TODO: only allow leaderboard access to non-top-5 solutions ret = _.omit ret, LevelSession.privateProperties