Exemplo n.º 1
0
Arquivo: views.py Projeto: MrSun24/PT
def api_update_user_profile(request):
	"""
	修改账户信息
	"""
	avatar = request.POST.get('avatar', '')
	nickname = request.POST.get('nickname', '')
	phone = request.POST.get('phone', '')
	sex = request.POST.get('sex', 0)

	user_profile = account_model.UserProfile.objects.filter(user=request.user)
	try:
		if user_profile:
			user_profile.update(
				avatar = avatar,
				nickname = nickname,
				phone = phone,
				sex = sex
			)
		else:
			account_model.UserProfile.objects.create(
				user = request.user,
				avatar = avatar,
				nickname = nickname,
				phone = phone,
				sex = sex
			)
		response = create_response(200)
	except:
		response = create_response(500)

	return response.get_response()
Exemplo n.º 2
0
Arquivo: views.py Projeto: MrSun24/PT
def edit_bill(request):
	"""
	编辑账单
	"""
	usage = request.POST['usage']
	money = request.POST['money']
	pay_type = request.POST['pay_type']
	use_time = request.POST['use_time']
	bill_id = request.POST['id']

	try:
		app_model.PersonalBill.objects.filter(id = bill_id).update(
			usage = usage,
			money = money,
			pay_type = pay_type,
			use_time = use_time
		)
	except:
		response = create_response(500)
		return response.get_response()
	
	page_info, personal_bills = get_personal_bills(request)

	response = create_response(200)
	response.data = personal_bills
	response.page_info = page_info
	return response.get_response()
Exemplo n.º 3
0
Arquivo: views.py Projeto: MrSun24/PT
def api_create_note(request):
	"""
	新建和修改笔记
	"""
	title = request.POST['title']
	content = request.POST['content']
	note_id  = request.POST.get('id', '')

	try:
		if note_id:
			app_model.Note.objects.filter(id=note_id).update(
				title=title,
				content=content
			)
		else:
			app_model.Note.objects.create(
				owner = User.objects.get(id=request.user.id),
				title = title,
				content = content
			)
		response = create_response(200)
	except:
		response = create_response(500)

	return response.get_response()
Exemplo n.º 4
0
Arquivo: views.py Projeto: MrSun24/PT
def create_bill(request):
	"""
	新建账单
	"""
	usage = request.POST['usage']
	money = request.POST['money']
	pay_type = request.POST['pay_type']
	use_time = request.POST['use_time']

	try:
		app_model.PersonalBill.objects.create(
			owner = User.objects.get(id=request.user.id),
			usage = usage,
			money = money,
			pay_type = pay_type,
			use_time = use_time
		)
	except:
		response = create_response(500)
		return response.get_response()
	
	page_info, personal_bills = get_personal_bills(request)

	response = create_response(200)
	response.data = personal_bills
	response.page_info = page_info
	return response.get_response()
Exemplo n.º 5
0
Arquivo: views.py Projeto: MrSun24/PT
def upload(request):
	"""
	上传图片base64
	"""
	image = request.POST.get('image', None)

	response = create_response(500)
	if image:
		try:
			dir_path_suffix = 'owner_%d' % (request.user.id)
			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')
			image_path = '%s/%s' % (dir_path, file_name)
			image_b64code = image.split(',')[1]

			image_content = base64.b64decode(image_b64code)
			image_file = open(image_path, 'wb')
			image_file.write(image_content)
			image_file.close()

			response = create_response(200)
			response.data = '/static/upload/%s/%s' % (dir_path_suffix, file_name)
		except:
			pass

	return response.get_response()
Exemplo n.º 6
0
Arquivo: views.py Projeto: MrSun24/PT
def check_username(request):
	"""
	检查用户名是否已被占用
	"""
	username = request.GET['username']
	user = User.objects.filter(username=username)
	if user.exists():
		response = create_response(500)
		return response.get_response()
	else:
		response = create_response(200)
		return response.get_response()
Exemplo n.º 7
0
def comment_blog(request):
	blog_comment=request.POST.get('comment_content','')
	blog_id=request.POST.get('blog_id','')
	comment_user_id=request.user.id
	if blog_id:
		BlogComment.objects.create(
			comment_user_id=comment_user_id,
			blog_id=blog_id,
			comment_content=blog_comment,
			)
		response=create_response(200)
	else:
		response=create_response(500)
		response.errMsg='评论失败'
	return response.get_response()		
Exemplo n.º 8
0
def create_blog(request):
	blog_user = 1
	blog_content=request.POST.get('content','')
	print blog_content,555555555
	try:
		if blog_content:
			Blog.objects.create(
				blog_user=blog_user,
				blog_content=blog_content,
				)
		response=create_response(200)
	except:
		response=create_response(500)
		response.errMsg='创建失败'
	return response.get_response()			
Exemplo n.º 9
0
Arquivo: views.py Projeto: MrSun24/PT
def get_bill_list(request):
	page_info, personal_bills = get_personal_bills(request)

	response = create_response(200)
	response.data = personal_bills
	response.page_info = page_info
	return response.get_response()
Exemplo n.º 10
0
Arquivo: views.py Projeto: MrSun24/PT
def api_note_change_status(request):
	"""
	修改笔记状态
	"""
	note_id = request.POST['id']
	status = request.POST['status']
	try:
		app_model.Note.objects.filter(id=note_id).update(
			status = status
		)

		response = create_response(200)
	except:
		response = create_response(500)

	return response.get_response()
Exemplo n.º 11
0
Arquivo: views.py Projeto: MrSun24/PT
def api_delete_note(request):
	"""
	删除笔记
	"""
	note_id = request.POST['id']
	try:
		app_model.Note.objects.get(id=note_id).delete()
		page_info, note_list = get_note_info(request)

		response = create_response(200)
		response.data = note_list
		response.page_info = page_info
	except:
		response = create_response(500)

	return response.get_response()
Exemplo n.º 12
0
def create_log(request):
	customer_id = request.POST['customer_id']
	mileage = request.POST.get('mileage','')
	oil_type = request.POST.get('oil_type','')
	oil_filter = request.POST.get('oil_filter','')
	air_filter = request.POST.get('air_filter','')
	steam_filter = request.POST.get('steam_filter','')
	other_products = request.POST.get('other_products','')
	price = request.POST.get('price','')
	remark = request.POST.get('remark','')

	customer = Customer.objects.get(id=customer_id)
	PurchaseHistory.objects.create(
		customer = customer,
		mileage = mileage,
		oil_type = oil_type,
		oil_filter = oil_filter,
		air_filter = air_filter,
		steam_filter = steam_filter,
		other_products = other_products,
		price = price,
		remark = remark
	)
	response = create_response(200)
	return response.get_response()
Exemplo n.º 13
0
Arquivo: views.py Projeto: MrSun24/PT
def login(request):
	"""
	登录
	"""
	username = request.POST['username']
	password = request.POST['password']

	user = auth.authenticate(username=username, password=password)
	if user and user.is_active:
		auth.login(request, user)

		response = create_response(200)
		return response.get_response()
	else:
		response = create_response(500)
		response.errMsg = u'用户名或密码错误'
		return response.get_response()
Exemplo n.º 14
0
Arquivo: views.py Projeto: MrSun24/PT
def sign_up(request):
	"""
	注册
	"""
	username = request.POST['username']
	password = request.POST['password']

	try:
		user = User.objects.create_user(username, '', password)
		user.first_name = username
		user.save()
	except:
		response = create_response(500)
		return response.get_response()

	response = create_response(200)
	return response.get_response()
Exemplo n.º 15
0
Arquivo: views.py Projeto: MrSun24/PT
def api_calender(request):
	cur_year = int(request.GET.get('year', 0))
	cur_month = int(request.GET.get('month', 0))

	days_dic = get_calender(cur_year, cur_month)

	response = create_response(200)
	response.data = days_dic
	return response.get_response()
Exemplo n.º 16
0
def delete_log(request):
	log_id = request.GET['log_id']
	try:
		PurchaseHistory.objects.filter(id=log_id).update(is_deleted=True)
	except:
		pass

	response = create_response(200)
	return response.get_response()
Exemplo n.º 17
0
Arquivo: views.py Projeto: MrSun24/PT
def change_password(request):
	"""
	修改密码
	"""
	old_psw = request.POST['old_psw']
	new_psw = request.POST['new_psw']

	if request.user.check_password(old_psw):
		user = User.objects.get(username=request.user.username)
		user.set_password(new_psw)
		user.save()

		response = create_response(200)
		return response.get_response()
	else:
		response = create_response(500)
		response.errMsg = u'旧密码错误'
		return response.get_response()
Exemplo n.º 18
0
Arquivo: views.py Projeto: MrSun24/PT
def api_note_edit(request):
	"""
	获取笔记详情
	"""
	note_id = request.GET['id']

	try:
		note = app_model.Note.objects.get(id=note_id)
		response = create_response(200)
		response.data = {
			'id': note.id,
			'title': note.title,
			'content': note.content,
			'author': note.owner.username,
			'created_at': note.created_at.strftime('%Y-%m-%d %H:%M:%S')
		}
	except:
		response = create_response(500)

	return response.get_response()
Exemplo n.º 19
0
Arquivo: views.py Projeto: MrSun24/PT
def api_note_list(request):
	"""
	获取笔记列表
	"""
	page_info, note_list = get_note_info(request)

	response = create_response(200)
	response.data = note_list
	response.page_info = page_info

	return response.get_response()
Exemplo n.º 20
0
def edit_customer(request):
	if request.GET:
		customer_id = request.GET.get('customer_id','')
		customer = Customer.objects.get(id=customer_id)
		customer_json = JsonResponse()
		customer_json.id = customer.id
		customer_json.name = customer.name
		customer_json.tel_number = customer.tel_number
		customer_json.plate_number = customer.plate_number
		customer_json.vehicle_brand = customer.vehicle_brand
		customer_json.motorcycle_type = customer.motorcycle_type
		customer_json.mileage = customer.mileage
		customer_json.adress = customer.adress
		customer_json.remark = customer.remark
		response = create_response(200)
		response.data.customer = customer_json
		return response.get_jsonp_response(request)
	elif request.POST:
		customer_id = request.POST.get('customer_id','')
		name = request.POST.get('name','')
		tel_number = request.POST.get('tel_number','')
		plate_number = request.POST.get('plate_number','')
		vehicle_brand = request.POST.get('vehicle_brand','')
		motorcycle_type = request.POST.get('motorcycle_type','')
		mileage = request.POST.get('mileage','')
		adress = request.POST.get('adress','')
		remark = request.POST.get('remark','')
		
		Customer.objects.filter(id=customer_id).update(
			name = name,
			tel_number = tel_number,
			plate_number = plate_number,
			vehicle_brand = vehicle_brand,
			motorcycle_type = motorcycle_type,
			mileage = mileage,
			adress = adress,
			remark = remark
		)
		response = create_response(200)
		return response.get_response()
Exemplo n.º 21
0
def initdate(request):
    allContent = WeiboContent.objects.all()
    Date = []
    for content in allContent:
        weiboDate = {}
        content_name = WeiboUser.objects.get(id=content.owner_id).name
        weiboDate["content"] = content.content
        weiboDate["name"] = content_name
        Date.append(weiboDate)

    response = create_response(200)
    response.data = json.dumps(Date)
    return response.get_response()
