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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
def __build_empty_link_targets_response(): response = create_response(200) response.data = [] return response.get_response()
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()
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()
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()
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()
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:
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()
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()
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()
def get_logout(request): isSystemMenager = False auth.logout(request) response = create_response(200) return response.get_jsonp_response(request)
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()
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()
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()
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()
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)
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()
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)
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()
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)
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()
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)
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()
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()
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()
def postdata(request): content = request.POST["data"] WeiboContent.objects.create(owner_id=1, content=content) response = create_response(200) return response.get_response()
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()
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()
def create_json_response(code, data): response = create_response(code) response.data = data return response.get_response()
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()