Ejemplo n.º 1
0
    class CrudService(ServiceBase):
        @rpc(Mandatory.UnsignedInteger32, _returns=T)
        def get(ctx, obj_id):
            return ctx.udc.session.query(T).filter_by(id=obj_id).one()

        @rpc(T, _returns=UnsignedInteger32)
        def put(ctx, obj):
            if obj.id is None:
                ctx.udc.session.add(obj)
                ctx.udc.session.flush()

            else:
                if ctx.udc.session.query(T).get(obj.id) is None:
                    raise ResourceNotFoundError('%s.id=%d' % (T_name, obj.id))

                else:
                    ctx.udc.session.merge(obj)

            return obj.id

        @rpc(Mandatory.UnsignedInteger32)
        def del_(ctx, obj_id):
            count = ctx.udc.session.query(T).filter_by(id=obj_id).count()
            if count == 0:
                raise ResourceNotFoundError(obj_id)

            ctx.udc.session.query(T).filter_by(id=obj_id).delete()

        @rpc(_returns=Iterable(T))
        def get_all(ctx):
            return ctx.udc.session.query(T)
Ejemplo n.º 2
0
class ItemService(ServiceBase):
    @srpc(_returns=Iterable(Item))
    def item_all():
        for item in myapp_models.Item.objects.all():
            yield Item(name=item.name,
                       value=item.value,
                       updated_at=item.updated_at)
Ejemplo n.º 3
0
class SomeSoapService(spyne.Service):
    __service_url_path__ = '/soap/someservice'
    __in_protocol__ = Soap11(validator='lxml')
    __out_protocol__ = Soap11()

    @spyne.srpc(Unicode, _returns=Iterable(String))
    # @spyne.srpc(Float, Float, _returns=Iterable(Unicode))
    def query(words):
        data.execute(""" SHOW COLUMNS  from mydb.""" + words)
        result = []
        for value in data:
            result.append(value[0])
        print len(result)
        data.execute(""" SELECT * from """ + words)
        for value in data:
            temp = '{'
            for x in range(0, len(result)):
                temp += '"' + result[x] + '":"' + str(value[x]) + '"'
                if x == len(result) - 1:
                    temp += '}'
                else:
                    temp += ','
            print temp
            yield temp
            temp = ''
Ejemplo n.º 4
0
class HelloWorldService(Service):
    @rpc(String, UnsignedInteger, _returns=Iterable(String))
    def say_hello(ctx, name, times):
        def cb(ret):
            for i in range(times):
                ret.append('Hello, %s' % name)
        return Iterable.Push(cb)
class BookEventRequest(ComplexModel):
    __namespace__ = 'spyne.ticketx.book'

    user_id = Integer
    section_list = Iterable(BookEventSection)
    callback = Unicode
    callback_type = Unicode
Ejemplo n.º 6
0
class BookService(ServiceBase):
    @rpc(_returns=Iterable(Book))
    def book_listing(ctx):
        try:
            return BookModel.objects.all()
        except BookModel.DoesNotExist:
            raise ResourceNotFoundError('Book')

    @rpc(Unicode, Unicode, _returns=Book)
    def get_book(ctx, title = None, isbn = None):
        try:
            return BookModel.objects.filter(Q(title=title) | Q(isbn=isbn)).first()
        except BookModel.DoesNotExist:
            raise ResourceNotFoundError('Book')

    @rpc(Unicode, Integer, _returns=Book)
    def update_book_copies(ctx, isbn, copies):
        try:
            book = BookModel.objects.filter(isbn=isbn).first()
            book.copies += copies
            book.save()
        except BookModel.DoesNotExist:
            raise ResourceNotFoundError('Book')

    @rpc(Book, _returns=Book)
    def create_book(ctx, book):
        try:
            return BookModel.objects.create(**book.as_dict())
        except IntegrityError:
            raise ResourceAlreadyExistsError('Book')
Ejemplo n.º 7
0
class Order(ComplexModelBase):
    orderID = ID
    orderPartnerID = ID
    orderManagerID = ID
    orderCreateDateTime = MandatoryDateTime
    orderServices = Iterable(Service, nillable=False)
    orderFeedbackURL = Unicode(255)
