Exemplo n.º 1
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.º 2
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()