Source code for slideatlas.models.permalink

# coding=utf-8

import datetime
from random import SystemRandom
import string

from mongoengine import DateTimeField, ObjectIdField, ReferenceField, StringField, \
    DoesNotExist, MultipleObjectsReturned

from .common import ModelDocument
from .user import User

################################################################################
__all__ = ('Permalink',)


################################################################################

def unambiguous_random_string(length):
    random = SystemRandom()
    ambiguous_chars = {
        'B', '8',
        'G', '6',
        'I', '1', 'l',
        '0', 'O', 'Q', 'D',
        'S', '5',
        'Z', '2'
    }
    choices = filter(lambda char: char not in ambiguous_chars,
                     string.digits + string.ascii_lowercase)

    return ''.join(random.choice(choices) for _ in xrange(length))