Exemple #1
0
 def get(self, request):
     try:
         menu_list = Menu.objects.all()
         response = Response({'data': view_models.get_menu_list(menu_list)})
         response['Cache-Control'] = 'max-age=8'
         return response
     except Exception as e:
         Logger.log_exception(e)
         return HttpException(errors.INTERNAL_SERVER_ERROR).get_response()
Exemple #2
0
 def get(self, request, id):
     try:
         menu = self.get_object(id)
         response = Response({'data': view_models.get_menu(menu)})
         response['Cache-Control'] = 'max-age=8'
         return response
     except HttpException as e:
         return e.get_response()
     except Exception as e:
         Logger.log_exception(e)
         return HttpException(errors.INTERNAL_SERVER_ERROR).get_response()
Exemple #3
0
 def delete(self, request, id):
     try:
         validator.validate_admin(request)
         menu = self.get_object(id)
         menu.delete()
         response = Response({'data': 'OK'})
         response['Cache-Control'] = 'max-age=0, must-revalidate'
         return response
     except HttpException as e:
         return e.get_response()
     except Exception as e:
         Logger.log_exception(e)
         return HttpException(errors.INTERNAL_SERVER_ERROR).get_response()
Exemple #4
0
def get_order_summary(request, timestamp):
    try:
        order_date = validator.get_date_from_timestamp(timestamp)
        orders = Order.objects.filter(order_date=order_date).values(
            'menu__id', 'menu__name').annotate(
                total=Count('menu__id')).order_by('total')
        response = Response({'data': view_models.get_order_summary(orders)})
        response['Cache-Control'] = 'max-age=8'
        return response
    except HttpException as e:
        return e.get_response()
    except Exception as e:
        Logger.log_exception(e)
        return HttpException(errors.INTERNAL_SERVER_ERROR).get_response()
Exemple #5
0
 def post(self, request):
     try:
         validator.validate_admin(request)
         name = validator.validate_menu_name_field(request)
         if Menu.objects.filter(name=name).count() > 0:
             raise HttpException(errors.MENU_IS_DUPLICATED)
         Menu.objects.create(name=name)
         response = Response({'data': 'OK'}, status=status.HTTP_201_CREATED)
         response['Cache-Control'] = 'max-age=0, must-revalidate'
         return response
     except HttpException as e:
         return e.get_response()
     except Exception as e:
         Logger.log_exception(e)
         return HttpException(errors.INTERNAL_SERVER_ERROR).get_response()
Exemple #6
0
def sigin(request):
    try:
        email, password = validator.validate_sign_up_sign_in_fields(request)
        user = authenticate(username=email, password=password)
        if user is None:
            raise HttpException(errors.AUTHENTICATION_FAILURE)
        user_logged_in.send(sender=user.__class__,
                            request=request, user=user)
        response = Response({'data': auth.create_jwt(user)})
        response['Cache-Control'] = 'max-age=0, must-revalidate'
        return response
    except HttpException as e:
        return e.get_response()
    except Exception as e:
        Logger.log_exception(e)
        return HttpException(errors.INTERNAL_SERVER_ERROR).get_response()
Exemple #7
0
def get_order(request, timestamp):
    try:
        order_date = validator.get_date_from_timestamp(timestamp)
        user_id = request.user.id
        orders = Order.objects.select_related('menu').filter(
            order_date=order_date, user_id=user_id)
        if len(orders) > 1:
            raise HttpException(errors.INVALID_ORDER)
        data = None if len(orders) == 0 else view_models.get_order(orders[0])
        response = Response({'data': data})
        response['Cache-Control'] = 'max-age=8'
        return response
    except HttpException as e:
        return e.get_response()
    except Exception as e:
        Logger.log_exception(e)
        return HttpException(errors.INTERNAL_SERVER_ERROR).get_response()
Exemple #8
0
 def put(self, request, id):
     try:
         validator.validate_admin(request)
         name = validator.validate_menu_name_field(request)
         if Menu.objects.filter(~Q(id=id), name=name).count() > 0:
             raise HttpException(errors.MENU_IS_DUPLICATED)
         menu = self.get_object(id)
         menu.name = name
         menu.save()
         response = Response({'data': view_models.get_menu(menu)})
         response['Cache-Control'] = 'max-age=0, must-revalidate'
         return response
     except HttpException as e:
         return e.get_response()
     except Exception as e:
         Logger.log_exception(e)
         return HttpException(errors.INTERNAL_SERVER_ERROR).get_response()
Exemple #9
0
def sigup(request):
    try:
        email, password = validator.validate_sign_up_sign_in_fields(request)
        if User.objects.filter(username=email).count() > 0:
            raise HttpException(errors.USER_IS_DUPLICATED)
        user = User.objects.create_user(
            username=email, email=email, password=password)
        user_logged_in.send(sender=user.__class__, request=request, user=user)
        data = {'data': auth.create_jwt(user)}
        response = Response(data, status=status.HTTP_201_CREATED)
        response['Cache-Control'] = 'max-age=0, must-revalidate'
        return response
    except HttpException as e:
        return e.get_response()
    except Exception as e:
        Logger.log_exception(e)
        return HttpException(errors.INTERNAL_SERVER_ERROR).get_response()
Exemple #10
0
def make_order(request):
    try:
        order_date = validator.validate_order_date(request)
        menu_id = validator.validate_menu_id(request)
        user_id = request.user.id
        if Menu.objects.filter(id=menu_id).count() == 0:
            raise HttpException(errors.INVALID_MENU_ID)
        with transaction.atomic():
            Order.objects.filter(order_date=order_date,
                                 user_id=user_id, menu_id=menu_id).delete()
            order = Order.objects.create(
                order_date=order_date, user_id=user_id, menu_id=menu_id)
        response = Response({'data': view_models.get_order(order)})
        response['Cache-Control'] = 'max-age=0, must-revalidate'
        return response
    except HttpException as e:
        return e.get_response()
    except Exception as e:
        Logger.log_exception(e)
        return HttpException(errors.INTERNAL_SERVER_ERROR).get_response()