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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))