def read(self, request): try: user = get_user_authentication(request) playerData = None if request.GET.has_key( 'screenflow') and not request.GET.has_key('screen'): playerData = getGadgetData(request.GET['screenflow']) elif request.GET.has_key( 'screen') and not request.GET.has_key('screenflow'): playerData = getScreenData(request.GET['screen']) else: raise Exception('Invalid URL') playerHTML = getPlayerHTML( playerData, '/'.join([settings.MEDIA_URL, 'gadget'])) return HttpResponse(playerHTML, mimetype='text/html; charset=UTF-8') except Http404: return HttpResponseServerError( json_encode({"message": "Object not found"}), mimetype='application/json; charset=UTF-8') except Exception, e: return HttpResponseServerError( json_encode({'message': unicode(e)}), mimetype='application/json; charset=UTF-8')
def read(self, request): try: user = get_user_authentication(request) playerData = None if request.GET.has_key('screenflow') and not request.GET.has_key('screen'): playerData = getGadgetData(request.GET['screenflow']) elif request.GET.has_key('screen') and not request.GET.has_key('screenflow'): playerData = getScreenData(request.GET['screen']) else: raise Exception('Invalid URL') playerHTML = getPlayerHTML(playerData, '/'.join([settings.MEDIA_URL, 'gadget'])) return HttpResponse(playerHTML, mimetype='text/html; charset=UTF-8') except Http404: return HttpResponseServerError(json_encode({"message": "Object not found"}), mimetype='application/json; charset=UTF-8') except Exception, e: return HttpResponseServerError(json_encode({'message':unicode(e)}), mimetype='application/json; charset=UTF-8')
def __createGadget(self, gadgetData, storage): metadata = gadgetData['metadata'] if metadata.has_key('platforms'): if (type(metadata['platforms']) is str) or (type( metadata['platforms']) is unicode): metadata['platforms'] = [str(metadata['platforms'])] else: raise Exception('Invalid destination platform list') gadgetRelativePath = str(storage.pk) gadgetPath = path.join(STORAGE_DIR, gadgetRelativePath) if (not path.isdir(gadgetPath)): mkdir(gadgetPath) else: raise Exception('Gadget already exists') origin = path.join(GADGET_ZIP_DIR, STORAGE_GADGET_ZIP_NAME) gadgetZipFileName = path.join(gadgetPath, STORAGE_GADGET_ZIP_NAME) shutil.copyfile(origin, gadgetZipFileName) zipFile = zipfile.ZipFile(gadgetZipFileName, 'a') directory_name = tempfile.mkdtemp(dir=gadgetPath) gadgets = {} for platform in metadata['platforms']: if platform == 'ezweb': templateFileName = str(platform + '.xml') htmlFileName = str('index_' + platform + '.html') ezWebTemplate = getEzWebTemplate(gadgetData) ezWebTemplateFile = open( path.join(directory_name, templateFileName), 'w') ezWebTemplateFile.write(ezWebTemplate.encode('utf-8')) ezWebTemplateFile.close() zipFile.write(ezWebTemplateFile.name, path.join('.', templateFileName)) if isLocalStorage(): ezWebHTML = getEzWebHTML(gadgetData) ezWebHTMLFile = open( path.join(directory_name, htmlFileName), 'w') ezWebHTMLFile.write(ezWebHTML.encode('utf-8')) ezWebHTMLFile.close() zipFile.write(ezWebHTMLFile.name, path.join('.', htmlFileName)) gadgets[platform] = '/'.join( [metadata['gadgetUri'], templateFileName]) elif platform == 'google': templateFileName = str(platform + '.xml') googleTemplate = getGoogleTemplate(gadgetData) googleTemplateFile = open( path.join(directory_name, templateFileName), 'w') googleTemplateFile.write(googleTemplate.encode('utf-8')) googleTemplateFile.close() zipFile.write(googleTemplateFile.name, path.join('.', templateFileName)) gadgets[platform] = '/'.join( [metadata['gadgetUri'], templateFileName]) elif platform == 'player': if isLocalStorage(): htmlFileName = str(platform + '.html') playerHTML = getPlayerHTML(gadgetData, metadata['gadgetUri']) playerHTMLFile = open( path.join(directory_name, htmlFileName), 'w') playerHTMLFile.write(playerHTML.encode('utf-8')) playerHTMLFile.close() zipFile.write(playerHTMLFile.name, path.join('.', htmlFileName)) gadgets[platform] = '/'.join( [metadata['gadgetUri'], htmlFileName]) if isLocalStorage(): metadata['gadgets'] = gadgets else: htmlFileName = 'index.html' html = getUnboundHTML(gadgetData, metadata['gadgetUri']) htmlFile = open(path.join(directory_name, htmlFileName), 'w') htmlFile.write(html.encode('utf-8')) htmlFile.close() zipFile.write(htmlFile.name, path.join('.', htmlFileName)) #Copying APIs for platform in metadata['platforms']: if platform != "beemboard": apiFileName = str('fastAPI_' + platform + '.js') zipFile.write(path.join(GADGET_API_DIR, apiFileName), path.join(API_DIR, apiFileName)) shutil.rmtree(directory_name) zipFile.close() metadata['gadgetRelativePath'] = gadgetRelativePath
def __createGadget(self, gadgetData, storage): metadata = gadgetData['metadata'] if metadata.has_key('platforms'): if (type(metadata['platforms']) is str) or (type(metadata['platforms']) is unicode): metadata['platforms'] = [str(metadata['platforms'])] else: raise Exception('Invalid destination platform list') gadgetRelativePath = str(storage.pk) gadgetPath = path.join(STORAGE_DIR, gadgetRelativePath) if (not path.isdir(gadgetPath)): mkdir(gadgetPath) else: raise Exception ('Gadget already exists') origin = path.join(GADGET_ZIP_DIR, STORAGE_GADGET_ZIP_NAME) gadgetZipFileName = path.join(gadgetPath, STORAGE_GADGET_ZIP_NAME) shutil.copyfile (origin, gadgetZipFileName) zipFile = zipfile.ZipFile(gadgetZipFileName,'a') directory_name = tempfile.mkdtemp(dir=gadgetPath) gadgets = {} for platform in metadata['platforms']: if platform == 'ezweb': templateFileName = str(platform + '.xml') htmlFileName = str('index_' + platform + '.html') ezWebTemplate = getEzWebTemplate(gadgetData) ezWebTemplateFile = open (path.join(directory_name, templateFileName), 'w') ezWebTemplateFile.write(ezWebTemplate.encode('utf-8')) ezWebTemplateFile.close() zipFile.write(ezWebTemplateFile.name, path.join('.', templateFileName)) if isLocalStorage(): ezWebHTML = getEzWebHTML(gadgetData) ezWebHTMLFile = open (path.join(directory_name, htmlFileName), 'w') ezWebHTMLFile.write(ezWebHTML.encode('utf-8')) ezWebHTMLFile.close() zipFile.write(ezWebHTMLFile.name, path.join('.', htmlFileName)) gadgets[platform] = '/'.join([metadata['gadgetUri'], templateFileName]) elif platform == 'google': templateFileName = str(platform + '.xml') googleTemplate = getGoogleTemplate(gadgetData) googleTemplateFile = open (path.join(directory_name, templateFileName), 'w') googleTemplateFile.write(googleTemplate.encode('utf-8')) googleTemplateFile.close() zipFile.write(googleTemplateFile.name,path.join('.', templateFileName)) gadgets[platform] = '/'.join([metadata['gadgetUri'], templateFileName]) elif platform == 'player': if isLocalStorage(): htmlFileName = str(platform + '.html') playerHTML = getPlayerHTML(gadgetData, metadata['gadgetUri']) playerHTMLFile = open (path.join(directory_name, htmlFileName), 'w') playerHTMLFile.write(playerHTML.encode('utf-8')) playerHTMLFile.close() zipFile.write(playerHTMLFile.name, path.join('.', htmlFileName)) gadgets[platform] = '/'.join([metadata['gadgetUri'], htmlFileName]) if isLocalStorage(): metadata['gadgets'] = gadgets else: htmlFileName = 'index.html' html = getUnboundHTML(gadgetData, metadata['gadgetUri']) htmlFile = open (path.join(directory_name, htmlFileName), 'w') htmlFile.write(html.encode('utf-8')) htmlFile.close() zipFile.write(htmlFile.name, path.join('.', htmlFileName)) #Copying APIs for platform in metadata['platforms']: if platform != "beemboard": apiFileName = str('fastAPI_' + platform + '.js') zipFile.write(path.join(GADGET_API_DIR, apiFileName), path.join(API_DIR, apiFileName)) shutil.rmtree(directory_name) zipFile.close() metadata['gadgetRelativePath'] = gadgetRelativePath