示例#1
0
    def submit_booking_form( self, booking_page ):
        
        booking_dict = { 'passengers[0].passengerName': self.pass_details[ 'name' ],
                         'passengers[0].passengerAge': self.pass_details[ 'age' ],
                         'passengers[0].passengerSex': self.pass_details[ 'sex' ][0].lower(),
                         'passengers[0].berthPreffer': self.pass_details[ 'berthpreference' ],
                         'passengers[0].foodPreffer': self.pass_details[ 'foodpreference' ],
                         'passengers[0].idCardType' : self.pass_details[ 'idcardtype' ],
                         'passengers[0].idCardNo'   : self.pass_details[ 'idcardno' ],
                         'captchaImage': self.get_captcha(),
                         'submitClicks': '3',
                         'resvUpto': self.trvl_details[ 'to' ],
                         'garibrath': 'false',
}
    
        booking_form = utils.parse_form( booking_page, 'BookTicketForm' )
#        print booking_dict
        for key in booking_dict:
            if key in booking_form:
                booking_form[ key ] = booking_dict[ key ]
            
            
        print 'Sending passenger details...',
        sys.stdout.flush()
        confirm_page = utils.http_post( booking_form[ '_submit_' ],
                                        utils.urlencode_form( booking_form ),
                                        'application/x-www-form-urlencoded',
                                        self.booking_URI )
        print 'OK'

        return confirm_page
示例#2
0
def prepay(request):
    data = {'ret_code': 0, 'ret_data': {}}
    try:
        if request.method == 'POST':
            params = utils.get_prepay_params(request)
            ret = utils.http_post(config.UnifiedOrder_URL,
                                  params,
                                  trans2xml=True)
            if 'return_code' in ret and ret[
                    'return_code'] == 'SUCCESS' and 'result_code' in ret and ret[
                        'result_code'] == 'SUCCESS':
                if reward(params):
                    data['ret_data']['prepay_info'] = utils.get_pay_params(
                        ret['prepay_id'])
                    data['ret_code'] = 1
                else:
                    data['msg'] = 'reward save failed'
            else:
                data['msg'] = 'prepay failed'

    except Exception as err:
        logger.error(str(err))

    res = json.dumps(data, ensure_ascii=False)
    return HttpResponse(res, content_type="application/json")
示例#3
0
def get_courses_of_programs(program) -> str:
    return utils.http_post('esquery.tku.edu.tw', '/acad/query_result.asp', {
        'func': 'go',
        'R1': 5,
        'sgn2': '-',
        'others': program,
    }, False)
示例#4
0
    def cancel_order(self, symbol, order_id):
        # type: (str, str) -> object
        """

        :param symbol:
        :param order_id:
        :return:
        """
        params = {
            'api_key': self.__api_key,
            'symbol': symbol,
            'order_id': order_id
        }
        params['sign'] = build_all_coin_sign(params, self.__secret_key)
        # {'order_id': '59770590', 'result': True}
        result = http_post(self.__url + AllCoinTrade.CANCEL_RESOURCE,
                           params,
                           verify=False)
        if 'result' in result:
            self.__redis.srem(
                Constants.REDIS_KEY_ALL_COIN_OPEN_ORDER_IDS_PREFIX + ':' +
                symbol, order_id)
            self.__redis.sadd(
                Constants.REDIS_KEY_ALL_COIN_CANCELLED_ORDER_IDS_PREFIX + ':' +
                symbol, order_id)
            self.__redis.hset(
                Constants.REDIS_KEY_ALL_COIN_ORDER_PREFIX + ':' + symbol +
                ':' + order_id, 'status', Constants.ORDER_STATUS_CANCELLED)
            return result['result']
        return result
示例#5
0
    def get_open_orders(self, symbol):
        """

        :param symbol:
        :return:
        {
            'current_page': 1,
            'order': [{
                'amount': 100.0,
                'deal_amount': 0.0,
                'avg_price': 0.0,
                'create_data': 1517110886325,
                'order_id': 59768240,
                'price': 0.000214,
                'status': 0,
                'symbol': 'oc_btc',
                'type': 'sell'
            }],
            'page_length': 200,
            'total': 1
        }
        """
        params = {
            'api_key': self.__api_key,
            'symbol': symbol,
            'status': '0',
            'current_page': 1,
            'page_length': 200
        }
        params['sign'] = build_all_coin_sign(params, self.__secret_key)
        return http_post(self.__url + AllCoinTrade.OPEN_ORDERS_RESOURCE,
                         params,
                         verify=False)
