当前位置: 首页>>代码示例>>Python>>正文


Python TemplateParser.get_resource_info方法代码示例

本文整理汇总了Python中wirecloud.commons.utils.template.TemplateParser.get_resource_info方法的典型用法代码示例。如果您正苦于以下问题:Python TemplateParser.get_resource_info方法的具体用法?Python TemplateParser.get_resource_info怎么用?Python TemplateParser.get_resource_info使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在wirecloud.commons.utils.template.TemplateParser的用法示例。


在下文中一共展示了TemplateParser.get_resource_info方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: undeploy_tenant_ac

# 需要导入模块: from wirecloud.commons.utils.template import TemplateParser [as 别名]
# 或者: from wirecloud.commons.utils.template.TemplateParser import get_resource_info [as 别名]
def undeploy_tenant_ac(request):

    id_4CaaSt, wgt_file, fileURL = _parse_ac_request(request)

    # Process 4CaaSt Id
    username = parse_username(id_4CaaSt)

    user = get_object_or_404(User, username=username)
    try:
        if user.tenantprofile_4CaaSt.id_4CaaSt != id_4CaaSt:
            raise Http404
    except TenantProfile.DoesNotExist:
        raise Http404

    # If the resource is a mashup, remove the assigned workspace
    template = TemplateParser(wgt_file.get_template())
    if template.get_resource_type() == 'mashup':
        Workspace.objects.filter(creator=user, name=template.get_resource_info()['display_name']).delete()

    # Uninstall de resource
    template = TemplateParser(wgt_file.get_template())
    resource = CatalogueResource.objects.get(vendor=template.get_resource_vendor(), short_name=template.get_resource_name(), version=template.get_resource_version())
    resource.users.remove(user)

    return HttpResponse(status=204)
开发者ID:fispace,项目名称:wirecloud,代码行数:27,代码来源:views.py

示例2: check_packaged_resource

# 需要导入模块: from wirecloud.commons.utils.template import TemplateParser [as 别名]
# 或者: from wirecloud.commons.utils.template.TemplateParser import get_resource_info [as 别名]
def check_packaged_resource(wgt_file, resource_info=None):

    if resource_info is None:
        template_contents = wgt_file.get_template()
        template = TemplateParser(template_contents)
        resource_info = template.get_resource_info()

    if resource_info['type'] == 'widget':
        code_url = resource_info['contents']['src']
        if not code_url.startswith(('http://', 'https://')):

            try:
                code = wgt_file.read(code_url)
            except KeyError:
                msg = _('Missing contents file: %(file_name)s.')
                raise InvalidContents(msg % {'file_name': code_url})

            try:
                code.decode(resource_info['contents']['charset'])
            except UnicodeDecodeError:
                msg = _('%(file_name)s was not encoded using the specified charset (%(charset)s according to the widget descriptor file).')
                raise InvalidContents(msg % {'file_name': code_url, 'charset': resource_info['contents']['charset']})

    check_invalid_doc_content(wgt_file, resource_info, 'longdescription')
    check_invalid_doc_content(wgt_file, resource_info, 'doc')
    check_invalid_doc_content(wgt_file, resource_info, 'changelog')
    check_invalid_embedded_resources(wgt_file, resource_info)
开发者ID:Mognom,项目名称:wirecloud,代码行数:29,代码来源:utils.py

示例3: test_basic_widget_creation_from_rdf