Exemplo n.º 22
0
Arquivo: views.py Projeto: MrSun24/PT
def delete_bill(request):
	"""
	删除账单
	"""
	bill_id = request.POST['id']
	app_model.PersonalBill.objects.filter(id = bill_id).delete()

	page_info, personal_bills = get_personal_bills(request)
	
	response = create_response(200)
	response.data = personal_bills
	response.page_info = page_info
	return response.get_response()
Exemplo n.º 23
0
	def api_get(requset):
		content = requset.GET.get('content','')
		timeline = models.TimeLine.objects.create(content=content)
		timelineCount = models.TimeLine.objects.all().count()
		response = create_response(200)
		response.data = {
			"timelines": [{
				"id": timeline.id,
				"content": timeline.content,
				"created_at": timeline.created_at.strftime("%Y-%m-%d %H:%M:%S")
			}],
			"timelineCount": timelineCount
		}
		return response.get_response()
Exemplo n.º 24
0
Arquivo: views.py Projeto: MrSun24/PT
def api_user_profile(request):
	"""
	获取账户信息
	"""
	try:
		user_profile = account_model.UserProfile.objects.get(user=request.user)
		user_data = {
			'avatar': user_profile.avatar,
			'nickname': user_profile.nickname,
			'phone': user_profile.phone,
			'sex': user_profile.sex
		}
	except:
		user_data = {}

	response = create_response(200)
	response.data = user_data
	return response.get_response()
Exemplo n.º 25
0
Arquivo: views.py Projeto: MrSun24/PT
def api_get_note(request):
	"""
	首页获取笔记
	"""
	notes = app_model.Note.objects.filter(status=app_model.NOTE_SHOW).order_by('-created_at')

	note_list = []
	for note in notes:
		note_list.append({
			'id': note.id,
			'author': note.owner.username,
			'title': note.title,
			'content': note.content,
			'created_at': note.created_at.strftime('%Y-%m-%d %H:%M:%S')
		})

	response = create_response(200)
	response.data = note_list
	return response.get_response()
Exemplo n.º 26
0
def create_customer(request):
	name = request.POST.get('name','')
	tel_number = request.POST.get('tel_number','')
	plate_number = request.POST.get('plate_number','')
	vehicle_brand = request.POST.get('vehicle_brand','')
	motorcycle_type = request.POST.get('motorcycle_type','')
	mileage = request.POST.get('mileage','')
	adress = request.POST.get('adress','')
	remark = request.POST.get('remark','')

	Customer.objects.create(
		owner = request.user,
		name = name,
		tel_number = tel_number,
		plate_number = plate_number,
		vehicle_brand = vehicle_brand,
		motorcycle_type = motorcycle_type,
		mileage = mileage,
		adress = adress,
		remark = remark
	)
	response = create_response(200)
	return response.get_response()
Exemplo n.º 27
0
    def api_get(request):
        business_id = request.GET.get('business_id')
        catalog_ids = request.GET.get('catalog_ids').split(',')
        business_qualifications = []
        business = models.Business.objects.get(id=business_id)
        already_upload_catalog_ids = business.product_catalog_ids.split('_')
        already_upload_qualifications = models.BusinessQualification.objects.filter(
            business_id=business_id)
        all_qualifications = product_catalog_models.ProductCatalogQualification.objects.all(
        )
        all_need_qualifications_catalog_ids = [
            str(all_qualification.catalog_id)
            for all_qualification in all_qualifications
        ]
        qualification_id2name = dict((qualification.id, qualification.name)
                                     for qualification in all_qualifications)
        qualification_id2catalog_id = dict(
            (qualification.id, qualification.catalog_id)
            for qualification in all_qualifications)

        for catalog_id in catalog_ids:
            #判断是否需要特殊资质
            if catalog_id in all_need_qualifications_catalog_ids:
                #根据现在所选择的商品类目,判断是否已经上传过特殊资质
                if catalog_id in already_upload_catalog_ids:
                    #得到商家已经上传过特殊资质
                    qualifications = all_qualifications.filter(
                        catalog_id=catalog_id)
                    qualifications_ids = [
                        qualification.id for qualification in qualifications
                    ]
                    already_upload_qualifications_temp = already_upload_qualifications.filter(
                        qualification_id__in=qualifications_ids)
                    for already_upload_qualification in already_upload_qualifications_temp:
                        business_qualifications.append({
                            'belong_catalog_id':
                            qualification_id2catalog_id[
                                already_upload_qualification.qualification_id],
                            'qualification_id':
                            already_upload_qualification.qualification_id,
                            'qualification_name':
                            qualification_id2name[
                                already_upload_qualification.qualification_id],
                            'img': [{
                                'id': 1,
                                'path': already_upload_qualification.path
                            }],
                            'qualification_time':
                            already_upload_qualification.qualification_time.
                            strftime("%Y-%m-%d %H:%M")
                            if already_upload_qualification.qualification_time
                            else ''
                        })
                else:
                    qualifications = all_qualifications.filter(
                        catalog_id=catalog_id)
                    for qualification in qualifications:
                        business_qualifications.append({
                            'belong_catalog_id':
                            qualification.catalog_id,
                            'qualification_id':
                            qualification.id,
                            'qualification_name':
                            qualification.name,
                            'img': [],
                            'qualification_time':
                            ''
                        })
        data = {'rows': business_qualifications}
        response = create_response(200)
        response.data = data
        return response.get_response()
Exemplo n.º 28
0
    def api_get(request):
        #获取业务数据
        cur_page = request.GET.get('page', 1)
        applications = customer_models.CustomerMessage.objects.filter(
            is_deleted=False)
        filters = dict([(db_util.get_filter_key(key, filter2field),
                         db_util.get_filter_value(key, request.GET))
                        for key in request.GET if key.startswith('__f-')])
        username = filters.get('username', '')
        display_name = filters.get('displayName', '')
        status = filters.get('status', '')
        if username:
            filter_users = User.objects.filter(username__icontains=username,
                                               is_active=True)
            filter_users_ids = [filter_user.id for filter_user in filter_users]
            applications = applications.filter(user_id__in=filter_users_ids)
        if display_name:
            filter_users = User.objects.filter(
                first_name__icontains=display_name, is_active=True)
            filter_users_ids = [filter_user.id for filter_user in filter_users]
            applications = applications.filter(user_id__in=filter_users_ids)
        if status:
            filter_accounts = account_models.UserProfile.objects.filter(
                app_status=status)
            filter_users_ids = [
                filter_account.user_id for filter_account in filter_accounts
            ]
            applications = applications.filter(user_id__in=filter_users_ids)

        pageinfo, applications = paginator.paginate(applications, cur_page,
                                                    COUNT_PER_PAGE)
        user_ids = [application.user_id for application in applications]
        application_ids = [application.id for application in applications]
        server_ip_infos = customer_models.CustomerServerIps.objects.filter(
            customer_id__in=application_ids)  #额外的ip数据
        user_infos = User.objects.filter(id__in=user_ids)
        account_infos = account_models.UserProfile.objects.filter(
            user_id__in=user_ids)
        reject_logs = application_models.ApplicationLog.objects.filter(
            user_id__in=user_ids, status=account_models.REJECT)

        #组装数据
        rows = []
        for application in applications:
            cur_user_info = user_infos.get(id=application.user_id)
            cur_account_info = account_infos.get(user_id=application.user_id)
            if cur_account_info.app_status == account_models.REJECT:
                reject_logs = reject_logs.filter(
                    user_id=int(application.user_id))
                last_reason = reject_logs.last().reason
            server_ips = [
                s.name
                for s in server_ip_infos.filter(customer_id=application.id)
            ]  #为毛不把ip存在一张表里。。。
            server_ips.insert(0, application.server_ip)
            rows.append({
                'id':
                application.id,
                'username':
                cur_user_info.username,
                'displayName':
                cur_user_info.first_name,
                'appName':
                u'默认应用',
                'appId':
                application.app_id if application.app_id else u'审核后自动生成',
                'appSecret':
                application.app_secret
                if application.app_secret else u'审核后自动生成',
                'DeveloperName':
                application.name,
                'phone':
                application.mobile_number,
                'email':
                application.email,
                'serverIp':
                server_ips,
                'interfaceUrl':
                application.interface_url,
                'status':
                account_models.APP_STATUS2NAME[cur_account_info.app_status],
                'status_value':
                cur_account_info.app_status,
                'reason':
                u'驳回原因:' + last_reason
                if cur_account_info.app_status == account_models.REJECT else ''
            })
        data = {'rows': rows, 'pagination_info': pageinfo.to_dict()}

        #构造response
        response = create_response(200)
        response.data = data
        return response.get_response()
Exemplo n.º 29
0
def __build_empty_link_targets_response():
    response = create_response(200)
    response.data = []
    return response.get_response()
Exemplo n.º 30
0
    def api_get(request):
        """
                获取模板消息详情集合json数据
        """

        templates = [
            {
                "id": 1,
                "title": "TM00938-付款成功通知",
                "industry": "IT科技",
                "state": 1,  # 未启用,已启用
            },
            {
                "id": 2,
                "title": "订单标记发货通知",
                "industry": "消费品",
                "state": 2,  # 未启用,已启用
            }
        ]

        #获取当前页数
        cur_page = int(request.GET.get('page', '1'))
        #获取每页个数
        count_per_page = int(request.GET.get('count', COUNT_PER_PAGE))

        templates = MarketToolsTemplateMessageDetail.objects.filter(
            owner=request.manager).order_by('type')
        pageinfo, templates = paginator.paginate(
            templates,
            cur_page,
            count_per_page,
            query_string=request.META['QUERY_STRING'])
        template_ids = [t.template_message_id for t in templates]
        messages = MarketToolsTemplateMessage.objects.filter(
            id__in=template_ids)
        id2template = {}
        for message in messages:
            id2template[message.id] = message
        items = []
        for template in templates:
            item = {}
            template_message_id = template.template_message_id
            item['template_detail_id'] = template.id
            item['template_id'] = template.template_id
            item['title'] = id2template[template_message_id].title
            item['industry_name'] = TYPE2INDUSTRY.get(
                id2template[template_message_id].industry, '')
            item['status'] = template.status

            if template.template_id:
                item['edit_status'] = 1
            else:
                item['edit_status'] = 0
            if template.type == 0:
                item['type'] = u'主营行业'
            else:
                item['type'] = u'副营行业'
            items.append(item)
        response = create_response(200)
        response.data.items = items
        response.data.pageinfo = paginator.to_dict(pageinfo)
        response.data.sortAttr = 'title'

        response = create_response(200)
        response.data = {
            'items': items,
            'pageinfo': paginator.to_dict(pageinfo),
            'data': {}
        }

        return response.get_response()
Exemplo n.º 31
0
def update_project_name(request):
	project_id = request.POST['project_id']
	Project.objects.filter(id=project_id).update(name=request.POST['name'])

	response = create_response(200)
	return response.get_response()
