Exemple #1
0
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())
Exemple #2
0
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([])
Exemple #3
0
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'})
Exemple #4
0
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({})
Exemple #5
0
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({})
Exemple #6
0
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())
Exemple #7
0
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())
Exemple #8
0
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'})
Exemple #9
0
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([])
Exemple #10
0
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'})
Exemple #11
0
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()
Exemple #12
0
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())
Exemple #13
0
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))
Exemple #14
0
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))
Exemple #15
0
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()
Exemple #16
0
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())
Exemple #17
0
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})
Exemple #18
0
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()
Exemple #19
0
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])
Exemple #20
0
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())
Exemple #21
0
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({})
Exemple #22
0
def share_student():
    data = ShareStudentSchema().fill()
    student_id = data.get('student_id')
    UserBehavior.add(student_id, UserBehaviorType.share_me_to_friend)
    return normal_jsonify()
Exemple #23
0
def check_session():
    """Check Session"""
    return normal_jsonify({})
Exemple #24
0
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()))
Exemple #25
0
def get_config():
    config = {
        'data_center': False,
    }
    return normal_jsonify(config)
Exemple #26
0
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())
Exemple #27
0
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))
Exemple #28
0
def get_courses():
    courses = Course.get_all()
    return normal_jsonify([course.dump() for course in courses])
Exemple #29
0
def share_student():
    data = ShareStudentSchema().fill()
    student_id = data.get('student_id')
    return normal_jsonify()
Exemple #30
0
def get_course(course_id):
    course = Course.get(course_id)
    if course:
        return normal_jsonify(course.dump())
    abort(404)