Exemplo n.º 1
0
Arquivo: views.py Projeto: cccb/meteme
    def create(self, request):
        """ Create a session with credentials """
        serializer = AuthenticationSerializer(data=request.data)

        if not serializer.is_valid():
            if 'non_field_errors' in serializer.errors:
                raise AuthenticationFailed('Invalid credentials')

            raise ValidationError(serializer.errors)

        # Credentials are valid, let's login the user
        login(request, serializer.validated_data['user'])

        serialized_session = SessionSerializer(self.session)
        return Response(serialized_session.data)
Exemplo n.º 2
0
def sessions_by_film(request, id):
    try:
        film = Film.objects.get(id=id)
    except Film.DoesNotExist as e:
        return Response({'error': str(e)})

    if request.method == 'GET':
        serializer = SessionSerializer(film.sessions.all(), many=True)
        return Response(serializer.data)
    elif request.method == 'POST':
        serializer = SessionSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response({'error': serializer.errors},
                        status=status.HTTP_500_INTERNAL_SERVER_ERROR)
Exemplo n.º 3
0
    def retrieve(self, request: Request):
        try:
            user_id = int(request.query_params.get('user_id'))
            session = Session.find_by_user(user_id)
            page_size = request.query_params.get('page_size')
            page_size = int(page_size) if page_size else None
            if session is None:
                ip_address, _is_routable = get_client_ip(request)
                location = geocoder.ip(ip_address)
                if not location.lat:
                    location = geocoder.ip('me')
                print('create a session for {}, ip: {}'.format(
                    location.city, ip_address))
                serializer = SessionSerializer(
                    data={
                        'user_id': user_id,
                        'page_size': page_size,
                        'location': location.latlng
                    }
                )
                if not serializer.is_valid():
                    raise APIException(str(serializer.errors),
                                       code=status.HTTP_400_BAD_REQUEST)
                serializer.save()
                return Response(
                    serializer.data, status=status.HTTP_201_CREATED)
            else:
                if page_size:
                    session.page_size = page_size
                serializer = SessionSerializer(instance=session)
                session.save()
                return Response(serializer.data, status=status.HTTP_200_OK)

        except Exception as error:
            print(error)
            raise APIException(error)
        finally:
            sys.stdout.flush()
Exemplo n.º 4
0
Arquivo: views.py Projeto: cccb/meteme
 def delete(self, request):
     """ Logout user """
     logout(request)
     serialized_session = SessionSerializer(self.session)
     return Response(serialized_session.data)
Exemplo n.º 5
0
Arquivo: views.py Projeto: cccb/meteme
 def list(self, request):
     """ Render session """
     serialized_session = SessionSerializer(self.session)
     return Response(serialized_session.data)
Exemplo n.º 6
0
def session_member(request):

    if request.method == 'GET':
        try:
            token = request.GET.get('token', None)
            if not token:
                raise ValueError('No Token Parameter')

            user = None
            auth_user = Token.objects.get(key=token)
            user = User.objects.get(email=auth_user.user)

            if user.is_authenticated and token == str(
                    Token.objects.get(user=user)):
                profile = Profile.objects.get(user=user)
                print('profile ID: ', profile.id)
                result = {
                    'email': user.email,
                    'id': profile.id,
                    'username': profile.username,
                    'token': token,
                    'gender': profile.gender,
                    'age': profile.age,
                    'occupation': profile.occupation,
                    'is_auth': True,
                    'is_staff': profile.user.is_staff,
                    'movie_taste': profile.movie_taste
                }
            else:
                result = {
                    'email': None,
                    'id': None,
                    'username': None,
                    'token': None,
                    'gender': None,
                    'age': None,
                    'occupation': None,
                    'is_auth': False,
                    'is_staff': False,
                    'movie_taste': None
                }
            serializer = SessionSerializer(result)
            return JsonResponse({
                'result': serializer.data,
                'status': status.HTTP_200_OK
            })
        except ValueError:
            return JsonResponse({
                'status': status.HTTP_400_BAD_REQUEST,
                'msg': str(ValueError)
            })
        except User.DoesNotExist:
            return JsonResponse({
                'status': status.HTTP_500_INTERNAL_SERVER_ERROR,
                'msg': 'User does not Exists'
            })
        except Exception:
            return JsonResponse({
                'status': status.HTTP_500_INTERNAL_SERVER_ERROR,
                'msg': 'UNKNOWN ERROR'
            })