def create_department(access_token,
                      name,
                      parentid,
                      order=None,
                      createDeptGroup=None,
                      deptHiding=None,
                      deptPermits=None,
                      userPermits=None,
                      outerDept=None,
                      outerPermitDepts=None,
                      outerPermitUsers=None):
    url = 'https://%s/department/create?' % API_ADDR
    args = {'access_token': access_token}
    url += urlencode(args)
    data = {'name': name, 'parentid': parentid}

    if order != None:
        data['order'] = order
    if createDeptGroup != None:
        data['createDeptGroup'] = createDeptGroup
    if deptHiding != None:
        data['deptHiding'] = deptHiding
    if deptPermits != None:
        data['deptPermits'] = deptPermits
    if userPermits != None:
        data['userPermits'] = userPermits
    if outerDept != None:
        data['outerDept'] = outerDept
    if outerPermitDepts != None:
        data['outerPermitDepts'] = outerPermitDepts
    if outerPermitUsers != None:
        data['outerPermitUsers'] = outerPermitUsers

    #print data #debug only
    return http_post(url, data)
示例#7
0
    def submit_planner_form( self, planner_page ):

        planner_dict = { 'stationFrom'  : self.trvl_details[ 'from' ],
                         'stationTo'    : self.trvl_details[ 'to' ],
                         'JDatee1'      : self.trvl_details[ 'date' ],
                         'ticketType'   : self.trvl_details[ 'tickettype' ],
                         'quota'        : self.trvl_details[ 'quota' ],
                         'submitClicks' : '1' }

        planner_dict[ 'day' ]   = planner_dict[ 'JDatee1' ].split('/')[0]
        planner_dict[ 'month' ] = planner_dict[ 'JDatee1' ].split('/')[1]
        planner_dict[ 'year' ]  = planner_dict[ 'JDatee1' ].split('/')[2]
#        planner_dict[ 'screen' ]       = 'trainsFromTo' 

        self.planner_form = utils.parse_form( planner_page, 'BookTicketForm', [] )

        for key in planner_dict:
            self.planner_form[ key ] = planner_dict[ key ]
            
        #DEBUG=True
        print 'Fetching trains list...',
        sys.stdout.flush()
        trains_page = utils.http_post( self.planner_form[ '_submit_' ],
                                       utils.urlencode_form( self.planner_form ),
                                       'application/x-www-form-urlencoded',
                                       self.planner_form[ '_submit_' ] )
        print 'OK'
        #DEBUG=False

        return trains_page
示例#8
0
    def submit_bank_selection( self, bank_page ):

        CKFARE    = ''
        TatkalOpt = ''
        if self.trvl_details[ 'quota' ] == 'CK':
            CKFARE = 'CKFARE'
            TatkalOpt = 'Y'
        
        bank_dict = { 'paymentMode': '0',
                      'pgType': '1',
                      'gatewayID': '1',
                      'buyTicket': '0',
                      'screen': 'paymnt',
                      'CKFARE': CKFARE,
                      'TatkalOpt': TatkalOpt,
                      'submitClicks': '6',
                      'gatewayIDV': 'on',
                      'Submit': '' }

        bank_form = utils.parse_form( bank_page, 'BookTicketForm' )

        for key in bank_dict:
            bank_form[ key ] = bank_dict[ key ]
        
        print 'Selecting bank...',
        print bank_form
        paymnt_page = utils.http_post( bank_form[ '_submit_' ],
                                       utils.urlencode_form( bank_form ),
                                       'application/x-www-form-urlencoded',
                                       bank_form[ '_submit_' ] )
        print 'OK'
                                     
        return paymnt_page
示例#9
0
def get_courses_of_departments(department) -> str:
    return utils.http_post('esquery.tku.edu.tw', '/acad/query_result.asp', {
        'func': 'go',
        'R1': 1,
        'sgn1': '-',
        'dept': department,
        'level': 999,
    }, False)
示例#10
0
def update_user_kw(access_token, userid, name, **kw):
    url = 'https://%s/user/update?' % API_ADDR
    args = {'access_token': access_token}
    url += urlencode(args)
    data = {'userid': userid, 'name': name}
    data = dict(data, **kw)  #合并data和kw两个dict

    #print data #该print为调试接口时用
    return http_post(url, data)
