Skip to content
Snippets Groups Projects
utils.py 1.5 KiB
Newer Older
  • Learn to ignore specific revisions
  • import unicodedata
    import re
    
    from django.conf import settings
    
    
    def full_url(path):
        """
        Given a relative path, return a full url usable for federation purpose
        """
    
        if path.startswith("http://") or path.startswith("https://"):
            return path
    
        root = settings.FUNKWHALE_URL
    
    Eliot Berriot's avatar
    Eliot Berriot committed
        if path.startswith("/") and root.endswith("/"):
    
    Eliot Berriot's avatar
    Eliot Berriot committed
        elif not path.startswith("/") and not root.endswith("/"):
            return root + "/" + path
    
    
    
    def clean_wsgi_headers(raw_headers):
        """
        Convert WSGI headers from CONTENT_TYPE to Content-Type notation
        """
        cleaned = {}
    
    Eliot Berriot's avatar
    Eliot Berriot committed
        non_prefixed = ["content_type", "content_length"]
    
        for raw_header, value in raw_headers.items():
            h = raw_header.lower()
    
    Eliot Berriot's avatar
    Eliot Berriot committed
            if not h.startswith("http_") and h not in non_prefixed:
    
    Eliot Berriot's avatar
    Eliot Berriot committed
            words = h.replace("http_", "", 1).split("_")
            cleaned_header = "-".join([w.capitalize() for w in words])
    
            cleaned[cleaned_header] = value
    
        return cleaned
    
    
    
    def slugify_username(username):
        """
        Given a username such as "hello M. world", returns a username
        suitable for federation purpose (hello_M_world).
    
        Preserves the original case.
    
        Code is borrowed from django's slugify function.
        """
    
        value = str(username)
        value = (
            unicodedata.normalize("NFKD", value).encode("ascii", "ignore").decode("ascii")
        )
        value = re.sub(r"[^\w\s-]", "", value).strip()
        return re.sub(r"[-\s]+", "_", value)