def create_user(): wechat_user = g.wechat_user open_id = wechat_user.open_id data = student_schema.CreateStudentSchema().fill() mobile = data['mobile'] validator.validate_phone(mobile) verify_code = data['verify_code'] try: r = SMSVerify.verify(mobile, verify_code, SMSVerifyType.register) except AtemptTooManyTimesError as e: return normal_jsonify({}, e.message, e.http_status_code) if not r: raise InvalidSMSVerifyCodeError() type_ = StudentType(data['type']) grade = data['grade'] id_ = Student.add(wechat_user.id, mobile, open_id, type_, grade, AccountStatus.need_verify) student = Student.get(id_) SMS.reg_complete.delay(mobile=mobile) Student.cache_avatar.delay(student.id, student.avatar_url) return normal_jsonify(student.dump())
def get_posts(): data = GetGoodsPostSchema().fill() start = data.get('start', 0) limit = data.get('limit', 10) order = OrderType(data.get('order', 0)) posts = GoodsPost.gets(limit=limit, offset=start, order=order) if posts: return normal_jsonify([post.dump() for post in posts]) return normal_jsonify([])
def clear_all(): data = request.args pwd = data.get('pwd') if pwd != RAW_SALT: return normal_jsonify({'status': 'failed'}) from manage import init_database init_database() mc.flushdb() return normal_jsonify({'status': 'ok'})
def decr_remaining_viewcount(): student = Student.get(g.wechat_user.id) if not student: return normal_jsonify({}, 'Student Not Found', 404) data = DecrRemainingViewCountSchema().fill() post_id = data['post_id'] student.decr_viewcount() ViewRecord.add(student.id, post_id, PostType.course_post) UserBehavior.add(g.wechat_user.id, UserBehaviorType.view_course_post_contact, dict(post_id=post_id)) return normal_jsonify({})
def send_register_code(): data = student_schema.RegisterStudentSchema().fill() mobile = data.get('mobile') validator.validate_phone(mobile) if Student.existed(mobile): raise MobileAlreadyExistedError() code = SMSVerify.add(mobile, SMSVerifyType.register) msg = VERIFY_CODE_TEMPLATE.format(code=code) SMS.send(mobile, msg, tag='register') if DEBUG: print(msg) return normal_jsonify(dict(code=code, msg=msg)) return normal_jsonify({})
def get_student(student_id): student = Student.get(student_id) if not student: return normal_jsonify({}, 'Student Not Found', 404) UserBehavior.add(g.wechat_user.id, UserBehaviorType.view_other_profile, dict(student_id=student_id)) return jsonify(student.dump())
def get_current_student(): wechat_user = g.wechat_user id_ = wechat_user.id student = Student.get(id_) if not student: return normal_jsonify({}, 'Student Not Found', 404) return jsonify(student.dump())
def edit_post(post_id): data = UpdateCoursePostSchema().fill() post = CoursePost.get(post_id) post.update_self(data) UserBehavior.add(g.wechat_user.id, UserBehaviorType.edit_course_post, dict(post_id=post_id)) return normal_jsonify({'status': 'ok'})
def get_posts(): data = GetCoursePostSchema().fill() start = data.get('start', 0) limit = data.get('limit', 10) order = OrderType(data.get('order', 0)) supply = data.get('supply', None) demand = data.get('demand', None) closed = data.get('closed', 1) posts = CoursePost.gets(limit=limit, offset=start, order=order, closed=closed, supply=supply, demand=demand) if posts: return normal_jsonify([post.dump() for post in posts]) return normal_jsonify([])
def edit_post_status(post_id): data = UpdateCoursePostStatusSchema().fill() status = PostStatus(data['status']) post = CoursePost.get(post_id) post.update_status(status) UserBehavior.add(g.wechat_user.id, UserBehaviorType.markdone_course_post, dict(post_id=post_id, status=status.value)) return normal_jsonify({'status': 'ok'})
def share_post(): data = SharePostSchema().fill() post_id = data.get('post_id') post_type = PostType(data.get('post_type')) student_id = data.get('student_id', 0) detail = dict(post_id=post_id, student_id=student_id) return normal_jsonify()
def update_user(): data = student_schema.UpdateStudentSchema().fill() type_ = StudentType(data['type']) grade = data['grade'] wechat_user = g.wechat_user id_ = wechat_user.id student = Student.get(id_) student = student.update(type_, grade) UserBehavior.add(g.wechat_user.id, UserBehaviorType.edit_profile, dict(type_=type_.value, grade=grade)) return normal_jsonify(student.dump())
def get_post(post_id): post = CoursePost.get(post_id) student = Student.get(g.wechat_user.id) if student.id != post.student_id: post.pv += 1 has_viewed_contact = True if ViewRecord.gets(student.id, post_id) else False UserBehavior.add(g.wechat_user.id, UserBehaviorType.view_course_post, dict(post_id=post_id)) return normal_jsonify( dict(post=post.dump(), has_viewed_contact=has_viewed_contact))
def get_token(): student = Student.get(g.wechat_user.id) if not student: raise UserNotFoundError() data = GetUploadTokenSchema().fill() ext = data.get('ext') now = datetime.now().strftime('%y%m%d%H%M%S') file_name = 'bm-post-pic-s%s-t%s.%s' % (student.id, now, ext) id_ = FilePhoto.add(student.id, qiniu_client.bucket_name, file_name) token = qiniu_client.get_token(file_name=file_name) return normal_jsonify(dict(id=id_, token=token))
def callback(): data = request.form key = data.get('key') filesize = data.get('filesize') hash = data.get('hash') photo = FilePhoto.get_by_file_name(key) if not photo: raise photo.update(filesize=filesize, hash=hash) UserBehavior.add(photo.user_id, UserBehaviorType.upload_photo, dict(key=key)) return normal_jsonify()
def create_post(): data = CreateGoodsPostSchema().fill() student_id = data['student_id'] switch = PostMobileSwitch(data['switch']) mobile = data['mobile'] wechat = data['wechat'] message = data['message'] imgs = data['imgs'] post = GoodsPost.add(student_id, switch, mobile, wechat, imgs, message) UserBehavior.add(g.wechat_user.id, UserBehaviorType.create_goods_post, dict(post_id=post.id)) return normal_jsonify(post.dump())
def clear_user(id_): data = request.args pwd = data.get('pwd') if pwd != RAW_SALT: return normal_jsonify({'status': 'failed'}) from black_market.model.user.student import Student from black_market.model.wechat.session import WechatSession from black_market.model.post.course import CoursePost student = Student.get(id_) name = student.username wechat_user = student.wechat_user wechat_session = WechatSession.get_by_open_id(wechat_user.open_id) posts = CoursePost.gets_by_student(student.id, limit=100, offset=0) for post in posts: post.delete() student.delete() wechat_user.delete() wechat_session.delete() return normal_jsonify({'status': 'Student %s has been removed.' % name})
def share_post(): data = SharePostSchema().fill() post_id = data.get('post_id') post_type = PostType(data.get('post_type')) student_id = data.get('student_id', 0) detail = dict(post_id=post_id, student_id=student_id) if post_type is PostType.course_post: UserBehavior.add(student_id, UserBehaviorType.share_course_post, detail) elif post_type is PostType.goods_post: UserBehavior.add(student_id, UserBehaviorType.share_goods_post, detail) return normal_jsonify()
def get_my_post(): student = Student.get(g.wechat_user.id) if not student: return normal_jsonify({}, 'Student Not Found', 404) data = student_schema.GetMyCoursePostSchema().fill() start = data.get('start', 0) limit = data.get('limit', 10) order = OrderType(data.get('order', 0)) posts = CoursePost.gets_by_student(student.id, limit=limit, offset=start, order=order) return jsonify([post.dump() for post in posts])
def create_post(): data = CreateCoursePostSchema().fill() student_id = data['student_id'] supply = data['supply'] demand = data['demand'] switch = PostMobileSwitch(data['switch']) mobile = data['mobile'] wechat = data['wechat'] message = data['message'] post = CoursePost.add(student_id, supply, demand, switch, mobile, wechat, message) UserBehavior.add(g.wechat_user.id, UserBehaviorType.create_course_post, dict(post_id=post.id)) return normal_jsonify(post.dump())
def update_wechat_user(): wechat_session = g.wechat_session open_id = wechat_session.open_id data = request.get_json() user_info = data['userInfo'] nickname = user_info.get('nickName') gender = user_info.get('gender') language = user_info.get('language') city = user_info.get('city') province = user_info.get('province') country = user_info.get('country') avatar_url = user_info.get('avatarUrl') WechatUser.add(open_id, nickname, avatar_url, city, country, gender, language, province) return normal_jsonify({})
def share_student(): data = ShareStudentSchema().fill() student_id = data.get('student_id') UserBehavior.add(student_id, UserBehaviorType.share_me_to_friend) return normal_jsonify()
def check_session(): """Check Session""" return normal_jsonify({})
def get_post_from_fuzzy(fuzzy_post_id): post_id = CoursePost.defuzzy(fuzzy_post_id) post = CoursePost.get(post_id) post.pv += 1 return normal_jsonify(dict(post=post.share_dump()))
def get_config(): config = { 'data_center': False, } return normal_jsonify(config)
def get_student_share_profile(student_id): student = Student.get(student_id) if not student: return normal_jsonify({}, 'Student Not Found', 404) return jsonify(student.share_dump())
def get_remaining_viewcount(): student = Student.get(g.wechat_user.id) if not student: return normal_jsonify({}, 'Student Not Found', 404) viewcount = student.remaining_viewcount return normal_jsonify(dict(viewcount=viewcount))
def get_courses(): courses = Course.get_all() return normal_jsonify([course.dump() for course in courses])
def share_student(): data = ShareStudentSchema().fill() student_id = data.get('student_id') return normal_jsonify()
def get_course(course_id): course = Course.get(course_id) if course: return normal_jsonify(course.dump()) abort(404)