def create_department_kw(access_token, name, parentid, **kw):
    url = 'https://%s/department/create?' % API_ADDR
    args = {'access_token': access_token}
    url += urlencode(args)
    data = {'name': name, 'parentid': parentid}
    data = dict(data, **kw)

    #print data #debug only
    return http_post(url, data)
示例#12
0
def create_user_kw(access_token, userid, name, department, mobile, **kw):
    url = 'https://%s/user/create?' % API_ADDR
    args = {'access_token': access_token}
    url += urlencode(args)
    data = {'name': name, 'department': department, 'mobile': mobile}
    data = dict(data, **kw)  #合并data和kw两个dict

    #print data #该print为调试接口时用
    return http_post(url, data)
示例#13
0
    def check_avail( self, attempts = 5 ):
        
        for option in self.trvl_details[ 'train/class' ]:
            
            trainNo = option.split('/')[0]
            classCode = option.split('/')[1]
            
            if ( trainNo in self.trains ) == False :
                print 'Train number', trainNo, 'is not listed.'
                continue
            
            if self.trains[ trainNo ][ 'clss' ].find( classCode ) == -1:
                print self.trains[ trainNo ][ 'trainName' ], '(' + trainNo + ')', 'does not have class', classCode
                continue
            
            msg = self.session + '&trainTo=true&AVaction=true'
            msg += '&hdnTrnNo=' + trainNo
            msg += '&hdnDay=' + self.trvl_details[ 'date' ].split( '/' )[0]
            msg += '&hdnMonth=' + str(int(self.trvl_details[ 'date' ].split( '/' )[1]))
            msg += '&hdnYear=' + self.trvl_details[ 'date' ].split( '/' )[2]
            msg += '&hdnClasscode=' + classCode
            msg += '&fromStation=' + self.trvl_details[ 'from' ]
            msg += '&toStation=' + self.trvl_details[ 'to' ]
            msg += '&hdnQuota=' + self.trvl_details[ 'quota' ]
            msg += '&service=avail'
        
            att = attempts
            while att > 0:

                print 'Checking availability in', self.trains[ trainNo ][ 'trainName' ], '(' + trainNo + '),', classCode + '...',
                sys.stdout.flush()
                avail = utils.http_post( self.avail_URI + '&ax=' + str( int( time.time() * 1000 ) ),
                                         msg,
                                         'application/x-www-form-urlencoded',
                                         self.planner_form[ '_submit_' ],
                                         True )
                if avail.find( '&' ) == -1:
                    print 'FAILED'
                    att -= 1
                    print avail
                    continue
                
                att    = 0
                status = avail.split('|')[0].split('&')[1].split('<')[0]
                
                print status
                
                if status.find( 'AVAILABLE' ) != -1:
                    return option

            if avail.find( '&' ) == -1:
                print 'Unable to check availability, giving up!'
                sys.exit(0)
            
        print 'None of the options were available, exiting.'
        sys.exit(0)
示例#14
0
    def get_orders_info(self, symbol: str, order_ids: str) -> dict:
        params = {
            'api_key': self.__api_key,
            'symbol': symbol,
            'type': '0',
            'order_id': order_ids
        }
        params['sign'] = build_all_coin_sign(params, self.__secret_key)
        # {'result': True, 'order': [
        #     {'amount': 1046.0, 'deal_amount': 0.0, 'avg_price': 0.0, 'order_id': 60119534, 'create_data': 1517274712768,
        #      'price': 3e-07, 'status': 0, 'symbol': 'oc_btc', 'type': 'buy'},
        #     {'amount': 1046.0, 'deal_amount': 0.0, 'avg_price': 0.0, 'order_id': 60119539, 'create_data': 1517274717502,
        #      'price': 3e-07, 'status': 0, 'symbol': 'oc_btc', 'type': 'buy'}]}
        open_orders = http_post(self.__url +
                                AllCoinPosition.ORDERS_INFO_RESOURCE,
                                params,
                                verify=False)

        params = {
            'api_key': self.__api_key,
            'symbol': symbol,
            'type': '1',
            'order_id': order_ids
        }
        params['sign'] = build_all_coin_sign(params, self.__secret_key)
        close_orders = http_post(self.__url +
                                 AllCoinPosition.ORDERS_INFO_RESOURCE,
                                 params,
                                 verify=False)

        orders = {}
        if close_orders['result']:
            for close_order in close_orders['order']:
                order = AllCoinOrder(close_order)
                orders[order.get_order_id()] = order

        if open_orders['result']:
            for open_order in open_orders['order']:
                if open_order['order_id'] not in orders:
                    order = AllCoinOrder(open_order)
                    orders[order.get_order_id()] = order

        return orders