Ejemplo n.º 8
0
class SomeSoapService(spyne.Service):
    __service_url_path__ = '/soap/someservice'
    __in_protocol__ = Soap11()
    __out_protocol__ = Soap11()
    __tns__ = 'http://127.0.0.1/'

    @spyne.srpc(
        Array(Person),  # 请求类型
        _returns=Iterable(Unicode),  # 返回类型
        _in_variable_names={'data': 'param'},  # 请求节点名,默认为函数定义,修改为param
        _out_variable_name='return')  # 返回节点名
    def person(self, data):
        if not data:
            yield 'None'
        for person in data:
            yield 'name is : %s, age is %s.' % (person.name, person.age)

    @spyne.srpc(Integer, _returns=Integer, _out_variable_name='return')
    def block(ctx, seconds):
        print(1)
        return '1'

    __aux__ = ThreadAuxProc(pool_size=1)

    @spyne.srpc(Integer)
    def block(ctx, seconds):
        print(2)
Ejemplo n.º 9
0
class UTPService(ServiceBase):
    @srpc(_returns=DateTime)
    def utc():
        return datetime.datetime.utcnow()

    @srpc(_returns=DateTime)
    def now():
        return datetime.datetime.now()

    @srpc(_returns=ComplexMandatory(Response, type_name='Response'))
    def hello():
        logger.debug('hello called')
        return Response(0, 'OK')

    @srpc(Iterable(City, nillable=False),
          _returns=ComplexMandatory(Response, type_name='Response'))
    def updateCities(cities):
        return Response(0, 'OK')

    @srpc(Iterable(CarClass, nillable=False),
          _returns=ComplexMandatory(Response, type_name='Response'))
    def updateCarClasses(classes):
        return Response(0, 'OK')

    @srpc(Iterable(Place, nillable=False),
          _returns=ComplexMandatory(Response, type_name='Response'))
    def updatePlaces(places):
        return Response(0, 'OK')

    @rpc(Iterable(Order, nillable=False),
         _returns=ComplexMandatory(Response, type_name='Response'))
    def addOrUpdateOrders(self, orders):
        for order in orders:
            self.app.db.create_or_update_order(order)
        return Response(0, 'OK')

    @rpc(DateTime, DateTime, _returns=Iterable(Order))
    def getOrders(self, dateFrom, dateTo):
        orders = self.app.db.get_orders(DatesRange(dateFrom, dateTo))
        for order in orders:
            order['orderCreateDateTime'] = to_datetime(
                order['orderCreateDateTime'])
            for service in order['orderServices']:
                service['serviceMeetDateTime'] = to_datetime(
                    service['serviceMeetDateTime'])
        return orders
Ejemplo n.º 10
0
class Service(ComplexModelBase):
    _order = None
    serviceID = ID
    serviceType = ServiceType
    serviceStatus = Status
    serviceCarClassID = ID
    servicePassengers = Iterable(Passenger, nillable=False)
    servicePassengersCount = Mandatory.UnsignedInteger  # число пассажиров может отличаться от списка выше

    serviceMeetDateTime = MandatoryDateTime
    serviceMeetPlate = Unicode

    serviceAddresses = Iterable(Address)

    serviceBaggage = Unicode
    serviceBabyChairs = Mandatory.UnsignedInteger()
    serviceComment = Unicode
Ejemplo n.º 11
0
class HelloWorldService(ServiceBase):
    @rpc(_returns=Iterable(Unicode))
    def say_hello(ctx):
        plans = Planes.objects.all()
        personas = Persona.objects.all()
        for plan in plans:
            yield ("Tipo de Plan : " + str(plan.tipoplan) + ", Valor: " +
                   str(plan.valor))
Ejemplo n.º 12
0
class CCTVService(ServiceBase):
    @srpc(String, _returns=Iterable(String))
    def peopleInCCTV(CCTVName):
        if CCTVName == 'CCTV1':
            yield 'Frank'
            yield 'Oat'
        elif CCTVName == 'CCTV2':
            yield 'Frank'
        elif CCTVName == 'CCTV3':
            yield 'None'
        else:
            None

    @srpc(_returns=Iterable(String))
    def CCTVList():
        yield 'CCTV01'
        yield 'CCTV02'
        yield 'CCTV03'