Exemplo n.º 32
0
def record_prize(request):
    member_id = request.GET.get('member_id', None)
    request_member = request.member
    response = create_response(200)
    error_msg = ''
    send_price = 0
    play_count = 0
    #try:
    # if member_id is None:
    # 	opid = request.GET.get('oid', None)
    # 	member_id = MemberHasSocialAccount.objects.filter(account__openid=opid)[0].member.id
    member = Member.objects.get(id=request_member.id)
    # except:
    # 	member = None

    # if member and member.id != request_member.id:
    # 	member = None

    if member and member.is_subscribed:
        detail_id = int(request.GET.get('shake_detail_id', 0))
        if detail_id != 0:
            now = datetime.now()
            #try:

            now_join_count = ShakeRecord.objects.filter(
                shake_detail_id=detail_id).count()
            max_price_member = False

            if now_join_count >= 30:
                max_price_member = (0 == now_join_count % 30)
            with transaction.atomic():
                shake_detail = ShakeDetail.objects.select_for_update().get(
                    id=detail_id)
                member_play_count = ShakeRecord.objects.filter(
                    member=member, shake_detail_id=detail_id).count()
                next_shake_details = ShakeDetail.objects.filter(
                    shake=shake_detail.shake,
                    start_at__gte=shake_detail.end_at).order_by('start_at')
                if next_shake_details.count() > 0:
                    next_shake_detail = next_shake_details[0]
                else:
                    next_shake_detail = None
                if shake_detail.shake.is_deleted == False and shake_detail.start_at <= now and shake_detail.end_at >= now:
                    if shake_detail.residue_price > 10:
                        if member_play_count >= shake_detail.play_count:
                            if next_shake_detail:
                                error_msg = u'本轮红包已抢光!'
                            else:
                                error_msg = u'红包已抢光,感谢您今天的参与!'
                        else:
                            if shake_detail.residue_price <= shake_detail.fixed_price or shake_detail.residue_price <= shake_detail.random_price_end:
                                send_price = random.uniform(
                                    1, float(shake_detail.residue_price))

                            elif max_price_member and shake_detail.fixed_price_residue_number > 0:  # and shake_detail.residue_price > shake_detail.fixed_price:
                                send_price = shake_detail.fixed_price
                                max_price_member = False
                            else:
                                send_price = random.uniform(
                                    float(shake_detail.random_price_start),
                                    float(shake_detail.random_price_end))
                                max_price_member = False
                            if send_price > 0 and send_price < shake_detail.residue_price:
                                send_price = to_decimal(send_price, 2)
                                shake_detail.residue_price -= send_price
                                if max_price_member:
                                    shake_detail.fixed_price_residue_number -= 1
                                    assert shake_detail.fixed_price_residue_number >= 0
                                    shake_detail.save(update_fields=[
                                        'residue_price',
                                        'fixed_price_residue_number'
                                    ])
                                else:
                                    shake_detail.save(
                                        update_fields=['residue_price'])

                                record = ShakeRecord.objects.create(
                                    owner_id=request.webapp_owner_id,
                                    shake_detail=shake_detail,
                                    member=member,
                                    money=send_price)
                                play_count = shake_detail.play_count - member_play_count - 1

                                try:
                                    ip = request.META['REMOTE_ADDR']
                                except:
                                    ip = None

                                tasks.send_red_pack_task.delay(
                                    shake_detail.id, request.webapp_owner_id,
                                    member.id, record.id, ip)
                            else:
                                error_msg = shake_detail.shake.not_winning_desc
                    else:
                        if next_shake_detail:
                            error_msg = u'本轮红包已抢光!'
                        else:
                            error_msg = u'红包已抢光,感谢您今天的参与!'
                else:
                    error_msg = u'红包已抢光,感谢您今天的参与!'
            # except:
            # 	error_msg = u'活动不存在'
    else:
        error_msg = u"请先关注公众号"

    result = JsonResponse()
    result.error_msg = error_msg
    result.send_price = float(send_price)
    result.play_count = play_count
    response.data.result = result
    return response.get_response()
Exemplo n.º 33
0
def get_session_histories(request):
    session_id = request.GET['session_id']
    messages = Message.objects.filter(session=session_id).order_by('-id')
    sender_usernames = [m.from_weixin_user_username for m in messages]
    recevier_usernames = [m.to_weixin_user_username for m in messages]
    weixin_user_usernames = set(sender_usernames + recevier_usernames)
    weixin_users = WeixinUser.objects.filter(
        username__in=weixin_user_usernames)
    username2weixin_user = dict([u.username, u] for u in weixin_users)

    mpuser = get_system_user_binded_mpuser(request.user)

    try:
        mpuser_preview_info = MpuserPreviewInfo.objects.get(mpuser=mpuser)
    except:
        response = create_response(500)
        response.errMsg = u'获取公众号预览信息失败'
        return response.get_response()

    response = create_response(200)
    response.data.items = []
    session = Session.objects.get(id=session_id)
    webapp_id = request.user_profile.webapp_id
    is_active = True if datetime.now(
    ) < session.latest_contact_created_at + timedelta(
        hours=EXPIRED_TIME) and datetime.now(
        ) > session.latest_contact_created_at else False
    response.data.is_active = is_active
    for message in messages:
        sender = username2weixin_user[message.from_weixin_user_username]
        one_message = JsonResponse()
        one_message.id = message.id
        one_message.weixin_message_id = message.weixin_message_id
        one_message.is_reply = message.is_reply
        one_message.content = emotion.change_emotion_to_img(message.content)
        if one_message.content == None:
            one_message.content = ''
        one_message.weixin_created_at = __format_datetime(
            message.weixin_created_at)
        one_message.is_collected = CollectMessage.is_collected(message.id)
        one_message.message_type = message.message_type
        one_message.pic_url = message.pic_url
        one_message.audio_url = message.audio_url

        if message.message_type == IMAGE:
            one_message.content = message.pic_url

        if message.message_type == VOICE:
            one_message.content = message.audio_url
        if message.is_reply:
            one_message.sender_icon = mpuser_preview_info.image_path  #sender.weixin_user_icon
            one_message.sender_name = mpuser_preview_info.name
        else:
            account = SocialAccount.objects.get(webapp_id=webapp_id,
                                                openid=sender.username)
            member = MemberHasSocialAccount.objects.filter(
                account=account)[0].member
            if member:
                if member.user_icon:
                    one_message.sender_icon = member.user_icon if len(
                        member.user_icon.strip()) > 0 else DEFAULT_ICON
                else:
                    one_message.sender_icon = DEFAULT_ICON
                one_message.sender_name = member.username_for_html
                one_message.member_id = member.id
                if one_message.sender_icon != sender.weixin_user_icon:
                    sender.weixin_user_icon = member.user_icon
            else:
                if sender.weixin_user_icon:
                    one_message.sender_icon = sender.weixin_user_icon if len(
                        sender.weixin_user_icon.strip()) > 0 else DEFAULT_ICON
                one_message.sender_name = sender.weixin_user_nick_name
        response.data.items.append(one_message)

    return response.get_response()
Exemplo n.º 34
0
    def api_put(request):
        """
                        回复实时消息
        """
        pattern = re.compile(r'_src=".*"')
        answer = request.POST['answer']
        src_str = pattern.findall(answer, re.S)
        if src_str:
            answer = answer.replace(src_str[0], "")
        material_id = request.POST['material_id']
        type = request.POST['type']
        openid_sendto = request.POST['openid']

        mpuser = get_system_user_binded_mpuser(request.manager)
        if mpuser is None:
            response = create_response(500)
            response.errMsg = u'请先进行公众号的绑定'
        else:
            #进行实际消息的发送
            try:
                sessions = get_weixinuser_sessions(openid_sendto)
                if openid_sendto and sessions.count() > 0:
                    session = sessions[0]
                    is_active = True if datetime.now(
                    ) < session.latest_contact_created_at + timedelta(
                        hours=DATETIME_BEFORE_HOURS) and datetime.now(
                        ) > session.latest_contact_created_at else False
                    if is_active:
                        if type == u'text':
                            #文本消息
                            #如果是weshop或weizoomjx帐号,title,Description的替换
                            if request.user.username in NEWS_TEXT_USERNAME:
                                nick_name = session.weixin_user.nick_name.decode(
                                    'hex').decode('utf-8')
                                re_str = ur'\{\{u\}\}|{{u}}'
                                answer = re.sub(re_str, nick_name, answer)
                                # answer = answer.replace('{{username}}', nick_name)

                            custom_message = TextCustomMessage(answer)
                        else:
                            #图文消息
                            newses = weixin_module_api.get_material_news_info(
                                material_id)
                            #如果是weshop或weizoomjx帐号,title,Description的替换
                            if request.user.username in NEWS_TEXT_USERNAME:
                                nick_name = session.weixin_user.nick_name.decode(
                                    'hex').decode('utf-8')
                                for news in newses:
                                    re_str = ur'\{\{u\}\}|{{u}}'
                                    news.title = re.sub(
                                        re_str, nick_name, news.title)
                                    news.summary = re.sub(
                                        re_str, nick_name, news.summary)
                                    # news.title = news.title.replace('{{username}}', nick_name)
                                    # news.summary = news.summary.replace('{{username}}', nick_name)
                            articles = weixin_module_api.get_articles_object(
                                newses)
                            custom_message = NewsCustomMessage(articles)

                        _send_custom_message(mpuser, openid_sendto,
                                             custom_message)
                        response = create_response(200)
                    else:
                        response = create_response(501)
                        response.errMsg = u'互动已经超时'
                else:
                    response = create_response(501)
                    response.errMsg = u'互动已经超时'
            except WeixinApiError, error:
                response = create_response(500)
                error_code = error.error_response.errcode
                response.errMsg = weixin_error_codes.code2msg.get(
                    error_code, error.error_response.errmsg)
                response.innerErrMsg = error.error_response.detail
            except:
Exemplo n.º 35
0
 def api_get(request):
     scanlottery = app_models.Scanlottery.objects.get(id=request.GET['id'])
     response = create_response(200)
     response.data = scanlottery.prize
     return response.get_response()
