def plan_editor_app(request, plan_id=None, editable=True): templates = get_handlebars_templates(settings.XGDS_PLANNER2_HANDLEBARS_DIRS, 'XGDS_PLANNER2_HANDLEBARS_DIRS') plan = PLAN_MODEL.get().objects.get(pk=plan_id) dirty = False if not plan.jsonPlan.serverId: plan.jsonPlan.serverId = plan.pk dirty = True if "None" in plan.jsonPlan.url: plan.jsonPlan.url = plan.get_absolute_url() dirty = True if dirty: plan.save() planSchema = models.getPlanSchema(plan.jsonPlan.platform.name) pe = None try: if plan.executions and plan.executions.count() > 0: pe = json.dumps(plan.executions.all()[0].toSimpleDict(), cls=DatetimeJsonEncoder) except: pass context = { 'templates': templates, 'app': 'xgds_planner2/js/plannerApp.js', 'saveSearchForm': MapSearchForm(), 'searchForms': getSearchForms(), 'flight_names': json.dumps(getAllFlightNames()), 'plan_schema_json': planSchema.getJsonSchema(), # xpjson.dumpDocumentToString(planSchema.getSchema()), 'plan_library_json': planSchema.getJsonLibrary(), # xpjson.dumpDocumentToString(planSchema.getLibrary()), 'plan_json': json.dumps(plan.jsonPlan), 'plan_name': plan.name, 'plan_execution': pe, 'plan_index_json': json.dumps(plan_index_json()), 'editable': editable and not plan.readOnly, 'simulatorUrl': planSchema.simulatorUrl, 'simulator': planSchema.simulator, 'placemark_circle_url': request.build_absolute_uri( staticfiles_storage.url('xgds_planner2/images/placemark_circle.png') ), 'placemark_circle_highlighted_url': request.build_absolute_uri( staticfiles_storage.url('xgds_planner2/images/placemark_circle_highlighted.png') ), 'placemark_directional_url': request.build_absolute_uri( staticfiles_storage.url('xgds_planner2/images/placemark_directional.png') ), 'placemark_selected_directional_url': request.build_absolute_uri( staticfiles_storage.url('xgds_planner2/images/placemark_directional_highlighted.png') ), 'plan_links_json': json.dumps(plan.getLinks()) } return render_to_response( 'xgds_planner2/planner_app.html', RequestContext(request, getClassByName(settings.XGDS_PLANNER2_EDITOR_CONTEXT_METHOD)(context)), )
def plan_editor_app(request, plan_id=None, editable=True): templates = get_handlebars_templates(settings.XGDS_PLANNER2_HANDLEBARS_DIRS, 'XGDS_PLANNER2_HANDLEBARS_DIRS') plan = PLAN_MODEL.get().objects.get(pk=plan_id) dirty = False if not plan.jsonPlan.serverId: plan.jsonPlan.serverId = plan.pk dirty = True if "None" in plan.jsonPlan.url: plan.jsonPlan.url = plan.get_absolute_url() dirty = True if dirty: plan.save() planSchema = models.getPlanSchema(plan.jsonPlan.platform.name) pe = None try: if plan.executions and plan.executions.count() > 0: pe = json.dumps(plan.executions.all()[0].toSimpleDict(), cls=DatetimeJsonEncoder) except: pass context = { 'templates': templates, 'app': 'xgds_planner2/js/plannerApp.js', 'saveSearchForm': MapSearchForm(), 'searchForms': getSearchForms(), 'flight_names': json.dumps(getAllFlightNames()), 'plan_schema_json': planSchema.getJsonSchema(), # xpjson.dumpDocumentToString(planSchema.getSchema()), 'plan_library_json': planSchema.getJsonLibrary(), # xpjson.dumpDocumentToString(planSchema.getLibrary()), 'plan_json': json.dumps(plan.jsonPlan), 'plan_name': plan.name, 'plan_execution': pe, 'plan_index_json': json.dumps(plan_index_json()), 'editable': editable and not plan.readOnly, 'simulatorUrl': planSchema.simulatorUrl, 'simulator': planSchema.simulator, 'placemark_circle_url': request.build_absolute_uri( staticfiles_storage.url('xgds_planner2/images/placemark_circle.png') ), 'placemark_circle_highlighted_url': request.build_absolute_uri( staticfiles_storage.url('xgds_planner2/images/placemark_circle_highlighted.png') ), 'placemark_directional_url': request.build_absolute_uri( staticfiles_storage.url('xgds_planner2/images/placemark_directional.png') ), 'placemark_selected_directional_url': request.build_absolute_uri( staticfiles_storage.url('xgds_planner2/images/placemark_directional_highlighted.png') ), 'plan_links_json': json.dumps(plan.getLinks()) } return render(request, 'xgds_planner2/planner_app.html', getClassByName(settings.XGDS_PLANNER2_EDITOR_CONTEXT_METHOD)(context))
def notesSearchMap(request, filter=None): noteType = Note.get().cls_type() return getSearchPage(request, noteType, 'xgds_notes2/map_record_notes.html', True, getSearchForms(noteType, filter))
def displayLiveVideo(request, sourceShortName=None): """ Directly display RTSP feeds for the active episode. This will either include all sources or be for a single source if it is passed in.. """ GET_ACTIVE_EPISODE_METHOD = getClassByName( settings.XGDS_VIDEO_GET_ACTIVE_EPISODE) episode = GET_ACTIVE_EPISODE_METHOD() if not episode: messages.add_message(request, messages.ERROR, 'There is no live video.') return redirect(reverse('error')) sources = [] noteForms = [] if sourceShortName: try: source = SOURCE_MODEL.get().objects.get( shortName=str(sourceShortName)) sources.append(source) noteForms.append( buildNoteForm([episode], source, request, {'index': 0})) except: pass else: # get sources and get feeds sources = SOURCE_MODEL.get().objects.filter( videosegment__episode=episode).distinct() for index, source in enumerate(sources): noteForms.append( buildNoteForm([episode], source, request, {'index': index})) noteModelName = str(NOTE_MODEL.get().cls_type()) # noteForm = getClassByName(settings.XGDS_NOTES_BUILD_NOTES_FORM)({'vehicle__name':sourceShortName, # 'flight__group_name':episode.shortName}) theFilter = {} if settings.XGDS_VIDEO_NOTE_FILTER_FUNCTION: noteFilterFn = getClassByName(settings.XGDS_VIDEO_NOTE_FILTER_FUNCTION) theFilter = noteFilterFn(episode, sourceShortName) searchForms = getSearchForms(noteModelName, theFilter) ctx = { 'episode': episode, 'isLive': True, 'zipped': zip(sources, noteForms), 'SSE': settings.XGDS_SSE, 'modelName': noteModelName, 'flightName': episode.shortName, 'flightTZ': settings.TIME_ZONE, 'searchModelDict': { noteModelName: settings.XGDS_MAP_SERVER_JS_MAP[noteModelName] }, 'searchForms': searchForms, # 'searchForms': {noteModelName: [noteForm,settings.XGDS_MAP_SERVER_JS_MAP[noteModelName]] }, 'app': 'xgds_video/js/mapVideoApp.js', 'templates': get_handlebars_templates( list(settings.XGDS_MAP_SERVER_HANDLEBARS_DIRS), 'XGDS_MAP_SERVER_HANDLEBARS_DIRS'), } if settings.XGDS_VIDEO_EXTRA_VIDEO_CONTEXT: extraVideoContextFn = getClassByName( settings.XGDS_VIDEO_EXTRA_VIDEO_CONTEXT) extraVideoContextFn(ctx) theTemplate = 'xgds_video/map_live_playbacks.html' return render(request, theTemplate, ctx)