def create_department(access_token, name, parentid, order=1):
    url = 'https://%s/department/create' % API_ADDR
    args = {'access_token': access_token}
    url += urlencode(args)
    data = {
        'access_token': access_token,
        'name': name,
        'parentid': parentid,
        'order': str(order)
    }
    return http_post(url, data)
示例#16
0
def course_delete(cid=''):
    """
    删除课程
    """
    timestamp = str(int(time.time()*1000))
    params = 'partner=' + partner + \
             '&timestamp=' + timestamp + \
             '&uniqueCourseId=' + cid
    sign = hashlib.md5(params + appkey).hexdigest()
    rs = http_post(host, '/api/course/delete', post, params + '&sign=' + sign, _headers)
    return get_http_result(rs)
示例#17
0
def delete_user_list(access_token, useridlist):
    url = 'https://%s/user/batchdelete?' % API_ADDR
    args = {
        'access_token': access_token
    }
    url += urlencode(args)
    data = {
        'access_token': access_token,
        'useridlist': useridlist
    }
    return http_post(url, data)
示例#18
0
def course_rm_student(cid='', uid=''):
    """
    把学生移除课程
    """
    timestamp = str(int(time.time()*1000))
    params = 'partner=' + partner + \
             '&timestamp=' + timestamp + \
             '&uniqueCourseId=' + cid + \
             '&uniqueUserId=' + uid
    sign = hashlib.md5(params + appkey).hexdigest()
    rs = http_post(host, '/api/course/remove_student', post, params + '&sign=' + sign, _headers)
    return get_http_result(rs)
示例#19
0
    def order(self, order_type, symbol, price, amount):
        # type: (str, str, str, str) -> str
        """

        :param order_type:
        :param symbol:
        :param price:
        :param amount:
        :return:
        """
        params = {
            'api_key': self.__api_key,
            'symbol': symbol,
            'type': order_type,
            'price': price,
            'amount': amount
        }
        params['sign'] = build_all_coin_sign(params, self.__secret_key)
        # {'result': 'true', 'order_id': '59769693'}
        # {'error_code': '10013', 'result': False}
        result = http_post(self.__url + AllCoinTrade.ORDER_RESOURCE,
                           params,
                           verify=False)
        if result['result'] == 'true':
            order_id = result['order_id']
            self.__redis.sadd(
                Constants.REDIS_KEY_ALL_COIN_OPEN_ORDER_IDS_PREFIX + ':' +
                symbol, order_id)
            self.__redis.hmset(
                Constants.REDIS_KEY_ALL_COIN_ORDER_PREFIX + ':' + symbol +
                ':' + order_id, {
                    'order_id': order_id,
                    'order_type': AllCoinHelper.get_order_type(order_type),
                    'symbol': symbol,
                    'order_price': price,
                    'quantity': amount,
                    'filled_quantity': 0.0,
                    'fee': 0.0,
                    'created': time.time(),
                    'status': Constants.ORDER_STATUS_NEW
                })
            trade_pair = extract_symbol(symbol)
            exchange_coin = trade_pair[0]
            base_coin = trade_pair[1]
            if order_type == 'buy':
                base_coin_delta = -1 * float(price) * float(amount)
                self.update_position(base_coin, base_coin_delta)
            else:
                exchange_coin_delta = -1 * float(amount)
                self.update_position(exchange_coin, exchange_coin_delta)
            return order_id
        print(result)
        return None
def update_department(access_token, name, parentid, order, department_id):
    url = 'https://%s/department/update?' % API_ADDR
    args = {'access_token': access_token}
    url += urlencode(args)
    data = {
        'access_token': access_token,
        'id': department_id,
        'name': name,
        'parentid': parentid,
        'order': order
    }
    return http_post(url, data)
