Пример #1
0
    def process_order_from_spread(args):
        """静态方法 订单完成后处理分享链接相关

		@param[in] order_id 订单id
		@param[in] webapp_user 当前下单用户
		"""
        order_id = args['order_id']
        webapp_user = args['webapp_user']

        mall_order_from_shared = mall_models.MallOrderFromSharedRecord.select(
        ).dj_where(order_id=order_id).first()
        if mall_order_from_shared:
            shared_url = mall_order_from_shared.url
            fmt = mall_order_from_shared.fmt

            if shared_url and fmt:
                try:
                    followed_member = member_models.Member.get(token=fmt)
                    member_models.MemberSharedUrlInfo.update(
                        leadto_buy_count=member_models.MemberSharedUrlInfo.
                        leadto_buy_count + 1).dj_where(
                            shared_url=shared_url, ).execute()

                    mall_order_from_shared.is_updated = True
                    mall_order_from_shared.save()
                except:
                    notify_message = u"process_order_from_spread cause:\n{}, fmt:{}".format(
                        unicode_full_stack(), fmt)
                    watchdog.error(notify_message)
                    print notify_message
Пример #2
0
def handle(request, webapp_id):
	global message_pipeline

	if not message_pipeline:
		from weixin.message.message_pipeline import MessagePipeline
		message_pipeline = MessagePipeline()

	if 'echostr' in request.GET:
		if is_valid_request(request, webapp_id):
			return HttpResponse(request.GET['echostr'])
		else:
			return HttpResponse('')
	else:
		#通过微信来的数据kkj
		try:
			content = message_pipeline.handle(request, webapp_id)
		except:
			notify_message = u"进行消息处理失败,webapp_id:{} cause:\n{}".format(webapp_id, unicode_full_stack())
			watchdog_fatal(notify_message)
			content =None

		if content is None or len(content) == 0:
			return HttpResponse('')
		else:
			return HttpResponse(content, mimetype="application/xml")
Пример #3
0
def process_payment_with_shared_info(request):
	"""
	购买完成后进行分享链接的相关处理
	
	如果请求信息中没有相应的分享链接信息,那么不进行任何处理,。
	否则该分享链接带来的购买量+1

	"""
	member_shared_url_info = get_followed_member_shared_url_info(request)

	if not member_shared_url_info:
		return

	try:
		from django.db import connection, transaction
		cursor = connection.cursor()
		cursor.execute('update member_shared_url_info set leadto_buy_count=leadto_buy_count+1 where id = %d' % member_shared_url_info.id)
		transaction.commit_unless_managed()

		#计算成功后清除请求中携带的分享链接信息
		remove_shared_info(request)
	except:
		notify_message = u"更新分享链接带来的购买量失败,分享链接id:{}, cause:\n{}".format(
			member_shared_url_info.id, unicode_full_stack()
		)
		watchdog_warning(notify_message)
Пример #4
0
    def api_post(request):
        """
		编辑分组名称
		"""
        if 'category_id' in request.POST and 'category_name' in request.POST:
            # 只能删除本webapp下的分组
            webapp_id = request.user_profile.webapp_id
            category_name = request.POST['category_name']

            # 检查分类名是否合法
            (is_valid,
             response) = FansCategory.check_category_name(category_name)
            if is_valid:
                try:
                    category_id = request.POST['category_id']
                    # 确保只能删除本webapp账号的分类才使用 (webapp_id, id) 查询
                    category = FanCategory.objects.get(webapp_id=webapp_id,
                                                       id=category_id)
                    category.name = category_name
                    category.save()
                    response = create_response(200).get_response()
                except:
                    response = create_response(500)
                    response.errMsg = u'分类名更新失败(错误的ID?)'
                    response.innerErrMsg = unicode_full_stack()
                    response = response.get_response()
        else:
            response = create_response(400)
            response.errMsg = u"需要指定category_id和category_name"
            response = response.get_response()
        return response
