Initial commit!
This commit is contained in:
56
images/decorators.py
Normal file
56
images/decorators.py
Normal file
@@ -0,0 +1,56 @@
|
||||
from functools import wraps
|
||||
from typing import Optional
|
||||
|
||||
from django.http import JsonResponse, HttpResponseForbidden
|
||||
|
||||
from images.models import Image, AuthorizationKey
|
||||
|
||||
|
||||
def get_image(func):
|
||||
@wraps(func)
|
||||
def wrapper(request, *args, **kwargs):
|
||||
image_id = kwargs["image_id"]
|
||||
del kwargs["image_id"]
|
||||
image = Image.objects.filter(id=image_id).first()
|
||||
if image is None:
|
||||
return JsonResponse({"error": "Image not found"}, status=404)
|
||||
|
||||
return func(request=request, image=image, *args, **kwargs)
|
||||
|
||||
return wrapper
|
||||
|
||||
|
||||
def can_upload_image(func):
|
||||
@wraps(func)
|
||||
def wrapper(request, *args, **kwargs):
|
||||
if "Authorization" not in request.headers:
|
||||
return HttpResponseForbidden()
|
||||
|
||||
authorization_key: Optional[AuthorizationKey] = AuthorizationKey.objects.filter(
|
||||
id=request.headers["Authorization"], can_upload_image=True
|
||||
).first()
|
||||
|
||||
if not authorization_key:
|
||||
return HttpResponseForbidden()
|
||||
|
||||
return func(request, *args, **kwargs)
|
||||
|
||||
return wrapper
|
||||
|
||||
|
||||
def can_upload_variant(func):
|
||||
@wraps(func)
|
||||
def wrapper(request, *args, **kwargs):
|
||||
if "Authorization" not in request.headers:
|
||||
return HttpResponseForbidden()
|
||||
|
||||
authorization_key: Optional[AuthorizationKey] = AuthorizationKey.objects.filter(
|
||||
id=request.headers["Authorization"], can_upload_variant=True
|
||||
).first()
|
||||
|
||||
if not authorization_key:
|
||||
return HttpResponseForbidden()
|
||||
|
||||
return func(request, *args, **kwargs)
|
||||
|
||||
return wrapper
|
Reference in New Issue
Block a user