Exemplo n.º 1
0
        def explain_method(**kwargs):
            function_name = kwargs['_default_function_name']

            _is_callback = kparams.get('_is_callback', False)
            _is_async = kparams.get('_is_async', False)
            _mtom = kparams.get('_mtom', False)
            _in_header = kparams.get('_in_header', None)
            _out_header = kparams.get('_out_header', None)
            _port_type = kparams.get('_soap_port_type', None)
            _no_ctx = kparams.get('_no_ctx', False)
            _no_self = kparams.get('_no_self', True)
            _udp = kparams.get('_udp', None)
            _aux = kparams.get('_aux', None)
            _pattern = kparams.get("_pattern", None)
            _patterns = kparams.get("_patterns", [])
            _args = kparams.get("_args", None)
            _translations = kparams.get("_translations", None)
            _when = kparams.get("_when", None)
            _service_class = kparams.get("_service_class", None)
            _href = kparams.get("_href", None)

            _substitute_self_reference(params, kparams, kwargs, _no_self)

            _faults = None
            if ('_faults' in kparams) and ('_throws' in kparams):
                raise ValueError(
                    "only one of '_throws ' or '_faults' arguments"
                    "should be given, as they're synonyms.")

            elif '_faults' in kparams:
                _faults = kparams.get('_faults', None)

            elif '_throws' in kparams:
                _faults = kparams.get('_throws', None)

            _in_message_name_override = not ('_in_message_name' in kparams)
            _in_message_name = kparams.get('_in_message_name', function_name)

            _operation_name = kparams.get('_operation_name', function_name)

            if _operation_name != function_name and _in_message_name != function_name:
                raise ValueError(
                    "only one of '_operation_name' and '_in_message_name' "
                    "arguments should be given")
            if _in_message_name == function_name:
                _in_message_name = add_request_suffix(_operation_name)

            _in_variable_names = kparams.get('_in_variable_names', {})

            in_message = _produce_input_message(f, params, kparams,
                                                _in_message_name,
                                                _in_variable_names, _no_ctx,
                                                _no_self, _args)

            _out_message_name_override = not ('_out_message_name' in kparams)
            out_message = _produce_output_message(function_name, kparams)

            doc = getattr(f, '__doc__')

            if _pattern is not None and _patterns != []:
                raise ValueError("only one of '_pattern' and '_patterns' "
                                 "arguments should be given")

            if _pattern is not None:
                _patterns = [_pattern]

            body_style = BODY_STYLE_WRAPPED
            body_style_str = _validate_body_style(kparams)
            if body_style_str.endswith('bare'):
                if body_style_str == 'out_bare':
                    body_style = BODY_STYLE_OUT_BARE
                else:
                    body_style = BODY_STYLE_BARE

                t = in_message
                from spyne.model import ComplexModelBase

                if issubclass(t, ComplexModelBase) and len(t._type_info) == 0:
                    body_style = BODY_STYLE_EMPTY

            retval = MethodDescriptor(
                f,
                in_message,
                out_message,
                doc,
                _is_callback,
                _is_async,
                _mtom,
                _in_header,
                _out_header,
                _faults,
                port_type=_port_type,
                no_ctx=_no_ctx,
                udp=_udp,
                class_key=function_name,
                aux=_aux,
                patterns=_patterns,
                body_style=body_style,
                args=_args,
                operation_name=_operation_name,
                no_self=_no_self,
                translations=_translations,
                when=_when,
                in_message_name_override=_in_message_name_override,
                out_message_name_override=_out_message_name_override,
                service_class=_service_class,
                href=_href,
            )

            if _patterns is not None and _no_self:
                for p in _patterns:
                    p.hello(retval)

            return retval