Пример #5
0
def send_coupon_expired_remind(request, args):
    """
    提前36小时给即将到期的优惠券,发消息
    """
    user_ids = []
    for component in ComponentAuthedAppid.objects.all():
        user_ids.append(component.user_id)

    now = datetime.now()
    expired_time_g = datetime.now() + timedelta(hours=36)
    expired_time_l = datetime.now() + timedelta(hours=37)

    coupons = promotion_models.Coupon.objects.filter(
        owner_id__in=user_ids,
        expired_time__gte=expired_time_g,
        expired_time__lt=expired_time_l,
        status=promotion_models.COUPON_STATUS_UNUSED
        )

    for coupon in coupons:
        try:
            model_data = {
                "coupon_store": u'全部可用',
                "coupon_rule": u'不限'
            }
            if coupon.coupon_rule.limit_product:
                model_data["coupon_store"] = u'单个商品可用'
            if coupon.coupon_rule.valid_restrictions > -1:
                model_data["coupon_rule"] = "每笔订单满%s元即可使用本券" % str(coupon.coupon_rule.valid_restrictions)
            template_message_api.send_weixin_template_message(coupon.owner_id, coupon.member_id, model_data, template_message_model.COUPON_EXPIRED_REMIND)
        except:
            alert_message = u"ship_order 发送模板消息失败, cause:\n{}".format(unicode_full_stack())
            watchdog_warning(alert_message)

    return u"Succeed in sending a hint message to members who have a coupon will expire!"
Пример #6
0
def build_system_exception_response():
	response_dict = {}
	response_dict['code'] = 995995
	response_dict['msg'] = u'系统自身异常'
	response_dict['detail'] = unicode_full_stack()
	
	return AliPayErrorResponse(response_dict)
Пример #7
0
    def api_delete(request):
        """
		删除粉丝分组
		"""
        if 'category_id' in request.POST:
            # 只能删除本webapp下的分组
            webapp_id = request.user_profile.webapp_id
            try:
                category_id = int(request.POST['category_id'])
                if category_id > 0:
                    FanCategory.objects.filter(webapp_id=webapp_id,
                                               id=category_id).delete()
                    response = create_response(200).get_response()
                else:
                    response = create_response(500)
                    response.errMsg = u'无法删除此分组'
                    response = response.get_response()
            except:
                response = create_response(500)
                response.errMsg = u'删除分组失败'
                response.innerErrMsg = unicode_full_stack()
                response = response.get_response()
        else:
            response = create_response(400)
            response.errMsg = u"请指定分组ID"
            response = response.get_response()
        return response
Пример #8
0
def upload_image_to_upyun(file_path, upyun_path):
    if settings.MODE == 'test':
        BUCKETNAME = 'testweapp'
    else:
        BUCKETNAME = 'weappimg'
    USERNAME = '******'
    PASSWORD = '******'

    if settings.MODE == 'develop':
        return upyun_path

    up = upyun.UpYun(BUCKETNAME,
                     USERNAME,
                     PASSWORD,
                     timeout=300,
                     endpoint=upyun.ED_AUTO)
    try:
        with open(file_path, 'rb') as f:
            try:
                res = up.put(upyun_path, f)
            except:
                res = up.put(upyun_path, f)

            return image_path % (BUCKETNAME, upyun_path)
    except:
        notify_message = u"upload_image_to_upyun error {}".format(
            unicode_full_stack())
        print notify_message
        return upyun_path
    return None
Пример #9
0
def pay_order(request):
	order_to_pay = None	
	profile = request.user_profile
	webapp_user = request.webapp_user

	order_id = request.POST.get('order_id', None)
	if order_id is None:
		response = create_response(400)
		response.errMsg = u'订单不存在'
		return response.get_response()

	try:
		order_to_pay = Order.objects.get(id=order_id)
	except:
		response = create_response(500)
		response.errMsg = u'获取订单失败'
		response.innerErrMsg = full_stack()
		return response.get_response()
	
	interface_id = int(request.POST.get('interface_id', 0))
	pay_interface = PayInterface.objects.get(id=interface_id)
	pay_url = shihuazhiye_util.pay(pay_interface, order_to_pay, request.webapp_owner_id)
	if pay_url:
		response = create_response(200)
		response.data.url = pay_url
	else:
		response = create_response(500)
		response.errMsg = u'支付失败'
		stack = unicode_full_stack()
		response.innerErrMsg = full_stack()
	
	return response.get_response()
