def show_goal_share(request, pk): user = request.session['user'] wechat_config = get_wechat_config(request) sub_models = get_son_models(Goal) goal = None for sub_model_key in sub_models: query = sub_models[sub_model_key].objects.filter( user_id=user.user_id).filter(goal_id=pk) if query: goal = query[0] break if goal: # 跑步自由模式 if goal.activity_type == RunningGoal.get_activity( ) and goal.goal_type == 0: goal_intro = "在{0}天内累计跑步{1}km".format(goal.goal_day, goal.goal_distance) elif goal.activity_type == RunningGoal.get_activity(): goal_intro = "在{0}天内每天跑步{1}km".format(goal.goal_day, goal.kilos_day) elif goal.activity_type == ReadingGoal.get_activity(): goal_intro = "在30天内阅读完书籍《{0}》".format(goal.book_name) elif goal.activity_type == SleepingGoal.get_activity(): goal_intro = "在{0}天内每天早上{1}前起床".format( goal.goal_day, goal.getup_time.strftime("%H:%M")) else: goal_intro = "" return render( request, 'goal/share.html', { "WechatJSConfig": wechat_config, "goal_intro": goal_intro, "activity": goal.activity_type }) else: return HttpResponseNotFound
def show_activities(request): user = request.session["user"] # 查询当前用户的次数数据 record = Tutorial.objects.filter(user_id=user.user_id) if len(record) == 0: # 创建用户教程表,记录用户是第几次进入平台的 Tutorial.objects.create(user_id=user.user_id) else: pass record = Tutorial.objects.filter(user_id=user.user_id) if record: times = record[0].times_in_homepage else: times = None activities = Activity.objects.all().order_by("-activity_type") # TODO: fake # activities = fake_data(activities) return render( request, 'activity/index.html', { 'activities': activities, "user_id": user.user_id, "times": times, "WechatJSConfig": get_wechat_config(request) })
def share(request): user_id = request.GET.get("user_id") wechat_config = get_wechat_config(request) user = UserInfo.objects.get(user_id=user_id) nickname = user.nickname imgUrl = user.headimgurl ticket = user_qrcode(user.user_id) url = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket={}".format( ticket) context = { "user_id": user_id, "wechat_config": wechat_config, "nickname": nickname, "imgUrl": imgUrl, "url": url } return render(request, 'user/share.html', context)
def share_qrcode(request): try: user_id = request.GET.get("user_id") wechat_config = get_wechat_config(request) user = UserInfo.objects.get(user_id=user_id) nickname = user.nickname imgUrl = user.headimgurl url = "/static/qrcode/{}.jpg".format(user_id) context = { "user_id": user_id, "wechat_config": wechat_config, "nickname": nickname, "imgUrl": imgUrl, "url": url } return render(request, 'user/share.html', context) except Exception as e: print('分享二维码失败{}'.format(e))
def show_reading_goal(request, pk): user = request.session['user'] goal_id = pk goal = ReadingGoal.objects.filter(goal_id=goal_id).filter( activity_type=ReadingGoal.get_activity()).first() if goal: if goal.status != "ACTIVE": return render(request, 'goal/finish.html', { 'goal': goal, 'goal_type': ReadingGoal.get_activity() }) else: # 天数 dates_inform = get_days(goal) # 查询 Activity 相关的活动信息, 找到第一个符合类型要求且在进行中的活动 app = Activity.objects.get_active_activity( activity_type=ReadingGoal.get_activity()) person_goals = ReadingGoal.objects.filter(status="ACTIVE")[:5] persons = set() # TODO:FAKE app = fake_data([app])[0] for person_goal in person_goals: persons.add(UserInfo.objects.get(user_id=person_goal.user_id)) return render( request, "goal/reading.html", { "WechatJSConfig": get_wechat_config(request), "app": app, "goal": goal, "datesinform": dates_inform, "notice": UserAddress.objects.address_is_complete(user=user), "persons": persons, }) else: return page_not_found(request)
def show_riding_goal(request, pk): print('进入骑行活动') # 开始 user = request.session["user"] goal_id = pk print('goal_id', pk) goal = RidingGoal.objects.filter(goal_id=goal_id).filter( activity_type=RidingGoal.get_activity()).first() if goal: if goal.status != "ACTIVE": return render( request, 'goal/riding.html', { 'goal': goal, 'goal_type': RidingGoal.get_activity(), "headimg": user.headimgurl }) else: # 免签券数量查询 nosign_ticket = UserTicket.objects.get_nosigned_tickets( goal_id=goal_id) # 天数 dates_inform = get_days(goal) # 查询 Activity 相关的活动信息, 找到第一个符合类型要求且在进行中的活动 app = Activity.objects.get_active_activity( activity_type=RidingGoal.get_activity()) # TODO:FAKE # app = fake_data([app])[0] # 查询 Activity 相关的头像信息 person_goals = RidingGoal.objects.filter(status="ACTIVE")[:10] persons = set() for person_goal in person_goals: persons.add(UserInfo.objects.get(user_id=person_goal.user_id)) # 随机查询24小时内存在的打卡记录,展示在本页面中 # lastday, today = timezone.now() - timedelta(days=1), timezone.now() lastday = timezone.now() - timedelta(days=1) today = timezone.now() random_records = RidingPunchRecord.objects.filter( record_time__range=(lastday, today)).order_by("-record_time")[:20] # activate_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())) # 获取邀请了多少好友 # num = UserInvite.objects.filter(user_id=request.session["user"].user_id).count() obj = RidingGoal.objects.filter(user_id=user.user_id, status="ACTIVE")[0] # 该活动的打卡天数 punch_day = obj.punch_day # 该活动的额外收益 extra_earn = obj.extra_earn a = goal.start_time.strftime("%Y-%m-%d") user_end_time = (goal.start_time + timedelta(days=1)).strftime("%Y-%m-%d") # if len(RunningPunchRecord.objects.filter(goal_id=goal_id, record_time__range=(a, user_end_time))) > 0: # first_day_record = 1 # else: # first_day_record = 0 news = [] for record in random_records: voucher_ref_list = record.voucher_ref.split(",") userinfo = UserInfo.objects.get(user_id=record.goal.user_id) # reply = RunReply.objects.filter(other_id=str(record.punch_id).replace("-","")).order_by('-id') # response = [{"content": i.r_content, "user_id": i.user_id, "nickname": i.get_user_message.nickname} for # i in reply] if len(reply) > 0 else "" document = record.document # report = RunningPunchReport.objects.filter(punch_id=record.punch_id).filter(user_id=user.user_id) # is_no_report = 1 if report else 0 # praise = RunningPunchPraise.objects.filter(punch_id=record.punch_id).filter(user_id=user.user_id) # is_no_praise=1 if praise else 0 record_time = record.record_time dis_day = "今日" if record_time.day == today.day else "昨日" dis_date = "%s %s:%02d" % (dis_day, record_time.hour, record_time.minute) news.append({ "headimage": userinfo.headimgurl, "date": dis_date, "distance": record.distance, # "praise": record.praise, # "report": record.report, 'reload': record.reload, # 'is_no_report': is_no_report, # 'is_no_praise': is_no_praise, "name": userinfo.nickname, "voucher_ref": voucher_ref_list, "punch_id": record.punch_id, "document": document, 'test': timezone.now(), # "reply_data":response, }) if app: return render( request, "goal/riding.html", { "WechatJSConfig": get_wechat_config(request), "app": app, "goal": goal, # "invite_num": num, 'nosign': nosign_ticket, "datesinform": dates_inform, "extra_earn": extra_earn, "persons": persons, "news": news, 'nickname': user.nickname, "punch_day": punch_day, # "first_day_record": first_day_record # "punch_id":punch_record }) else: return page_not_found(request) else: return page_not_found(request)
def show_reading_goal(request, pk): from on.activities.reading.models import Comments, Reply user = request.session["user"] goal_id = pk read = ReadingGoal.objects.filter(goal_id=goal_id).filter(activity_type=ReadingGoal.get_activity()).first() readinginfo = BookInfo.objects.get_book_info(book_id=1) # user = UserInfo.objects.filter(user_id=user.user_id)[0] # user = UserInfo.objects.get(user_id=user.user_id) if read: if read.status == "SUCCESS" or read.status == "FAILED": return render(request, 'goal/finish.html', { 'goal': read, 'goal_type': ReadingGoal.get_activity(), "headimg": user.headimgurl }) elif read.status == "ACTIVE": # 天数. dates_inform = get_days(read, goal_id) state = ReadTime.objects.get_reading_state(user_id=user.user_id) time_range = ReadTime.objects.filter(user_id=user.user_id)[0] # 查询 Activity 相关的活动信息, 找到第一个符合类型要求且在进行中的活动 app = Activity.objects.get_active_activity(activity_type=ReadingGoal.get_activity()) person_goals = ReadingGoal.objects.filter(status="ACTIVE")[:5] persons = set() # TODO:FAKE # app = fake_data([app])[0] confirm = UserOrder.objects.filter(user_id=user.user_id, goal_id=goal_id) if confirm: is_no_confirm = confirm[0].is_no_confirm elif read.is_start == 1: is_no_confirm = 1 else: is_no_confirm = None for person_goal in person_goals: persons.add(UserInfo.objects.get(user_id=person_goal.user_id)) owen = Comments.objects.filter(user_id=user.user_id).order_by("-c_time") comment_obj = Comments.objects.filter(is_delete=0,is_top=1).order_by("-c_time") datas = [] for comment in comment_obj: report = ReadingPunchReport.objects.filter(punch_id=comment.id,user_id=user.user_id) reply = Reply.objects.filter(other_id=comment.id).order_by('id') response = [{"content": i.r_content, "other_id": i.user_id, "nickname": i.get_user_message.nickname} for i in reply] if len(reply) > 0 else "" is_no_report = 1 if len(report) > 0 else 0 prise = ReadingPunchPraise.objects.filter(punch_id=comment.id,user_id=user.user_id) is_no_prise = 1 if len(prise) > 0 else 0 ref = comment.voucher_ref.split(",") if len(comment.voucher_ref) > 0 else "" top = comment.is_top if top == 0: datas.append({ "id": comment.id, 'user_id': comment.user_id, "content": comment.content, "c_time": comment.c_time, "prise": comment.prise, "report": comment.report, "voucher_ref": ref, "is_delete": comment.is_delete, "is_top": comment.is_top, "headimgurl": comment.get_some_message.headimgurl, "nickname": comment.get_some_message.nickname, "is_no_report": is_no_report, "is_no_prise": is_no_prise, "reply_data": response }) else: datas = [] return render(request, "goal/reading.html", { "WechatJSConfig": get_wechat_config(request), "app": app, "goal": read, "datesinform": dates_inform, "notice": UserAddress.objects.address_is_complete(user=user), "persons": persons, "book_id": read.book_id, "is_start": read.is_start, "readinginfo": readinginfo, "state": state, "time_range": timezone.now() - time_range.start_read, "is_no_confirm": is_no_confirm, "user_comments": owen, "datas": datas, "nickname": user.nickname }) else: app = Activity.objects.get_active_activity(activity_type=ReadingGoal.get_activity()) # 用户头像 person_goals = ReadingGoal.objects.filter(status="ACTIVE")[:5] persons = set() # TODO:FAKE for person_goal in person_goals: persons.add(UserInfo.objects.get(user_id=person_goal.user_id)) context = { "WechatJSConfig": get_wechat_config(request), "readinginfo": readinginfo, "app": app, "balance": user.balance, "user_id":user.user_id } return render(request, "activity/reading.html", context) else: app = Activity.objects.get_active_activity(activity_type=ReadingGoal.get_activity()) # 用户余额 # 用户头像 person_goals = ReadingGoal.objects.filter(status="ACTIVE")[:5] persons = set() # TODO:FAKE for person_goal in person_goals: persons.add(UserInfo.objects.get(user_id=person_goal.user_id)) context = { "WechatJSConfig": get_wechat_config(request), "readinginfo": readinginfo, "app": app, "balance": user.balance } return render(request, "activity/reading.html", context)
def show_sleeping_goal(request, pk): from on.activities.sleeping.models import Coefficient # goal_id = pk goal = SleepingGoal.objects.filter(goal_id=pk).filter(activity_type=SleepingGoal.get_activity()).first() user = request.session['user'] user_id = user.user_id print_test() if goal: if goal.status != "ACTIVE": return render(request, 'goal/finish.html', { 'goal': goal, 'goal_type': SleepingGoal.get_activity(), "headimg":user.headimgurl }) else: # 天数 sleep_type = goal.sleep_type dates_inform = get_days(goal,sleep_type) # 查询 Activity 相关的活动信息, 找到第一个符合类型要求且在进行中的活动 app = Activity.objects.get_active_activity(activity_type=SleepingGoal.get_activity()) new_coeff = 0 default = 0 extra_coeff=0 try: coeff = Coefficient.objects.get(user_id=user_id) default = coeff.default_coeff new_coeff = coeff.new_coeff if new_coeff: extra_coeff = (new_coeff-default)/default*decimal.Decimal(100) if extra_coeff >0: extra_coeff = "+%2d"%extra_coeff+"%" elif extra_coeff <0: extra_coeff = "%2d"%extra_coeff+"%" else: pass else: extra_coeff ="" except Coefficient.DoesNotExist as e: print(e) # 查询头像 person_goals = SleepingGoal.objects.filter(status="ACTIVE")[:5] persons = set() for person_goal in person_goals: persons.add(UserInfo.objects.get(user_id=person_goal.user_id)) # datas = comment_all(user=user) return render(request, "goal/sleeping.html", { "app": app, "WechatJSConfig": get_wechat_config(request), "goal": goal, "nickname": user.nickname, "datesinform": dates_inform, "new_coeff":new_coeff, # "getuptime": goal.getup_time.strftime("%H:%M"), "persons": persons, "datas": comment_all(user=user), "default":default, "extra_coeff":extra_coeff }) else: return page_not_found(request)
def warpper(request, *args, **kwargs): if settings.DEBUG: user_info = { "openid": "o0jd6wtPNYaqn08CXQvtStOC-Vfw", "nickname": "", "sex": "1", "headimgurl": "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/46", } wechat_id = user_info["openid"] user = UserInfo.objects.check_user(wechat_id) if not user: user = UserInfo.objects.create_user(user_info["openid"], user_info["nickname"], user_info["headimgurl"], int(user_info["sex"])) request.session['user'] = user return method(request, *args, **kwargs) else: if request.session.get('user', False): return method(request, *args, **kwargs) if request.method == 'GET': code = request.GET['code'] if 'code' in request.GET else None oauthClient.redirect_uri = settings.HOST + request.get_full_path( ) # 如果有授权code, 说明是重定向后的页面 if code: # 利用code来换取网页授权的access_token oauthClient.fetch_access_token(code=code) # 如果access_token有效,则进行下一步 if not oauthClient.check_access_token(): redirect_url = oauthClient.authorize_url return redirect(redirect_url) else: pass # 利用access_token获取用户信息 try: user_info = client.user.get( user_id=oauthClient.open_id) wechat_id = user_info["openid"] # 如果微信号不存在,则新建一个用户 user = UserInfo.objects.check_user(wechat_id) if not user: user = UserInfo.objects.create_user( user_info["openid"], user_info["nickname"], user_info["headimgurl"], int(user_info["sex"])) except Exception as e: print(e, '创建用户失败') try: usid = request.GET.get("usid", "") if usid: wechat_config = get_wechat_config(request) user = UserInfo.objects.get(user_id=usid) nickname = user.nickname imgUrl = user.headimgurl url = "/static/qrcode/{}.jpg".format(usid) context = { "user_id": usid, "wechat_config": wechat_config, "nickname": nickname, "imgUrl": imgUrl, "url": url } return render(request, 'user/share.html', context) else: return render(request, 'on_qrcode.html') except Exception as e: print('分享二维码失败{}'.format(e)) else: request.session['user'] = user return method(request, *args, **kwargs) # 否则直接到重定向后的页面去 else: redirect_url = oauthClient.authorize_url return redirect(redirect_url) else: return method(request, *args, **kwargs)
def show_specific_activity(request, pk): user = request.session.get("user") activity = Activity.objects.get(activity_id=pk) # 余额 balance = UserInfo.objects.get(user_id=user.user_id).balance # TODO:FakeDATA # activity = fake_data([activity])[0] # TODO if not settings.DEBUG: user = request.session['user'] sub_models = get_son_models(Goal) for sub_model_key in sub_models: sub_model = sub_models[sub_model_key] goal = sub_model.objects.filter(user_id=user.user_id).filter( activity_type=activity.activity_type) if goal: goal = goal.first() if goal.status != "PENDING": redirect_url = '/goal/{0}?activity_type={1}'.format( goal.goal_id, activity.activity_type) return HttpResponseRedirect(redirect_url) else: pass else: user = request.session['user'] sub_models = get_son_models(Goal) for sub_model_key in sub_models: sub_model = sub_models[sub_model_key] goal = sub_model.objects.filter(user_id=user.user_id).filter( activity_type=activity.activity_type) if goal: goal = goal.first() if goal.status != "PENDING": redirect_url = '/goal/{0}?activity_type={1}'.format( goal.goal_id, activity.activity_type) return HttpResponseRedirect(redirect_url) else: pass # 专门为读书设立的字段 readinginfo = BookInfo.objects.get_book_info(book_id=1) person_goals = [] if activity.activity_type == ReadingGoal.get_activity(): person_goals = ReadingGoal.objects.filter(status="ACTIVE")[:5] elif activity.activity_type == SleepingGoal.get_activity(): person_goals = SleepingGoal.objects.filter(status="ACTIVE")[:5] elif activity.activity_type == RunningGoal.get_activity(): person_goals = RunningGoal.objects.filter(status="ACTIVE")[:5] elif activity.activity_type == WalkingGoal.get_activity(): person_goals = WalkingGoal.objects.filter(status="ACTIVE")[:5] # 生成一个persons集合 persons = set() for person_goal in person_goals: persons.add(UserInfo.objects.get(user_id=person_goal.user_id)) record = Tutorial.objects.filter(user_id=user.user_id) times = record[0].times_in_read if record else None return render( request, 'activity/{0}'.format(mappings[activity.activity_type]), { "app": activity, "readinginfo": readinginfo, "WechatJSConfig": get_wechat_config(request), "persons": persons, "DEBUG": settings.DEBUG, "balance": balance, "times": times, "user_id": user.user_id, # "user_comments": owen, "user": user })
def show_specific_activity(request, pk): user = request.session['user'] print("当前登录的用户是{},用户id是:{}".format(user.nickname, user.user_id)) activity = Activity.objects.get(activity_id=pk) # 余额 balance = UserInfo.objects.get(user_id=user.user_id).balance # TODO:FakeDATA activity = fake_data([activity])[0] # TODO if not settings.DEBUG: user = request.session['user'] sub_models = get_son_models(Goal) for sub_model_key in sub_models: sub_model = sub_models[sub_model_key] goal = sub_model.objects.filter(user_id=user.user_id).filter( activity_type=activity.activity_type) if goal: goal = goal.first() if goal.status != "PENDING": redirect_url = '/goal/{0}?activity_type={1}'.format( goal.goal_id, activity.activity_type) return HttpResponseRedirect(redirect_url) else: pass else: user = request.session['user'] sub_models = get_son_models(Goal) for sub_model_key in sub_models: sub_model = sub_models[sub_model_key] goal = sub_model.objects.filter(user_id=user.user_id).filter( activity_type=activity.activity_type) if goal: goal = goal.first() if goal.status != "PENDING": redirect_url = '/goal/{0}?activity_type={1}'.format( goal.goal_id, activity.activity_type) return HttpResponseRedirect(redirect_url) else: pass # 专门为读书设立的字段 readinginfo = { 'title': '你的生命有什么可能', 'intro': '本书探讨了以下问题:高竞争的工作、高不可攀的房价和房租、 拥挤的交通、糟糕的空气、不安全的食品……在竭尽全力才能生存的时代,年轻人如何追求自己的梦想?在这样的时代,我们的生命又有什么可能?如何才能越过现实和理想的鸿沟,找到和进入自己希望的人生?如何修炼自己在现实中活得更好的能力?如何在现实之中发展自己的兴趣?如何连接现实和理想?如何面对生命里的苦难、贫穷、不完美或者不公正?如何获得心灵的自由?', 'imageurl': '/static/images/reading_book_demo.png', 'price': 35, 'return': 20, 'guaranty': 30, 'page': 315 } if activity.activity_type == ReadingGoal.get_activity(): person_goals = ReadingGoal.objects.filter(status="ACTIVE")[:5] elif activity.activity_type == SleepingGoal.get_activity(): person_goals = SleepingGoal.objects.filter(status="ACTIVE")[:5] else: person_goals = RunningGoal.objects.filter(status="ACTIVE")[:5] # 生成一个persons集合 persons = set() for person_goal in person_goals: persons.add(UserInfo.objects.get(user_id=person_goal.user_id)) return render( request, 'activity/{0}'.format(mappings[activity.activity_type]), { "app": activity, "readinginfo": readinginfo, "WechatJSConfig": get_wechat_config(request), "persons": persons, "DEBUG": settings.DEBUG, "balance": balance })