Example #1
0
def get_spyne_type(v):
    """This function maps sqlalchemy types to spyne types."""

    rpc_type = None

    if isinstance(v.type, sqlalchemy.Enum):
        if v.type.convert_unicode:
            rpc_type = Unicode(values=v.type.enums)
        else:
            rpc_type = Enum(*v.type.enums, **{'type_name': v.type.name})

    elif isinstance(v.type, sqlalchemy.Unicode):
        rpc_type = Unicode(v.type.length)

    elif isinstance(v.type, sqlalchemy.String):
        rpc_type = String(v.type.length)

    elif isinstance(v.type, sqlalchemy.UnicodeText):
        rpc_type = Unicode

    elif isinstance(v.type, sqlalchemy.Text):
        rpc_type = String

    elif isinstance(v.type, (sqlalchemy.Numeric)):
        rpc_type = Decimal(v.type.precision, v.type.scale)

    elif type(v.type) in _sq2sp_type_map:
        rpc_type = _sq2sp_type_map[type(v.type)]

    else:
        raise Exception("soap_type was not found. maybe _type_map needs a "
                        "new entry. %r" % v)

    return rpc_type
Example #2
0
class InteropMisc(ServiceBase):
    @srpc(_returns=[
        Integer, String, Integer,
        Array(Enum("MEMBER", type_name="RoleEnum"))
    ],
          _out_variable_names=[
              'resultCode', 'resultDescription', 'transactionId', 'roles'
          ])
    def complex_return():
        return [1, "Test", 123, ["MEMBER"]]

    @srpc(_returns=Integer)
    def huge_number():
        return 2**int(1e5)

    @srpc(_returns=String)
    def long_string():
        return ('0123456789abcdef' * 16384)

    @srpc()
    def test_empty():
        pass

    @srpc(String, Integer, DateTime)
    def multi_param(s, i, dt):
        pass

    @srpc(NonNillableClass, _returns=String)
    def non_nillable(n):
        return "OK"

    @srpc(String, _returns=String, _operation_name="do_something")
    def do_something_else(s):
        return s

    @srpc(Integer, _returns=Array(OtherClass))
    def return_other_class_array(num):
        for i in range(num):
            yield OtherClass(dt=datetime(2010, 12, 6), d=3.0, b=True)

    @srpc(_returns=Attachment)
    def return_binary_data():
        return Attachment(data=''.join([chr(i) for i in range(256)]))

    @srpc(_returns=Integer)
    def return_invalid_data():
        return 'a'

    @srpc(
        String,
        # FIXME: find out why this could be needed
        # _public_name="urn:#getCustomMessages",
        _in_message_name="getCustomMessagesMsgIn",
        _out_message_name="getCustomMessagesMsgOut",
        _out_variable_name="CustomMessages",
        _returns=String)
    def custom_messages(s):
        return s
Example #3
0
vals = [
    'Monday',
    'Tuesday',
    'Wednesday',
    'Thursday',
    'Friday',
    'Saturday',
    'Sunday',
]

DaysOfWeekEnum = Enum(
    'Monday',
    'Tuesday',
    'Wednesday',
    'Thursday',
    'Friday',
    'Saturday',
    'Sunday',
    type_name='DaysOfWeekEnum',
)


class SomeService(Service):
    @rpc(DaysOfWeekEnum, _returns=DaysOfWeekEnum)
    def get_the_day(self, day):
        return DaysOfWeekEnum.Sunday


class SomeClass(ComplexModel):
    days = DaysOfWeekEnum(max_occurs=7)
Example #4
0
        u'Начало интересующего периода. Если не указан, принимается равным текущей дате'
    )
    endDate = Date(
        doc=u'Окончание интересующего периода. '
        u'Если не указано, то интерпретируется в зависимости от значения параметра startDate: '
        u'если startDate находится в прошлом, то endDate принимается равным сегодняшней дате, '
        u'в противном случае его значение определяется настройками МИС и временем, '
        u'на которое планируется расписание.')
    hospitalUidFrom = String(doc=u'Идентификатор отправителя')

    def __init__(self):
        super(GetScheduleInfoRequest, self).__init__(
            doc=u'Получение обобщённой информации о расписании врача')


Timeslot_Statuses = Enum("free", "locked", "unavailable", type_name="Statuses")


class TimeslotStatus(ComplexModel):
    __namespace__ = SOAP_NAMESPACE

    timeslotStatus = Timeslot_Statuses

    def __init__(self, **kwargs):
        super(TimeslotStatus,
              self).__init__(doc=u'Состояние интервала времени в расписании',
                             **kwargs)


class Timeslot(ComplexModel):
    __namespace__ = SOAP_NAMESPACE