Пример #10
0
def get_integral_log(request):
    # 1. 解析会员信息
    member_id = request.GET.get('member_id', '')
    try:
        if not hasattr(request, 'member') or request.member is None:
            member = Member.objects.get(id=member_id)
        else:
            member = request.member
        MemberIntegralLog.update_follower_member_token(member)
    except:
        notify_msg = u"webapp,积分日志, cause:\n{}".format(unicode_full_stack())
        watchdog_error(notify_msg)
        raise Http404('不存在该会员')

    # 2. 获取与该会员对应的积分日志列表(按日期倒叙)
    member_integral_logs = list(
        MemberIntegralLog.objects.filter(
            member=member).order_by('-created_at'))

    # 3. 组织积分日志结构,将同一天好友奖励的积分日志在一条记录中显示,并且显示好友头像
    organized_integral_log_list = __get_organized_integral_log_list(
        member_integral_logs)

    # 4. 将组织后的日志信息,渲染到integral_log.html页面中
    c = RequestContext(
        request, {
            'is_hide_weixin_option_menu': True,
            'page_title': u'积分日志',
            'member_integral_logs': organized_integral_log_list,
            'member': member
        })
    return render_to_response('%s/integral_log.html' % request.template_dir, c)
Пример #11
0
    def _handle_keyword(self, context, from_weixin_user, is_from_simulator):
        # request = context.request
        message = context.message
        user_profile = context.user_profile

        response = None

        #获取匹配用户输入的自动答复规则
        if hasattr(message, 'content') is False:
            message.content = ''
        #response_rule = qa_util.find_answer_for(user_profile.webapp_id, message.content.lower())
        #从缓存中获取数据  duhao  2015-03-09
        response_rule = cache_util.find_answer_from_cache_for(
            user_profile.webapp_id, message.content.lower())
        if (response_rule is None) or (not response_rule.is_active):
            response_rule, response = self._build_response_without_auto_response_rule(
                user_profile, message, is_from_simulator)
        else:
            response = self._build_response_with_auto_response_rule(
                user_profile, message, response_rule, is_from_simulator)

        try:
            self._process_recorde_message(context, response_rule,
                                          from_weixin_user, is_from_simulator)
        except:
            notify_message = u"_process_recorde_message, cause:\n{}".format(
                unicode_full_stack())
            watchdog_error(notify_message)

        return response
Пример #12
0
def get_brand_value(webapp_id, date_str):
    """
	获取品牌价值的接口(如果数据库中有非今日的缓存值,则取出;否则计算并存入数据库)

	@retval brand_value(整型,单位元)
	"""
    cached, created = BrandValueHistory.objects.get_or_create(
        webapp_id=webapp_id, value_date=date_str)
    today = util_dateutil.date2string(util_dateutil.now())

    # 如果有缓存的数据,从数据库取数据
    #print("date_str: {}, count: {}".format(date_str, cached.count()))
    if date_str != today and not created:
        brand_value = int(cached.value)
    else:
        brand_value = 0
        try:
            brand_value = compute_brand_value(webapp_id, date_str)
            #print("date_str: {}, value: {}".format(date_str, brand_value))
            #BrandValueHistory.objects.create(
            #	webapp_id=webapp_id,
            #	value_date=date_str,
            #	value=brand_value)
            cached.webapp_id = webapp_id
            cached.value_date = date_str
            cached.value = brand_value
            cached.save()
            brand_value = int(brand_value)
        except:
            notify_msg = u"存微品牌数据失败, cause:\n{}".format(unicode_full_stack())
            watchdog_error(notify_msg)
    return brand_value