Exemplo n.º 36
0
	def api_get(request):
		"""
		详情导出
		"""
		export_id = request.GET.get('export_id','')

		# app_name = lotteryParticipances_Export.app.split('/')[1]
		# excel_file_name = ('%s_id%s_%s.xls') % (app_name,export_id,datetime.now().strftime('%Y%m%d%H%m%M%S'))
		download_excel_file_name = u'幸运码抽奖详情.xls'
		excel_file_name = 'exlottery_details_'+datetime.now().strftime('%H_%M_%S')+'.xls'
		dir_path_suffix = '%d_%s' % (request.user.id, date.today())
		dir_path = os.path.join(settings.UPLOAD_DIR, dir_path_suffix)

		if not os.path.exists(dir_path):
			os.makedirs(dir_path)
		export_file_path = os.path.join(dir_path,excel_file_name)
		#Excel Process Part
		try:
			import xlwt
			datas, member_id2tel = ExlotteryParticipances.get_datas(request)
			fields_raw = []
			export_data = []

			#from sample to get fields4excel_file
			fields_raw.append(u'编号')
			fields_raw.append(u'用户名')
			fields_raw.append(u'会员ID')
			fields_raw.append(u'手机号')
			fields_raw.append(u'获奖等级')
			fields_raw.append(u'奖品名称')
			fields_raw.append(u'抽奖时间')
			fields_raw.append(u'领取状态')

			member_ids = []
			for record in datas:
				member_ids.append(record['member_id'])
			members = member_models.Member.objects.filter(id__in=member_ids)
			member_id2member = {member.id: member for member in members}

			#processing data
			num = 0
			for record in datas:
				member_id = record['member_id']
				export_record = []
				num = num+1
				cur_member = member_id2member.get(member_id, None)
				if cur_member:
					try:
						name = cur_member.username.decode('utf8')
					except:
						name = cur_member.username_hexstr
				else:
					name = u'未知'
				tel = member_id2tel.get(member_id, '') if not record['tel'] else record['tel']
				prize_title = record['prize_title']
				prize_name = record['prize_name']
				created_at = record['created_at'].strftime("%Y-%m-%d %H:%M:%S")
				if record['status']:
					status = u'已领取'
				else:
					status = u'未领取'

				export_record.append(num)
				export_record.append(name)
				export_record.append(cur_member.id)
				export_record.append(tel)
				export_record.append(prize_title)
				export_record.append(prize_name)
				export_record.append(created_at)
				export_record.append(status)

				export_data.append(export_record)
			#workbook/sheet
			wb = xlwt.Workbook(encoding='utf-8')
			ws = wb.add_sheet('id%s'%export_id)
			header_style = xlwt.XFStyle()

			##write fields
			row = col = 0
			for h in fields_raw:
				ws.write(row,col,h)
				col += 1

			##write data
			if export_data:
				row = 0
				lens = len(export_data[0])
				for record in export_data:
					row +=1
					for col in range(lens):
						try:
							ws.write(row,col,record[col])
						except:
							#'编码问题,不予导出'
							print record
							pass
				try:
					wb.save(export_file_path)
				except:
					print 'EXPORT EXCEL FILE SAVE ERROR'
					print '/static/upload/%s/%s'%(dir_path_suffix,excel_file_name)
			else:
				ws.write(1,0,'')
				wb.save(export_file_path)
			response = create_response(200)
			response.data = {'download_path':'/static/upload/%s/%s'%(dir_path_suffix,excel_file_name),'filename':download_excel_file_name,'code':200}
		except Exception, e:
			error_msg = u"导出文件失败, cause:\n{}".format(unicode_full_stack())
			watchdog_error(error_msg)
			response = create_response(500)
			response.innerErrMsg = unicode_full_stack()
Exemplo n.º 37
0
    def api_post(request):
        """
                        回复实时消息后回写操作
        """
        session_id = request.POST['session_id']
        pattern = re.compile(r'_src=".*"')
        content = request.POST['content']
        src_str = pattern.findall(content, re.S)
        if src_str:
            content = content.replace(src_str[0], "")
        receiver_username = request.POST['receiver_username']
        material_id = request.POST['material_id']

        mpuser = get_system_user_binded_mpuser(request.manager)
        if mpuser is None:
            response = create_response(500)
            response.errMsg = u'请先进行公众号的绑定'

        message = Message.objects.create(
            mpuser=mpuser,
            session_id=session_id,
            from_weixin_user_username=mpuser.username,
            to_weixin_user_username=receiver_username,
            content=content,
            material_id=material_id,
            is_reply=True)
        latest_contact_created_at = datetime.today()
        Session.objects.filter(id=session_id).update(
            latest_contact_content=content,
            latest_contact_created_at=datetime.today(),
            is_latest_contact_by_viper=True,
            unread_count=0,
            is_replied=True,
            message_id=message.id)
        response = create_response(200)
        data = {}
        data['created_at'] = latest_contact_created_at.strftime(
            '%Y-%m-%d %H:%M:%S')
        content = translate_special_characters(content)
        data['text'] = emotion.new_change_emotion_to_img(content)
        from_index = data['text'].find('<a href=')
        if from_index > -1:
            from_text = data['text'][0:from_index]

            middle_index = data['text'][from_index:].find('>')
            remain_text = data['text'][
                from_index:middle_index] + ' target="_blank"' + data['text'][
                    middle_index:]

            data['text'] = from_text + remain_text

        if material_id and int(material_id) > 0:
            newses = list(News.objects.filter(material_id=message.material_id))
            if len(newses) > 0:
                news = newses[0]
                news_title = news.title
                if len(news_title) > 21:
                    news_title = news.title[0:18] + '...'

                data['news_title'] = news_title
            data['is_news_type'] = True
        else:
            data['news_title'] = ''
        data['material_id'] = message.material_id

        response.data = data

        return response.get_response()
Exemplo n.º 38
0
def get_logout(request):
	isSystemMenager = False
	auth.logout(request)
	response = create_response(200)
	return response.get_jsonp_response(request)
Exemplo n.º 39
0
    def api_get(request):
        """
                        获取实时消息集合json数据
        """

        #获取当前页数
        cur_page = int(request.GET.get('page', '1'))
        #获取每页个数
        count_per_page = int(request.GET.get('count', COUNT_PER_PAGE))
        #过滤条件
        filter_value = request.GET.get('filter_value', '')
        #时间条件
        date_interval = request.GET.get('date_interval', '')

        is_debug = (request.GET.get('dbg', '0') == '1')

        #解析过滤条件
        #消息状态
        status = STATUS_ALL
        #消息内容
        content = ''
        nick_name = ''
        grade_id = '-1'
        tag_id = '-1'
        filter_value_items = filter_value.split('|')
        for filter_value_item in filter_value_items:
            filter_items = filter_value_item.split(':')
            try:
                if filter_items[0].find('status') >= 0:
                    status = int(filter_items[1])
                if filter_items[0].find('content') >= 0:
                    content = filter_items[1]
                if filter_items[0].find('tag_id') >= 0:
                    tag_id = filter_items[1]
                if filter_items[0].find('grade_id') >= 0:
                    grade_id = filter_items[1]
                if filter_items[0].find('name') >= 0:
                    nick_name = filter_items[1]
            except:
                pass
        #解析时间条件
        start_time = ''
        end_time = ''
        if date_interval:
            try:
                date_items = date_interval.split('|')
                start_time = date_items[0].strip()
                end_time = date_items[1].strip()
            except:
                pass
        if content or (start_time and end_time
                       ) or nick_name or grade_id != '-1' or tag_id != '-1':
            status = STATUS_ALL
            pageinfo, realtime_messages = get_messages_from_messages(
                request.manager, request.user_profile, cur_page,
                count_per_page, content, start_time, end_time,
                filter_value_items, request.META['QUERY_STRING'])
        elif status == STATUS_COLLECT:
            pageinfo, realtime_messages = get_messages_from_collected(
                request.manager, request.user_profile, cur_page,
                count_per_page, request.META['QUERY_STRING'])
        elif status == STATUS_REMARK:
            pageinfo, realtime_messages = get_messages_from_remarked(
                request.manager, request.user_profile, cur_page,
                count_per_page, request.META['QUERY_STRING'])
        else:
            pageinfo, realtime_messages = get_sessions(
                request.manager, request.user_profile, cur_page,
                count_per_page, status, request.META['QUERY_STRING'])

        response = create_response(200)
        response.data = {
            'items': realtime_messages,
            'pageinfo': paginator.to_dict(pageinfo),
            'status': status,
            'query_string': request.META['QUERY_STRING']
        }

        return response.get_response()
Exemplo n.º 40
0
    def api_get(request):
        """
		响应API GET
		"""
        pageinfo, datas = Shvotes.get_datas(request)

        ids = [str(data.id) for data in datas]

        # record_id2memberinfo = {}
        # for c in app_models.ShvoteControl.objects(belong_to__in=ids):
        # 	belong_to = c.belong_to
        # 	if record_id2memberinfo.has_key(belong_to):
        # 		record_id2memberinfo[belong_to].add(c.member_id)
        # 	else:
        # 		record_id2memberinfo[belong_to] = {c.member_id}

        #后端审核通过,计入参与人数
        participances = app_models.ShvoteParticipance.objects(
            belong_to__in=ids, is_use=app_models.MEMBER_IS_USE['YES'])
        id2asking_count = id2participant_count = {
            str(one_id): 0
            for one_id in ids
        }
        for participance in participances:
            belong_to = str(participance.belong_to)

            if id2participant_count.has_key(belong_to):
                id2asking_count[belong_to] += 1

        items = []
        for data in datas:
            id_str = str(data.id)
            items.append({
                'id':
                id_str,
                'owner_id':
                request.manager.id,
                'name':
                data.name,
                'start_time':
                data.start_time.strftime('%Y-%m-%d %H:%M'),
                'end_time':
                data.end_time.strftime('%Y-%m-%d %H:%M'),
                'total_voted_count':
                app_models.ShvoteControl.objects(belong_to=id_str).count(),
                'total_participanted_count':
                id2asking_count[id_str],
                'related_page_id':
                data.related_page_id,
                'status':
                data.status_text,
                'created_at':
                data.created_at.strftime("%Y-%m-%d %H:%M:%S")
            })
        response_data = {
            'items': items,
            'pageinfo': paginator.to_dict(pageinfo),
            'sortAttr': 'id',
            'data': {}
        }
        response = create_response(200)
        response.data = response_data
        return response.get_response()
