import random
import string

from django_extensions.db.fields import AutoSlugField


class OrganizationSlugField(AutoSlugField):
    """
    Generate a random alphanumeric slug starting at length 2.
    Increase length by 1 if collision is found.
    """

    def slug_generator(self, original_slug, start):
        yield original_slug
        for i in range(start, self.max_unique_query_attempts):
            yield original_slug + "-" + "".join(
                random.choices(string.ascii_lowercase + string.digits, k=i)
            )
        raise RuntimeError(
            "max slug attempts for %s exceeded (%s)"
            % (original_slug, self.max_unique_query_attempts)
        )