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


Python TemplateParser.get_resource_type方法代码示例

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


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

示例1: buildWorkspaceFromTemplate

# 需要导入模块: from wirecloud.commons.utils.template import TemplateParser [as 别名]
# 或者: from wirecloud.commons.utils.template.TemplateParser import get_resource_type [as 别名]
def buildWorkspaceFromTemplate(template, user, allow_renaming=False, new_name=None):

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

    if template.get_resource_type() != 'mashup':
        raise TypeError('Unsupported resource type: %s' % template.get_resource_type())

    if new_name is not None:
        name = new_name
    else:
        name = template.get_resource_processed_info(process_urls=False)['title']

    # Workspace creation
    workspace = Workspace(name=name, creator=user)
    if allow_renaming:
        save_alternative(Workspace, 'name', workspace)
    else:
        workspace.save()

    # Adding user reference to workspace in the many to many relationship
    user_workspace = UserWorkspace(user=user, workspace=workspace, active=False)
    user_workspace.save()

    fillWorkspaceUsingTemplate(workspace, template)

    return (workspace, user_workspace)
开发者ID:rachmadagitam,项目名称:apps.Wirecloud,代码行数:29,代码来源:mashupTemplateParser.py

示例2: buildWorkspaceFromTemplate

# 需要导入模块: from wirecloud.commons.utils.template import TemplateParser [as 别名]
# 或者: from wirecloud.commons.utils.template.TemplateParser import get_resource_type [as 别名]
def buildWorkspaceFromTemplate(template, user, allow_renaming=False, new_name=None, new_title=None, searchable=True, public=False):

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

    if template.get_resource_type() != 'mashup':
        raise TypeError('Unsupported resource type: %s' % template.get_resource_type())

    if (new_name is None or new_name.strip() == '') and (new_title is None or new_title.strip() == ''):
        processed_info = template.get_resource_processed_info(process_urls=False)
        new_name = processed_info['name']
        new_title = processed_info['title']
    elif new_title is None or new_title.strip() == '':
        new_title = new_name
    elif new_name is None or new_name.strip() == '':
        new_name = URLify(new_title)

    # Workspace creation
    workspace = Workspace(title=new_title, name=new_name, creator=user, searchable=searchable, public=public)
    if allow_renaming:
        save_alternative(Workspace, 'name', workspace)
    else:
        workspace.save()

    # Adding user reference to workspace in the many to many relationship
    user_workspace = UserWorkspace(user=user, workspace=workspace)
    user_workspace.save()

    fillWorkspaceUsingTemplate(workspace, template)

    return (workspace, user_workspace)
开发者ID:Wirecloud,项目名称:wirecloud,代码行数:33,代码来源:mashupTemplateParser.py

示例3: undeploy_tenant_ac

# 需要导入模块: from wirecloud.commons.utils.template import TemplateParser [as 别名]
# 或者: from wirecloud.commons.utils.template.TemplateParser import get_resource_type [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

示例4: buildWorkspaceFromTemplate

# 需要导入模块: from wirecloud.commons.utils.template import TemplateParser [as 别名]
# 或者: from wirecloud.commons.utils.template.TemplateParser import get_resource_type [as 别名]
def buildWorkspaceFromTemplate(template, user, allow_renaming=False, new_name=None):

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

    if template.get_resource_type() != 'mashup':
        raise Exception()

    if new_name is not None:
        name = new_name
    else:
        name = template.get_resource_name()

    # Workspace creation
    workspace = Workspace(name=name, creator=user)
    if allow_renaming:
        save_alternative(Workspace, 'name', workspace)
    else:
        workspace.save()

    # Adding user reference to workspace in the many to many relationship
    user_workspace = UserWorkspace(user=user, workspace=workspace, active=False)
    user_workspace.save()

    fillWorkspaceUsingTemplate(workspace, template)

    return (workspace, user_workspace)
开发者ID:aarranz,项目名称:wirecloud,代码行数:29,代码来源:mashupTemplateParser.py

示例5: create_widget_from_template

# 需要导入模块: from wirecloud.commons.utils.template import TemplateParser [as 别名]
# 或者: from wirecloud.commons.utils.template.TemplateParser import get_resource_type [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