Exemplo n.º 41
0
	def api_get(request):
		record_id = request.GET.get('id', None)
		member = request.member
		response = create_response(500)
		if not record_id:
			response.errMsg = u'活动信息出错'
			return response.get_response()
		record = app_models.RedPacket.objects(id=record_id)
		if record.count() <= 0:
			response.errMsg = 'is_deleted'
			return response.get_response()
		record = record.first()

		#获取活动状态
		activity_status = record.status_text

		now_time = datetime.today().strftime('%Y-%m-%d %H:%M')
		data_start_time = record.start_time.strftime('%Y-%m-%d %H:%M')
		data_end_time = record.end_time.strftime('%Y-%m-%d %H:%M')
		if data_start_time <= now_time and now_time < data_end_time:
			record.update(set__status=app_models.STATUS_RUNNING)
			activity_status = u'进行中'
		elif now_time >= data_end_time:
			record.update(set__status=app_models.STATUS_STOPED)
			activity_status = u'已结束'

		project_id = 'new_app:red_packet:%s' % record.related_page_id

		isMember = False
		timing = 0
		is_already_participanted = False
		is_helped = False
		self_page = False
		red_packet_status = False
		page_owner_name = ''
		page_owner_icon = ''
		page_owner_member_id = 0
		red_packet_money = 0
		current_money = 0
		helpers_info_list = []

		if 'new_app:' in record_id:
			project_id = record_id
			record_id = 0
			record = None
		elif member:
			member_id = member.id
			fid = request.GET.get('fid', member_id)
			isMember =member.is_subscribed
			if u"进行中" == activity_status:
				timing = (record.end_time - datetime.today()).total_seconds()
				curr_member_red_packet_info = app_models.RedPacketParticipance.objects(belong_to=record_id, member_id=member_id)
				if curr_member_red_packet_info.count()> 0:
					curr_member_red_packet_info = curr_member_red_packet_info.first()
				else:
					curr_member_red_packet_info = app_models.RedPacketParticipance(
						belong_to = record_id,
						member_id = member_id,
						created_at = datetime.now()
					)
					curr_member_red_packet_info.save()
				#未帮助好友情况下,判断分享页是否自己的主页,是自己的主页则参与拼红包
				if (not curr_member_red_packet_info.is_valid) or (not curr_member_red_packet_info.has_join):
					if fid is None or str(fid) == str(member_id):#判断分享页是否自己的主页
						if isMember:
							#曾经参与过又取关了,或者帮助过他人但是自己没参与,都需要参与一次
							participate_response = participate_red_packet(record_id,member_id)
							print('participate_red_packet in line:107')
							if json.loads(participate_response.content)['errMsg'] == 'is_run_out':
								response.errMsg = 'is_run_out'
								return response.get_response()
							curr_member_red_packet_info.reload()
						else:
							response.errMsg = u'请先关注公众号'

				if curr_member_red_packet_info.is_valid:
					is_already_participanted = curr_member_red_packet_info.has_join
				else:
					is_already_participanted = False

				#判断分享页是否自己的主页
				if fid is None or str(fid) == str(member_id):
					page_owner_name = member.username_size_ten
					page_owner_icon = member.user_icon
					page_owner_member_id = member_id
					self_page = True
					red_packet_money = curr_member_red_packet_info.red_packet_money
					current_money = curr_member_red_packet_info.current_money
					red_packet_status = curr_member_red_packet_info.red_packet_status
				else:
					page_owner = Member.objects.get(id=fid)
					page_owner_name = page_owner.username_size_ten
					page_owner_icon = page_owner.user_icon
					page_owner_member_id = fid

					page_owner_member_info = app_models.RedPacketParticipance.objects.get(belong_to=record_id, member_id=page_owner_member_id)
					red_packet_money = page_owner_member_info.red_packet_money
					current_money = page_owner_member_info.current_money
					red_packet_status = page_owner_member_info.red_packet_status

					# if curr_member_red_packet_info.helped_member_ids:
					# 	is_helped = long(fid) in curr_member_red_packet_info.helped_member_ids
					is_helped = app_models.RedPacketRelations.objects(belong_to=record_id, member_id=str(member_id), helped_member_id=fid).count()>0

				# 获取该主页帮助者列表
				#并发问题临时解决方案 ---start
				if current_money > red_packet_money:
					app_models.RedPacketParticipance.objects.get(belong_to=record_id, member_id=page_owner_member_id).update(
						set__current_money=red_packet_money,set__red_packet_status=True)
					current_money = red_packet_money
				#并发问题临时解决方案 ---end
				helpers = app_models.RedPacketDetail.objects(belong_to=record_id, owner_id=fid,has_helped=True,is_valid=True).order_by('-created_at')
				member_ids = [h.helper_member_id for h in helpers]
				member_id2member = {m.id: m for m in Member.objects.filter(id__in=member_ids)}
				for h in helpers:
					temp_dict = {
						'member_id': h.helper_member_id,
						'user_icon': member_id2member[h.helper_member_id].user_icon,
						'username': member_id2member[h.helper_member_id].username_size_ten,
						'help_money': h.help_money
					}
					helpers_info_list.append(temp_dict)


		member_info = {
			'isMember': isMember,
			'timing': timing,
			'is_already_participanted': is_already_participanted,
			'is_helped': is_helped,
			'self_page': self_page,
			'page_owner_name': page_owner_name,
			'page_owner_icon': page_owner_icon,
			'page_owner_member_id': page_owner_member_id,
			'activity_status': activity_status,
			'red_packet_status': red_packet_status,
			'red_packet_money': '%.2f' % red_packet_money,
			'current_money': '%.2f' % current_money
		}

		response = create_response(200)
		response.data = {
			'member_info': member_info,
			'helpers_info': helpers_info_list
		}
		return response.get_response()
Exemplo n.º 42
0
def update_workspace_name(request):
	workspace_id = request.POST['workspace_id']
	Workspace.objects.filter(id=workspace_id).update(name=request.POST['name'])

	response = create_response(200)
	return response.get_response()
Exemplo n.º 43
0
def get_visit_daily_trend(request):
	visit_daily_trend_content = json.loads(webapp_get_visit_daily_trend(request).content)
	response = create_response(200)
	response.data.data = visit_daily_trend_content
	return response.get_jsonp_response(request)
Exemplo n.º 44
0
def create_pages(request):
	#
	#创建app目录
	#
	app_name = request.POST['app']
	app_dir = os.path.join('.', app_name)
	if os.path.isdir(app_dir):
		print 'remove old app: ', app_dir
		shutil.rmtree(app_dir)
	editor_template_dir = os.path.join(app_dir, 'templates', app_name, 'editor')
	mobile_template_dir = os.path.join(app_dir, 'templates', app_name)
	os.makedirs(editor_template_dir)

	#
	#创建app目录中的文件
	#
	#创建__init__.py
	init_file = open(os.path.join(app_dir, '__init__.py'), 'wb')
	init_file.close()

	#创建其他文件
	navs = json.loads(request.POST['navs'])
	name2nav = {}
	for nav in navs:
		name2nav[nav['value']] = nav

	data_json_str = request.POST['data_json_str']
	pages = json.loads(data_json_str)
	for page in pages:
		components = page
		components.sort(lambda x,y: cmp(x['index'], y['index']))

		print components

		context_data = components[0]
		context_data['listinfo'] = components[1]
		context_data['app'] = app_name
		context_data['properties'] = components[2:]
		context_data['className'] = context_data['className'].lower().capitalize()
		context_data['previewClassName'] = 'Preview%s' % context_data['className'].capitalize()
		context_data['instanceName'] = context_data['className'].lower()
		context_data['pluralInstanceName'] = __get_plural_name(context_data['instanceName'])
		#判断是否需要预览
		for component in context_data['properties']:
			if component['type'] == 'weixin_simulator':
				context_data['isEnablePreview'] = component['isEnablePreview']
				context_data['properties'].remove(component)
			if component['type'] == 'swipe_images_input':
				context_data['hasSwipeImages'] = "yes"
			if component['type'] == 'select_input':
				options_str = component['options']
				component['options_str'] = options_str
				component['options'] = []
				items = options_str.split(',')
				for item in items:
					if not item:
						continue
					display_name, value = item.split('=')
					component['options'].append({'displayName':display_name.strip(), 'value':value.strip()})

		#
		#处理list info
		#
		#获取<name, property>映射
		name2property = {}
		for property in context_data['properties']:
			name2property[property['name']] = property
		#获取每一column的信息
		list_component = components[1]
		if list_component['isEnableListPage'] == u'yes':
			columns = []
			for name, info in list_component['columns'].items():
				if not info['select']:
					continue
				
				columns.append({
					'name': name, 
					'label': name2property[name]['label'],
					'type': name2property[name]['type'],
					'index': info['index']
				})
			columns.sort(lambda x,y: cmp(x['index'], y['index']))
			context_data['list_columns'] = columns

		context = Context(context_data)

		# 生成app python文件
		__create_file_from_template('code/models_tmpl.py', app_dir, 'models.py', context)
		__create_file_from_template('code/urls_tmpl.py', app_dir, 'urls.py', context)
		__create_file_from_template('code/views_tmpl.py', app_dir, 'views.py', context)
		__create_file_from_template('code/api_views_tmpl.py', app_dir, 'api_views.py', context)

		nav_name = context_data['navItem']
		name2nav[nav_name]['target'] = '/%s/editor/%s/' % (app_name, context_data['pluralInstanceName'])
		context['navs'] = navs
		__create_file_from_template('code/webapp_template_info_tmpl.py', app_dir, 'webapp_template_info.py', context)

		#生成editor html模板文件
		__create_file_from_template('code/edit_entity_tmpl.html', editor_template_dir, 'edit_%s.html' % context_data['instanceName'], context, True)
		__create_file_from_template('code/list_entity_tmpl.html', editor_template_dir, '%s.html' % context_data['pluralInstanceName'], context, True)

		#生成mobile相关文件
		__create_file_from_template('code/mobile_urls_tmpl.py', app_dir, 'mobile_urls.py', context)
		__create_file_from_template('code/mobile_views_tmpl.py', app_dir, 'mobile_views.py', context)
		__create_file_from_template('code/mobile_index_tmpl.html', mobile_template_dir, 'index.html', context, True)
		__create_file_from_template('code/mobile_entity_list_tmpl.html', mobile_template_dir, '%s.html' % context_data['pluralInstanceName'], context, True)
		__create_file_from_template('code/mobile_entity_detail_tmpl.html', mobile_template_dir, '%s_detail.html' % context_data['instanceName'], context, True)

		print context

	#
	#更新user_settings.py
	#
	user_settings_file = open('workbench/templates/code/user_settings_tmpl.py', 'rb')
	content = user_settings_file.read()
	user_settings_file.close()
	prefix_end = content.find('# BEGIN OF DYNAMIC APP')
	suffix_beg = content.find('# END OF DYNAMIC APP')
	items = [content[:prefix_end].strip(), '# BEGIN OF DYNAMIC APP', "\t'%s'," % app_name, content[suffix_beg:].strip()]
	print items
	user_settings_file = open('user_settings.py', 'wb')
	print >> user_settings_file, '\n'.join(items)
	user_settings_file.close()

	#
	# 更新user_urls.py
	#
	user_urls_file = open('workbench/templates/code/user_urls_tmpl.py', 'rb')
	content = user_urls_file.read()
	user_urls_file.close()
	prefix_end = content.find('# BEGIN OF DYNAMIC URLS')
	suffix_beg = content.find('# END OF DYNAMIC URLS')
	items = [
		content[:prefix_end].strip(), 
		'# BEGIN OF DYNAMIC URLS', 
		"\turl(r'^m/%s/', include('%s.mobile_urls'))," % (app_name, app_name),
		"\turl(r'^%s/', include('%s.urls'))," % (app_name, app_name), 
		content[suffix_beg:].strip()
	]
	print items
	user_urls_file = open('user_urls.py', 'wb')
	print >> user_urls_file, '\n'.join(items)
	user_urls_file.close()

	#更新settings.py的时间,激发server重新加载
	os.utime('./termite/settings.py', None)

	response = create_response(200)
	return response.get_response()
Exemplo n.º 45
0
def get_buy_trend(request):
	buy_trend_content= webapp_get_buy_trend(request).content
	response = create_response(200)
	response.data = buy_trend_content
	return response.get_jsonp_response(request)
