コード例 #1
0
def main(request):
    if request.user.is_authenticated:
        if request.user.room != None:
            room = request.user.room
            if 'roomtrack_ids[]' in request.POST:
                roomtrack_ids = request.POST.getlist('roomtrack_ids[]')
                affected_tracks = []
                for roomtrack_id in roomtrack_ids:
                    roomtrack_id = int(roomtrack_id)
                    try:
                        roomtrack = RoomTrack.get_by_id(roomtrack_id)
                    except:
                        pass
                    else:
                        done = room.remove_roomtrack(roomtrack, request.user)
                        if done:
                            affected_tracks.append(roomtrack_id)
                return apiRespond(201, roomtrack_ids=affected_tracks)
            else:
                return apiRespond(400, msg='roomtrack_ids missing')
        else:
            return apiRespond(400, msg='Not a member of any room')
    else:
        # user is already logged in, redirect to root
        return apiRespond(401, msg='User not logged in')
コード例 #2
0
ファイル: addTracks.py プロジェクト: asrient/musicroom
def main(request):
    if request.user.is_authenticated:
        if request.user.room != None:
            room = request.user.room
            if 'track_ids[]' in request.POST:
                track_ids = request.POST.getlist('track_ids[]')
                if len(track_ids):
                    roomtracks = []
                    for track_id in track_ids:
                        try:
                            track = Track.get_by_id(track_id)
                        except:
                            pass
                        else:
                            roomtrack = room.add_track(track, request.user)
                            roomtracks.append(roomtrack.get_obj())
                    return apiRespond(201, roomtracks=roomtracks)
                else:
                    return apiRespond(400, msg='track_ids format invalid')
            else:
                return apiRespond(400, msg='track_ids missing')
        else:
            return apiRespond(400, msg='Not a member of any room')
    else:
        # user is already logged in, redirect to root
        return apiRespond(401, msg='User not logged in')
コード例 #3
0
def ping(request):
    if request.user.is_authenticated:
        request.user.seen_now()
        return apiRespond(201, msg='ok')
    else:
        # user is already logged in, redirect to root
        return apiRespond(401, msg='User not logged in')
コード例 #4
0
def skipto(request):
    if request.user.is_authenticated:
        data = request.POST
        if request.user.room != None:
            room = request.user.room
            if 'roomtrack_id' in data:
                rt_id = data['roomtrack_id']
                duration = None
                if 'duration' in data and data['duration'] != '':
                    duration = data['duration']
                try:
                    rt = RoomTrack.get_by_id(rt_id)
                except:
                    return apiRespond(400, msg='roomtrack_id invalid')
                else:
                    room.skip_to(
                        roomtrack=rt, duration=duration, action_user=request.user)
                    return apiRespond(201, msg='skipped')
            else:
                return apiRespond(400, msg='roomtrack_id missing')
        else:
            return apiRespond(400, msg='Not a member of any room')
    else:
        # user is already logged in, redirect to root
        return apiRespond(401, msg='User not logged in')
コード例 #5
0
def main(request):
    if request.user.is_authenticated:
        room = None
        if 'room_id' in request.POST:
            try:
                room = Room.get_by_id(request.POST['room_id'])
            except:
                return apiRespond(400, msg='invalid room_id')
        if room == None:
            room = request.user.room
        if room != None:
            members = room.get_members()
            friends = []
            others = []
            for member in members:
                friend_status, friend_obj = member.friendship_status(
                    request.user)
                if friend_status == 3:
                    friends.append(member.get_profile_min())
                else:
                    others.append(member.get_profile_min())
            return apiRespond(200, friends=friends, others=others)
        else:
            return apiRespond(400, msg='Not a member of any room and no room_id provided')
    else:
        # user is already logged in, redirect to root
        return apiRespond(401, msg='User not logged in')
コード例 #6
0
ファイル: revokeAccess.py プロジェクト: asrient/musicroom
def main(request):
    if request.user.is_authenticated:
        if request.user.room != None:
            room = request.user.room
            if 'user_ids[]' in request.POST:
                user_ids = request.POST.getlist('user_ids[]')
                if len(user_ids):
                    affected_users = []
                    for user_id in user_ids:
                        try:
                            user = User.get_by_id(user_id)
                        except:
                            pass
                        else:
                            affected_users.append(user_id)
                            room.revoke_access(user, save=False)
                    room.save()
                    return apiRespond(201, affected_users=affected_users)
                else:
                    return apiRespond(400, msg='user_ids format invalid')
            else:
                return apiRespond(400, msg='user_ids missing')
        else:
            return apiRespond(400, msg='Not a member of any room')
    else:
        # user is already logged in, redirect to root
        return apiRespond(401, msg='User not logged in')
