Esempio n. 1
0
def get_spot_list(request, user_id=None) :
    session = get_session()    
    try :
        spot_list = session.query(SpotUserAssociation).filter_by(user_id=user_id).all()
    except :
        session.rollback()
        session.close()
        result = dict(success = False, message=u'users.views.get_spot_list: spot_list_db_error')
        return HttpResponse(dumps(result))

    spot_list = [ spot_assoc.spot for spot_assoc in spot_list ] 
    
    physical_spot_list = list()
    logical_spot_list = list()
    for spot in spot_list :
        if spot.is_physical :
            physical_spot_list.append(spot)
        else :
            logical_spot_list.append(spot)
    
    data = dict(
        physical_spot_list = to_dict(physical_spot_list),
        logical_spot_list = to_dict(logical_spot_list),
        )
    session.close()
    result = dict(success = True, message=u'users.views.get_spot_list: spot_list_success', data=data)
    return HttpResponse(dumps(result))
Esempio n. 2
0
def get_user_profile(request, user_id=None) :
    session = get_session()
    try:
        user_profile = session.query(UserInfo).get(user_id)
    except :
        session.rollback()
        session.close()
        result = dict(success = False, message=u'users.views.get_user_profile: db error while catching user profile')
        return HttpResponse(dumps(result))
    
    if not user_profile :
        result = dict(success=False, message=u'users.views.get_user_profile: user profile does not exist')
        return HttpResponse(dumps(result))
    try:
        spot_list = session.query(SpotUserAssociation).filter_by(user_id=user_id).all()
        snap_list = session.query(Snap).filter_by(user_id=user_id).all()
    except:
        session.rollback()
        session.close()
        result = dict(success = False, message=u'users.views.get_user_profile: db error while catching spotlist and snap list')
        return HttpResponse(dumps(result))

    user_profile = to_dict(user_profile)
    del user_profile['is_admin']
    del user_profile['created']
    spot_list = [ spot_assoc.spot for spot_assoc in spot_list ]

    physical_spot_list = list()
    logical_spot_list = list()
    for spot in spot_list :
        if spot.is_physical :
            physical_spot_list.append(spot)
        else :
            logical_spot_list.append(spot)

    # 모델의 릴레이션스는 to_dict에서 참조하므로 여기서 없앴다가 살림
    Snap.relations.remove('userinfo')
    SpotUserAssociation.relations.append('spot')
    data = dict(
        user_info = user_profile,
        physical_spot_list = to_dict(physical_spot_list),
        logical_spot_list = to_dict(logical_spot_list),
        snap_list = to_dict(snap_list),
        )
    Snap.relations.append('userinfo')
    SpotUserAssociation.relations.remove('spot')
    session.close()

    result = dict(success = True, message=u'users.views.get_user_profile: user_profile_success', data=data)
    return HttpResponse(dumps(result, True))
Esempio n. 3
0
def search_users(request, spot_id=None):
    request_data = loads(request.raw_post_data)
    if "search_keyword" not in request_data:
        result = dict(success=False, message=u"spots.views.search_users: no search keyword in request data")
        return HttpResponse(dumps(result))
    keyword = request_data["search_keyword"]

    session = get_session()
    try:
        result = session.execute(
            u"select * from user_infos where user_id in (select user_id from spot_user where spot_id = {spot_id}) and nickname like '{keyword}%'".format(
                spot_id=spot_id, keyword=keyword
            )
        )
    except:
        session.rollback()
        session.close()
        result = dict(success=False, message=u"spots.views.search_users: failed to search users")
        return HttpResponse(dumps(result))

    user_infos = to_dict(result)
    session.close()

    data = dict(user_infos=user_infos)

    result = dict(
        success=True,
        message=u"spots.views.search_users: users search with {keyword} in spot {spot_id}".format(
            keyword=keyword, spot_id=spot_id
        ),
        data=data,
    )
    return HttpResponse(dumps(result))
Esempio n. 4
0
def get_snaps(request):
    session = get_session()
    snaps = session.query(Snap).all()
    session.close()

    result = dict(success=True, message=u'haha', data=to_dict(snaps))
    return HttpResponse(dumps(result))
Esempio n. 5
0
def get_users(request) :
    limit, offset = get_paginate_info(request.GET)
    session = get_session()
    users = session.query(UserInfo).limit(limit).offset(offset).all()
    session.close()
    
    data = dict(
        user_list = to_dict(users),
        )
    result = dict(success=True, message=u'users.views.get_users: user list from {start} to {end}'.format(start=offset, end=limit+offset), data=data, start=offset, end=limit+offset)
    return HttpResponse(dumps(result, True))
Esempio n. 6
0
def get_snap(request, snap_id=None):
    session = get_session()
    snap = session.query(Snap).get(snap_id)

    data = dict(
        snap = to_dict(snap)
        )
    
    session.close()
    result = dict(success=True, message=u'snaps.views.get_snap: here you are ^^', data=data)
    return HttpResponse(dumps(result))
