예제 #1
0
def get_by_id_imperial(request, id):
    try:
        planet = Planet.objects.get(pk=id)
    except Planet.DoesNotExist as dne:
        success, response = get_planet_by_id(id)
        planet = Planet(planet_id=id,
                        name=response['name'],
                        diameter=int(response['diameter']),
                        rotation_period=int(response['rotation_period']),
                        orbital_period=int(response['orbital_period']),
                        gravity=response['gravity'],
                        population=int(response['population']),
                        climate=response['climate'],
                        terrain=response['terrain'],
                        surface_water=int(response['surface_water']))
        planet.save()

    return JsonResponse(planet.to_imperial(), status=200)
예제 #2
0
    def create(self, request, *args, **kwargs):
        '''
                이번주 행성(Planet)에 참여
                ---
                (토큰 필요)
                성공적으로 실행되면 200 응답을 리턴하며
                이번주에 이미 참여했다면 403 응답을 리턴합니다.
        '''
        user = User.objects.get(id=self.request.user.id)
        if user.planet:
            return Response(False, status=status.HTTP_403_FORBIDDEN)
        # 속한 유저 수가 10보다 작으면서 id 가장 작은 행성(first)
        cur_planet = Planet.objects.filter(user_cnt__lt=10).first()
        if not cur_planet:
            pre_planet = Planet.objects.last()
            cur_planet = Planet(start_date=pre_planet.start_date,
                                end_date=pre_planet.end_date)
        cur_planet.user_cnt += 1
        cur_planet.save()
        user.planet = cur_planet
        user.save()

        # serializer = self.get_serializer(cur_planet)
        return Response(True, status=status.HTTP_200_OK)