コード例 #7
0
def main(request):
    if request.user.is_authenticated:
        profile=request.user.get_profile(request.user)
        return apiRespond(200, **profile)
    else:
        # user is already logged in, redirect to root
        return apiRespond(401, msg='User not logged in')
コード例 #8
0
ファイル: tracks.py プロジェクト: asrient/musicroom
def main(request):
    if request.user.is_authenticated:
        tracks = Track.browse()
        List = []
        for track in tracks:
            List.append(track.get_obj())
        return apiRespond(200, tracks=List)
    else:
        # user is already logged in, redirect to root
        return apiRespond(401, msg='User not logged in')
コード例 #9
0
def main(request):
    if request.user.is_authenticated:
        if request.user.room != None:
            room = request.user.room
            return apiRespond(200, room=room.get_state_obj())
        else:
            return apiRespond(400, msg='Not a member of any room')
    else:
        # user is already logged in, redirect to root
        return apiRespond(401, msg='User not logged in')
コード例 #10
0
def main(request):
    if request.user.is_authenticated:
        rooms = request.user.get_rooms()
        List = []
        for room in rooms:
            List.append(room.get_title_obj(request.user))
        return apiRespond(200, rooms=List)
    else:
        # user is already logged in, redirect to root
        return apiRespond(401, msg='User not logged in')
コード例 #11
0
ファイル: friendRequests.py プロジェクト: asrient/musicroom
def main(request):
    if request.user.is_authenticated:
        friends = request.user.get_friend_requests()
        List = []
        for friend in friends:
            List.append(friend.get_profile_min())
        return apiRespond(200, requests=List)
    else:
        # user is already logged in, redirect to root
        return apiRespond(401, msg='User not logged in')
コード例 #12
0
ファイル: leaveRoom.py プロジェクト: asrient/musicroom
def main(request):
    if request.user.is_authenticated:
        if request.user.room != None:
            request.user.leave_room()
            return apiRespond(201, msg='room left')
        else:
            return apiRespond(400, msg='Not a member of any room')
    else:
        # user is already logged in, redirect to root
        return apiRespond(401, msg='User not logged in')
コード例 #13
0
def play(request):
    if request.user.is_authenticated:
        if request.user.room != None:
            room = request.user.room
            room.play(action_user=request.user)
            return apiRespond(201, msg='playing')
        else:
            return apiRespond(400, msg='Not a member of any room')
    else:
        # user is already logged in, redirect to root
        return apiRespond(401, msg='User not logged in')
コード例 #14
0
def main(request):
    if request.user.is_authenticated:
        if "avatar_url" in request.POST:
            url=request.POST["avatar_url"].strip()
            request.user.avatar_url=url
            request.user.save()
            return apiRespond(200, avatar_url=url)
        else:
            return apiRespond(400, msg='avatar_url missing')
    else:
        # user is already logged in, redirect to root
        return apiRespond(401, msg='User not logged in')
コード例 #15
0
ファイル: setName.py プロジェクト: asrient/musicroom
def main(request):
    if request.user.is_authenticated:
        if "name" in request.POST:
            name = request.POST["name"].strip()
            request.user.name = name
            request.user.save()
            return apiRespond(200, name=name)
        else:
            return apiRespond(400, msg='Give a name')
    else:
        # user is already logged in, redirect to root
        return apiRespond(401, msg='User not logged in')
コード例 #16
0
ファイル: roomCheck.py プロジェクト: asrient/musicroom
def p_room_check(request):
    if "access_key" in request.POST and request.POST[
            "access_key"] == LIVE_ACCESS_KEY:
        curr_time = timezone.now()
        rooms = Room.objects.filter(
            last_check_on__lte=(curr_time -
                                datetime.timedelta(seconds=0, minutes=5)
                                )).order_by('last_check_on')[:15]
        for room in rooms:
            room.check_state()
        return apiRespond(201, msg='done')
    else:
        return apiRespond(400, msg='access_key invalid')
