Source code for increment

#!/usr/bin/env python
# encoding: utf-8
"""
increment.py

配合主动通知业务,提供商品,交易,退款和评价等数据或状态变更的查询功能

Created by 徐 光硕 on 2011-11-23.
Copyright (c) 2011 __MyCompanyName__. All rights reserved.
"""

from api import TOP, TOPRequest, TOPDate

[docs]class NotifyRefund(TOP): '''退款通知消息''' def __init__(self, API_KEY=None, APP_SECRET=None, ENVIRONMENT=None): super(NotifyRefund, self).__init__( API_KEY, APP_SECRET, ENVIRONMENT ) self.models = {'modified':TOPDate} self.fields = ['rid','tid','oid','seller_nick','buyer_nick','refund_fee','status','modified']
[docs]class NotifyItem(TOP): '''商品通知消息''' def __init__(self, API_KEY=None, APP_SECRET=None, ENVIRONMENT=None): super(NotifyItem, self).__init__( API_KEY, APP_SECRET, ENVIRONMENT ) self.models = {'modified':TOPDate} self.fields = ['sku_id','sku_num','status','increment','iid','num_iid','title','nick','num','changed_fields','price','modified']
[docs]class NotifyTrade(TOP): '''交易通知消息''' def __init__(self, API_KEY=None, APP_SECRET=None, ENVIRONMENT=None): super(NotifyTrade, self).__init__( API_KEY, APP_SECRET, ENVIRONMENT ) self.models = {'modified':TOPDate} self.fields = ['oid','tid','seller_nick','buyer_nick','payment','trade_mark','type','status','modified']
[docs]class AppCustomer(TOP): '''开通增量消息服务的应用用户''' def __init__(self, API_KEY=None, APP_SECRET=None, ENVIRONMENT=None): super(AppCustomer, self).__init__( API_KEY, APP_SECRET, ENVIRONMENT ) self.models = {'created':TOPDate} self.fields = ['nick','created','status']
[docs]class Increment(TOP): def __init__(self, API_KEY=None, APP_SECRET=None, ENVIRONMENT=None): super(Increment, self).__init__( API_KEY, APP_SECRET, ENVIRONMENT )
[docs] def customer_permit(self, session): '''taobao.increment.customer.permit 开通增量消息服务 提供app为自己的用户开通增量消息服务功能''' request = TOPRequest('taobao.increment.customer.permit') self.create(self.execute(request, session), fields=['app_customer',], models={'app_customer':AppCustomer}) return self.app_customer
[docs] def customer_stop(self, nick, session): '''taobao.increment.customer.stop 关闭用户的增量消息服务 供应用关闭其用户的增量消息服务功能,这样可以节省ISV的流量。''' request = TOPRequest('taobao.increment.customer.stop') request['nick'] = nick self.create(self.execute(request, session), fields=['is_success',]) return self.is_success
[docs] def customers_get(self, session, page_no=1, page_size=10, nicks=None): '''taobao.increment.customers.get 查询应用为用户开通的增量消息服务 提供查询应用为自身用户所开通的增量消息服务信息。''' request = TOPRequest('taobao.increment.customers.get') request['page_no'] = page_no request['page_size'] = page_size if nicks!=None: request['nicks'] = nicks self.create(self.execute(request, session), fields=['app_customers', 'total_results'], models={'app_customers':AppCustomer}) return self.app_customers
[docs] def items_get(self, **kwargs): '''taobao.increment.items.get 获取商品变更通知信息 开通主动通知业务的APP可以通过该接口获取商品变更通知信息 建议获取增量消息的时间间隔是:半个小时''' request = TOPRequest('taobao.increment.items.get') for k, v in kwargs.iteritems(): if k not in ('status', 'nick', 'start_modified', 'end_modified', 'page_no', 'page_size') and v==None: continue request[k] = v self.create(self.execute(request), fields=['notify_items', 'total_results'], models={'notify_items':NotifyItem}) return self.notify_items
[docs] def refunds_get(self, **kwargs): '''taobao.increment.refunds.get 获取退款变更通知信息 开通主动通知业务的APP可以通过该接口获取用户的退款变更通知信息 建议在获取增量消息的时间间隔是:半个小时''' request = TOPRequest('taobao.increment.refunds.get') for k, v in kwargs.iteritems(): if k not in ('status', 'nick', 'start_modified', 'end_modified', 'page_no', 'page_size') and v==None: continue request[k] = v self.create(self.execute(request), fields=['notify_refunds', 'total_results'], models={'notify_refunds':NotifyRefund}) return self.notify_refunds
[docs] def trades_get(self, **kwargs): '''taobao.increment.trades.get 获取交易和评价变更通知信息 开通主动通知业务的APP可以通过该接口获取用户的交易和评价变更通知信息 建议在获取增量消息的时间间隔是:半个小时''' request = TOPRequest('taobao.increment.trades.get') for k, v in kwargs.iteritems(): if k not in ('status', 'nick', 'type', 'start_modified', 'end_modified', 'page_no', 'page_size') and v==None: continue request[k] = v self.create(self.execute(request), fields=['notify_trades', 'total_results'], models={'notify_trades':NotifyTrade}) return self.notify_trades