Files
winget.pro/winget/util.py
T
2023-08-11 16:42:29 +02:00

52 lines
1.3 KiB
Python

import json
import string
from functools import wraps
from os.path import splitext
from random import Random
from django.db.models import CharField
from django.http import JsonResponse
from django.shortcuts import get_object_or_404
from tenants.models import Tenant
def CharFieldFromChoices(*choices, **kwargs):
return CharField(
choices=[(c, c) for c in choices], max_length=max(map(len, choices)),
**kwargs
)
def parse_jsonrequest(func):
@wraps(func)
def inner(request, *args, **kwargs):
data = json.loads(request.body)
return func(request, data, *args, **kwargs)
return inner
def load_tenant(func):
@wraps(func)
def inner(request, tenant_uuid, *args, **kwargs):
tenant = get_object_or_404(Tenant, uuid=tenant_uuid)
return func(request, tenant, *args, **kwargs)
return inner
def return_jsonresponse(func):
@wraps(func)
def inner(*args, **kwargs):
return JsonResponse({'Data': func(*args, **kwargs)})
return inner
def randomize_filename(filename, seed=None, prefix='-', suffix='', length=10):
basename, extension = splitext(filename)
letters = string.ascii_letters + string.digits
random = Random(seed)
random_suffix = ''.join(random.choice(letters) for _ in range(length))
return basename + prefix + random_suffix + suffix + extension