コード例 #17
0
ファイル: getAccessUsers.py プロジェクト: asrient/musicroom
def main(request):
    if request.user.is_authenticated:
        if request.user.room != None:
            room = request.user.room
            access_users = room.get_access_users()
            List = []
            for access_user in access_users:
                List.append(access_user.get_profile_min())
            return apiRespond(200, access_users=List)
        else:
            return apiRespond(400, msg='Not a member of any room')
    else:
        # user is already logged in, redirect to root
        return apiRespond(401, msg='User not logged in')
コード例 #18
0
ファイル: getRoomTracks.py プロジェクト: asrient/musicroom
def main(request):
    if request.user.is_authenticated:
        if request.user.room != None:
            room = request.user.room
            tracks = room.get_roomtracks()
            List = []
            for track in tracks:
                List.append(track.get_obj())
            return apiRespond(200, roomtracks=List)
        else:
            return apiRespond(400, msg='Not a member of any room')
    else:
        # user is already logged in, redirect to root
        return apiRespond(401, msg='User not logged in')
コード例 #19
0
ファイル: friendStatus.py プロジェクト: asrient/musicroom
def friendship_status(request):
    if request.user.is_authenticated:
        if "user_id" in request.POST:
            try:
                target_user = User.get_by_id(request.POST["user_id"])
            except:
                return apiRespond(400, msg="User does not exists")
            else:
                fstatus, friend = target_user.friendship_status(request.user)
                return apiRespond(200, friendship_status=fstatus)
        else:
            return apiRespond(400, msg='id missing')
    else:
        # user is already logged in, redirect to root
        return apiRespond(401, msg='User not logged in')
コード例 #20
0
ファイル: getProfile.py プロジェクト: asrient/musicroom
def main(request):
    if request.user.is_authenticated:
        if "user_id" in request.POST:
            try:
                target_user = User.get_by_id(request.POST["user_id"])
            except:
                return apiRespond(400, msg="User does not exists")
            else:
                profile = target_user.get_profile(request.user)
                return apiRespond(200, **profile)
        else:
            return apiRespond(400, msg='id missing')
    else:
        # user is already logged in, redirect to root
        return apiRespond(401, msg='User not logged in')
コード例 #21
0
ファイル: logout.py プロジェクト: asrient/musicroom
def main(request):
    prefer_email = None
    if "prefer_email" in request.session:
        prefer_email = request.session["prefer_email"]
    logout(request)
    if prefer_email is not None:
        request.session["prefer_email"] = prefer_email
    return apiRespond(200, msg='logged out')
コード例 #22
0
ファイル: joinRoom.py プロジェクト: asrient/musicroom
def main(request):
    if request.user.is_authenticated:
        if "room_id" in request.POST:
            try:
                room = Room.get_by_id(request.POST['room_id'])
            except:
                return apiRespond(400, msg='invalid room_id')
            else:
                try:
                    room = request.user.join_room(room)
                except:
                    return apiRespond(400, msg='Access denied')
                else:
                    return apiRespond(201, **room.get_state_obj())
        else:
            return apiRespond(400, msg='room_id missing')
    else:
        # user is already logged in, redirect to root
        return apiRespond(401, msg='User not logged in')
コード例 #23
0
def main(request, word):
    txt = word.split(':')[0]
    lang = None
    more = False
    if len(word.split(':')) > 1:
        opts = word.split(':')[1:]
        if 'all' in opts:
            more = True
        if 'english' in opts:
            lang = 'english'
        elif 'hindi' in opts:
            lang = 'hindi'
    tracks = search(txt, more, lang=lang)
    List = []
    if tracks is not None:
        for track in tracks:
            List.append(track.get_obj())
        return apiRespond(200, tracks=List)
    else:
        return apiRespond(400, msg='error')
コード例 #24
0
ファイル: removeFriend.py プロジェクト: asrient/musicroom
def main(request):
    if request.user.is_authenticated:
        if "user_id" in request.POST:
            try:
                target_user = User.get_by_id(request.POST["user_id"])
            except:
                return apiRespond(400, msg="User does not exists")
            else:
                done = request.user.unfriend(target_user)
                if done:
                    return apiRespond(
                        201,
                        friendship_status=request.user.friendship_status(
                            target_user)[0])
                else:
                    return apiRespond(400, msg='not a friend')
        else:
            return apiRespond(400, msg='id missing')
    else:
        # user is already logged in, redirect to root
        return apiRespond(401, msg='User not logged in')
