Spyne - как продублировать один элемент файла wsdl, созданного spyne?

Мне нужно продублировать один из элементов сгенерированного файла wsdl. Мой код такой:

class SDPSimulator(ServiceBase):
@rpc(UserCredential, Unicode, Unicode, Unicode, Integer,
     _returns=SendSmsReturn.customize(sub_name='return'))
def sendSms(ctx, userCredential, srcAddress, regionIds,msgBody,maxSendCount): 

Я хочу создать файл wsdl моего запроса с помощью Spyne:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:loc="localhost" xmlns:apps="apps.simulator.views">
   <soapenv:Header/>
   <soapenv:Body>
      <loc:sendSms>
         <!--Optional:-->
         <loc:userCredential>
            <!--Optional:-->
            <apps:password>test</apps:password>
            <!--Optional:-->
            <apps:username>test</apps:username>
         </loc:userCredential>
         <!--Optional:-->
         <loc:srcAddress>982156898</loc:srcAddress>
         <!--Optional:-->
         <loc:regionIds>77</loc:regionIds>
         <loc:regionIds>78</loc:regionIds>
         <loc:regionIds>79</loc:regionIds>
         <!--Optional:-->
         <loc:msgBody>Hi there</loc:msgBody>
         <!--Optional:-->
         <loc:maxSendCount>12</loc:maxSendCount>
      </loc:sendSms>
   </soapenv:Body>
</soapenv:Envelope>

Как я могу написать свой код для дублирования идентификаторов регионов в файле wsdl и отправить запрос, как указано выше?


person Fatemeh Rostami    schedule 25.02.2017    source источник


Ответы (1)


Наконец-то я его нашел :) Для этого мне нужно написать свой код следующим образом:

class SDPSimulator(ServiceBase):
    @rpc(UserCredential, Unicode, Unicode.customize(max_occurs='unbounded'), Unicode, Integer,
         _returns=SendSmsReturn.customize(sub_name='return'))
    def sendSms(ctx, userCredential, srcAddress, regionIds, msgBody, maxSendCount):

С помощью этой части кода: Unicode.customize(max_occurs=50) я могу указать, сколько раз <regionIds></regionIds> можно дублировать.

person Fatemeh Rostami    schedule 25.02.2017
comment
Используйте max_occurs='unbounded' или max_occurs=Decimal('inf'), а не 50 (что, как я полагаю, является просто произвольным высоким значением) - person Burak Arslan; 27.02.2017