Exemplo n.º 2
0
        def explain_method(**kwargs):
            # params and kparams are passed by the user to the @rpc family
            # of decorators.

            # kwargs is passed by spyne while sanitizing methods. it mainly
            # contains information about the method context like the service
            # class that contains the method at hand.

            function_name = kwargs['_default_function_name']
            _service_class = kwargs.pop("_service_class", None)
            _self_ref_replacement = None

            # this block is passed straight to the descriptor
            _is_callback = kparams.pop('_is_callback', False)
            _is_async = kparams.pop('_is_async', False)
            _mtom = kparams.pop('_mtom', False)
            _in_header = kparams.pop('_in_header', None)
            _out_header = kparams.pop('_out_header', None)
            _port_type = kparams.pop('_port_type', None)
            _no_ctx = kparams.pop('_no_ctx', False)
            _aux = kparams.pop('_aux', None)
            _pattern = kparams.pop("_pattern", None)
            _patterns = kparams.pop("_patterns", [])
            _args = kparams.pop("_args", None)
            _translations = kparams.pop("_translations", None)
            _when = kparams.pop("_when", None)
            _static_when = kparams.pop("_static_when", None)
            _href = kparams.pop("_href", None)
            _logged = kparams.pop("_logged", True)
            _internal_key_suffix = kparams.pop('_internal_key_suffix', '')
            if '_service' in kparams and '_service_class' in kparams:
                raise LogicError("Please pass only one of '_service' and "
                                                             "'_service_class'")
            if '_service' in kparams:
                _service_class = kparams.pop("_service")
            if '_service_class' in kparams:
                _service_class = kparams.pop("_service_class")

            _no_self = kparams.pop('_no_self', True)
            _event_managers = _get_event_managers(kparams)

            # mrpc-specific
            _self_ref_replacement = kwargs.pop('_self_ref_replacement', None)
            _default_on_null = kparams.pop('_default_on_null', False)
            _substitute_self_reference(params, kparams, _self_ref_replacement,
                                                                       _no_self)

            _faults = None
            if ('_faults' in kparams) and ('_throws' in kparams):
                raise ValueError("only one of '_throws ' or '_faults' arguments"
                                 "must be given -- they're synonyms.")

            elif '_faults' in kparams:
                _faults = kparams.pop('_faults')

            elif '_throws' in kparams:
                _faults = kparams.pop('_throws')

            _is_in_message_name_overridden = not ('_in_message_name' in kparams)
            _in_message_name = kparams.pop('_in_message_name', function_name)

            if _no_self is False and _is_in_message_name_overridden:
                _in_message_name = '%s.%s' % \
                       (_self_ref_replacement.get_type_name(), _in_message_name)

            _operation_name = kparams.pop('_operation_name', function_name)

            if _operation_name != function_name and \
                                              _in_message_name != function_name:
                raise ValueError(
                    "only one of '_operation_name' and '_in_message_name' "
                    "arguments should be given")

            if _in_message_name == function_name:
                _in_message_name = add_request_suffix(_operation_name)

            if '_in_arg_names' in kparams and '_in_variable_names' in kparams:
                raise LogicError("Use either '_in_arg_names' or "
                                              "'_in_variable_names', not both.")
            elif '_in_arg_names' in kparams:
                _in_arg_names = kparams.pop('_in_arg_names')

            elif '_in_variable_names' in kparams:
                _in_arg_names = kparams.pop('_in_variable_names')

            else:
                _in_arg_names = {}

            if '_udd' in kparams and '_udp' in kparams:
                raise LogicError("Use either '_udd' or '_udp', not both.")
            elif '_udd' in kparams:
                _udd = kparams.pop('_udd')

            elif '_udp' in kparams:
                _udd = kparams.pop('_udp')

            else:
                _udd = {}
            
            _wsdl_part_name = kparams.get('_wsdl_part_name', None)

            body_style = BODY_STYLE_WRAPPED
            body_style_str = _validate_body_style(kparams)
            if body_style_str.endswith('bare'):
                if body_style_str == 'out_bare':
                    body_style = BODY_STYLE_OUT_BARE
                else:
                    body_style = BODY_STYLE_BARE

            in_message = _produce_input_message(f, params,
                    _in_message_name, _in_arg_names, _no_ctx, _no_self,
                                   _args, body_style_str, _self_ref_replacement,
                                   _wsdl_part_name)

            out_message = _produce_output_message(function_name,
                       body_style_str, _self_ref_replacement, _no_self, kparams)

            if _logged != True:
                in_message.Attributes.logged = _logged
                out_message.Attributes.logged = _logged

            doc = getattr(f, '__doc__')

            if _pattern is not None and _patterns != []:
                raise ValueError("only one of '_pattern' and '_patterns' "
                                 "arguments should be given")

            if _pattern is not None:
                _patterns = [_pattern]

            if body_style_str.endswith('bare'):
                from spyne.model import ComplexModelBase

                ti = in_message
                to = out_message
                if issubclass(ti, ComplexModelBase) and len(ti._type_info) == 0:
                    if not issubclass(to, ComplexModelBase) or \
                                                         len(to._type_info) > 0:
                        body_style = BODY_STYLE_EMPTY_OUT_BARE
                    else:
                        body_style = BODY_STYLE_EMPTY

            assert _in_header is None or isinstance(_in_header, tuple)
            retval = MethodDescriptor(f,
                in_message, out_message, doc,
                is_callback=_is_callback, is_async=_is_async, mtom=_mtom,
                in_header=_in_header, out_header=_out_header, faults=_faults,
                parent_class=_self_ref_replacement,
                port_type=_port_type, no_ctx=_no_ctx, udd=_udd,
                class_key=function_name, aux=_aux, patterns=_patterns,
                body_style=body_style, args=_args,
                operation_name=_operation_name, no_self=_no_self,
                translations=_translations,
                when=_when, static_when=_static_when,
                service_class=_service_class, href=_href,
                internal_key_suffix=_internal_key_suffix,
                default_on_null=_default_on_null,
                event_managers=_event_managers,
                logged=_logged,
            )

            if _patterns is not None and _no_self:
                for p in _patterns:
                    p.hello(retval)

            if len(kparams) > 0:
                raise ValueError("Unknown kwarg(s) %r passed.", kparams)
            return retval
