Example #1
0
def _ref(context, template_name, parameter_name=None, id_only=None):
    service = context['?service']
    data = None
    if not parameter_name:
        parameter_name = template_name
    # add special symbol to avoid collisions with regular parameters
    # and prevent it from overwriting '?service' context variable
    parameter_name = '#' + parameter_name
    if parameter_name in service.parameters:
        data = service.parameters[parameter_name]
    elif template_name in service.templates:
        data = helpers.evaluate(service.templates[template_name], context)
        service.parameters[parameter_name] = data
    if not isinstance(data, dict):
        return None
    if not isinstance(data.get('?', {}).get('id'), helpers.ObjectID):
        data.setdefault('?', {})['id'] = helpers.ObjectID()
        if id_only is None:
            id_only = False
    elif id_only is None:
        id_only = True

    if id_only:
        return data['?']['id']
    else:
        return data
def _ref(context, template_name, parameter_name=None, id_only=None):
    service = context['?service']
    data = None
    if not parameter_name:
        parameter_name = template_name
    # add special symbol to avoid collisions with regular parameters
    # and prevent it from overwriting '?service' context variable
    parameter_name = '#' + parameter_name
    if parameter_name in service.parameters:
        data = service.parameters[parameter_name]
    elif template_name in service.templates:
        data = helpers.evaluate(service.templates[template_name], context)
        service.parameters[parameter_name] = data
    if not isinstance(data, dict):
        return None
    if not isinstance(data.get('?', {}).get('id'), helpers.ObjectID):
        data.setdefault('?', {})['id'] = helpers.ObjectID()
        if id_only is None:
            id_only = False
    elif id_only is None:
        id_only = True

    if id_only:
        return data['?']['id']
    else:
        return data
Example #3
0
 def extract_attributes(self):
     self.context.set_data(self.cleaned_data)
     for name, template in self.templates.iteritems():
         self.context.set_data(template, name)
     if semantic_version.Version.coerce(self.spec_version) \
             >= semantic_version.Version.coerce('2.2'):
         management_form = catalog_forms.WorkflowManagementForm.name
         name = self.context.get_data()[management_form]['application_name']
         self.application['?']['name'] = name
     attributes = helpers.evaluate(self.application, self.context)
     return attributes
Example #4
0
 def extract_attributes(self):
     self.context['$'] = self.cleaned_data
     for name, template in self.templates.iteritems():
         self.context[name] = template
     if semantic_version.Version.coerce(self.spec_version) \
             >= semantic_version.Version.coerce('2.2'):
         management_form = catalog_forms.WF_MANAGEMENT_NAME
         name = self.context['$'][management_form]['application_name']
         self.application['?']['name'] = name
     attributes = helpers.evaluate(self.application, self.context)
     return attributes
Example #5
0
 def extract_attributes(self):
     self.context['$'] = self.cleaned_data
     for name, template in six.iteritems(self.templates):
         self.context[name] = template
     if semantic_version.Version.coerce(self.spec_version) \
             >= semantic_version.Version.coerce('2.2'):
         management_form = catalog_forms.WF_MANAGEMENT_NAME
         name = self.context['$'][management_form]['application_name']
         self.application['?']['name'] = name
     attributes = helpers.evaluate(self.application, self.context)
     return attributes
Example #6
0
    def __init__(self,
                 cleaned_data,
                 version,
                 fqn,
                 forms=None,
                 templates=None,
                 application=None,
                 parameters=None,
                 **kwargs):
        self.cleaned_data = cleaned_data
        self.templates = templates or {}
        self.spec_version = str(version)
        if forms is None:
            forms = []

        if application is None:
            raise ValueError('Application section is required')
        else:
            self.application = application

        self.context = legacy.create_context()
        self.context['?service'] = self
        yaql_functions.register(self.context)

        params = parameters or {}
        self.parameters = {}
        for k, v in six.iteritems(params):
            if not k or not k[0].isalpha():
                continue
            v = helpers.evaluate(v, self.context)
            self.parameters[k] = v
            self.context[k] = v

        self.forms = []
        for key, value in six.iteritems(kwargs):
            setattr(self, key, value)

        for form in forms:
            (name, field_specs, validators,
             region) = self.extract_form_data(form)
            # NOTE(kzaitsev) should be str (not unicode) under python2
            # however it also works as str under python3
            name = helpers.to_str(name)
            self._add_form(name, field_specs, validators, region)

        # Add ManageWorkflowForm
        workflow_form = catalog_forms.WorkflowManagementForm()
        if semantic_version.Version.coerce(self.spec_version) >= \
                semantic_version.Version.coerce('2.2'):
            app_name_field = workflow_form.name_field(fqn)
            workflow_form.field_specs.insert(0, app_name_field)

        self._add_form(workflow_form.name, workflow_form.field_specs,
                       workflow_form.validators)
Example #7
0
    def __init__(self, cleaned_data, version, fqn, forms=None, templates=None,
                 application=None, parameters=None, **kwargs):
        self.cleaned_data = cleaned_data
        self.templates = templates or {}
        self.spec_version = str(version)
        if forms is None:
            forms = []

        if application is None:
            raise ValueError('Application section is required')
        else:
            self.application = application

        self.context = legacy.create_context()
        self.context['?service'] = self
        yaql_functions.register(self.context)

        params = parameters or {}
        self.parameters = {}
        for k, v in six.iteritems(params):
            if not k or not k[0].isalpha():
                continue
            v = helpers.evaluate(v, self.context)
            self.parameters[k] = v
            self.context[k] = v

        self.forms = []
        for key, value in six.iteritems(kwargs):
            setattr(self, key, value)

        for form in forms:
            (name, field_specs, validators,
             region) = self.extract_form_data(form)
            # NOTE(kzaitsev) should be str (not unicode) under python2
            # however it also works as str under python3
            name = helpers.to_str(name)
            self._add_form(name, field_specs, validators, region)

        # Add ManageWorkflowForm
        workflow_form = catalog_forms.WorkflowManagementForm()
        if semantic_version.Version.coerce(self.spec_version) >= \
                semantic_version.Version.coerce('2.2'):
            app_name_field = workflow_form.name_field(fqn)
            workflow_form.field_specs.insert(0, app_name_field)

        self._add_form(workflow_form.name,
                       workflow_form.field_specs,
                       workflow_form.validators)
Example #8
0
def _repeat(context, template, times):
    for i in range(times):
        context['index'] = i + 1
        yield helpers.evaluate(template, context)
def _repeat(context, template, times):
    for i in range(times):
        context['index'] = i + 1
        yield helpers.evaluate(template, context)
Example #10
0
    def extract_attributes(self):
        self.context.set_data(self.cleaned_data)
        for name, template in self.templates.iteritems():
            self.context.set_data(template, name)

        return helpers.evaluate(self.application, self.context)
Example #11
0
def _repeat(context, template, times):
    for i in xrange(times):
        context.set_data(i + 1, '$index')
        yield helpers.evaluate(template(), context)
Example #12
0
    def extract_attributes(self):
        self.context.set_data(self.cleaned_data)
        for name, template in self.templates.iteritems():
            self.context.set_data(template, name)

        return helpers.evaluate(self.application, self.context)