示例6: add_widget_from_wgt

# 需要导入模块: from wirecloud.commons.utils.template import TemplateParser [as 别名]
# 或者: from wirecloud.commons.utils.template.TemplateParser import get_resource_type [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

示例7: stop_tenant_ac

# 需要导入模块: from wirecloud.commons.utils.template import TemplateParser [as 别名]
# 或者: from wirecloud.commons.utils.template.TemplateParser import get_resource_type [as 别名]
def stop_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

    # Remove assigned workspace if the resource is a mashup
    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()

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

示例8: fillWorkspaceUsingTemplate

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

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

    if template.get_resource_type() != 'mashup':
        raise Exception()

    user = workspace.creator

    user_workspace = UserWorkspace.objects.get(user=workspace.creator, workspace=workspace)
    context_values = get_context_values(user_workspace)
    processor = TemplateValueProcessor({'user': user, 'context': context_values})

    workspace_info = template.get_resource_info()

    new_values = {}
    iwidget_id_mapping = {}
    for preference_name in workspace_info['preferences']:
        new_values[preference_name] = {
            'inherit': False,
            'value': workspace_info['preferences'][preference_name],
        }

    if len(new_values) > 0:
        update_workspace_preferences(workspace, new_values)

    new_forced_values = {
        'extra_prefs': {},
        'iwidget': {},
    }
    for param_name in workspace_info['params']:
        param = workspace_info['params'][param_name]
        new_forced_values['extra_prefs'][param_name] = {
            'inheritable': False,
            'label': param.get('label'),
            'type': param.get('type'),
        }

    for tab_entry in workspace_info['tabs']:
        tab = createTab(tab_entry.get('name'), workspace, allow_renaming=True)

        new_values = {}
        for preference_name in tab_entry['preferences']:
            new_values[preference_name] = {
                'inherit': False,
                'value': tab_entry['preferences'][preference_name],
            }

        if len(new_values) > 0:
            update_tab_preferences(tab, new_values)

        for resource in tab_entry['resources']:

            position = resource['position']
            rendering = resource['rendering']

            initial_variable_values = {}
            iwidget_forced_values = {}
            for prop_name in resource['properties']:
                prop = resource['properties'][prop_name]
                read_only = prop.get('readonly')
                if read_only:
                    iwidget_forced_values[prop_name] = {'value': prop.get('value')}
                else:
                    initial_variable_values[prop_name] = processor.process(prop.get('value'))

            for pref_name in resource['preferences']:
                pref = resource['preferences'][pref_name]
                read_only = pref.get('readonly')
                if read_only:
                    iwidget_forced_values[pref_name] = {'value': pref.get('value'), 'hidden': pref.get('hidden', False)}
                else:
                    initial_variable_values[pref_name] = processor.process(pref.get('value'))

            widget = get_or_add_widget_from_catalogue(resource.get('vendor'), resource.get('name'), resource.get('version'), user, None)

            iwidget_data = {
                "left": int(position.get('x')),
                "top": int(position.get('y')),
                "icon_left": -1,
                "icon_top": -1,
                "zIndex": int(position.get('z')),
                "width": int(rendering.get('width')),
                "height": int(rendering.get('height')),
                "name": resource.get('title'),
                "layout": int(rendering.get('layout')),
                "widget": widget.uri,
            }

            iwidget = SaveIWidget(iwidget_data, user, tab, initial_variable_values)
            if resource.get('readonly'):
                iwidget.readOnly = True
                iwidget.save()

            new_forced_values['iwidget'][str(iwidget.id)] = iwidget_forced_values
            iwidget_id_mapping[resource.get('id')] = iwidget

    if workspace.forcedValues is not None and workspace.forcedValues != '':
        forced_values = json.loads(workspace.forcedValues)
#.........这里部分代码省略.........
开发者ID:fispace,项目名称:wirecloud,代码行数:103,代码来源:mashupTemplateParser.py