Exemplo n.º 46
0
def get_orders(request):
    #获取当前页数
    cur_page = int(request.GET.get('page', '1'))
    #获取每页个数
    count = int(request.GET.get('count_per_page', 25))

    webapp_id = request.freight_user.get_profile().webapp_id
    status = [
        ORDER_STATUS_PAYED_SUCCESSED, ORDER_STATUS_PAYED_NOT_SHIP,
        ORDER_STATUS_PAYED_SHIPED
    ]
    orders = Order.objects.belong_to(webapp_id)
    orders = orders.filter(status__in=status)

    #处理搜索
    query = request.GET.get('query', None)
    if query:
        orders = orders.filter(order_id=query)
    #处理过滤
    filter_attr = request.GET.get('filter_attr', None)
    filter_value = int(request.GET.get('filter_value', -1))
    source = None
    if filter_attr and (filter_value != -1):
        if filter_attr == 'source':
            if filter_value == 1:
                source = 'weizoom_mall'
            else:
                source = 'mine_mall'
        else:
            params = {filter_attr: filter_value}
            orders = orders.filter(**params)

    #处理排序
    sort_attr = request.GET.get('sort_attr', 'created_at')

    # 排序
    orders = orders.extra(order_by=['status', sort_attr])

    pageinfo, orders = paginator.paginate(
        orders, cur_page, count, query_string=request.META['QUERY_STRING'])

    #获取order关联的product集合
    order_ids = [order.id for order in orders]
    product_ids = []
    order2products = {}
    order_product_relations = list(
        OrderHasProduct.objects.filter(order_id__in=order_ids))
    for relation in order_product_relations:
        product_ids.append(relation.product_id)
        order2products.setdefault(relation.order_id, []).append({
            'count':
            relation.number,  #商品数量
            'id':
            relation.product_id,  #商品id
            'total_price':
            relation.total_price  #商品总价
        })
    id2product = dict([
        (product.id, product)
        for product in Product.objects.filter(id__in=product_ids)
    ])

    #获取order对应的会员
    webapp_user_ids = set([order.webapp_user_id for order in orders])
    webappuser2member = Member.members_from_webapp_user_ids(webapp_user_ids)

    orders_json = []
    for order in orders:
        order_info = __get_order_info_json(order, webappuser2member,
                                           order2products, id2product)
        if order_info:
            orders_json.append(order_info)

    response = create_response(200)
    response.data.items = orders_json
    response.data.pageinfo = paginator.to_dict(pageinfo)
    response.data.sortAttr = sort_attr
    return response.get_response()
Exemplo n.º 47
0
def get_daily_message_trend(request):
	daily_message_trend_content = webapp_get_message_daily_trend(request).content
	response = create_response(200)
	response.data = daily_message_trend_content
	return response.get_jsonp_response(request)
Exemplo n.º 48
0
def get_member_records(request):
    activity_id = int(request.GET['activity_id'])
    activity = Activity.objects.get(id=activity_id)
    query = request.GET.get('query', None)
    filter_attr = request.GET.get('filter_attr', None)
    filter_value = request.GET.get('filter_value', None)

    is_enable_offline_sign = activity.is_enable_offline_sign

    weapp_users = activity.joined_weapp_users
    webapp_user_ids = [user.id for user in weapp_users]

    weapp_user_id_2_values = {}
    for item_value in ActivityItemValue.objects.filter(
            activity=activity, webapp_user_id__in=webapp_user_ids):
        weapp_user_id_2_values.setdefault(item_value.webapp_user_id,
                                          {})[item_value.item_id] = item_value

    items = list(ActivityItem.objects.filter(activity=activity))

    if activity.is_enable_offline_sign:
        activity_user_codes = ActivityUserCode.objects.filter(
            activity=activity, webapp_user_id__in=webapp_user_ids)
        if query:
            activity_user_codes = activity_user_codes.filter(sign_code=query)
        #处理过滤
        if filter_attr:
            if filter_value != '-1':
                activity_user_codes = activity_user_codes.filter(
                    sign_status=int(filter_value))
        user_id2code = dict([(a.webapp_user_id, a.sign_code)
                             for a in activity_user_codes])
        user_id2sign_status = dict([(a.webapp_user_id, a.sign_status)
                                    for a in activity_user_codes])
        weapp_users = [user for user in weapp_users if user.id in user_id2code]

    #进行分页
    count_per_page = int(request.GET.get('count_per_page', 15))
    cur_page = int(request.GET.get('page', '1'))
    pageinfo, weapp_users = paginator.paginate(
        weapp_users,
        cur_page,
        count_per_page,
        query_string=request.META['QUERY_STRING'])

    response = create_response(200)
    cur_weapp_users = []
    for weapp_user in weapp_users:
        cur_weapp_user = JsonResponse()
        cur_weapp_user.id = weapp_user.id
        member = weapp_user.get_member_by_webapp_user_id(weapp_user.id)
        if not activity.is_enable_offline_sign and query:
            if member:
                if member.username_for_html != query:
                    continue
            else:
                continue

        cur_member = JsonResponse()
        if member:
            cur_member.id = member.id
            cur_member.user_icon = member.user_icon
            cur_member.username_for_html = member.username_for_html
        else:
            cur_member = ''
        cur_weapp_user.member = cur_member
        try:
            sign_code = user_id2code[weapp_user.id]
            sign_status = user_id2sign_status[weapp_user.id]
        except:
            sign_code = ''
            sign_status = 0
        cur_weapp_user.sign_code = sign_code
        cur_weapp_user.sign_status = sign_status
        cur_weapp_user.item_values = []
        item_values = []
        for item in items:
            id2value = weapp_user_id_2_values[weapp_user.id]
            if not item.id in id2value:
                #存在非必填项
                continue

            value = id2value[item.id]
            user_input_value = value.value

            is_image = False
            if item.type == ACTIVITYITEM_TYPE_IMAGE:
                is_image = True
            cur_item = JsonResponse()
            cur_item.title = item.title
            cur_item.is_image = is_image
            cur_item.user_input_value = user_input_value
            item_values.append(cur_item)

        cur_weapp_user.item_values = item_values
        cur_weapp_users.append(cur_weapp_user)
    response.data.weapp_users = cur_weapp_users

    cur_activity = JsonResponse()
    cur_activity.id = activity.id
    cur_activity.name = activity.name
    cur_activity.start_date = activity.start_date
    cur_activity.end_date = activity.end_date
    cur_activity.is_enable_offline_sign = activity.is_enable_offline_sign
    response.data.activity = cur_activity
    response.data.pageinfo = paginator.to_dict(pageinfo)
    response.data.sortAttr = request.GET.get('sort_attr', '-created_at')
    return response.get_response()
Exemplo n.º 49
0
def get_index_html(request):
	host = str(request.GET.get('host', 'weapp.weizoom.com'))
	import os
	PROJECT_HOME = os.path.dirname(os.path.abspath(__file__))
	index_file = open('%s/base.html' % PROJECT_HOME, 'r')
	new_index_html_content =[]
	try:
		line = index_file.readline()
		while line :
			if "<link " in line:
				css_name = line.split('href=".')[1][:-3].replace('"', '')
				css_file = open(PROJECT_HOME + css_name, 'r')
				css_content = css_file.read().replace('../img', 'http://%s/mobile_static/img' % host)
				new_index_html_content.append('\n'.join(["<style>", css_content, "</style>"]))
			elif "<script src" in line:
				js_name = line.split('src=".')[1][:-12].replace('"', '')
				js_file = open(PROJECT_HOME + js_name, 'r')
				if js_name in ['/js/config.js', '/js/system.js'] or 'app_' in js_name:
					js_content = js_file.read().replace('$', 'af')
				else:
					js_content = js_file.read()
				new_index_html_content.append('\n'.join(["<script type='text/javascript'>", js_content, "</script>"]))
			else :
				if './img' in line:
					if 'RegExp' in line:
						#需要转义
						line = line.replace('./img', 'http:\/\/%s/mobile_static/img' % host)
					else:
						line = line.replace('./img', 'http://%s/mobile_static/img' % host)
				new_index_html_content.append(line)
			line = index_file.readline()
	finally:
		index_file.close()


	index_file = open('%s/index.html' % PROJECT_HOME, 'r')
	html_content =[]
	try:
		line = index_file.readline()
		while line :
			if "<link " in line:
				css_name = line.split('href=".')[1][:-3].replace('"', '')
				css_file = open(PROJECT_HOME + css_name, 'r')
				css_content = css_file.read().replace('../img', 'http://%s/mobile_static/img' % host)
				html_content.append('\n'.join(["<style>", css_content, "</style>"]))
			elif "<script src" in line:
				js_name = line.split('src=".')[1][:-12].replace('"', '')
				js_file = open(PROJECT_HOME + js_name, 'r')
				if js_name in ['/js/config.js', '/js/system.js'] or 'app_' in js_name:
					js_content = js_file.read().replace('$', 'af')
				else:
					js_content = js_file.read()
				html_content.append('\n'.join(["<script type='text/javascript'>", js_content, "</script>"]))
			else :
				if './img' in line:
					if 'RegExp' in line:
						#需要转义
						line = line.replace('./img', 'http:\/\/%s/mobile_static/img' % host)
					else:
						line = line.replace('./img', 'http://%s/mobile_static/img' % host)
				html_content.append(line)
			line = index_file.readline()
	finally:
		index_file.close()
	f = open('%s/aaa.html' % PROJECT_HOME, 'w')
	f.write('\n'.join(html_content))
	f.close()
	response = create_response(200)
	response.data = '\n'.join(new_index_html_content)
	return response.get_jsonp_response(request)
Exemplo n.º 50
0
    def api_post(request):
        #修改入驻申请
        post = request.POST
        business_id = post.get('id')
        company_type = int(post.get('company_type', 2))
        company_name = post.get('company_name', '')
        company_money = float(post.get(
            'company_money')) if post.get('company_money') != '' else 0
        legal_representative = post.get('legal_representative', '')
        contacter = post.get('contacter', '')
        phone = post.get('phone', '')
        e_mail = post.get('e_mail', '')
        we_chat_and_qq = post.get('we_chat_and_qq', '')
        company_location = post.get('company_location', '')
        address = post.get('address', '')
        business_license = json.loads(post.get('business_license',
                                               ''))[0]['path']
        business_license_time = post.get('business_license_time') if post.get(
            'business_license_time') != '' else None
        tax_registration_certificate = json.loads(
            post.get('tax_registration_certificate', ''))[0]['path']
        tax_registration_certificate_time = post.get(
            'tax_registration_certificate_time'
        ) if post.get('tax_registration_certificate_time') != '' else None
        organization_code_certificate = json.loads(
            post.get('organization_code_certificate', ''))[0]['path']
        organization_code_certificate_time = post.get(
            'organization_code_certificate_time'
        ) if post.get('organization_code_certificate_time') != '' else None
        account_opening_license = json.loads(
            post.get('account_opening_license', ''))[0]['path']
        account_opening_license_time = post.get(
            'account_opening_license_time'
        ) if post.get('account_opening_license_time') != '' else None
        apply_catalogs = json.loads(post.get('apply_catalogs', ''))
        upload_business_qualifications = json.loads(
            post.get('upload_business_qualifications', ''))

        #保存类目
        product_catalog_ids = []
        for apply_catalog in apply_catalogs:
            product_catalog_ids.append(str(apply_catalog))
        product_catalog_ids = '_'.join(product_catalog_ids)

        try:
            business = models.Business.objects.filter(id=business_id).update(
                company_type=company_type,
                company_name=company_name,
                company_money=company_money,
                legal_representative=legal_representative,
                contacter=contacter,
                phone=phone,
                e_mail=e_mail,
                we_chat_and_qq=we_chat_and_qq,
                company_location=company_location,
                address=address,
                business_license=business_license,
                business_license_time=business_license_time,
                tax_registration_certificate=tax_registration_certificate,
                tax_registration_certificate_time=
                tax_registration_certificate_time,
                organization_code_certificate=organization_code_certificate,
                organization_code_certificate_time=
                organization_code_certificate_time,
                account_opening_license=account_opening_license,
                account_opening_license_time=account_opening_license_time,
                product_catalog_ids=product_catalog_ids)
            new_business_info = models.Business.objects.get(id=business_id)
            #如果更换了企业类型,把客户编号也更改过来
            if (new_business_info.customer_number[:2] == 'CJ'
                    and new_business_info.company_type
                    == 2) or (new_business_info.customer_number[:2] == 'DL'
                              and new_business_info.company_type == 1):
                old_customer_number = new_business_info.customer_number
                if new_business_info.company_type == models.DIRECT:
                    new_customer_number = 'CJ' + old_customer_number[2:]
                else:
                    new_customer_number = 'DL' + old_customer_number[2:]
                new_business_info.customer_number = new_customer_number
                new_business_info.save()

            #将之前上传的资质删除
            already_upload_qualifications = models.BusinessQualification.objects.filter(
                business_id=business_id).delete()
            #把提交的资质信息与商家关联起来
            for upload_qualification in upload_business_qualifications:
                models.BusinessQualification.objects.create(
                    business_id=business_id,
                    qualification_id=upload_qualification['qualification_id'],
                    path=upload_qualification['img'][0]['path'],
                    qualification_time=upload_qualification[
                        'qualification_time'] if
                    upload_qualification['qualification_time'] != '' else None)
            response = create_response(200)
        except Exception, e:
            print e
            response = create_response(500)
            response.innerErrMsg = unicode_full_stack()
