def get_sort_order(qdict, default, allowed_values=None):
    """Return a sort order from a querydict object

    :param QueryDict qdict: the object to analyse
    :param string default: the default sort order if no one is found
    :param list allowed_values: an optional list of allowed values
    :return: a 2uple of strings
    """
    sort_order = qdict.get('sort_order', default)
    if sort_order.startswith('-'):
        sort_dir = '-'
        sort_order = sort_order[1:]
    else:
        sort_dir = ''
    if allowed_values is not None and sort_order not in allowed_values:
        return default, ''
    return sort_order, sort_dir