Ejemplo n.º 13
0
class FibonanciService(ServiceBase):
    @srpc(UnsignedInteger, _returns=Iterable(UnsignedInteger))
    def Fibonacci(n):

        a, b = 0, 1
        while True:
            if a > n: return
            yield a
            a, b = b, a + b
Ejemplo n.º 14
0
class SomeSoapService(spyne.Service):
    __service_url_path__ = '/soap/someservice'
    __in_protocol__ = Soap11(validator='lxml')
    __out_protocol__ = Soap11()

    @spyne.srpc(Unicode, Integer, _returns=Iterable(Unicode))
    def echo(str, cnt):
        for i in range(cnt):
            yield str
Ejemplo n.º 15
0
class MedicationPlanService(Service):
    @rpc(Long, DateTime, _returns=Iterable(MedicationPlanNotObeyed))
    def get_not_obeyed_medication_plan(self, patient_id, date_time):
        date = date_time.date()
        medication_plans = MedicationPlan.objects.filter(patient_id=patient_id,
                                                         start_date__lte=date,
                                                         end_date__gte=date)

        not_obeyed_medication_plans = []

        for medication_plan in medication_plans:
            intake_interval_period = medication_plan.intake_interval_period
            all_intake_interval = [
                (i * intake_interval_period, (i + 1) * intake_interval_period)
                for i in range(
                    0, 24 // medication_plan.intake_interval_period + 1, 2)
            ]
            all_intake_interval = [(s, e) for s, e in all_intake_interval
                                   if s < 24 and e < 24]

            taken_medication_plan = MedicationPlanInterval.objects.filter(
                day=date,
                medication_plan=medication_plan.id,
                taken_on_time=True)
            if len(taken_medication_plan) == len(all_intake_interval):
                continue

            saved_intake_intervals = MedicationPlanInterval.objects.filter(
                day=date, medication_plan=medication_plan.id).order_by(
                    'intake_interval_start')

            for mdi in saved_intake_intervals:
                mdi.taken_on_time = int.from_bytes(mdi.taken_on_time, "big")

            intake_intervals = []

            intake_intervals = intake_intervals + saved_intake_intervals[::1]

            for s, e in all_intake_interval[len(saved_intake_intervals):]:
                mpi = MedicationPlanInterval()
                mpi.medication_plan = medication_plan
                mpi.day = date
                mpi.intake_interval_start = s
                mpi.intake_interval_end = e
                mpi.hour = s
                mpi.taken_on_time = False

                intake_intervals.append(mpi)

            med_plan = MedicationPlanNotObeyed()
            med_plan.medication_plan = medication_plan
            med_plan.intake_intervals = intake_intervals

            not_obeyed_medication_plans.append(med_plan)

        return not_obeyed_medication_plans
Ejemplo n.º 16
0
class ActivityService(Service):
    @rpc(Long, DateTime, _returns=Iterable(ActivityModel))
    def get_activities_by_patient_id(self, patient_id, datetime):
        date = datetime.date()
        activities_per_day = Activity.objects.filter(patient_id=patient_id,
                                                     start_date__contains=date)

        for activity in activities_per_day:
            activity.is_normal = bool.from_bytes(activity.is_normal, "big")
            activity.is_violated = bool.from_bytes(activity.is_violated, "big")

        return activities_per_day

    @rpc(Long, Boolean, _returns=ActivityModel)
    def annotate_activity(self, activity_id, label):
        try:
            print(activity_id, label)
            activity = Activity.objects.get(pk=activity_id)

            if type(activity.is_violated) == bytes:
                activity.is_violated = bool.from_bytes(activity.is_violated,
                                                       "big")

            activity.is_normal = label
            activity.save()
            return activity
        except Exception as ex:
            raise ResourceNotFoundError('Activity %s not found' % activity_id)

    @rpc(Long, Unicode)
    def add_recommendation(self, activity_id, recommendation):
        try:
            activity = Activity.objects.get(pk=activity_id)
            if type(activity.is_violated) == bytes:
                activity.is_violated = bool.from_bytes(activity.is_violated,
                                                       "big")

            if type(activity.is_normal) == bytes:
                activity.is_normal = bool.from_bytes(activity.is_normal, "big")

            if activity.is_normal:
                raise Exception("Activity is labeled as normal")

            latest_activity = ActivityRecommendation.objects.latest('id')

            latest_id = latest_activity.id + 1

            activity_recommendation = ActivityRecommendation()
            activity_recommendation.id = latest_id
            activity_recommendation.activity_id = activity.id
            activity_recommendation.recommendation = recommendation
            activity_recommendation.save(force_insert=True)
        except ObjectDoesNotExist as ex:
            raise ResourceNotFoundError('Activity %s not found' % activity_id)
        except Exception as ex:
            raise Fault(faultstring=str(ex))
class SomeSoapService(spyne.Service):
    __service_url_path__ = '/soap/someservice'
    __in_protocol__ = Soap11(validator='lxml')
    __out_protocol__ = Soap11()

    @spyne.srpc(Float, Float, _returns=Iterable(Float))
    def echo(w, h):
        h_in_m = h / 100
        BMI = w / (h_in_m**2)
        yield float("{0:.2f}".format(BMI))
Ejemplo n.º 18
0
 class HelloWorldService(ServiceBase):
   @rpc(Unicode, Integer, _returns=Iterable(Unicode))
   def say_hello(ctx, name, times):
     '''
     Docstrings for service methods appear as documentation in the wsdl
     <b>what fun</b>
     @param name the name to say hello to
     @param the number of times to say hello
     @return the completed array
     '''
     return [u'Hello, %s' % name] * times
Ejemplo n.º 19
0
class HelloWorldService(ServiceBase):
    @srpc(String, UnsignedInteger, _returns=Iterable(String))
    def say_hello(name, times):
        """Docstrings for service methods appear as documentation in the wsdl.
        <b>What fun!</b>
        @param name: the name to say hello to
        @param times: the number of times to say hello
        @return  When returning an iterable, you can use any type of python iterable. Here, we chose to use generators.
        """
        for i in range(times):
            yield u'Hello, %s' % name
Ejemplo n.º 20
0
class titi(MyClass):
    player = ('do')

    def __init__(self):
        print('toto')
        self.player = 're'

    @rpc(Unicode, Integer, _returns=Iterable(Unicode))
    def say_hello(ctx, name, times):  # @NoSelf
        for i in range(times):  # @UnusedVariable
            yield 'Hello, %s' % name
Ejemplo n.º 21
0
class SomeSoapService(spyne.Service):
    __service_url_path__ = '/soap/someservice'
    __in_protocol__ = Soap11(validator='lxml')
    __out_protocol__ = Soap11()

    @spyne.srpc(Unicode, _returns=Iterable(Unicode))
    def obtenerMateriaAlumno(legajo):
        materias = session.query(Materia).filter(
            Materia.legajo == legajo).all()
        for materia in materias:
            yield str(materia.name)
Ejemplo n.º 22
0
class Fibonacci(ServiceBase):
    @srpc(Integer,_returns=Iterable(Integer))
    def fib(n):
        final = []
        a, b = 0, 1
        final.append(a)
        final.append(b)
        for i in range(n - 2):
            a, b = b, a + b
            final.append(a)
        return final
Ejemplo n.º 23
0
        class EchoService(Service):

            srpc_kparams = {'_returns': Iterable(Unicode)}
            if _in_message_name:
                srpc_kparams['_in_message_name'] = _in_message_name
            if _operation_name:
                srpc_kparams['_operation_name'] = _operation_name

            @srpc(Unicode, Integer, **srpc_kparams)
            def echo(string, times):
                for i in range(times):
                    yield 'Echo, %s' % string
Ejemplo n.º 24
0
class SomeSoapService(spyne.Service):
    __service_url_path__ = '/soap/someservice'
    __in_protocol__ = Soap11(validator='lxml')
    __out_protocol__ = Soap11()

    @spyne.srpc(Unicode, Integer, _returns=Iterable(Unicode))
    def echo(str, cnt):
        for i in range(cnt):
            yield str

    @spyne.srpc(Unicode, _returns=AnswerServiceResponse)
    def answer(str):
        return AnswerServiceResponse(dummy_str='answer is', dummy_num=42)
Ejemplo n.º 25
0
class HelloWorldService(ServiceBase):
    @srpc(String, Integer, _returns=Iterable(String))
    def say_hello(name, times):
        '''
        Docstrings for service methods appear as documentation in the wsdl
        <b>what fun</b>
        @param name the name to say hello to
        @param the number of times to say hello
        @return the completed array
        '''

        for i in range(times):
            yield 'Hello, %s' % name
Ejemplo n.º 26
0
class SomeJsonService(spyne.Service):
    __service_url_path__ = '/json/anotherservice'
    __in_protocol__ = HttpRpc(validator='soft')
    __out_protocol__ = JsonDocument(ignore_wrappers=True)

    @spyne.srpc(Unicode, Integer, _returns=Iterable(Unicode))
    def echo(str, cnt):
        for i in range(cnt):
            yield str

    @spyne.srpc(Unicode, _returns=AnswerServiceResponse)
    def answer(str):
        return AnswerServiceResponse(dummy_str='answer is', dummy_num=42)
Ejemplo n.º 27
0
class MyClass(ServiceBase):
    '''
    classdocs
    '''
    def __new__(self):
        print('new')

    def __init__(self):
        print('init !')
        super(MyClass, self).__init__()

    @rpc(Unicode, Integer, _returns=Iterable(Unicode))
    def say_hello(ctx, name, times):  # @NoSelf
        pass
Ejemplo n.º 28
0
class BookLoanService(ServiceBase):
    @rpc(_returns=Iterable(BookLoan))
    def book_loan_listing(ctx):
        try:
            return BookModel.objects.all()
        except BookModel.DoesNotExist:
            raise ResourceNotFoundError('Book')
    
    @rpc(Unicode, Unicode, Integer, _returns=BookLoan)
    def create_book_loan(ctx, user_email, isbn, days):
        try:
            user = UserModel.objects.get(email=user_email)
        except UserModel.DoesNotExist:
            raise ResourceNotFoundError('User')
        
        try:
            book = BookModel.objects.filter(isbn=isbn).first()
        except BookModel.DoesNotExist:
            raise ResourceNotFoundError('Book')
        rented = BookLoanModel.objects.filter(
            user=user,
            book=book,
            return_date=None
        ).last()

        print(rented)
        if rented is not None:
            raise ResourceAlreadyExistsError('BookLoan')

        return BookLoanModel.objects.create(
            user=user,
            book=book,
            days=days
        )
    
    @rpc(Unicode, _returns=BookLoan)
    def devolve_book_loan(ctx, isbn):
        try:
            book = BookModel.objects.filter(isbn=isbn).first()
        except BookModel.DoesNotExist:
            raise ResourceNotFoundError('Book')

        book_loan = BookLoanModel.objects.filter(
            book=book,
            return_date=None
        ).last()

        book_loan.return_date = datetime.datetime.now()
        book_loan.save()
        return book_loan
Ejemplo n.º 29
0
class Tools(spyne.Service):
    __service_url_path__ = '/service'
    __in_protocol__ = Soap11(validator='lxml')
    __out_protocol__ = Soap11()

    @spyne.srpc(Unicode, _returns=Iterable(AnyDict))
    def info(tid):
        query = "SELECT * FROM tools WHERE id='{}'"
        try:
            tools = db.session.execute(query.format(tid))
        except Exception as e:
            tools = [dict(error=e.__str__())]
        for tool in tools:
            yield dict(tool)
Ejemplo n.º 30
0
class SomeSoapService(spyne.Service):
    __service_url_path__ = '/soap/someservice'
    __target_namespace__ = 'custom_namespace'
    __in_protocol__ = Soap11(validator='lxml')
    __out_protocol__ = Soap11()
    __wsse_conf__ = {
        'username': '******',
        'password': '******'  # never store passwords directly in sources!
    }

    @spyne.srpc(Unicode, Integer, _returns=Iterable(Unicode))
    def echo(str, cnt):
        for i in range(cnt):
            yield str