43 lines
1.3 KiB
Python
43 lines
1.3 KiB
Python
"""Utils app method."""
|
|
import random
|
|
from django.http.request import HttpRequest
|
|
from rest_framework.request import Request
|
|
import re
|
|
from django.utils.timezone import datetime
|
|
from django.conf import settings
|
|
|
|
|
|
def generate_code(digits=6, string_output=True):
|
|
"""Generate random int."""
|
|
max_value = 10 ** digits - 1
|
|
min_value = 10 ** (digits - 1)
|
|
value = random.randint(min_value, max_value)
|
|
return str(value) if string_output else value
|
|
|
|
|
|
def get_token_from_request(request):
|
|
"""Get access token from request"""
|
|
if 'Authorization' in request.headers:
|
|
if isinstance(request, HttpRequest):
|
|
return request.headers.get('Authorization').split(' ')[::-1][0]
|
|
elif isinstance(request, Request):
|
|
return request._request.headers.get('Authorization').split(' ')[::-1][0]
|
|
|
|
|
|
def username_validator(username: str) -> bool:
|
|
"""Validate given username"""
|
|
pattern = r'[@,]+'
|
|
if re.search(pattern=pattern, string=username):
|
|
return False
|
|
else:
|
|
return True
|
|
|
|
|
|
def image_path(instance, filename):
|
|
"""Determine avatar path method."""
|
|
filename = '%s.jpeg' % generate_code()
|
|
return 'image/%s/%s/%s' % (
|
|
instance._meta.model_name,
|
|
datetime.now().strftime(settings.REST_DATE_FORMAT),
|
|
filename)
|