# 需要导入模块: from wirecloud.commons.utils.template import TemplateParser [as 别名]
# 或者: from wirecloud.commons.utils.template.TemplateParser import get_resource_info [as 别名]
    def test_basic_widget_creation_from_rdf(self):
        template_uri = "http://example.com/path/widget.rdf"
        template = self.read_template('template1.rdf')

        parser = TemplateParser(template)
        data = parser.get_resource_info()
        self.assertIn('requirements', data)
        self.assertItemsEqual(data['requirements'], ({'type': 'feature', 'name': 'Wirecloud'},))

        downloader.download_http_content.set_response(template_uri, template)
        downloader.download_http_content.set_response('http://example.com/path/test.html', BASIC_HTML_GADGET_CODE)
        widget = install_resource(template, template_uri, self.user, False).widget

        self.changeLanguage('en')
        data = get_widget_data(widget)
        self.assertEqual(data['uri'], 'Wirecloud/test/0.1')
        self.assertEqual(data['vendor'], 'Wirecloud')
        self.assertEqual(data['name'], 'test')
        self.assertEqual(data['version'], '0.1')

        self.assertEqual(data['variables']['prop']['label'], u'Property Label')
        self.assertEqual(data['variables']['prop']['aspect'], 'PROP')
        self.assertEqual(data['variables']['pref']['label'], u'Preference Label')
        self.assertEqual(data['variables']['pref']['value_options'], [[u'1', u'Option Name']])
        self.assertEqual(data['variables']['pref']['aspect'], 'PREF')
        self.assertEqual(data['variables']['event']['label'], u'Event Label')
        self.assertEqual(data['variables']['event']['aspect'], 'EVEN')
        self.assertEqual(data['variables']['slot']['label'], u'Slot Label')
        self.assertEqual(data['variables']['slot']['aspect'], 'SLOT')
开发者ID:ciniguez,项目名称:FIREWA,代码行数:31,代码来源:tests.py

示例4: check_mashup_dependencies

# 需要导入模块: from wirecloud.commons.utils.template import TemplateParser [as 别名]
# 或者: from wirecloud.commons.utils.template.TemplateParser import get_resource_info [as 别名]
def check_mashup_dependencies(template, user):

    if not isinstance(template, TemplateParser):
        template = TemplateParser(template)

    missing_dependencies = []
    workspace_info = template.get_resource_info()

    for tab_entry in workspace_info['tabs']:
        for resource in tab_entry['resources']:
            try:
                catalogue_resource = CatalogueResource.objects.get(vendor=resource.get('vendor'), short_name=resource.get('name'), version=resource.get('version'))
                if not catalogue_resource.is_available_for(user):
                    raise CatalogueResource.DoesNotExist
            except CatalogueResource.DoesNotExist:
                missing_dependencies.append('/'.join((resource.get('vendor'), resource.get('name'), resource.get('version'))))

    for id_, op in workspace_info['wiring']['operators'].iteritems():
        (vendor, name, version) = op['name'].split('/')
        try:
            resource = CatalogueResource.objects.get(vendor=vendor, short_name=name, version=version)
            if not resource.is_available_for(user):
                raise CatalogueResource.DoesNotExist
        except CatalogueResource.DoesNotExist:
            missing_dependencies.append('/'.join((vendor, name, version)))

    if len(missing_dependencies) > 0:
        raise MissingDependencies(missing_dependencies)
开发者ID:fispace,项目名称:wirecloud,代码行数:30,代码来源:mashupTemplateParser.py

示例5: test_basic_operator_creation_from_rdf

# 需要导入模块: from wirecloud.commons.utils.template import TemplateParser [as 别名]
# 或者: from wirecloud.commons.utils.template.TemplateParser import get_resource_info [as 别名]
    def test_basic_operator_creation_from_rdf(self):
        template = self.read_file('operatorTemplate1.rdf')
        parser = TemplateParser(template)
        data = parser.get_resource_info()

        self.assertEqual(data['vendor'], 'Wirecloud')
        self.assertEqual(data['name'], 'test operator')
        self.assertEqual(data['type'], 'operator')
        self.assertEqual(data['version'], '0.1')
        self.assertEqual(data['email'], '[email protected]')
        self.assertEqual(data['wiring']['inputs'][0]['label'], 'slot')
        self.assertEqual(data['wiring']['inputs'][0]['type'], 'text')
        self.assertEqual(data['wiring']['inputs'][0]['friendcode'], 'test_friend_code')
        self.assertEqual(data['wiring']['outputs'][0]['label'], 'event')
        self.assertEqual(data['wiring']['outputs'][0]['type'], 'text')
        self.assertEqual(data['wiring']['outputs'][0]['friendcode'], 'test_friend_code')
        self.assertEqual(data['preferences'][0]['label'], 'Preference label')
        self.assertEqual(data['preferences'][0]['description'], 'Preference description')
        self.assertEqual(data['preferences'][0]['default'], 'value')
        self.assertEqual(len(data['js_files']), 5)

        self.assertEqual(data['js_files'][0], '/examplecode1.js')
        self.assertEqual(data['js_files'][1], '/examplecode2.js')
        self.assertEqual(data['js_files'][2], '/examplecode3.js')
        self.assertEqual(data['js_files'][3], '/examplecode4.js')
        self.assertEqual(data['js_files'][4], '/examplecode5.js')