示例9: fillWorkspaceUsingTemplate

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

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

    if template.get_resource_type() != 'mashup':
        raise TypeError('Unsupported resource type: %s' % template.get_resource_type())

    user = workspace.creator

    context_values = get_context_values(workspace, workspace.creator)
    processor = TemplateValueProcessor({'user': user, 'context': context_values})

    mashup_description = template.get_resource_info()

    new_values = {}
    id_mapping = {
        'operator': {},
        'widget': {},
    }
    for preference_name in mashup_description['preferences']:
        new_values[preference_name] = {
            'inherit': False,
            'value': mashup_description['preferences'][preference_name],
        }

    if len(new_values) > 0:
        update_workspace_preferences(workspace, new_values)

    new_forced_values = {
        'extra_prefs': [],
        'iwidget': {},
        'ioperator': {},
    }
    for param in mashup_description['params']:
        new_forced_values['extra_prefs'].append({
            'name': param['name'],
            'inheritable': False,
            'label': param.get('label'),
            'type': param.get('type'),
        })

    for tab_entry in mashup_description['tabs']:
        tab = createTab(tab_entry.get('name'), workspace, allow_renaming=True)

        new_values = {}
        for preference_name in tab_entry['preferences']:
            new_values[preference_name] = {
                'inherit': False,
                'value': tab_entry['preferences'][preference_name],
            }

        if len(new_values) > 0:
            update_tab_preferences(tab, new_values)

        for resource in tab_entry['resources']:

            position = resource['position']
            rendering = resource['rendering']

            widget = get_or_add_widget_from_catalogue(resource.get('vendor'), resource.get('name'), resource.get('version'), user)

            iwidget_data = {
                "widget": widget.uri,
                "title": resource.get('title'),
                "left": int(position.get('x')),
                "top": int(position.get('y')),
                "icon_left": 0,
                "icon_top": 0,
                "zIndex": int(position.get('z')),
                "width": int(rendering.get('width')),
                "height": int(rendering.get('height')),
                "layout": int(rendering.get('layout')),
                "minimized": rendering['minimized'],
                "fulldragboard": rendering['fulldragboard'],
            }

            iwidget = SaveIWidget(iwidget_data, user, tab, commit=False)
            if resource.get('readonly'):
                iwidget.readOnly = True

            initial_variable_values = {}
            iwidget_forced_values = {}
            iwidget_info = widget.resource.get_processed_info(process_variables=True)
            for prop_name in resource['properties']:
                prop = resource['properties'][prop_name]
                read_only = prop.get('readonly')
                if prop.get('value', None) is not None:
                    value = prop['value']
                else:
                    value = iwidget_info['variables']['properties'][prop_name]['default']
                if read_only:
                    iwidget_forced_values[prop_name] = {'value': value}
                else:
                    initial_variable_values[prop_name] = processor.process(value)

            for pref_name in resource['preferences']:
                pref = resource['preferences'][pref_name]
                read_only = pref.get('readonly')
                if pref.get('value', None) is not None:
#.........这里部分代码省略.........
开发者ID:rachmadagitam,项目名称:apps.Wirecloud,代码行数:103,代码来源:mashupTemplateParser.py