Пример #13
0
	def api_post(request):
		label_id = request.POST.get('label_id', -1)
		name = request.POST.get('name', '')
		try:
			models.LabelGroup.objects.filter(id=int(label_id)).update(
				name= name
			)

			response = create_response(200)
			relation = models.LabelGroupRelation.objects.filter(label_group_id=label_id).first()
			if relation:
				weapp_label_group_id = relation.weapp_label_group_id

				params = {
					'owner_id': PRODUCT_POOL_OWNER_ID,
					'name': name,
					'product_label_group_id': weapp_label_group_id
				}
				resp, resp_data = sync_util.sync_zeus(params=params, resource='mall.product_label_group', method='post')
				if not resp:

					response = create_response(500)

		except:
			response = create_response(500)
			msg = unicode_full_stack()
			watchdog.error(msg)
		return response.get_response()
Пример #14
0
def get_social_account_by_member_id(member_id):
	try:
		return MemberHasSocialAccount.objects.filter(member_id=member_id)[0].account
	except:
		error_msg = u"get_social_account:\n{}, {}".format(member_id, unicode_full_stack())
		watchdog_error(error_msg)
		return None
Пример #15
0
    def api_get(request):
        """
		响应GET
		"""
        try:
            cur_color = random.choice(COLOR_LIST)
            captcha_image = captcha(
                drawings=[
                    background('#FFFFFF'),
                    text(fonts=['ARLRDBD.TTF'],
                         font_sizes=[30],
                         drawings=[offset(dx_factor=0.1, dy_factor=0.1)],
                         color=cur_color,
                         squeeze_factor=1.2),
                    curve(cur_color),
                    noise(),
                    # smooth()
                ],
                width=120,
                height=45)
            code_dict = init_check_code()
            rand_list = code_dict['clist']
            rand_str = code_dict['cstr']
            image = captcha_image(rand_list)
            # 将验证码转换成小写,并保存到session中
            request.session['checkcode'] = rand_str.lower()
            buf = StringIO.StringIO()
            image.save(buf, 'png')
            return HttpResponse(buf.getvalue(), 'image/png')
        except:
            error_msg = u"生成扫码抽奖验证码失败, cause:\n{}".format(unicode_full_stack())
            watchdog_error(error_msg)
            return HttpResponse('')
Пример #16
0
    def send_message(self):
        try:
            message = self._get_message_dict()
            if message is None:
                return False, u"message dict错误"

            mpuser_access_token = self._get_mpuser_access_token(self.user)
            weixin_api = get_weixin_api(mpuser_access_token)
            result = weixin_api.send_template_message(message, True)
            return True, result
        except:
            notify_message = u"shengjing发送模板消息异常, cause:\n{}".format(
                unicode_full_stack())
            watchdog_warning(notify_message,
                             self.shengjing_params.WATCHDOG_TYPE_SHENGJING)
            return False, unicode_full_stack()
Пример #17
0
    def api_get(request):
        """
		购买过会员分析
		"""
        webapp_id = request.user_profile.webapp_id
        bought_fans_count = Member.objects.filter(webapp_id=webapp_id,
                                                  is_for_test=False,
                                                  pay_times__gt=0).count()
        not_bought_fans_count = Member.objects.filter(webapp_id=webapp_id,
                                                      is_for_test=False,
                                                      pay_times=0).count()
        tooltip = {
            'trigger': 'item',
            'formatter': '{b}</br>人数:{c}</br>占比:{d}%',
            'backgroundColor': '#FFFFFF',
            'textStyle': {
                'color': '#363636'
            },
            'borderWidth': 1,
            'borderColor': '#363636'
        }
        try:
            return create_pie_chart_response('', {
                "购买过的会员": bought_fans_count,
                "未购买过的会员": not_bought_fans_count
            }, tooltip)
        except:
            if settings.DEBUG:
                raise
            else:
                response = create_response(500)
                response.innerErrMsg = unicode_full_stack()
                return response.get_response()