开发者ID:rachmadagitam,项目名称:apps.Wirecloud,代码行数:28,代码来源:tests.py

示例6: test_basic_operator_creation_from_rdf

# 需要导入模块: from wirecloud.commons.utils.template import TemplateParser [as 别名]
# 或者: from wirecloud.commons.utils.template.TemplateParser import get_resource_info [as 别名]
    def test_basic_operator_creation_from_rdf(self):
        template = self.read_template("operatorTemplate1.rdf")
        parser = TemplateParser(template)
        data = parser.get_resource_info()

        self.assertEqual(data["vendor"], "Wirecloud")
        self.assertEqual(data["name"], "test operator")
        self.assertEqual(data["type"], "operator")
        self.assertEqual(data["version"], "0.1")
        self.assertEqual(data["email"], "[email protected]")
        self.assertEqual(data["wiring"]["inputs"][0]["label"], "slot")
        self.assertEqual(data["wiring"]["inputs"][0]["type"], "text")
        self.assertEqual(data["wiring"]["inputs"][0]["friendcode"], "test_friend_code")
        self.assertEqual(data["wiring"]["outputs"][0]["label"], "event")
        self.assertEqual(data["wiring"]["outputs"][0]["type"], "text")
        self.assertEqual(data["wiring"]["outputs"][0]["friendcode"], "test_friend_code")
        self.assertEqual(data["preferences"][0]["label"], "Preference label")
        self.assertEqual(data["preferences"][0]["description"], "Preference description")
        self.assertEqual(data["preferences"][0]["default_value"], "value")
        self.assertEqual(len(data["js_files"]), 5)

        self.assertEqual(data["js_files"][0], "/examplecode1.js")
        self.assertEqual(data["js_files"][1], "/examplecode2.js")
        self.assertEqual(data["js_files"][2], "/examplecode3.js")
        self.assertEqual(data["js_files"][3], "/examplecode4.js")
        self.assertEqual(data["js_files"][4], "/examplecode5.js")
开发者ID:katsikas,项目名称:wirecloud,代码行数:28,代码来源:tests.py

示例7: publish

# 需要导入模块: from wirecloud.commons.utils.template import TemplateParser [as 别名]
# 或者: from wirecloud.commons.utils.template.TemplateParser import get_resource_info [as 别名]
    def publish(self, endpoint, wgt_file, user, request=None, template=None):

        if template is None:
            template = TemplateParser(wgt_file.get_template())

        resource_info = template.get_resource_info()

        mimetypes = {
            'widget': 'application/x-widget+mashable-application-component',
            'operator': 'application/x-operator+mashable-application-component',
            'mashup': 'application/x-mashup+mashable-application-component',
        }

        store = endpoint['store']
        adaptor = get_market_adaptor(self._user, self._name)
        user_data = get_market_user_data(user, self._user, self._name)
        storeclient = adaptor.get_store(store)

        store_token_key = store + '/token'
        if store_token_key in user_data:
            token = user_data[store_token_key]
        else:
            token = user_data['idm_token']

        storeclient.upload_resource(
            resource_info['title'],
            resource_info['version'],
            "_".join((resource_info['vendor'], resource_info['name'], resource_info['version'])) + '.wgt',
            resource_info['description'],
            mimetypes[resource_info['type']],
            wgt_file.get_underlying_file(),
            token
        )
开发者ID:caernel,项目名称:wirecloud,代码行数:35,代码来源:plugins.py

示例8: _parse_ac_request