Exemplo n.º 3
0
        def explain_method(*args, **kwargs):
            retval = None
            function_name = kwargs['_default_function_name']

            _is_callback = kparams.get('_is_callback', False)
            _is_async = kparams.get('_is_async', False)
            _mtom = kparams.get('_mtom', False)
            _in_header = kparams.get('_in_header', None)
            _out_header = kparams.get('_out_header', None)
            _port_type = kparams.get('_soap_port_type', None)
            _no_ctx = kparams.get('_no_ctx', False)
            _udp = kparams.get('_udp', None)
            _aux = kparams.get('_aux', None)
            _pattern = kparams.get("_pattern",None)
            _patterns = kparams.get("_patterns",[])
            _args = kparams.get("_args",None)

            _faults = None
            if ('_faults' in kparams) and ('_throws' in kparams):
                raise ValueError("only one of '_throws ' or '_faults' arguments"
                                 "should be given, as they're synonyms.")
            elif '_faults' in kparams:
                _faults = kparams.get('_faults', None)
            elif '_throws' in kparams:
                _faults = kparams.get('_throws', None)

            _in_message_name = kparams.get('_in_message_name', function_name)
            _operation_name = kparams.get('_operation_name', function_name)

            if _operation_name != function_name and _in_message_name != function_name:
                raise ValueError("only one of '_operation_name' and '_in_message_name' "
                                                    "arguments should be given")
            if _in_message_name == function_name:
                _in_message_name = add_request_suffix(_operation_name)


            _in_variable_names = kparams.get('_in_variable_names', {})

            in_message = _produce_input_message(f, params, kparams,
                           _in_message_name, _in_variable_names, _no_ctx, _args)

            out_message = _produce_output_message(function_name, kparams)

            doc = getattr(f, '__doc__')

            if _pattern is not None and _patterns != []:
                raise ValueError("only one of '_pattern' and '__patterns' "
                                                    "arguments should be given")

            if _pattern is not None:
                _patterns = [_pattern]

            body_style = BODY_STYLE_WRAPPED
            if _validate_body_style(kparams) == 'bare':
                body_style = BODY_STYLE_BARE
                t = in_message
                from spyne.model import ComplexModelBase
                if issubclass(t, ComplexModelBase) and len(t._type_info) == 0:
                    body_style = BODY_STYLE_EMPTY

            retval = MethodDescriptor(f,
                    in_message, out_message, doc, _is_callback, _is_async,
                    _mtom, _in_header, _out_header, _faults,
                    port_type=_port_type, no_ctx=_no_ctx, udp=_udp,
                    class_key=function_name, aux=_aux, patterns=_patterns,
                    body_style=body_style, args=_args,
                    operation_name=_operation_name)

            return retval