示例10: fillWorkspaceUsingTemplate

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

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

    if template.get_resource_type() != "mashup":
        raise TypeError("Unsupported resource type: %s" % template.get_resource_type())

    user = workspace.creator

    context_values = get_context_values(workspace, workspace.creator)
    processor = TemplateValueProcessor({"user": user, "context": context_values})

    mashup_description = template.get_resource_info()

    new_values = {}
    id_mapping = {"operator": {}, "widget": {}}
    for preference_name in mashup_description["preferences"]:
        new_values[preference_name] = {"inherit": False, "value": mashup_description["preferences"][preference_name]}

    if len(new_values) > 0:
        update_workspace_preferences(workspace, new_values)

    new_forced_values = {"extra_prefs": [], "iwidget": {}, "ioperator": {}}
    for param in mashup_description["params"]:
        new_forced_values["extra_prefs"].append(
            {"name": param["name"], "inheritable": False, "label": param.get("label"), "type": param.get("type")}
        )

    for tab_entry in mashup_description["tabs"]:
        tab = createTab(tab_entry.get("name"), workspace, allow_renaming=True)

        new_values = {}
        for preference_name in tab_entry["preferences"]:
            new_values[preference_name] = {"inherit": False, "value": tab_entry["preferences"][preference_name]}

        if len(new_values) > 0:
            update_tab_preferences(tab, new_values)

        for resource in tab_entry["resources"]:

            position = resource["position"]
            rendering = resource["rendering"]

            widget = get_or_add_widget_from_catalogue(
                resource.get("vendor"), resource.get("name"), resource.get("version"), user
            )

            iwidget_data = {
                "left": int(position.get("x")),
                "top": int(position.get("y")),
                "icon_left": 0,
                "icon_top": 0,
                "zIndex": int(position.get("z")),
                "width": int(rendering.get("width")),
                "height": int(rendering.get("height")),
                "title": resource.get("title"),
                "layout": int(rendering.get("layout")),
                "widget": widget.uri,
            }

            iwidget = SaveIWidget(iwidget_data, user, tab, commit=False)
            if resource.get("readonly"):
                iwidget.readOnly = True

            initial_variable_values = {}
            iwidget_forced_values = {}
            iwidget_info = widget.resource.get_processed_info(process_variables=True)
            for prop_name in resource["properties"]:
                prop = resource["properties"][prop_name]
                read_only = prop.get("readonly")
                if prop.get("value", None) is not None:
                    value = prop["value"]
                else:
                    value = iwidget_info["variables"]["properties"][prop_name]["default"]
                if read_only:
                    iwidget_forced_values[prop_name] = {"value": value}
                else:
                    initial_variable_values[prop_name] = processor.process(value)

            for pref_name in resource["preferences"]:
                pref = resource["preferences"][pref_name]
                read_only = pref.get("readonly")
                if pref.get("value", None) is not None:
                    value = pref["value"]
                else:
                    value = iwidget_info["variables"]["preferences"][pref_name]["default"]
                if read_only:
                    iwidget_forced_values[pref_name] = {"value": value, "hidden": pref.get("hidden", False)}
                else:
                    initial_variable_values[pref_name] = processor.process(value)

            set_initial_values(iwidget, initial_variable_values, iwidget_info)
            iwidget.save()

            if len(iwidget_forced_values) > 0:
                new_forced_values["iwidget"][six.text_type(iwidget.id)] = iwidget_forced_values

            id_mapping["widget"][resource.get("id")] = {
                "id": iwidget.id,
#.........这里部分代码省略.........
开发者ID:ciniguez,项目名称:FIREWA,代码行数:103,代码来源:mashupTemplateParser.py

示例11: create_widget_from_template

# 需要导入模块: from wirecloud.commons.utils.template import TemplateParser [as 别名]
# 或者: from wirecloud.commons.utils.template.TemplateParser import get_resource_type [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 = downloader.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['code_url'], base)
    widget.xhtml = XHTML.objects.create(
        uri=widget.uri + "/xhtml",
        url=widget_code,
        content_type=widget_info['code_content_type'],
        use_platform_style=widget_info['code_uses_platform_style'],
        cacheable=widget_info['code_cacheable']
    )

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

    widget.save()

    variable_definitions = {}
    user_options = {}

    order = 0
    for preference in widget_info['preferences']:
        vDef = VariableDef.objects.create(
            name=preference['name'],
            order=order,
            description=preference['description'],
            type=parser.typeText2typeCode(preference['type']),
            aspect='PREF',
            friend_code=None,
            readonly=preference['readonly'],
            label=preference['label'],
            default_value=preference['default_value'],
            value=preference['value'],
            widget=widget,
            secure=preference['secure']
        )
        variable_definitions[vDef.name] = vDef
        user_options[vDef.name] = {}
        for option in preference.get('options', ()):
            upo = UserPrefOption.objects.create(
                value=option['value'],
                name=option['label'],
                variableDef=vDef
            )
            user_options[vDef.name][upo.name] = upo

        order += 1

    order = 0
    for prop in widget_info['properties']:
        vDef = VariableDef.objects.create(
            name=prop['name'],
            order=order,
            description=prop['description'],
            type=parser.typeText2typeCode(prop['type']),
            aspect='PROP',
            friend_code=None,
            label=prop['label'],
            default_value=prop['default_value'],
            widget=widget,
            secure=prop['secure'],
        )
        variable_definitions[vDef.name] = vDef
        order += 1

    order = 0
    for input_endpoint in widget_info['wiring']['inputs']:
        vDef = VariableDef.objects.create(
            name=input_endpoint['name'],
            order=order,
            description=input_endpoint['description'],
            type=parser.typeText2typeCode(input_endpoint['type']),
            aspect='SLOT',
            friend_code=input_endpoint['friendcode'],
            label=input_endpoint['label'],
            action_label=input_endpoint['actionlabel'],
            widget=widget,
        )
        variable_definitions[vDef.name] = vDef
        order += 1

    order = 0
    for output_endpoint in widget_info['wiring']['outputs']:
#.........这里部分代码省略.........
开发者ID:fispace,项目名称:wirecloud,代码行数:103,代码来源:utils.py

示例12: fillWorkspaceUsingTemplate

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

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

    if template.get_resource_type() != "mashup":
        raise Exception()

    user = workspace.creator

    context_values = get_context_values(workspace, workspace.creator)
    processor = TemplateValueProcessor({"user": user, "context": context_values})

    workspace_info = template.get_resource_info()

    new_values = {}
    iwidget_id_mapping = {}
    for preference_name in workspace_info["preferences"]:
        new_values[preference_name] = {"inherit": False, "value": workspace_info["preferences"][preference_name]}

    if len(new_values) > 0:
        update_workspace_preferences(workspace, new_values)

    new_forced_values = {"extra_prefs": [], "iwidget": {}, "ioperator": {}}
    for param in workspace_info["params"]:
        new_forced_values["extra_prefs"].append(
            {"name": param["name"], "inheritable": False, "label": param.get("label"), "type": param.get("type")}
        )

    for tab_entry in workspace_info["tabs"]:
        tab = createTab(tab_entry.get("name"), workspace, allow_renaming=True)

        new_values = {}
        for preference_name in tab_entry["preferences"]:
            new_values[preference_name] = {"inherit": False, "value": tab_entry["preferences"][preference_name]}

        if len(new_values) > 0:
            update_tab_preferences(tab, new_values)

        for resource in tab_entry["resources"]:

            position = resource["position"]
            rendering = resource["rendering"]

            initial_variable_values = {}
            iwidget_forced_values = {}
            for prop_name in resource["properties"]:
                prop = resource["properties"][prop_name]
                read_only = prop.get("readonly")
                if read_only:
                    iwidget_forced_values[prop_name] = {"value": prop.get("value")}
                else:
                    initial_variable_values[prop_name] = processor.process(prop.get("value"))

            for pref_name in resource["preferences"]:
                pref = resource["preferences"][pref_name]
                read_only = pref.get("readonly")
                if read_only:
                    iwidget_forced_values[pref_name] = {"value": pref.get("value"), "hidden": pref.get("hidden", False)}
                else:
                    initial_variable_values[pref_name] = processor.process(pref.get("value"))

            widget = get_or_add_widget_from_catalogue(
                resource.get("vendor"), resource.get("name"), resource.get("version"), user, None
            )

            iwidget_data = {
                "left": int(position.get("x")),
                "top": int(position.get("y")),
                "icon_left": -1,
                "icon_top": -1,
                "zIndex": int(position.get("z")),
                "width": int(rendering.get("width")),
                "height": int(rendering.get("height")),
                "name": resource.get("title"),
                "layout": int(rendering.get("layout")),
                "widget": widget.uri,
            }

            iwidget = SaveIWidget(iwidget_data, user, tab, initial_variable_values)
            if resource.get("readonly"):
                iwidget.readOnly = True
                iwidget.save()

            if len(iwidget_forced_values) > 0:
                new_forced_values["iwidget"][str(iwidget.id)] = iwidget_forced_values

            iwidget_id_mapping[resource.get("id")] = iwidget

    # wiring
    if workspace.wiringStatus != "":
        workspace_wiring_status = json.loads(workspace.wiringStatus)
    else:
        workspace_wiring_status = {"operators": {}, "connections": [], "views": []}

    if "views" not in workspace_wiring_status:
        workspace_wiring_status["views"] = []

    max_id = 0
    ioperator_id_mapping = {}
#.........这里部分代码省略.........
开发者ID:GreenIDer-Donati,项目名称:wirecloud,代码行数:103,代码来源:mashupTemplateParser.py


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