12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- # -*- coding: utf-8 -*-
- #!/usr/bin/env python
- import datetime
- import logging
- from apps.web.constant import Const
- from apps.web.device.models import Group, Device
- from apps.web.eventer.base import FaultEvent, WorkEvent
- from apps.web.eventer import EventBuilder
- from apps.web.user.models import MyUser
- logger = logging.getLogger(__name__)
- class builder(EventBuilder):
- def __getEvent__(self, device_event):
- event_data = self.deviceAdapter.analyze_event_data(device_event['data'])
- if event_data is None:
- return None
- if 'faultCode' in event_data and event_data['faultCode']:
- return FaultEvent(self.deviceAdapter, event_data)
- return ChargingKyxnWorkEvent(self.deviceAdapter, event_data)
- class ChargingKyxnWorkEvent(WorkEvent):
- def __init__(self, smartBox, event_data):
- super(ChargingKyxnWorkEvent, self).__init__(smartBox, )
- self.curDevInfo = event_data
- def do(self, **args):
- logger.info('Kaiyuanxinneng charging event detected, devNo=%s' % (self.device['devNo'],))
- try:
- devInfo = Device.update_port_control_cache(self.device['devNo'], self.curDevInfo)
- if (not devInfo.has_key('openId')) or devInfo['openId'] is None:
- return
- user = MyUser.objects(openId = devInfo['openId'], groupId = self.device['groupId']).first()
- group = Group.get_group(self.device['groupId'])
- self.notify_user(user.managerialOpenId if user else '', 'service_complete', **{
- 'title': u'您订购的服务已经完成',
- 'service': u'充电服务(设备编号:%s, 地址:%s)' % (self.device['logicalCode'],group['address']),
- 'finishTime': datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
- 'remark': u'谢谢您的支持'
- })
- finally:
- Device.clear_port_control_cache(self.device['devNo'], str(self.curDevInfo['port']))
- class ChargingKyxnFault(FaultEvent):
- def get_desc(self):
- if self.event_data is None:
- return ''
- for line,info in self.event_data.items():
- desc = u'第%s路出现了:%s' % (line,Const.EVENT_CODE_DESC.get(info['faultCode'],''))
- return desc
|