Пример #18
0
    def supplier_name(self):
        try:
            # 非微众系列商家
            if not self.context['webapp_owner'].user_profile.webapp_type:
                return ''
            # 手动添加的供货商
            if self.supplier:
                supplier = account_model.UserProfile.select().dj_where(
                    user_id=self.supplier).first()
                if supplier:
                    return supplier.store_name
                else:
                    supplier = mall_models.Supplier.select().dj_where(
                        id=self.supplier).first()
                    if supplier:
                        print 'still old supplier ........................', self.supplier
                        return supplier.name

            # 同步的供货商
            relation = mall_models.WeizoomHasMallProductRelation.select(
            ).dj_where(weizoom_product_id=self.id).first()
            if relation:
                supplier_name = account_model.UserProfile.select().dj_where(
                    user_id=relation.mall_id).first().store_name
            else:
                supplier_name = ''

            return supplier_name
        except:
            watchdog.alert(unicode_full_stack())
            return ''
Пример #19
0
def increase_father_member_integral_by_child_member_buyed(order, webapp_id):
    webapp_user_id = order.webapp_user_id
    integral_settings = IntegralStrategySttings.objects.filter(
        webapp_id=webapp_id)
    member = WebAppUser.get_member_by_webapp_user_id(webapp_user_id)
    if integral_settings.count() > 0 and member:
        father_member = MemberFollowRelation.get_father_member(member.id)
        if father_member and integral_settings[
                0].buy_via_offline_increase_count_for_author != 0:
            increase_member_integral(
                father_member,
                integral_settings[0].buy_via_offline_increase_count_for_author,
                BUY_INCREST_COUNT_FOR_FATHER)
            if order.final_price > 0 and integral_settings[
                    0].buy_via_offline_increase_count_percentage_for_author:
                try:
                    buy_via_offline_increase_count_percentage_for_author = float(
                        integral_settings[0].
                        buy_via_offline_increase_count_percentage_for_author)
                    integral_count = int(
                        order.final_price *
                        buy_via_offline_increase_count_percentage_for_author)
                    increase_member_integral(father_member, integral_count,
                                             BUY_INCREST_COUNT_FOR_FATHER)
                except:
                    notify_message = u"increase_father_member_integral_by_child_member_buyed cause:\n{}".format(
                        unicode_full_stack())
                    watchdog_error(notify_message)
Пример #20
0
def get_courses(request):
	count = request.GET.get('count', 10)
	page = request.GET.get('page', 1)
	webapp_owner_id = request.GET.get('webapp_owner_id', 1)
	try:
		courses, has_next = crm_api_views.list_course(page, 10000, 60)
	except:
		watchdog_error(u'crm_api_views.list_course 错误!!{}'.format(unicode_full_stack()))
		response = create_response(500)
		response.errMsg = u'获取数据失败'
		return response.get_response()
	
	shengjing_courses = ShengjingCourseRelation.objects.filter(owner_id=webapp_owner_id)
	shengjing_course_id2course = dict([(c.course_id, c) for c in shengjing_courses])
	shengjing_course_id2config = dict([(course.course_id, course.config)for course in shengjing_courses])
	cur_courses = []
	for c in courses:
		if c['id'] in shengjing_course_id2course:
			c['cover_pic_url'] = shengjing_course_id2config[c['id']].course_cover_pic_url
			c['introduction'] = shengjing_course_id2config[c['id']].introduction
			cur_courses.append(c)
	response = create_response(200)
	response.data.items = cur_courses
	response.data.pageinfo.has_next = has_next
	
	return response.get_response()