Exemplo n.º 7
0
def updateUser(request):
    if request.method == 'POST':
        params = request.data.get('params', None)
        token = params.get('token', None)
        email = params.get('email', None)
        username = params.get('username', None)
        password = params.get('password', None)
        occupation = params.get('occupation', None)
        genres = params.get('genres', None)

        if token is None or email is None or username is None or password is None or occupation is None or genres is None:
            return JsonResponse({'status': status.HTTP_400_BAD_REQUEST})
        try:
            user = User.objects.get(email=email)
            del request.session[str(token)]
            user.auth_token.delete()
            auth.logout(request)

            user = User.objects.get(email=email)
            profile = Profile.objects.get(user=user)
            user.set_password(password)
            user.save()

            movie_taste_ = []
            for genre in genres:
                movie_taste_.append(genre)

            profile.username = username
            profile.occupation = occupation
            profile.movie_taste = movie_taste_
            profile.save()

            user = auth.authenticate(email=email, password=password)
            auth.login(request, user)
            token = Token.objects.create(user=user)
            request.session[str(token)] = email
            request.session.modified = True
            result = {
                'email': email,
                'id': profile.id,
                'username': profile.username,
                'gender': profile.gender,
                'age': profile.age,
                'occupation': profile.occupation,
                'token': token,
                'is_staff': profile.user.is_staff,
                'is_auth': True,
                'movie_taste': profile.movie_taste
            }
            serializer = SessionSerializer(result)
            return JsonResponse({
                'status': status.HTTP_200_OK,
                'result': serializer.data
            })
        except KeyError as e:
            return JsonResponse({
                'status': status.HTTP_500_INTERNAL_SERVER_ERROR,
                'msg': f'Keyerror {e}'
            })
        except User.DoesNotExist as e:
            return JsonResponse({
                'status': status.HTTP_500_INTERNAL_SERVER_ERROR,
                'msg': f'DoesNotExists {e}'
            })
    return JsonResponse({
        'status': status.HTTP_400_BAD_REQUEST,
        'msg': 'Invalid Request Method'
    })
Exemplo n.º 8
0
def login(request):
    if request.method == 'POST':
        email = request.data.get('email', None)
        password = request.data.get('password', None)
        # 밑에 3줄은 딱히 필요없을 것 같다.
        if email is None or password is None:
            return JsonResponse({
                'msg': "Not input ID and Password",
                'status': status.HTTP_400_BAD_REQUEST
            })
        if email is None:
            return JsonResponse({
                'msg': "Not input Email",
                'status': status.HTTP_400_BAD_REQUEST
            })
        if password is None:
            return JsonResponse({
                'msg': "Not input Password",
                'status': status.HTTP_400_BAD_REQUEST
            })

        user = auth.authenticate(email=email, password=password)

        if user:
            auth.login(request, user)
            # 토큰이 서버에서 아직 지워지지 않았거나, auth_token이 그대로 남아있으면 삭제한다
            if Token.objects.filter(user=user).first():
                if str(Token.objects.get(user=user)) in request.session.keys():
                    del request.session[str(Token.objects.get(user=user))]
                user.auth_token.delete()
            token = Token.objects.create(user=user)
            request.session[str(token)] = email
            request.session.modified = True
            profile = Profile.objects.get(user=user)
            result = {
                'email': email,
                'id': profile.id,
                'username': profile.username,
                'gender': profile.gender,
                'age': profile.age,
                'occupation': profile.occupation,
                'token': token,
                'is_staff': profile.user.is_staff,
                'is_auth': True,
                'movie_taste': profile.movie_taste
            }
        else:
            result = {
                'email': None,
                'id': None,
                'username': None,
                'gender': None,
                'age': None,
                'occupation': None,
                'token': None,
                'is_staff': False,
                'is_auth': False,
                'movie_taste': None
            }
        serializer = SessionSerializer(result)
        return JsonResponse(
            {
                'status': status.HTTP_200_OK,
                'result': serializer.data
            },
            safe=False)
    return JsonResponse({
        'status': status.HTTP_400_BAD_REQUEST,
        'msg': 'Invalid Request Method'
    })