# 需要导入模块: from wirecloud.commons.utils.template import TemplateParser [as 别名]
# 或者: from wirecloud.commons.utils.template.TemplateParser import get_resource_info [as 别名]
def _parse_ac_request(request):

    fileURL = None
    file_contents = None
    content_type = get_content_type(request)[0]

    try:
        data = json.loads(request.body)
    except Exception as e:
        msg = _("malformed json data: %s") % unicode(e)
        return build_error_response(request, 400, msg)

    if 'url' not in data:
        return build_error_response(request, 400, _('Missing widget URL'))

    fileURL = data.get('url')
    id_4CaaSt = data.get('4CaaStID')

    if id_4CaaSt is None:
        return build_error_response(request, 400, _('Missing 4CaaStID'))

    if not isinstance(id_4CaaSt, string_types) or id_4CaaSt.strip() == '':
        return build_error_response(request, 400, _('Invalid 4CaaStID'))

    try:
        downloaded_file = download_http_content(fileURL)
    except:
        return build_error_response(request, 409, _('Mashable application component could not be downloaded'))

    downloaded_file = StringIO(downloaded_file)
    file_contents = WgtFile(downloaded_file)

    # Create a custom version of the resource
    template = TemplateParser(file_contents.get_template())
    template_info = template.get_resource_info()
    template_info['name'] += '@' + id_4CaaSt

    for pref_name, pref_value in six.iteritems(data.get('preferences', {})):
        for widget_pref_index, widget_pref in enumerate(template_info['preferences']):
            if widget_pref['name'] == pref_name:
                template_info['preferences'][widget_pref_index]['readonly'] = True
                template_info['preferences'][widget_pref_index]['value'] = pref_value
                break

    # Write a new Wgt file
    new_file = StringIO()
    zin = zipfile.ZipFile(downloaded_file, 'r')
    zout = zipfile.ZipFile(new_file, 'w')
    zout.writestr('config.xml', write_rdf_description(template_info))
    for item in zin.infolist():
        if item.filename == 'config.xml':
            continue
        zout.writestr(item, zin.read(item.filename))
    zin.close()
    zout.close()

    file_contents = WgtFile(new_file)

    return id_4CaaSt, file_contents, fileURL
开发者ID:GreenIDer-Donati,项目名称:wirecloud,代码行数:61,代码来源:views.py

示例9: create_widget_from_template

# 需要导入模块: from wirecloud.commons.utils.template import TemplateParser [as 别名]
# 或者: from wirecloud.commons.utils.template.TemplateParser import get_resource_info [as 别名]
def create_widget_from_template(template, user, request=None, base=None):

    """Creates a widget from a template"""

    if isinstance(template, TemplateParser):
        parser = template
    else:
        template_content = download_http_content(template, user=user)
        if base is None:
            base = template
        parser = TemplateParser(template_content, base=base)

    if parser.get_resource_type() != 'widget':
        raise Exception()

    widget_info = parser.get_resource_info()
    check_requirements(widget_info)

    widget = Widget()
    widget.resource = CatalogueResource.objects.get(vendor=parser.get_resource_vendor(), short_name=parser.get_resource_name(), version=parser.get_resource_version())
    widget_code = parser.get_absolute_url(widget_info['contents']['src'], base)
    widget.xhtml = XHTML.objects.create(
        uri=widget.uri + "/xhtml",
        url=widget_code,
        content_type=widget_info['contents']['contenttype'],
        use_platform_style=widget_info['contents']['useplatformstyle'],
        cacheable=widget_info['contents']['cacheable']
    )

    widget.width = widget_info['widget_width']
    widget.height = widget_info['widget_height']

    widget.save()

    for preference in widget_info['preferences']:
        vDef = VariableDef.objects.create(
            name=preference['name'],
            type=parser.typeText2typeCode(preference['type']),
            aspect='PREF',
            readonly=preference['readonly'],
            default_value=preference['default'],
            value=preference['value'],
            widget=widget,
            secure=preference['secure']
        )

    for prop in widget_info['properties']:
        vDef = VariableDef.objects.create(
            name=prop['name'],
            type=parser.typeText2typeCode(prop['type']),
            aspect='PROP',
            default_value=prop['default'],
            widget=widget,
            secure=prop['secure'],
        )

    return widget