コード例 #25
0
def p_skipto(request):
    if "access_key" in request.POST and request.POST["access_key"] == LIVE_ACCESS_KEY:
        if "room_id" in request.POST:
            try:
                room = Room.get_by_id(request.POST['room_id'])
            except:
                return apiRespond(400, msg='room_id invalid')
            else:
                curr_time = timezone.now()
                if not room.is_paused:
                    dur = room.duration_to_complete
                    if curr_time >= (room.play_start_time+datetime.timedelta(seconds=dur.second,  minutes=dur.minute)-datetime.timedelta(seconds=5,  minutes=0)):
                        print('valid time to skipto')
                        room.skip_to_next()
                        return apiRespond(201, msg='skipped to next')
                    else:
                        print('NOT valid time to skipto', curr_time-(room.play_start_time +
                                                                     datetime.timedelta(seconds=dur.second,  minutes=dur.minute)))
                        return apiRespond(400, msg='NOT valid time to skipto')
                else:
                    print('skipto canceled, playback is paused')
                    return apiRespond(400, msg='playback is paused')
        else:
            return apiRespond(400, msg='room_id missing')
    else:
        return apiRespond(400, msg='access_key invalid')
コード例 #26
0
def p_auth(request):
    if "access_key" in request.POST and request.POST[
            "access_key"] == LIVE_ACCESS_KEY:
        if "mrsid" in request.POST:
            try:
                s = Session.objects.get(pk=request.POST['mrsid'])
            except:
                return apiRespond(400, msg='mrsid invalid')
            else:
                session_data = s.get_decoded()
                user_id = session_data.get('_auth_user_id')
                if user_id != None:
                    try:
                        user = User.get_by_id(user_id)
                    except:
                        return apiRespond(400, msg='user not logged in')
                    else:
                        room_id = None
                        if user.room != None:
                            room_id = user.room.id
                        return apiRespond(200,
                                          user_id=user.id,
                                          room_id=room_id)
                else:
                    return apiRespond(400, msg='user not logged in')
        else:
            return apiRespond(400, msg='mrsid missing')
    else:
        return apiRespond(400, msg='access_key invalid')
コード例 #27
0
def main(request):
    if not request.user.is_authenticated:
        if "email" in request.POST and "password" in request.POST:
            try:
                validate_email(request.POST["email"])
                email = request.POST["email"].lower().strip()
                request.session["prefer_email"] = email
                try:
                    me = User.objects.get(email=email)
                    return apiRespond(400, msg='Email already registered')
                except User.DoesNotExist:
                    try:
                        validate_password(request.POST["password"])
                        pwd = request.POST["password"]
                        user = User.objects.create_user(email, password=pwd)
                        user.save()
                        login(request, user)
                        return apiRespond(200, msg='Account created')
                    except ValidationError:
                        return apiRespond(400, msg='Invalid password format')
            except ValidationError:
                return apiRespond(400, msg='Invalid email')
        else:
            return apiRespond(400, msg='Incomplete data')
    else:
        # user is already logged in, redirect to root
        return apiRespond(400, msg='Already logged in')
コード例 #28
0
def main(request):
    if request.user.is_authenticated:
        if "track_ids[]" in request.POST:
            tracks = []
            track_ids = request.POST.getlist('track_ids[]')
            for track_id in track_ids:
                try:
                    track = Track.get_by_id(track_id)
                except:
                    pass
                else:
                    tracks.append(track)
            if len(tracks):
                room = request.user.create_room(tracks)
                return apiRespond(201, **room.get_state_obj())
            else:
                return apiRespond(400, msg='all track_ids invalid')
        else:
            return apiRespond(400, msg='track_ids missing')
    else:
        # user is already logged in, redirect to root
        return apiRespond(401, msg='User not logged in')
コード例 #29
0
def main(request):
    if not request.user.is_authenticated:
        try:
            validate_email(request.POST["email"])
            request.session["prefer_email"] = request.POST["email"].lower().strip()
        except ValidationError:
            pass
        if "email" in request.POST and "password" in request.POST:
            user = authenticate(
                email=request.POST['email'], password=request.POST['password'])
            if user is not None:
                login(request, user)
                return apiRespond(200)
                # A backend authenticated the credentials
            else:
                return apiRespond(400, msg='Invalid email or password')
                # No backend authenticated the credentials
        else:
            return apiRespond(400, msg='Incomplete data')
    else:
        # user is already logged in, redirect to root
        return apiRespond(300, msg='Already logged in')