コード例 #1
0
ファイル: views.py プロジェクト: yitchee/The-Clone-Wars-API
def index(request):
    if request.method == 'OPTIONS':
        return set_options_response()

    result = validate_request(request)
    if 'error' in result:
        return Response({"error": result['error']}, status=result['status'], headers=settings.CORS_HEADERS)
    
    name = request.GET.get('name', None)
    species = request.GET.get('species', None)
    gender = request.GET.get('gender', None)
    occupation = request.GET.get('occupation', None)
    affiliation = request.GET.get('affiliation', None)
    page = request.GET.get('page', 0)

    characters_set = Character.objects.all().order_by('id')
    if name:
        characters_set = characters_set.filter(name__icontains=name)

    if species:
        characters_set = characters_set.filter(info__species__icontains=species)

    if gender:
        characters_set = characters_set.filter(info__gender__icontains=gender)
    
    if occupation:
        characters_set = characters_set.filter(info__occupation_rank__icontains=occupation)
    
    if affiliation:
        characters_set = characters_set.filter(info__affiliation__icontains=affiliation)

    if page:
        try:
            page = int(page)
        except:
            page = 1;
        start = settings.RESOURCE_LIMIT*(page-1)
        end = settings.RESOURCE_LIMIT*(page-1)+settings.RESOURCE_LIMIT
        characters_set = characters_set[start:end]
    else:
        characters_set = characters_set[0:settings.RESOURCE_LIMIT]
    
    serializer = CharacterSerializer(characters_set, many=True)

    # If nothing matches queries
    if not serializer.data:
        return Response({"error": settings.MSG_404}, status=404, headers=settings.CORS_HEADERS)

    return Response(serializer.data, headers=settings.CORS_HEADERS)
コード例 #2
0
def index(request):
    if request.method == 'OPTIONS':
        return set_options_response()

    result = validate_request(request)
    if 'error' in result:
        return Response({"error": result['error']}, status=result['status'], headers=settings.CORS_HEADERS)

    name = request.GET.get('name', None)
    designation = request.GET.get('designation', None)
    homeworld = request.GET.get('homeworld', None)
    page = request.GET.get('page', 0)

    species_set = Species.objects.all().order_by('id')
    if name:
        species_set = species_set.filter(name__icontains=name)
    
    if designation:
        # Avaliable Options : 'Sentient', 'Non-Sentient', 'Semi-Sentient', 'Undefined'
        species_set = species_set.filter(info__designation__iexact=designation)

    if homeworld:
        # Avaliable Options : 'Sentient', 'Non-Sentient', 'Semi-Sentient', 'Undefined'
        species_set = species_set.filter(info__homeworld__icontains=homeworld)

    if page:
        try:
            page = int(page)
        except:
            page = 1;
        start = settings.RESOURCE_LIMIT*(page-1)
        end = settings.RESOURCE_LIMIT*(page-1)+settings.RESOURCE_LIMIT
        species_set = species_set[start:end]
    else:
        species_set = species_set[0:settings.RESOURCE_LIMIT]
    
    serializer = SpeciesSerializer(species_set, many=True)

    # If nothing matches queries
    if not serializer.data:
        return Response({"error": settings.MSG_404}, status=404, headers=settings.CORS_HEADERS)
    
    return Response(serializer.data, headers=settings.CORS_HEADERS)
コード例 #3
0
def index(request):
    if request.method == 'OPTIONS':
        return set_options_response()

    result = validate_request(request)
    if 'error' in result:
        return Response({"error": result['error']}, status=result['status'], headers=settings.CORS_HEADERS)

    name = request.GET.get('name', None)
    affiliation = request.GET.get('affiliation', None)
    region = request.GET.get('region', None)
    page = request.GET.get('page', 0)

    planets_set = Planet.objects.all().order_by('id')

    if name:
        planets_set = planets_set.filter(name__icontains=name)
    
    if affiliation:
        planets_set = planets_set.filter(info__affiliation__icontains=affiliation)

    if region:
        planets_set = planets_set.filter(info__region__icontains=region)

    if page:
        try:
            page = int(page)
        except:
            page = 1;
        start = settings.RESOURCE_LIMIT*(page-1)
        end = settings.RESOURCE_LIMIT*(page-1)+settings.RESOURCE_LIMIT
        planets_set = planets_set[start:end]
    else:
        planets_set = planets_set[0:settings.RESOURCE_LIMIT]

    serializer = PlanetSerializer(planets_set, many=True)

    # If nothing matches queries
    if not serializer.data:
        return Response({"error": settings.MSG_404}, status=404, headers=settings.CORS_HEADERS)

    return Response(serializer.data, headers=settings.CORS_HEADERS)
コード例 #4
0
 def options(self, request):
     response = set_options_response()
     return response
コード例 #5
0
ファイル: views.py プロジェクト: yitchee/The-Clone-Wars-API
def index(request):
    if request.method == 'OPTIONS':
        return set_options_response()

    result = validate_request(request)
    if 'error' in result:
        return Response({"error": result['error']},
                        status=result['status'],
                        headers=settings.CORS_HEADERS)

    name = request.GET.get('name', None)
    vehicle_class = request.GET.get('class', None)
    affiliation = request.GET.get('affiliation', None)
    manufacturer = request.GET.get('manufacturer', None)
    page = request.GET.get('page', 0)

    vehicles_set = Vehicle.objects.all().order_by('id')
    if name:
        vehicles_set = vehicles_set.filter(name__icontains=name)

    if vehicle_class:
        # Avaliable Options : 'Starfighter', 'Freighter', 'Walker', 'Star Destroyer',
        # 'Unknown', 'Tank', 'Gunship', 'Frigate', 'Transport', 'Cruiser', 'Flagship',
        # 'Shuttle', 'Speeder', 'Capital Ship', 'Battleship', 'Repulsorcraft' ,'Vessel'
        # 'Dreadnaught', 'Carrier'
        vehicles_set = vehicles_set.filter(
            info__class__icontains=vehicle_class)

    if affiliation:
        vehicles_set = vehicles_set.filter(
            info__affiliation__icontains=affiliation)

    if manufacturer:
        # 'Rothana Heavy Engineering', 'Kuat Drive Yards', 'Kuat Systems Engineering',
        # 'Hoar Chall Engineering', 'Unknown', 'Umbarans', 'Slayn & Korpil', 'Gallofree Yards',
        # 'Hoersch-Kessel Drive, Inc.', 'Zygerrian Slave Empire', 'Corellian Engineering',
        # 'Quarren', 'MandalMotors', 'Techno Union', 'Baktoid Armor Workshop', 'Botajef Shipyards',
        # 'Lantillian ShipWrights', 'Huppla Pasa Tisc Shipwrights Collective', 'SoroSuub Corporation'
        # 'Cygnus Spaceworks', 'Trade Federation', 'Kalevala Spaceworks'
        vehicles_set = vehicles_set.filter(
            info__manufacturer__icontains=manufacturer)

    if page:
        try:
            page = int(page)
        except:
            page = 1
        start = settings.RESOURCE_LIMIT * (page - 1)
        end = settings.RESOURCE_LIMIT * (page - 1) + settings.RESOURCE_LIMIT
        vehicles_set = vehicles_set[start:end]
    else:
        vehicles_set = vehicles_set[0:settings.RESOURCE_LIMIT]

    serializer = VehicleSerializer(vehicles_set, many=True)

    # If nothing matches queries
    if not serializer.data:
        return Response({"error": settings.MSG_404},
                        status=404,
                        headers=settings.CORS_HEADERS)

    return Response(serializer.data, headers=settings.CORS_HEADERS)