示例#21
0
def get_courses_of_week(week: int, period: int) -> str:
    return utils.http_post(
        'esquery.tku.edu.tw', '/acad/query_result.asp', {
            'func': 'go',
            'R1': 4,
            'weekdepts': 'ALL',
            'weekdept': 'ALL',
            'week': week,
            'o1': period,
            'o2': period,
            'weekcheck2': 'yes'
        }, False)
示例#22
0
def update_nickname(uid='', nickname=''):
    """
     更新老师和学生昵称
    """
    timestamp = str(int(time.time()*1000))
    params = 'nickname=' + nickname + \
             '&partner=' + partner + \
             '&timestamp=' + timestamp + \
             '&uniqueUserId=' + uid
    sign = hashlib.md5(params + appkey).hexdigest()
    rs = http_post(host, '/api/user/update/nickname', post, params + '&sign=' + sign, _headers)
    return get_http_result(rs)
示例#23
0
def arrange_slides(cid='', sid=''):
    """
    给课件排课
    """
    timestamp = str(int(time.time()*1000))
    params = 'partner=' + partner + \
             '&timestamp=' + timestamp + \
             '&uniqueCourseId=' + cid + \
             '&slidesUuid=' + sid
    sign = hashlib.md5(params + appkey).hexdigest()
    rs = http_post(host, '/api/course/arrange_slides', post, params + '&sign=' + sign, _headers)
    return get_http_result(rs)
示例#24
0
def course_update_title(cid='', title=''):
    """
    更新课程标题
    """
    timestamp = str(int(time.time()*1000))
    params = 'partner=' + partner + \
             '&timestamp=' + timestamp + \
             '&title=' + title + \
             '&uniqueCourseId=' + cid
    sign = hashlib.md5(params + appkey).hexdigest()
    rs = http_post(host, '/api/update/title', post, params + '&sign=' + sign, _headers)
    return get_http_result(rs)
示例#25
0
def update_avatar(uid='', pic_url=''):
    """
    更新老师和学生头像 api
    """
    timestamp = str(int(time.time()*1000))
    params = 'partner=' + partner + \
             '&picUrl=' + pic_url + \
             '&timestamp=' + timestamp + \
             '&uniqueUserId=' + uid
    sign = hashlib.md5(params + appkey).hexdigest()
    rs = http_post(host, '/api/user/update/avatar', post, params + '&sign=' + sign, _headers)
    return get_http_result(rs)
def create_department(access_token, name, parentid, order=1):
    url = 'https://%s/department/create' % API_ADDR
    args = {
        'access_token': access_token
    }
    url += urlencode(args)
    data = {
        'access_token': access_token,
        'name': name,
        'parentid': parentid,
        'order': str(order)
    }
    return http_post(url, data)
示例#27
0
def course_update_start_time(cid='', start_time='', length='30'):
    """
    更新课程开始时间和时长
    length: 15, 30, 45, 60 ,90 ,120 ,150 ,180
    """
    timestamp = str(int(time.time()*1000))
    params = 'courseLength=' + length + \
             '&partner=' + partner + \
             '&startTime=' + start_time + \
             '&timestamp=' + timestamp + \
             '&uniqueCourseId=' + cid
    sign = hashlib.md5(params + appkey).hexdigest()
    rs = http_post(host, '/api/course/update/startTime', post, params + '&sign=' + sign, _headers)
    return get_http_result(rs)
示例#28
0
def upload_slide(uid, file_rs):
    """
    上传课件
    上传的用户 uniqueUserId,只有老师 和教务能够上传课件
    课件文件, 这个 api 比较特殊,参数加密时 不需要带上 slidesFile; 并且使用文件 流的格式上传
    """
    #TODO upload slide
    timestamp = str(int(time.time()*1000))
    params = 'partner=' + partner + \
             '&timestamp=' + timestamp + \
             '&uniqueUserId=' + uid
    sign = hashlib.md5(params + appkey).hexdigest()
    rs = http_post(host, '/api/course/delete', post, params + '&slidesFile' + file_rs + '&sign=' + sign, _headers)
    return get_http_result(rs)
def update_department(access_token, name, parentid, order, department_id):
    url = 'https://%s/department/update?' % API_ADDR
    args = {
        'access_token': access_token
    }
    url += urlencode(args)
    data = {
        'access_token': access_token,
        'id': department_id,
        'name': name,
        'parentid': parentid,
        'order': order
    }
    return http_post(url, data)