Exemplo n.º 51
0
def overview_board(request):
	'''
	数据罗盘,数据一览表

	ORDER_STATUS_NOT = 0  # 待支付:已下单,未付款
	ORDER_STATUS_CANCEL = 1  # 已取消:取消订单
	ORDER_STATUS_PAYED_SUCCESSED = 2  # 已支付:已下单,已付款
	ORDER_STATUS_PAYED_NOT_SHIP = 3  # 待发货:已付款,未发货
	ORDER_STATUS_PAYED_SHIPED = 4  # 已发货:已付款,已发货
	ORDER_STATUS_SUCCESSED = 5  # 已完成:自下单10日后自动置为已完成状态
	ORDER_STATUS_REFUNDING = 6  # 退款中
	ORDER_STATUS_REFUNDED = 7  # 退款完成

	'''
	webapp_id = request.user.get_profile().webapp_id
	date_str = util_dateutil.date2string(datetime.today())
	today = datetime.today()

	try:
		# ORDER_STATUS_PAYED_NOT_SHIP = 3  # 待发货:已付款,未发货
		#ORDER_STATUS_REFUNDING = 6 #退款中
		#品牌价值
		(brand_value, yesterday_value, increase_sign, increase_percent) = get_latest_brand_value(webapp_id)
		#关注会员总数
		subscribed_member_count = stats_util.get_subscribed_member_count(webapp_id)
		#总成交订单
		all_order = Order.by_webapp_id(webapp_id).filter(status__in=ORDER_SOURCE)
		all_deal_order_count = all_order.count()
		#总成交额 cash + weizoom_card
		all_deal_order_money = float(sum([(order.final_price + order.weizoom_card_money) for order in all_order]))

		#待发货订单
		total_to_be_shipped_order_count = Order.by_webapp_id(webapp_id).filter(status=ORDER_STATUS_PAYED_NOT_SHIP).count()
		#待退款订单
		total_refunding_order_count = Order.by_webapp_id(webapp_id).filter(status=ORDER_STATUS_REFUNDING).count()

		#今日订单
		today_begin_str = datetime.today().strftime('%Y-%m-%d')+' 00:00:00'
		today_now_str = datetime.now().strftime('%Y-%m-%d %H:%M:%S')

		today_begin=datetime.strptime(today_begin_str,'%Y-%m-%d %H:%M:%S')
		today_now = datetime.strptime(today_now_str,'%Y-%m-%d %H:%M:%S')

		today_deal_order= all_order.filter(update_at__gte=today_begin,update_at__lte=today_now)
		today_deal_order_count = today_deal_order.count()
		#今日成交额 cash + weizoom_card
		today_deal_money = float(sum([(order.final_price + order.weizoom_card_money) for order in today_deal_order]))

		data = {
			'webapp_id':webapp_id,
			'brand_value':format(brand_value, ','),
			'subscribed_member_count':subscribed_member_count,
			'all_deal_order_money':'%.2f'%all_deal_order_money,
			'all_deal_order_count':all_deal_order_count,
			'today_deal_money':'%.2f'%today_deal_money,
			'today_deal_order_count':today_deal_order_count,
			'total_to_be_shipped_order_count':total_to_be_shipped_order_count,
			'total_refunding_order_count':total_refunding_order_count
		}

		response = create_response(200)
		response.data = data
	except:
		response = create_response(500)
		response.errMsg = u'系统繁忙,请稍后重试'
	return response.get_response()
Exemplo n.º 52
0
                                pass
                    if row_l:
                        row = row + max(row_l)
                    else:
                        row += 1
                try:
                    wb.save(export_file_path)
                except Exception, e:
                    print 'EXPORT EXCEL FILE SAVE ERROR'
                    print e
                    print '/static/upload/%s/%s' % (dir_path_suffix,
                                                    excel_file_name)
            else:
                ws.write(1, 0, '')
                wb.save(export_file_path)
            response = create_response(200)
            response.data = {
                'download_path':
                '/static/upload/%s/%s' % (dir_path_suffix, excel_file_name),
                'filename':
                download_excel_file_name,
                'code':
                200
            }
        except Exception, e:
            error_msg = u"导出文件失败, cause:\n{}".format(unicode_full_stack())
            watchdog_error(error_msg)
            response = create_response(500)
            response.innerErrMsg = unicode_full_stack()

        return response.get_response()
Exemplo n.º 53
0
def postdata(request):
    content = request.POST["data"]
    WeiboContent.objects.create(owner_id=1, content=content)
    response = create_response(200)
    return response.get_response()
Exemplo n.º 54
0
    def api_get(request):
        record_id = request.GET.get('id', None)
        member = request.member
        member_id = member.id
        fid = request.GET.get('fid', member_id)

        user_id = request.webapp_owner_info.user_profile.user_id
        username = User.objects.get(id=user_id).username

        response = create_response(500)
        if not record_id or not member_id:
            response.errMsg = u'活动信息出错'
            return response.get_response()
        record = app_models.PowerMe.objects(id=record_id)
        if record.count() <= 0:
            response.errMsg = 'is_deleted'
            return response.get_response()
        # 统计排名信息
        current_member_rank_info = None
        cache_key = 'apps_powerme_%s' % record_id
        cache_data = GET_CACHE(cache_key)
        if username != 'weshop' and cache_data:
            participances_dict = cache_data['participances_dict']
            participances_list = cache_data['participances_list']
            total_participant_count = cache_data['total_participant_count']
            print '================from cache'
        else:
            if username == 'weshop':
                need_del_powerlogs_ids = []
                power_logs = app_models.PowerLog.objects(belong_to=record_id)
                power_member_ids = [p.power_member_id for p in power_logs]
                member_id2subscribe = {
                    m.id: m.is_subscribed
                    for m in Member.objects.filter(id__in=power_member_ids)
                }

                #统计助力值
                need_power_logs = [
                    p for p in power_logs
                    if member_id2subscribe[p.power_member_id]
                ]
                power_log_ids = [p.id for p in need_power_logs]
                #更新已关注会员的助力详情记录
                detail_power_member_ids = [
                    p.power_member_id for p in need_power_logs
                ]
                detail = app_models.PoweredDetail.objects(
                    belong_to=record_id,
                    power_member_id__in=detail_power_member_ids).order_by(
                        '-id').first()
                if detail:
                    detail.update(set__has_powered=True)
                    #计算助力值
                    app_models.PowerMeParticipance.objects(
                        belong_to=record_id,
                        member_id=detail.owner_id).update(inc__power=1)
                    need_del_powerlogs_ids += power_log_ids
                    #删除计算过的log
                    app_models.PowerLog.objects(
                        id__in=need_del_powerlogs_ids).delete()
                    app_models.PoweredLimitRelation.objects(
                        belong_to=record_id,
                        powered_member_id=detail.owner_id,
                        member_id=detail.power_member_id).delete()

            # 遍历log,统计助力值
            participances_dict = {}
            participances_list = []
            participances = app_models.PowerMeParticipance.objects(
                belong_to=record_id,
                has_join=True).order_by('-power', 'created_at')
            total_participant_count = participances.count()
            member_ids = [p.member_id for p in participances]
            member_id2member = {
                m.id: m
                for m in Member.objects.filter(id__in=member_ids)
            }
            rank = 0  # 排名
            for p in participances:
                rank += 1
                temp_dict = {
                    'rank': rank,
                    'member_id': p.member_id,
                    'user_icon': member_id2member[p.member_id].user_icon,
                    'username':
                    member_id2member[p.member_id].username_size_ten,
                    'power': p.power
                }
                participances_dict[p.member_id] = temp_dict
                participances_list.append(temp_dict)
            # 取前100位
            participances_list = participances_list[:100]

            SET_CACHE(
                cache_key, {
                    'participances_dict': participances_dict,
                    'participances_list': participances_list,
                    'total_participant_count': total_participant_count
                })
            print '================set cache'
        current_member_rank_info = participances_dict.get(int(member_id), None)

        isMember = False
        timing = 0
        mpUserPreviewName = ''
        is_already_participanted = False
        is_powered = False
        self_page = False
        page_owner_name = ''
        page_owner_member_id = 0
        activity_status = u"未开始"
        has_power = False

        # fid = request.COOKIES['fid']
        # fid = request.GET.get('fid', member_id)

        if 'new_app:' in record_id:
            project_id = record_id
            record_id = 0
            record = None
        elif member:
            isMember = member.is_subscribed
            record = app_models.PowerMe.objects(id=record_id)
            if record.count() > 0:
                record = record.first()
                # 获取公众号昵称
                mpUserPreviewName = request.webapp_owner_info.auth_appid_info.nick_name
                # 获取活动状态
                activity_status = record.status_text

                now_time = datetime.today().strftime('%Y-%m-%d %H:%M')
                data_start_time = record.start_time.strftime('%Y-%m-%d %H:%M')
                data_end_time = record.end_time.strftime('%Y-%m-%d %H:%M')
                if data_start_time <= now_time and now_time < data_end_time:
                    record.update(set__status=app_models.STATUS_RUNNING)
                    activity_status = u'进行中'
                elif now_time >= data_end_time:
                    record.update(set__status=app_models.STATUS_STOPED)
                    activity_status = u'已结束'

                project_id = 'new_app:powerme:%s' % record.related_page_id

                # 检查所有当前参与用户是否取消关注,清空其助力值同时设置为未参与
                # clear_non_member_power_info(record_id)

                curr_member_power_info = app_models.PowerMeParticipance.objects(
                    belong_to=record_id, member_id=member_id)
                if curr_member_power_info.count() > 0:
                    curr_member_power_info = curr_member_power_info.first()
                else:
                    curr_member_power_info = app_models.PowerMeParticipance(
                        belong_to=record_id,
                        member_id=member_id,
                        created_at=datetime.now())
                    curr_member_power_info.save()
                is_already_participanted = curr_member_power_info.has_join

                # 判断分享页是否自己的主页
                if fid is None or str(fid) == str(member_id):
                    page_owner_name = member.username_size_ten
                    page_owner_member_id = member_id
                    self_page = True
                else:
                    user_id = request.webapp_owner_info.user_profile.user_id
                    username = User.objects.get(id=user_id).username
                    has_power = True if username == 'weshop' and app_models.PoweredLimitRelation.objects(
                        belong_to=record_id,
                        member_id=member_id,
                        powered_member_id=fid).count() > 0 else False
                    page_owner_name = Member.objects.get(
                        id=fid).username_size_ten
                    page_owner_member_id = fid
                    # if curr_member_power_info.powered_member_id:
                    # 	is_powered = True if fid in curr_member_power_info.powered_member_id and isMember else False
                    is_powered = True if app_models.PowerMeRelations.objects(
                        belong_to=record_id,
                        member_id=str(member_id),
                        powered_member_id=fid).count(
                        ) > 0 and isMember else False
            else:
                response.errMsg = u'活动信息出错'
                return response.get_response()
        else:
            record = app_models.PowerMe.objects(id=record_id)
            if record.count() > 0:
                record = record.first()

                # 获取活动状态
                activity_status = record.status_text

                now_time = datetime.today().strftime('%Y-%m-%d %H:%M')
                data_start_time = record.start_time.strftime('%Y-%m-%d %H:%M')
                data_end_time = record.end_time.strftime('%Y-%m-%d %H:%M')
                if data_start_time <= now_time and now_time < data_end_time:
                    record.update(set__status=app_models.STATUS_RUNNING)
                    activity_status = u'进行中'
                elif now_time >= data_end_time:
                    record.update(set__status=app_models.STATUS_STOPED)
                    activity_status = u'已结束'

                project_id = 'new_app:powerme:%s' % record.related_page_id
            else:
                response.errMsg = 'is_deleted_data'
                return response.get_response()

        if u"进行中" == activity_status:
            timing = (record.end_time - datetime.today()).total_seconds()

        member_info = {
            'isMember': isMember,
            'timing': timing,
            'mpUserPreviewName': mpUserPreviewName,
            'is_already_participanted': is_already_participanted,
            'is_powered': is_powered,
            'self_page': self_page,
            'member_id': member_id,
            'page_owner_name': page_owner_name,
            'page_owner_member_id': page_owner_member_id,
            'activity_status': activity_status,
            'has_power': has_power
        }

        follow_friend_list = []
        unfollow_friend_list = []
        if username == 'weshop':
            details = app_models.PoweredDetail.objects(belong_to=record_id,
                                                       owner_id=fid,
                                                       has_powered=True)
            power_member_ids = [d.power_member_id for d in details]
            power_member_id2member = {
                m.id: m
                for m in Member.objects.filter(id__in=power_member_ids)
            }
            for member_id, member in power_member_id2member.items():
                if member.is_subscribed:
                    follow_friend_list.append({
                        'user_icon':
                        member.user_icon,
                        'username':
                        username_size_four(member)
                    })
                else:
                    unfollow_friend_list.append({
                        'user_icon':
                        member.user_icon,
                        'username':
                        username_size_four(member)
                    })

        response = create_response(200)
        response.data = {
            'participances': participances_list,
            'current_member_rank_info': current_member_rank_info,
            'total_participant_count': total_participant_count,
            'member_info': member_info,
            'follow_friend_list': follow_friend_list,
            'unfollow_friend_list': unfollow_friend_list
        }
        return response.get_response()
