示例#1
0
文件: views.py 项目: conwetlab/fast
    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')
示例#2
0
文件: views.py 项目: conwetlab/fast
    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')
示例#3
0
文件: views.py 项目: conwetlab/fast
    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
示例#4
0
文件: views.py 项目: conwetlab/fast
    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