示例#30
0
def student_extend(uid='', valid_period='1'):

    """
    激活或者延长学生有效期
    """
    timestamp = str(int(time.time()*1000))
    params = 'partner=' + partner + \
             '&timestamp=' + timestamp + \
             '&uniqueUserId=' + uid + \
             '&validPeriodType=' + valid_period

    sign = hashlib.md5(params + appkey).hexdigest()
    rs = http_post(host, '/api/student/extend', post, params + '&sign=' + sign, _headers)
    return get_http_result(rs)
def update_department(access_token,
                      departmentid,
                      name=None,
                      parentid=None,
                      order=None,
                      createDeptGroup=None,
                      deptHiding=None,
                      deptPermits=None,
                      userPermits=None,
                      outerDept=None,
                      outerPermitDepts=None,
                      outerPermitUsers=None,
                      autoAddUser=None,
                      deptManagerUserList=None,
                      orgDeptOwner=None):
    url = 'https://%s/department/update?' % API_ADDR
    args = {'access_token': access_token}
    url += urlencode(args)
    data = {'id': departmentid}

    if name != None:
        data['name'] = name
    if parentid != None:
        data['parentid'] = parentid
    if order != None:
        data['order'] = order
    if createDeptGroup != None:
        data['createDeptGroup'] = createDeptGroup
    if deptHiding != None:
        data['deptHiding'] = deptHiding
    if deptPermits != None:
        data['deptPermits'] = deptPermits
    if userPermits != None:
        data['userPermits'] = userPermits
    if outerDept != None:
        data['outerDept'] = outerDept
    if outerPermitDepts != None:
        data['outerPermitDepts'] = outerPermitDepts
    if outerPermitUsers != None:
        data['outerPermitUsers'] = outerPermitUsers
    if autoAddUser != None:
        data['autoAddUser'] = autoAddUser
    if deptManagerUserList != None:
        data['deptManagerUserList'] = deptManagerUserList
    if orgDeptOwner != None:
        data['orgDeptOwner'] = orgDeptOwner

    #print data #debug only
    return http_post(url, data)
示例#32
0
def create_or_update_user(access_token, userid, name, department, position, mobile, email, extattr):
    url = "https://%s/user/create?" % API_ADDR
    args = {"access_token": access_token}
    url += urlencode(args)
    data = {
        "access_token": access_token,
        "userid": userid,
        "name": name,
        "department": department,
        "position": position,
        "mobile": mobile,
        "email": email,
        "extattr": extattr,
    }
    return http_post(url, data)
示例#33
0
def teacher_create(uname='', pw='', nickname=''):
    """创建老师"""
    timestamp = str(int(time.time()*1000))
    #TODO TEST
    if not isinstance(nickname, unicode):
        nickname = nickname.decode('utf8').encode('utf8')
    params = 'nickname=' + nickname + \
             '&partner=' + partner + \
             '&passwd=' + pw + \
             '&timestamp=' + timestamp + \
             '&username=' + uname
    sign = hashlib.md5(params + appkey).hexdigest()
    print params + "&sign=" + sign
    rs = http_post(host, "/api/teacher/create", post, params + "&sign=" + sign, headers=_headers)
    return get_http_result(rs)
示例#34
0
def course_create(title='', c_type='1', length='30', start_time=''):
    """
    创建课程
    length: 课程时长,单位分钟, 可选值为 15, 30, 45, 60 ,90 ,120 ,150 ,180
    start_time: 课程开始时间,格式 2013-10-27 11:11
    """
    timestamp = str(int(time.time()*1000))
    params = 'courseLength=' + length + \
             '&courseType=' + c_type + \
             '&partner=' + partner + \
             '&startTime=' + start_time + \
             '&timestamp=' + timestamp + \
             '&title=' + title
    sign = hashlib.md5(params + appkey).hexdigest()
    rs = http_post(host, '/api/course/create', post, params + '&sign=' + sign, _headers)
    return get_http_result(rs)