Exemplo n.º 55
0
    def api_post(request):
        """
        更新评论的状态
        """
        # 单个修改
        if "product_review_id" in request.POST:

            product_review_id = request.POST.get("product_review_id", None)
            status = request.POST.get("status", None)
            from modules.member.integral import increase_member_integral
            from modules.member import models as member_models

            if product_review_id:
                review = mall_models.ProductReview.objects.filter(
                    owner_id=request.webapp_owner_id, id=product_review_id)
                if status == '2' or status == '1':
                    if len(review) == 1 and int(review[0].status) == 0:
                        settings = member_models.IntegralStrategySttings.objects.get(
                            webapp_id=request.user_profile.webapp_id)
                        if settings.review_increase > 0:
                            member = member_models.Member.objects.filter(
                                id=review[0].member_id)
                            if len(member):
                                increase_member_integral(
                                    member[0], settings.review_increase,
                                    '商品评价奖励')

                if status == '2':
                    product_review = mall_models.ProductReview.objects.get(
                        id=product_review_id)
                    top_reviews = mall_models.ProductReview.objects.filter(
                        product_id=product_review.product_id,
                        status=int(status)).order_by("top_time")
                    if top_reviews.count() >= 3:
                        ids = [
                            review.id
                            for review in top_reviews[:(top_reviews.count() -
                                                        2)]
                        ]
                        mall_models.ProductReview.objects.filter(
                            id__in=ids).update(
                                status=1,
                                top_time=mall_models.DEFAULT_DATETIME)
                        mall_models.ProductReview.objects.filter(
                            id=product_review_id).update(
                                status=int(status), top_time=datetime.now())
                    else:
                        mall_models.ProductReview.objects.filter(
                            id=product_review_id).update(
                                status=int(status), top_time=datetime.now())
                else:
                    review.update(status=int(status),
                                  top_time=mall_models.DEFAULT_DATETIME)
                return create_response(200).get_response()
            else:
                return create_response(500).get_response()
        # 批量修改
        else:
            ids = request.POST.get("ids", '')
            action = request.POST.get("action", '')
            ids = ids.split(',')
            from modules.member.integral import increase_member_integral
            from modules.member import models as member_models

            if action == 'pass':
                try:
                    reviews = mall_models.ProductReview.objects.filter(
                        owner_id=request.webapp_owner_id, id__in=ids)

                    settings = member_models.IntegralStrategySttings.objects.get(
                        webapp_id=request.user_profile.webapp_id)
                    if settings.review_increase > 0:
                        # 处理增加积分
                        increase_integral_member_ids = []
                        for review in reviews:
                            if int(review.status) == 0:
                                increase_integral_member_ids.append(
                                    review.member_id)

                        if len(increase_integral_member_ids) > 0:
                            members = member_models.Member.objects.filter(
                                id__in=increase_integral_member_ids)
                            id2member = dict(
                                (member.id, member) for member in members)
                            for review in reviews:
                                if int(review.status) == 0:
                                    increase_member_integral(
                                        id2member[review.member_id],
                                        settings.review_increase, '商品评价奖励')
                    reviews.update(status=1,
                                   top_time=mall_models.DEFAULT_DATETIME)
                    return create_response(200).get_response()
                except:
                    return create_response(500).get_response()
            else:
                try:
                    mall_models.ProductReview.objects.filter(
                        owner_id=request.webapp_owner_id,
                        id__in=ids).update(status=-1)
                    return create_response(200).get_response()
                except:
                    return create_response(500).get_response()
Exemplo n.º 56
0
def create_json_response(code, data):
    response = create_response(code)
    response.data = data
    return response.get_response()
Exemplo n.º 57
0
    def api_get(request):
        """
        得到属于当前用户的所有评论过的商品的列表
        返回包含产品信息和产品评价的json
        advanced table
        """
        name = request.GET.get('name', '')
        user_code = request.GET.get('userCode', '')
        review_status = request.GET.get('reviewStatus', 'all')
        start_date = request.GET.get('startDate', '')
        end_date = request.GET.get('endDate', '')
        product_score = request.GET.get('productScore', '-1')

        is_fetch_all_reviews = (not name) and (not user_code) and (
            not start_date) and (not end_date) and (
                review_status == 'all') and (product_score == 'all')

        # 当前用户
        owner = request.manager
        all_reviews = mall_models.ProductReview.objects.filter(
            owner_id=owner.id).order_by("-created_at")

        if is_fetch_all_reviews:
            # 分页
            count_per_page = int(
                request.GET.get('count_per_page', COUNT_PER_PAGE))
            current_page = int(request.GET.get('page', '1'))
            pageinfo, product_reviews = paginator.paginate(
                all_reviews,
                current_page,
                count_per_page,
                query_string=request.META['QUERY_STRING'])
        else:
            all_reviews = _filter_reviews(request, all_reviews)

            # 处理商品编码
            product_reviews = []
            if user_code:
                for review in all_reviews:
                    from cache import webapp_cache

                    review_product = mall_models.OrderHasProduct.objects.get(
                        id=review.order_has_product_id)
                    product = webapp_cache.get_webapp_product_detail(
                        request.webapp_owner_id, review.product_id)
                    product.fill_specific_model(
                        review_product.product_model_name)
                    if product.model.user_code == user_code:
                        review.product_user_code = user_code
                        product_reviews.append(review)
            else:
                product_reviews = all_reviews

            count_per_page = int(
                request.GET.get('count_per_page', COUNT_PER_PAGE))
            current_page = int(request.GET.get('page', '1'))
            pageinfo, product_reviews = paginator.paginate(
                product_reviews,
                current_page,
                count_per_page,
                query_string=request.META['QUERY_STRING'])

        # 处理商品
        product_ids = [review.product_id for review in product_reviews]
        id2product = dict([(product.id, product)
                           for product in mall_models.Product.objects.filter(
                               id__in=product_ids)])
        # 处理会员
        member_ids = [review.member_id for review in product_reviews]
        members = get_member_by_id_list(member_ids)
        member_id2member_name = dict([(m.id, m.username_for_html)
                                      for m in members])

        items = []
        from cache import webapp_cache

        reviewids = [r.order_has_product_id for r in product_reviews]
        orderhasproducts = mall_models.OrderHasProduct.objects.filter(
            id__in=reviewids)
        review2orderhasproductsmap = dict([(i.id, i)
                                           for i in orderhasproducts])

        for review in product_reviews:
            if not hasattr(review, 'product_user_code'):
                review_product = review2orderhasproductsmap[
                    review.order_has_product_id]
                review.product_name = review_product.product_name
                review.product_model_name = review_product.product_model_name
                product = webapp_cache.get_webapp_product_detail(
                    request.webapp_owner_id, review.product_id)
                product.fill_specific_model(review.product_model_name)
                review.product_user_code = product.model.user_code
            items.append({
                'id':
                review.id,
                'product_user_code':
                review.product_user_code,
                'product_name':
                id2product[review.product_id].name,
                'user_name':
                member_id2member_name.get(review.member_id, '已经跑路'),
                'created_at':
                review.created_at.strftime('%Y-%m-%d %H:%M:%S'),
                'content':
                review.review_detail,
                'product_id':
                review.product_id,
                'member_id':
                review.member_id,
                'product_score':
                review.product_score,
                'status': {
                    'name':
                    mall_models.PRODUCT_REVIEW_STATUS[int(review.status) +
                                                      1][1],  # 返回产品状态
                    'value':
                    review.status,
                }
            })

        response = create_response(200)
        response.data = {
            'items': items,
            'pageinfo': paginator.to_dict(pageinfo),
            'sortAttr': '',
            'data': {}
        }
        return response.get_response()