开发者ID:GreenIDer-Donati,项目名称:wirecloud,代码行数:59,代码来源:utils.py

示例10: add_packaged_resource

# 需要导入模块: from wirecloud.commons.utils.template import TemplateParser [as 别名]
# 或者: from wirecloud.commons.utils.template.TemplateParser import get_resource_info [as 别名]
def add_packaged_resource(file, user, wgt_file=None, template=None, deploy_only=False):

    close_wgt = False
    if wgt_file is None:
        wgt_file = WgtFile(file)
        close_wgt = True

    if template is None:
        template_contents = wgt_file.get_template()
        template = TemplateParser(template_contents)

    resource_info = template.get_resource_info()

    resource_id = (
        resource_info['vendor'],
        resource_info['name'],
        resource_info['version'],
    )
    file_name = '_'.join(resource_id) + '.wgt'

    check_packaged_resource(wgt_file, resource_info)

    local_dir = wgt_deployer.get_base_dir(*resource_id)
    local_wgt = os.path.join(local_dir, file_name)

    if not os.path.exists(local_dir):
        os.makedirs(local_dir)

    overrides = extract_resource_media_from_package(template, wgt_file, local_dir)
    if close_wgt:
        wgt_file.close()

    f = open(local_wgt, "wb")
    file.seek(0)
    f.write(file.read())
    f.close()

    if not deploy_only:
        resource_info.update(overrides)

        resource = CatalogueResource.objects.create(
            short_name=resource_info['name'],
            vendor=resource_info['vendor'],
            version=resource_info['version'],
            type=CatalogueResource.RESOURCE_TYPES.index(resource_info['type']),
            creator=user,
            template_uri=file_name,
            creation_date=now(),
            popularity='0.0',
            json_description=json.dumps(resource_info)
        )

        return resource
开发者ID:Fiware,项目名称:apps.Wirecloud,代码行数:55,代码来源:utils.py

示例11: test_widget_with_unmet_requirements_rdf

# 需要导入模块: from wirecloud.commons.utils.template import TemplateParser [as 别名]
# 或者: from wirecloud.commons.utils.template.TemplateParser import get_resource_info [as 别名]
    def test_widget_with_unmet_requirements_rdf(self):

        template_uri = "http://example.com/path/widget.xml"
        template = self.read_template('template8.rdf')

        parser = TemplateParser(template)
        data = parser.get_resource_info()
        self.assertIn('requirements', data)
        self.assertItemsEqual(data['requirements'], ({'type': 'feature', 'name': 'nonexistent-feature'}, {'type': 'feature', 'name': 'Wirecloud'},))

        self.network._servers['http']['example.com'].add_response('GET', '/path/widget.xml', {'content': template})
        self.assertRaises(Exception, install_resource, template, template_uri, self.user, False)
        self.assertRaises(Widget.DoesNotExist, Widget.objects.get, resource__vendor='Example', resource__short_name='test', resource__version='0.1')
开发者ID:aarranz,项目名称:wirecloud,代码行数:15,代码来源:tests.py

示例12: test_basic_widget_creation_from_rdf

# 需要导入模块: from wirecloud.commons.utils.template import TemplateParser [as 别名]
# 或者: from wirecloud.commons.utils.template.TemplateParser import get_resource_info [as 别名]
    def test_basic_widget_creation_from_rdf(self):
        template_uri = "http://example.com/path/widget.rdf"
        template = self.read_template('template1.rdf')

        parser = TemplateParser(template)
        data = parser.get_resource_info()
        self.assertIn('requirements', data)
        self.assertItemsEqual(data['requirements'], ({'type': 'feature', 'name': 'Wirecloud'},))

        self.network._servers['http']['example.com'].add_response('GET', '/path/widget.rdf', {'content': template})
        self.network._servers['http']['example.com'].add_response('GET', '/path/test.html', {'content': BASIC_HTML_GADGET_CODE})
        resource = install_resource(template, template_uri, self.user, False)

        self.check_basic_widget_info(resource)