Exemplo n.º 4
0
        def explain_method(**kwargs):
            function_name = kwargs['_default_function_name']

            # this block is passed straight to the descriptor
            _is_callback = kparams.pop('_is_callback', False)
            _is_async = kparams.pop('_is_async', False)
            _mtom = kparams.pop('_mtom', False)
            _in_header = kparams.pop('_in_header', None)
            _out_header = kparams.pop('_out_header', None)
            _port_type = kparams.pop('_soap_port_type', None)
            _no_ctx = kparams.pop('_no_ctx', False)
            _no_self = kparams.pop('_no_self', True)
            _udp = kparams.pop('_udp', None)
            _aux = kparams.pop('_aux', None)
            _pattern = kparams.pop("_pattern", None)
            _patterns = kparams.pop("_patterns", [])
            _args = kparams.pop("_args", None)
            _translations = kparams.pop("_translations", None)
            _when = kparams.pop("_when", None)
            _service_class = kparams.pop("_service_class", None)
            _href = kparams.pop("_href", None)

            _substitute_self_reference(params, kparams, kwargs, _no_self)

            _faults = None
            if ('_faults' in kparams) and ('_throws' in kparams):
                raise ValueError("only one of '_throws ' or '_faults' arguments"
                                 "must be given -- they're synonyms.")

            elif '_faults' in kparams:
                _faults = kparams.pop('_faults')

            elif '_throws' in kparams:
                _faults = kparams.pop('_throws')

            _in_message_name_override = not ('_in_message_name' in kparams)
            _in_message_name = kparams.pop('_in_message_name', function_name)

            _operation_name = kparams.pop('_operation_name', function_name)

            if _operation_name != function_name and \
                                              _in_message_name != function_name:
                raise ValueError(
                    "only one of '_operation_name' and '_in_message_name' "
                    "arguments should be given")

            if _in_message_name == function_name:
                _in_message_name = add_request_suffix(_operation_name)

            _in_variable_names = kparams.pop('_in_variable_names', {})

            body_style = BODY_STYLE_WRAPPED
            body_style_str = _validate_body_style(kparams)
            if body_style_str.endswith('bare'):
                if body_style_str == 'out_bare':
                    body_style = BODY_STYLE_OUT_BARE
                else:
                    body_style = BODY_STYLE_BARE

            in_message = _produce_input_message(f, params,
                                           _in_message_name, _in_variable_names,
                                       _no_ctx, _no_self, _args, body_style_str)

            _out_message_name_override = not ('_out_message_name' in kparams)
            out_message = _produce_output_message(function_name, body_style_str,
                                                                        kparams)

            doc = getattr(f, '__doc__')

            if _pattern is not None and _patterns != []:
                raise ValueError("only one of '_pattern' and '_patterns' "
                                 "arguments should be given")

            if _pattern is not None:
                _patterns = [_pattern]

            if body_style_str.endswith('bare'):
                from spyne.model import ComplexModelBase

                t = in_message
                if issubclass(t, ComplexModelBase) and len(t._type_info) == 0:
                    body_style = BODY_STYLE_EMPTY

            retval = MethodDescriptor(f,
                in_message, out_message, doc, _is_callback, _is_async,
                _mtom, _in_header, _out_header, _faults,
                port_type=_port_type, no_ctx=_no_ctx, udp=_udp,
                class_key=function_name, aux=_aux, patterns=_patterns,
                body_style=body_style, args=_args,
                operation_name=_operation_name, no_self=_no_self,
                translations=_translations, when=_when,
                in_message_name_override=_in_message_name_override,
                out_message_name_override=_out_message_name_override,
                service_class=_service_class, href=_href,
            )

            if _patterns is not None and _no_self:
                for p in _patterns:
                    p.hello(retval)

            if len(kparams) > 0:
                raise Exception("Unknown kwarg(s) %r passed.", kparams)
            return retval