Пример #21
0
def update_user_by_agent(request):
    username = request.POST.get('un', None)
    store_name = request.POST.get('stn', None)
    key = request.POST.get('key', None)
    settlement_period = request.POST.get('sp', None)
    is_formal = True if request.POST.get('at', 'formal') == 'formal' else False

    if KEY != key:
        response = create_response(INVALID_KEY_ERROR_CODE)
        response.errMsg = u'非法的key'
        return response.get_response()

    exist_users = User.objects.filter(username=username)
    if exist_users.count() == 0:
        response = create_response(400)
        response.errMsg = u'该用户不存在'
        return response.get_response()

    to_operate_user = exist_users[0]
    try:
        user_profile = UserProfile.objects.get(user=to_operate_user)
        user_profile.store_name = store_name
        user_profile.is_formal = is_formal
        if settlement_period:
            user_profile.settlement_period = int(settlement_period)
        user_profile.save()

        response = create_response(200)
    except:
        response = create_response(500)
        response.errMsg = u'系统繁忙,请稍后重试'
        response.innerErrMsg = unicode_full_stack()

    return response.get_response()
Пример #22
0
    def put(args):
        """
		@warning: 对外网开放的支付接口,只接受从h5支付方式列表发起的货到付款,高风险,改动需慎重
		"""

        webapp_user = args['webapp_user']
        webapp_owner = args['webapp_owner']

        order_id = args['order_id'].split('-')[0]
        pay_interface_type = int(args['pay_interface_type'])

        # 此接口只可使用货到付款

        if pay_interface_type != mall_models.PAY_INTERFACE_COD:
            watchdog.alert('货到付款接口被异常调用,woid:%s,webapp_user_id:%s',
                           (webapp_owner.id, webapp_user.id))
            return 500, {}
        order = Order.from_id({
            'webapp_owner': webapp_owner,
            'webapp_user': webapp_user,
            'order_id': order_id
        })
        try:
            is_success, msg = order.pay(
                pay_interface_type=mall_models.PAY_INTERFACE_COD)
        except:
            is_success = False
            msg = unicode_full_stack()
            watchdog.alert(msg)
        return {
            'order_id': args['order_id'],
            'is_success': is_success,
        }
Пример #23
0
def update_member_source(request, args):
    """
	更新用户来源(?)
	"""
    member = member_info_util.get_request_member(request)
    if member is None:
        return None

    if member.source == -1:
        followed_member_token = member_info_util.get_followed_member_token(
            request)
        if followed_member_token:
            followed_member = member_info_util.get_member_by_member_token(
                followed_member_token)
            if followed_member and member and member.id != followed_member.id and followed_member.webapp_id == request.app.appid:
                member_models.Member.objects.filter(id=member.id).update(
                    source=member_models.SOURCE_BY_URL)
                try:
                    shared_url_digest = request.COOKIES.get(
                        member_settings.FOLLOWED_MEMBER_SHARED_URL_SESSION_KEY,
                        None)
                    if shared_url_digest:
                        integral.increase_shared_url_followers(
                            followed_member, shared_url_digest)
                except:
                    notify_message = u"MemberSouceMiddleware error, cause:\n{}".format(
                        unicode_full_stack())
                    watchdog_error(notify_message)
            else:
                member_models.Member.objects.filter(id=member.id).update(
                    source=member_models.SOURCE_SELF_SUB)
        else:
            member_models.Member.objects.filter(id=member.id).update(
                source=member_models.SOURCE_SELF_SUB)
Пример #24
0
def create_authorized_user_from_other_site(request):
    username = request.GET.get('un', None)
    password = request.GET.get('pw', None)
    logout_redirect_to = request.GET.get('logout_redirect_to', None)

    if (username is None) or (password is None):
        response = create_response(400)
    else:
        user = auth.authenticate(username=username, password=password)

        if user is not None:
            try:
                UserProfile.objects.filter(user=user).update(
                    logout_redirect_to=logout_redirect_to)
            except:
                error_msg = u"更新user('{}')的logout_redirect_to('{}')失败, cause:\n{}"\
                 .format(username, logout_redirect_to, unicode_full_stack())
                watchdog_error(error_msg, user_id=user.id)

            response = create_response(200)
            response.token = get_token_for_logined_user(user)
        else:
            response = create_response(400)

    return response.get_jsonp_response(request)
