"""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)