Exemplo n.º 5
0
        def explain_method(**kwargs):
            # params and kparams are passed by the user to the @rpc family
            # of decorators.

            # kwargs is passed by spyne while sanitizing methods. it mainly
            # contains information about the method context like the service
            # class that contains the method at hand.

            function_name = kwargs['_default_function_name']
            _service_class = kwargs.pop("_service_class", None)
            _self_ref_replacement = None

            # this block is passed straight to the descriptor
            _is_callback = kparams.pop('_is_callback', False)
            _is_async = kparams.pop('_is_async', False)
            _mtom = kparams.pop('_mtom', False)
            _in_header = kparams.pop('_in_header', None)
            _out_header = kparams.pop('_out_header', None)
            _port_type = kparams.pop('_port_type', None)
            _no_ctx = kparams.pop('_no_ctx', False)
            _aux = kparams.pop('_aux', None)
            _pattern = kparams.pop("_pattern", None)
            _patterns = kparams.pop("_patterns", [])
            _args = kparams.pop("_args", None)
            _translations = kparams.pop("_translations", None)
            _when = kparams.pop("_when", None)
            _static_when = kparams.pop("_static_when", None)
            _href = kparams.pop("_href", None)
            _internal_key_suffix = kparams.pop('_internal_key_suffix', '')
            if '_service' in kparams and '_service_class' in kparams:
                raise LogicError("Please pass only one of '_service' and "
                                 "'_service_class'")
            if '_service' in kparams:
                _service_class = kparams.pop("_service")
            if '_service_class' in kparams:
                _service_class = kparams.pop("_service_class")

            _no_self = kparams.pop('_no_self', True)
            _event_managers = _get_event_managers(kparams)

            # mrpc-specific
            _self_ref_replacement = kwargs.pop('_self_ref_replacement', None)
            _default_on_null = kparams.pop('_default_on_null', False)
            _substitute_self_reference(params, kparams, _self_ref_replacement,
                                       _no_self)

            _faults = None
            if ('_faults' in kparams) and ('_throws' in kparams):
                raise ValueError(
                    "only one of '_throws ' or '_faults' arguments"
                    "must be given -- they're synonyms.")

            elif '_faults' in kparams:
                _faults = kparams.pop('_faults')

            elif '_throws' in kparams:
                _faults = kparams.pop('_throws')

            _is_in_message_name_overridden = not ('_in_message_name'
                                                  in kparams)
            _in_message_name = kparams.pop('_in_message_name', function_name)

            if _no_self is False and _is_in_message_name_overridden:
                _in_message_name = '%s.%s' % \
                       (_self_ref_replacement.get_type_name(), _in_message_name)

            _operation_name = kparams.pop('_operation_name', function_name)

            if _operation_name != function_name and \
                                              _in_message_name != function_name:
                raise ValueError(
                    "only one of '_operation_name' and '_in_message_name' "
                    "arguments should be given")

            if _in_message_name == function_name:
                _in_message_name = add_request_suffix(_operation_name)

            if '_in_arg_names' in kparams and '_in_variable_names' in kparams:
                raise LogicError("Use either '_in_arg_names' or "
                                 "'_in_variable_names', not both.")
            elif '_in_arg_names' in kparams:
                _in_arg_names = kparams.pop('_in_arg_names')

            elif '_in_variable_names' in kparams:
                _in_arg_names = kparams.pop('_in_variable_names')

            else:
                _in_arg_names = {}

            if '_udd' in kparams and '_udp' in kparams:
                raise LogicError("Use either '_udd' or '_udp', not both.")
            elif '_udd' in kparams:
                _udd = kparams.pop('_udd')

            elif '_udp' in kparams:
                _udd = kparams.pop('_udp')

            else:
                _udd = {}

            body_style = BODY_STYLE_WRAPPED
            body_style_str = _validate_body_style(kparams)
            if body_style_str.endswith('bare'):
                if body_style_str == 'out_bare':
                    body_style = BODY_STYLE_OUT_BARE
                else:
                    body_style = BODY_STYLE_BARE

            in_message = _produce_input_message(f, params, _in_message_name,
                                                _in_arg_names, _no_ctx,
                                                _no_self, _args,
                                                body_style_str,
                                                _self_ref_replacement)

            out_message = _produce_output_message(function_name,
                                                  body_style_str,
                                                  _self_ref_replacement,
                                                  _no_self, kparams)

            doc = getattr(f, '__doc__')

            if _pattern is not None and _patterns != []:
                raise ValueError("only one of '_pattern' and '_patterns' "
                                 "arguments should be given")

            if _pattern is not None:
                _patterns = [_pattern]

            if body_style_str.endswith('bare'):
                from spyne.model import ComplexModelBase

                ti = in_message
                to = out_message
                if issubclass(ti, ComplexModelBase) and len(
                        ti._type_info) == 0:
                    if not issubclass(to, ComplexModelBase) or \
                                                         len(to._type_info) > 0:
                        body_style = BODY_STYLE_EMPTY_OUT_BARE
                    else:
                        body_style = BODY_STYLE_EMPTY

            assert _in_header is None or isinstance(_in_header, tuple)
            retval = MethodDescriptor(
                f,
                in_message,
                out_message,
                doc,
                is_callback=_is_callback,
                is_async=_is_async,
                mtom=_mtom,
                in_header=_in_header,
                out_header=_out_header,
                faults=_faults,
                parent_class=_self_ref_replacement,
                port_type=_port_type,
                no_ctx=_no_ctx,
                udd=_udd,
                class_key=function_name,
                aux=_aux,
                patterns=_patterns,
                body_style=body_style,
                args=_args,
                operation_name=_operation_name,
                no_self=_no_self,
                translations=_translations,
                when=_when,
                static_when=_static_when,
                service_class=_service_class,
                href=_href,
                internal_key_suffix=_internal_key_suffix,
                default_on_null=_default_on_null,
                event_managers=_event_managers,
            )

            if _patterns is not None and _no_self:
                for p in _patterns:
                    p.hello(retval)

            if len(kparams) > 0:
                raise ValueError("Unknown kwarg(s) %r passed.", kparams)
            return retval