Пример #25
0
 def api_delete(request):
     value_id = request.POST.get('value_id', 0)
     response = create_response(500)
     try:
         if value_id != 0:
             models.ProductModelPropertyValue.objects.filter(
                 id=value_id).delete()
             response = create_response(200)
             relation = models.ProductModelPropertyValueRelation.objects.filter(
                 property_value_id=value_id).first()
             if relation:
                 params = {
                     'id': relation.weapp_property_value_id,
                 }
                 resp = Resource.use(ZEUS_SERVICE_NAME,
                                     EAGLET_CLIENT_ZEUS_HOST).delete({
                                         'resource':
                                         'mall.model_property_value',
                                         'data':
                                         params
                                     })
                 if not resp or not resp.get('code') == 200:
                     response = create_response(500)
     except:
         msg = unicode_full_stack()
         response.innerErrMsg = msg
         watchdog.error(msg)
     return response.get_response()
Пример #26
0
def get_templates(user):
    """
	从微信获取商家在公众号中配置的所有模板消息
	@param owner_id:
	@return:
	"""
    mpuser_access_token = _get_mpuser_access_token(user)
    if mpuser_access_token:
        weixin_api = get_weixin_api(mpuser_access_token)
        try:
            result = weixin_api.get_all_template_messages(True)
            template_list = result['template_list']
            user_update_list = []
            for t in template_list:
                user_update_list.append(
                    UserHasTemplateMessages(
                        owner_id=user.id,
                        template_id=t['template_id'],
                        title=t['title'],
                        primary_industry=t['primary_industry'],
                        deputy_industry=t['deputy_industry'],
                        content=t['content']))
            UserHasTemplateMessages.objects(owner_id=user.id).delete()
            UserHasTemplateMessages.objects.insert(user_update_list)
            print result, 'asdfsgsf'
        except Exception, e:
            print e
            notify_message = u"获取模板列表异常, cause:\n{}".format(
                unicode_full_stack())
            watchdog_warning(notify_message)
Пример #27
0
def update_binded_mpuser(request):
    try:
        mpuser = WeixinMpUser.objects.filter(
            id=int(request.POST['mpid'])).update(
                # username = request.POST['username'].strip(),
                is_service=True
                if request.POST['is_service'] == 'true' else False,
                is_certified=True
                if request.POST['is_certified'] == 'true' else False,
                aeskey=request.POST.get('aeskey', '0'),
                encode_aeskey=request.POST.get('encode_aeskey', ''),
            )

        MpuserPreviewInfo.objects.filter(
            id=int(request.POST['mpprid'])).update(
                image_path=request.POST['pic_url'],
                name=request.POST['mpuser_nickname'].strip(),
            )

        response = create_response(200)
    except:
        response = create_response(500)
        response.errMsg = u"更新公众号信息失败"
        response.innerErrMsg = unicode_full_stack()

    return response.get_response()
Пример #28
0
def get_orders(request):
    token = request.GET.get('token', '').strip()

    response = erp_util.check_invalid_serach_type(
        request.GET.get('serach_type', '0'))
    if response:
        return response

    try:
        pageinfo, request_orders, count_per_page = __get_request_order_list(
            request)
        return_orders_jsonarray = []
        # 构造返回数据
        for order in request_orders:
            return_orders_jsonarray.append(
                __build_return_order_min_json(order))

        response = create_response(200)
        response.data = {'items': return_orders_jsonarray}
        if count_per_page == -1:
            response.data['pageinfo'] = {
                'object_count': pageinfo['object_count']
            }
        else:
            response.data['pageinfo'] = paginator.to_dict(pageinfo)

    except:
        response = create_response(590)
        response.errMsg = u'内部异常'
        error_msg = u"erp获取订单列表 token={}, cause:\n{}".format(
            token, unicode_full_stack())
        response.innerErrMsg = error_msg
        watchdog_error(error_msg)

    return response.get_response()