Esempio n. 7
0
def get_spot_info(request, spot_id=None):
    session = get_session()
    spot = session.query(Spot).get(spot_id)

    Spot.relations.append("king")
    Spot.relations.append("queen")
    data = dict(spot=to_dict(spot))

    Spot.relations.remove("king")
    Spot.relations.remove("queen")
    session.close()
    result = dict(success=True, message=u"spots.views.get_spot_info: here you are ^^", data=data)
    return HttpResponse(dumps(result, True))
Esempio n. 8
0
def get_spot_snaps(request, spot_id=None):
    limit, offset = get_paginate_info(request.GET)
    session = get_session()
    snaps = session.query(Snap).filter_by(spot_id=spot_id).limit(limit).offset(offset).all()

    data = dict(snap_list=to_dict(snaps))

    session.close()
    result = dict(
        success=True,
        message=u"spots.views.get_spot_snaps: snaps from {start} to {end}".format(start=offset, end=offset + limit),
        data=data,
    )
    return HttpResponse(dumps(result))
Esempio n. 9
0
def get_spot_users(request, spot_id=None):
    limit, offset = get_paginate_info(request.GET)

    session = get_session()

    SpotUserAssociation.relations.append("userinfo")
    spot_user_list = session.query(SpotUserAssociation).filter_by(spot_id=spot_id).limit(limit).offset(offset).all()

    data = dict(spot_user_list=to_dict(spot_user_list))
    session.close()
    result = dict(
        success=True, message=u"spots.views.get_spot_users: spot {spot_id} user list".format(spot_id=spot_id), data=data
    )
    return HttpResponse(dumps(result))
Esempio n. 10
0
def get_favorite_snaps(request, user_id=None):
    session = get_session()
    favorite_snap_id_list = session.query(SnapLike).filter_by(user_id=user_id).all()
    favorite_snap_id_list = [ snap.snap_id for snap in favorite_snap_id_list ]
    if not favorite_snap_id_list :
        favorite_snap_list = []
    else :
        favorite_snap_list = session.query(Snap).filter(Snap.snap_id.in_(favorite_snap_id_list)).all()
    data = dict(
        favorite_snap_list = to_dict(favorite_snap_list),
        )
    session.close()
    result = dict(success=True, message=u'users.views.get_favorite_snaps: favorite snaps', data=data)
    return HttpResponse(dumps(result))
Esempio n. 11
0
def get_spot_list(request):
    limit, offset = get_paginate_info(request.GET)

    session = get_session()
    spot_list = session.query(Spot).limit(limit).offset(offset).all()
    data = dict(spot_list=to_dict(spot_list))

    session.close()
    result = dict(
        success=True,
        message=u"spots.views.get_spot_list: the list of spots from {start} to {end}".format(
            start=offset, end=offset + limit
        ),
        data=data,
    )
    return HttpResponse(dumps(result, True))
Esempio n. 12
0
def signin(request):
    request_data = loads(request.raw_post_data)
    if not request_data :
        result = dict(success=False, message=u'no request data')
        return HttpResponse(dumps(result))
    if 'user_id' not in request_data :
        result = dict(success=False, message=u'no user id in request data')
        return HttpResponse(dumps(result))
    if 'user_password' not in request_data:
        result = dict(success=False, message=u'no user password in request data')
        return HttpResponse(dumps(result))
    
    user_id = request_data['user_id']
    user_password = str(md5.new(request_data['user_password']).hexdigest())
    session = get_session()
    user = session.query(User).filter_by(user_id=user_id).first()

    if user == None :
        session.close()
        result = dict(success=False, message=u'no user match with that id')
        return HttpResponse(dumps(result))
    if user.user_password != user_password :
        session.close()
        result = dict(success=False, message=u'the password is wrong')
        return HttpResponse(dumps(result))
    if 'HTTP_DEVICE_ID' not in request.META :
        session.close()
        result = dict(success=False, message=u'no device id in request header')
        return HttpResponse(dumps(result))

    key_cache = get_cache('user_key')
    uid = str(uuid.uuid4())
    device_id = request.META['HTTP_DEVICE_ID']

    key_cache.set(device_id, uid, DAY)
    user_info = to_dict(user.userinfo)
    user_session = get_cache('user_session')
    
    user_session.set(uid, dumps(user_info), DAY)

    session.close()
    result = dict(success=True, user_id = user_info['user_id'], server_key=uid, message=u'logged in')
    return HttpResponse(dumps(result))
Esempio n. 13
0
def get_snap_comments(request, snap_id=None):
    limit, offset = get_paginate_info(request.GET)

    session = get_session()

    snap = session.query(Snap).get(snap_id)
    if not snap :
        result = dict(success=False, message=u'snaps.views.get_snap_comments: no snap with snap id {snap_id}'.format(snap_id=snap_id))
        return HttpResponse(dumps(result))

    comments = session.query(SnapComment).filter_by(snap_id=snap_id).limit(limit).offset(offset).all()
    
    data = dict(
        comment_list = to_dict(comments),
        )

    session.close()
    result = dict(success=True, message=u'snaps.views.get_snap_comments: comment of Snap {snap_id} from {start} to {end}'.format(snap_id=snap_id, start=offset, end=offset+limit), data=data)
    return HttpResponse(dumps(result))