Exemplo n.º 6
0
        def explain_method(*args, **kwargs):
            retval = None
            function_name = kwargs['_default_function_name']

            _is_callback = kparams.get('_is_callback', False)
            _is_async = kparams.get('_is_async', False)
            _mtom = kparams.get('_mtom', False)
            _in_header = kparams.get('_in_header', None)
            _out_header = kparams.get('_out_header', None)
            _port_type = kparams.get('_soap_port_type', None)
            _no_ctx = kparams.get('_no_ctx', False)
            _udp = kparams.get('_udp', None)
            _aux = kparams.get('_aux', None)
            _pattern = kparams.get("_pattern",None)
            _patterns = kparams.get("_patterns",[])
            _args = kparams.get("_args",None)

            _faults = None
            if ('_faults' in kparams) and ('_throws' in kparams):
                raise ValueError("only one of '_throws ' or '_faults' arguments"
                                 "should be given, as they're synonyms.")
            elif '_faults' in kparams:
                _faults = kparams.get('_faults', None)
            elif '_throws' in kparams:
                _faults = kparams.get('_throws', None)

            _in_message_name = kparams.get('_in_message_name', function_name)
            _operation_name = kparams.get('_operation_name', function_name)

            if _operation_name != function_name and _in_message_name != function_name:
                raise ValueError("only one of '_operation_name' and '_in_message_name' "
                                                    "arguments should be given")
            if _in_message_name == function_name:
                _in_message_name = add_request_suffix(_operation_name)


            _in_variable_names = kparams.get('_in_variable_names', {})

            in_message = _produce_input_message(f, params, kparams,
                           _in_message_name, _in_variable_names, _no_ctx, _args)

            out_message = _produce_output_message(function_name, kparams)

            doc = getattr(f, '__doc__')

            if _pattern is not None and _patterns != []:
                raise ValueError("only one of '_pattern' and '__patterns' "
                                                    "arguments should be given")

            if _pattern is not None:
                _patterns = [_pattern]

            body_style = BODY_STYLE_WRAPPED
            if _validate_body_style(kparams) == 'bare':
                body_style = BODY_STYLE_BARE
                t = in_message
                from spyne.model import ComplexModelBase
                if issubclass(t, ComplexModelBase) and len(t._type_info) == 0:
                    body_style = BODY_STYLE_EMPTY

            retval = MethodDescriptor(f,
                    in_message, out_message, doc, _is_callback, _is_async,
                    _mtom, _in_header, _out_header, _faults,
                    port_type=_port_type, no_ctx=_no_ctx, udp=_udp,
                    class_key=function_name, aux=_aux, patterns=_patterns,
                    body_style=body_style, args=_args,
                    operation_name=_operation_name)

            return retval