Пример #29
0
    def _send_response(self):
        """
		发送电子面单请求,返回成功与否信息
		"""
        # post中的param的json
        headers = {'content-type': 'application/json'}
        param_json_data = self._build_post_data()

        DataSign = self._encrypt(json.dumps(param_json_data))
        params = json.dumps({
            "RequestData": json.dumps(param_json_data),
            "EBusinessID": self.Business_id,
            "RequestType": "1007",
            "DataSign": DataSign,
            "DataType": "2"
        })

        verified_result = ''
        try:
            verified_result = requests.post(KdniaoExpressConfig.eorder_url,
                                            data=params,
                                            headers=headers)
            watchdog.watchdog_info(
                u"发送快递鸟 电子面单请求 url: {},/n param_data: {}".format(
                    KdniaoExpressConfig.eorder_url, params), "EXPRESS")
        except:
            watchdog.watchdog_error(
                u'发送快递鸟 电子面单请求 失败,url:{},data:{},原因:{}'.format(
                    KdniaoExpressConfig.eorder_url, params,
                    unicode_full_stack()), "EXPRESS")

        return verified_result
Пример #30
0
def save_base64_img_file_local_for_webapp(owner_id, ajax_file):
    date = time.strftime('%Y%m%d')
    dir_path_suffix = 'webapp/%d_%s' % (owner_id, date)
    dir_path = os.path.join(settings.UPLOAD_DIR, dir_path_suffix)

    if not os.path.exists(dir_path):
        os.makedirs(dir_path)

    #获取文件的扩展名
    file_name = '%s.%s' % (datetime.now().strftime("%Y_%m_%d_%H_%M_%S_%f"),
                           'png')
    ajax_path = '%s/%s' % (dir_path, file_name)
    ajax_file = ajax_file.split(',')

    image_content = base64.b64decode(ajax_file[1])
    image_file = open(ajax_path, 'wb')
    image_file.write(image_content)
    image_file.close()

    if __validate_image(ajax_path):
        try:
            image_path = upyun_util.upload_image_to_upyun(
                ajax_path, '/upload/%s/%s' % (dir_path_suffix, file_name))
            return image_path
        except:
            notify_msg = u"上传图片到又拍云时失败, cause:\n{}".format(
                unicode_full_stack())
            watchdog.error(notify_msg)
            return None
            #return '/static/upload/%s/%s' % (dir_path_suffix, file_name)
        #return '/static/upload/%s/%s' % (dir_path_suffix, file_name)
    else:
        return None
Пример #31
0
	def resolve(self, path):
		method = None
		app_resource = None
		func = None
		try:
			items = path.split('/')
			method = items[-1].lower()
			if items[0] == 'api':
				resource = '/'.join(items[1:-1])
				method = 'api_%s' % method
			else:
				resource = '/'.join(items[:-1])
			
			app_resource = '%s-%s' % (self.app_name, resource)
			class_info = resource_util.APPRESOURCE2CLASS.get(app_resource, None)
			# print '-*-' * 20
			# print 'path: ', path
			# print 'method: ', method
			# print 'app_resource: ', app_resource
			# print '-$-' * 20
			if class_info:
				if not class_info['instance']:
					class_info['instance'] = class_info['cls']
				resource_instance = class_info['instance']
				func = getattr(resource_instance, method, None)
				if func:
					return ResolverMatch(func, (), {}, path)
				else:
					self.__raise_404(path)
			else:
				self.__raise_404(path)
		except:
			context = {
				'path': path,
				'method': method,
				'app_resource': app_resource,
				'func': func,
				'APPRESOURCE2CLASS': resource_util.APPRESOURCE2CLASS
			}
			notify_message = u"RESTful url2 route failed, context:{}\ncause:\n{}".format(str(context), unicode_full_stack())
			# watchdog_fatal(notify_message, type='URL_ROUTE', noraise=True)
			self.__raise_404(path)