开发者ID:aarranz,项目名称:wirecloud,代码行数:16,代码来源:tests.py

示例13: test_basic_widget_creation_from_rdf

# 需要导入模块: from wirecloud.commons.utils.template import TemplateParser [as 别名]
# 或者: from wirecloud.commons.utils.template.TemplateParser import get_resource_info [as 别名]
    def test_basic_widget_creation_from_rdf(self):
        template_uri = "http://example.com/path/widget.rdf"
        template = self.read_template("template1.rdf")

        parser = TemplateParser(template)
        data = parser.get_resource_info()
        self.assertIn("requirements", data)
        self.assertItemsEqual(data["requirements"], ({"type": "feature", "name": "Wirecloud"},))

        self.network._servers["http"]["example.com"].add_response("GET", "/path/widget.rdf", {"content": template})
        self.network._servers["http"]["example.com"].add_response(
            "GET", "/path/test.html", {"content": BASIC_HTML_GADGET_CODE}
        )
        resource = install_resource(template, template_uri, self.user, False)

        self.check_basic_widget_info(resource)
开发者ID:katsikas,项目名称:wirecloud,代码行数:18,代码来源:tests.py

示例14: fix_dev_version

# 需要导入模块: from wirecloud.commons.utils.template import TemplateParser [as 别名]
# 或者: from wirecloud.commons.utils.template.TemplateParser import get_resource_info [as 别名]
def fix_dev_version(wgt_file, user):

    template_contents = wgt_file.get_template()
    template = TemplateParser(template_contents)

    resource_info = template.get_resource_info()

    # Add user name to the version if the component is in development
    if '-dev' in resource_info['version']:

        # User name added this way to prevent users to upload a version
        # *.*-devAnotherUser that would be accepted but might collide with
        # AnotherUser's development version
        resource_info['version'] = re.sub('-dev.*$', '-dev' + user.username, resource_info['version'])
        template_string = write_json_description(resource_info)
        wgt_file.update_config(template_string)
开发者ID:Fiware,项目名称:apps.Wirecloud,代码行数:18,代码来源:utils.py

示例15: add_widget_from_wgt

# 需要导入模块: from wirecloud.commons.utils.template import TemplateParser [as 别名]
# 或者: from wirecloud.commons.utils.template.TemplateParser import get_resource_info [as 别名]
def add_widget_from_wgt(file, user, wgt_file=None, template=None, deploy_only=False):

    close_wgt = False
    if wgt_file is None:
        wgt_file = WgtFile(file)
        close_wgt = True

    if template is None:
        template_contents = wgt_file.get_template()
        template = TemplateParser(template_contents)

    if template.get_resource_type() == 'widget':
        resource_info = template.get_resource_info()
        code_url = resource_info['code_url']
        if not code_url.startswith(('http://', 'https://')):
            code = wgt_file.read(code_url)
            try:
                unicode(code, resource_info['code_charset'])
            except UnicodeDecodeError:
                msg = _('%(file_name)s was not encoded using the specified charset (%(charset)s according to the widget descriptor file).')
                raise InvalidContents(msg % {'file_name': code_url, 'charset': resource_info['code_charset']})

    resource_id = (
        template.get_resource_vendor(),
        template.get_resource_name(),
        template.get_resource_version(),
    )
    file_name = '_'.join(resource_id) + '.wgt'
    local_dir = wgt_deployer.get_base_dir(*resource_id)
    local_wgt = os.path.join(local_dir, file_name)

    if not os.path.exists(local_dir):
        os.makedirs(local_dir)

    overrides = extract_resource_media_from_package(template, wgt_file, local_dir)
    if close_wgt:
        wgt_file.close()

    f = open(local_wgt, "wb")
    file.seek(0)
    f.write(file.read())
    f.close()

    if not deploy_only:
        return add_resource_from_template(file_name, template, user, fromWGT=True, overrides=overrides)
开发者ID:Robinlovelace,项目名称:wirecloud,代码行数:47,代码来源:utils.py


注:本文中的wirecloud.commons.utils.template.TemplateParser.get_resource_info方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。