示例#35
0
def update_user(access_token,
                userid,
                name,
                department=None,
                mobile=None,
                email=None,
                position=None,
                jobnumber=None,
                extattr=None,
                orderInDepts=None,
                tel=None,
                workPlace=None,
                remark=None,
                isHide=None,
                isSenior=None):
    url = 'https://%s/user/update?' % API_ADDR
    args = {'access_token': access_token}
    url += urlencode(args)
    data = {'userid': userid, 'name': name}

    if department != None:
        data['department'] = department
    if mobile != None:
        data['mobile'] = mobile
    if email != None:
        data['email'] = email
    if position != None:
        data['position'] = position
    if jobnumber != None:
        data['jobnumber'] = jobnumber
    if extattr != None:
        data['extattr'] = extattr
    if orderInDepts != None:
        data['orderInDepts'] = orderInDepts
    if tel != None:
        data['tel'] = tel
    if workPlace != None:
        data['workPlace'] = workPlace
    if remark != None:
        data['remark'] = remark
    if isHide != None:
        data['isHide'] = isHide
    if isSenior != None:
        data['isSenior'] = isSenior

    #print data #该print为调试接口时用
    return http_post(url, data)
示例#36
0
def send(access_token, touser, toparty, send_type, content, agentid=3873399):
    """
    params:
        content: send_type对应的content,是一个字典,具体type的字段属性看文档
    """
    url = "https://%s/message/send?" % API_ADDR
    args = {"access_token": access_token}
    url += urlencode(args)
    data = {
        "access_token": access_token,
        "touser": touser,
        "toparty": toparty,
        "agentid": agentid,
        "msgtype": send_type,
        send_type: content
    }
    return http_post(url, data)
示例#37
0
def student_create(uname='', nickname='', pw='', valid_period='1', pic_url='', email='', tel=''):
    """
    创建学生
    valid_period: 学生有效期类型, 可选值为 1、7、 15、30、60、90、180、360
    """
    timestamp = str(int(time.time()*1000))
    if not isinstance(nickname, unicode):
        nickname = nickname.decode('utf8').encode('utf8')
    params = 'nickname='+nickname + \
             '&partner=' + partner + \
             '&passwd=' + pw + \
             '&timestamp=' + timestamp + \
             '&username='******'&validPeriodType=' + valid_period
    sign = hashlib.md5(params + appkey).hexdigest()
    rs = http_post(host, "/api/student/create", post, params + "&sign=" + sign, headers=_headers)
    return get_http_result(rs)
示例#38
0
def create_or_update_user(access_token, userid, name, department,
                          position, mobile, email, extattr):
    url = 'https://%s/user/create?' % API_ADDR
    args = {
        'access_token': access_token
    }
    url += urlencode(args)
    data = {
        'access_token': access_token,
        'userid': userid,
        'name': name,
        'department': department,
        'position': position,
        'mobile': mobile,
        'email': email,
        'extattr': extattr
    }
    return http_post(url, data)
示例#39
0
    def submit_confirm_form( self, confirm_page ):
    
        confirm_dict = { 'submitClicks': '5',
                         'screen'      : 'bankpage' }
                         
        confirm_form = utils.parse_form( confirm_page, 'BookTicketForm' )

        for key in confirm_dict:
            confirm_form[ key ] = confirm_dict[ key ]
        
        print 'Confirming booking details...',
        sys.stdout.flush()
        bank_page     = utils.http_post( confirm_form[ '_submit_' ],
                                        utils.urlencode_form( confirm_form ),
                                        'application/x-www-form-urlencoded',
                                        self.booking_URI )
        print 'OK'
        return bank_page
示例#40
0
def send(access_token, touser, toparty, send_type, content, agentid):
    """
    参数说明
        send_type是一个string,可为text/image/voice/file/link/oa/markdown/action_card中之一
        content是一个dict,最终由http_post函数中的json.dump封装为json格式
        agentid是应用的id号
    """
    url = "https://%s/message/send?" % API_ADDR
    args = {
        "access_token": access_token
    }
    url += urlencode(args)
    data = {
        "touser": touser,
        "toparty": toparty,
        "agentid": agentid,
        "msgtype": send_type,
        send_type: content
    }
    return http_post(url, data)