Exemplo n.º 9
0
def login(request):
    if request.method == 'POST':
        print("enter login function!!")
        username = request.data.get('username', None)
        password = request.data.get('password', None)
        print("username : "******"  password : "******"user is true")
            auth.login(request, user)
            token = Token.objects.filter(user=user)

            if token:  # 토큰 True
                print("token is true")
                if str(token[0]) in request.session:
                    del request.session[str(token[0])]
                user.auth_token.delete()

                newToken = Token.objects.create(user=user)
                request.session[str(newToken)] = username
                profile = Profile.objects.get(user=user)
                print("favorite : " + profile.favorite)
                print(profile.when)
                result = {
                    'username': username,
                    'name': profile.name,
                    'favorite': profile.favorite,
                    'when': profile.when,
                    'latestView': profile.latestView,
                    'token': newToken,
                    'is_staff': profile.user.is_staff,
                    'is_authenticated': True
                }
            else:
                token = Token.objects.create(user=user)  # 토큰 생성
                request.session[str(
                    token)] = username  # 토큰에 해당하는 user명을 세션에 저장
                profile = Profile.objects.get(user=user)
                print("favorite : " + profile.favorite)
                result = {
                    'username': username,
                    'name': profile.name,
                    'favorite': profile.favorite,
                    'when': profile.when,
                    'latestView': profile.latestView,
                    'token': token,
                    'is_staff': profile.user.is_staff,
                    'is_authenticated': True
                }
        else:
            print("user is false")
            result = {
                'username': None,
                'name': None,
                'favorite': None,
                'when': None,
                'latestView': None,
                'token': None,
                'is_staff': False,
                'is_authenticated': False
            }

        serializer = SessionSerializer(result)
        return Response(data=serializer.data, status=status.HTTP_200_OK)
Exemplo n.º 10
0
def session(request):
    if request.method == "POST":
        print("enter in session function")
        token = request.data.get('token', None)
        username = request.session.get(str(token), None)
        if username == None:
            result = {
                'username': None,
                'name': None,
                'favorite': None,
                'when': None,
                'latestView': None,
                'token': None,
                'is_authenticated': False,
                'is_staff': False,
                'pick_policies': None
            }

        else:
            user = User.objects.get(username=username)
            if user.is_authenticated and token == str(
                    Token.objects.get(user=user)):
                result = {
                    'username':
                    username,
                    'name':
                    Profile.objects.get(user=user).name,
                    'favorite':
                    Profile.objects.get(user=user).favorite,
                    'when':
                    Profile.objects.get(user=user).when,
                    'latestView':
                    Profile.objects.get(user=user).latestView,
                    'token':
                    token,
                    'is_authenticated':
                    True,
                    'is_staff':
                    Profile.objects.get(user=user).user.is_staff,
                    'pick_policies':
                    Profile.objects.get(user=user).user.pick_policies.all()
                }
            else:
                result = {
                    'username': None,
                    'name': None,
                    'favorite': None,
                    'when': None,
                    'latestView': None,
                    'token': None,
                    'is_authenticated': False,
                    'is_staff': False,
                    'pick_policies': False
                }
        serializer = SessionSerializer(result)
        return Response(data=serializer.data, status=status.HTTP_200_OK)
    elif request.method == "PUT":
        print('session put')
        token = request.data.get('token', None)
        username = request.session.get(str(token), None)
        user = User.objects.get(username=username)
        if user.is_authenticated and token == str(
                Token.objects.get(user=user)):
            result = {
                'username':
                username,
                'name':
                Profile.objects.get(user=user).name,
                'favorite':
                Profile.objects.get(user=user).favorite,
                'when':
                Profile.objects.get(user=user).when,
                'latestView':
                Profile.objects.get(user=user).latestView,
                'token':
                token,
                'is_authenticated':
                True,
                'is_staff':
                Profile.objects.get(user=user).user.is_staff,
                'pick_policies':
                Profile.objects.get(user=user).user.pick_policies.all()
            }
        serializer = SessionSerializer(result)
        return Response(data=serializer.data, status=status.HTTP_200_OK)