示例#41
0
    def login( self, attempts = 1 ):

        if attempts <= 0:
            print 'Unable to login, exiting'
            sys.exit( 0 )
        
        login_dict = { 'userName' : self.login_details[ 'username' ],
                       'password' : self.login_details[ 'password' ],
                       'forwordType' : 'planner' }
        
        #print 'Requesting login page...',
        #sys.stdout.flush()
        #l_form = utils.http_get( self.login_URI )
        #print 'OK'
        
        #login_form   = utils.parse_form( l_form, 'LoginForm', [] )
        #print login_form
        
        login_form = {}
        for key in login_dict:
            login_form[ key ] = login_dict[ key ]
            
        print 'Logging in as', login_form[ 'userName' ] + '...',# url, page,#l_msg
        sys.stdout.flush()

        ret = utils.http_post( self.login_URI,
                               utils.urlencode_form( login_form ),
                               'application/x-www-form-urlencoded' )
                
        if ret.find( 'BookTicketForm' ) != -1:
            print 'OK'
        elif ret.find( 'Invalid Username or Password' ) != -1:
            print 'Invalid Username or Password.'
        else:
            print 'FAILED'
            self.login( attempts - 1 )

        self.session    = utils.parse_form( ret, 'BookTicketForm' )[ '_submit_' ].split( '?' )[1]
        self.avail_URI += self.session + '&ax=' + str( int( time.time() * 1000 ) )

        return ret
示例#42
0
def get_wxcode(request):
    data = {'ret_code': 0, 'ret_data': {}}
    #try:
    if request.method == 'POST':
        req_data = json.loads(request.body)
    else:
        req_data = request.GET

    access_token = utils.get_and_update_access_token()
    if access_token is not None:
        scene = req_data.get('scene', '-1')
        if 'path' in req_data:
            _data = {'scene': scene, 'path': req_data['path']}
        else:
            _data = {'scene': scene}

        print _data

        wxcode_content = utils.http_post(config.WXACODE_URL + access_token,
                                         _data,
                                         decode_data=False)
        if len(wxcode_content) < 1024:
            data['msg'] = 'data format error.'
        else:
            filename = str(uuid.uuid1()) + ".jpeg"
            save_path = '/'.join([config.IMAGE_ROOT, filename])
            with open(save_path, 'wb') as f_wxcode:
                f_wxcode.write(wxcode_content)
                data['ret_code'] = 1
                data['ret_data']['wxcode'] = config.DATA_URL + filename
    else:
        data['msg'] = 'fetch access_token or data error.'

    #except Exception as err:
    #    data['msg'] = 'program or internet error.'
    #    logger.error(str(err))

    res = json.dumps(data, ensure_ascii=False)
    return HttpResponse(res, content_type="application/json")
示例#43
0
    def submit_option( self, option ):
        
        trainNo   = option.split('/')[0]
        classCode = option.split('/')[1]
        keys      = [ 'trainNo',
                      'trainName',
                      'trainType',
                      'departure',
                      'arrival',
                      'boardPoint',
                      'destStation',
                      'runsOn',
                      'notStrTrn' ]
        
        book_form  = self.planner_form
        book_form[ 'classCode' ] = classCode
        
        for key in keys:
            book_form[ key ] = self.trains[ trainNo ][ key ]
            
        book_form[ 'submitClicks' ] = '2'
        book_form[ 'screen' ]       = 'bookTicket'
        book_form[ 'counterAvail' ] = '0'

        #book_form += '&userType=0'
        #book_form += '&dayfravail=' + self.trvl_details[ 'date' ].split('/')[0]
        #book_form += '&monthfravail=' + self.trvl_details[ 'date' ].split('/')[1]
        #book_form += '&yearfravail=' + self.trvl_details[ 'date' ].split('/')[2]

        print 'Requesting booking page...',
        sys.stdout.flush()
        booking_page = utils.http_post( self.booking_URI,
                                        utils.urlencode_form( book_form ),
                                        'application/x-www-form-urlencoded',
                                        self.planner_URI )
        print 'OK'
        return booking_page
示例#44
0
 def get_page(category=''):
     return utils.http_post('esquery.tku.edu.tw', '/acad/query.asp',
                            {'other': category}, False)
示例#45
0
def delete_user_list(access_token, useridlist):
    url = "https://%s/user/batchdelete?" % API_ADDR
    args = {"access_token": access_token}
    url += urlencode(args)
    data = {"access_token": access_token, "useridlist": useridlist}
    return http_post(url, data)
示例#46
0
 def get_page(college=''):
     return utils.http_post('esquery.tku.edu.tw', '/acad/query.asp',
                            {'depts': college}, False)