Example #1
0
def notes(request, obj_type=None):
    """
    Display all repositories or accounts with a note
    """
    if obj_type is None:
        return redirect(notes, obj_type='repositories')

    model = obj_type_from_url(obj_type)

    sort_key = request.GET.get('sort_by', '-note')
    if model == 'account':
        sort = get_account_sort(sort_key, default=None)
        per_page = settings.ACCOUNTS_PER_PAGE
    else:
        sort = get_repository_sort(sort_key, default=None)
        per_page = settings.REPOSITORIES_PER_PAGE
    if not sort.get('db_sort'):
        sort = prepare_sort(sort_key, dict(note='modified'), default='note', default_reverse=True)

    all_notes = _get_last_user_notes(request.user, only=model, sort_by=sort['db_sort'])[model]

    page = paginate(request, all_notes, per_page)

    context = dict(
        page = page,
        obj_type = obj_type,
        sort = dict(
            key = sort['key'],
            reverse = sort['reverse'],
        ),
    )
    return render(request, 'dashboard/notes.html', context)
Example #2
0
def followers(request):
    """
    Display followers for all accounts of the user
    """

    all_followers = Account.for_user_list.filter(following__user=request.user).extra(select=dict(current_user_account_id='core_account_following.to_account_id'))

    sort = get_account_sort(request.GET.get('sort_by', None), default=None)

    if sort['key']:
        all_followers = all_followers.order_by(sort['db_sort'])

    following_ids = Account.objects.filter(followers__user=request.user).values_list('id', flat=True)

    def get_accounts_dict():
        return accounts_dict(request)

    page = paginate(request, all_followers, settings.ACCOUNTS_PER_PAGE)

    context = dict(
        page = page,
        sort = dict(
            key = sort['key'],
            reverse = sort['reverse'],
        ),
        following_ids = following_ids,
        accounts = get_accounts_dict,
    )
    return render(request, 'dashboard/followers.html', context)
Example #3
0
def followers(request):
    """
    Display followers for all accounts of the user
    """

    all_followers = Account.for_user_list.filter(
        following__user=request.user).extra(select=dict(
            current_user_account_id='core_account_following.to_account_id'))

    sort = get_account_sort(request.GET.get('sort_by', None), default=None)

    if sort['key']:
        all_followers = all_followers.order_by(sort['db_sort'])

    following_ids = Account.objects.filter(
        followers__user=request.user).values_list('id', flat=True)

    def get_accounts_dict():
        return accounts_dict(request)

    page = paginate(request, all_followers, settings.ACCOUNTS_PER_PAGE)

    context = dict(
        page=page,
        sort=dict(
            key=sort['key'],
            reverse=sort['reverse'],
        ),
        following_ids=following_ids,
        accounts=get_accounts_dict,
    )
    return render(request, 'dashboard/followers.html', context)
Example #4
0
def tags(request, obj_type=None):
    """
    Display all tags for the given object type, and a list of tagged objects.
    A get parameter "tag" allow to filter the list.
    """
    if obj_type is None:
        return redirect(tags, obj_type='repositories')

    model = obj_type_from_url(obj_type)

    def get_tags():
        return _get_sorted_user_tags(request.user, only=model)[model]

    tag_slug = request.GET.get('tag', None)

    params = { 'privatetagged%s__owner' % model: request.user }
    if tag_slug:
        params['privatetagged%s__tag__slug' % model] = tag_slug

    sort_key = request.GET.get('sort_by', 'name')

    if model == 'account':
        objects = Account.objects.filter(**params)
        sort = get_account_sort(sort_key)
        per_page = settings.ACCOUNTS_PER_PAGE
    else:
        objects = Repository.objects.filter(**params).select_related('owner')
        sort = get_repository_sort(sort_key)
        per_page = settings.REPOSITORIES_PER_PAGE

    objects = objects.order_by(sort['db_sort']).distinct()

    page = paginate(request, objects, per_page)

    context = dict(
        tags = get_tags,
        obj_type = obj_type,
        tag_filter = tag_slug,
        page = page,
        sort = dict(
            key = sort['key'],
            reverse = sort['reverse'],
        ),
    )
    return render(request, 'dashboard/tags.html', context)
Example #5
0
def tags(request, obj_type=None):
    """
    Display all tags for the given object type, and a list of tagged objects.
    A get parameter "tag" allow to filter the list.
    """
    if obj_type is None:
        return redirect(tags, obj_type='repositories')

    model = obj_type_from_url(obj_type)

    def get_tags():
        return _get_sorted_user_tags(request.user, only=model)[model]

    tag_slug = request.GET.get('tag', None)

    params = {'privatetagged%s__owner' % model: request.user}
    if tag_slug:
        params['privatetagged%s__tag__slug' % model] = tag_slug

    sort_key = request.GET.get('sort_by', 'name')

    if model == 'account':
        objects = Account.objects.filter(**params)
        sort = get_account_sort(sort_key)
        per_page = settings.ACCOUNTS_PER_PAGE
    else:
        objects = Repository.objects.filter(**params).select_related('owner')
        sort = get_repository_sort(sort_key)
        per_page = settings.REPOSITORIES_PER_PAGE

    objects = objects.order_by(sort['db_sort']).distinct()

    page = paginate(request, objects, per_page)

    context = dict(
        tags=get_tags,
        obj_type=obj_type,
        tag_filter=tag_slug,
        page=page,
        sort=dict(
            key=sort['key'],
            reverse=sort['reverse'],
        ),
    )
    return render(request, 'dashboard/tags.html', context)
Example #6
0
def following(request, backend, slug, account=None):
    """
    Page listing accounts followed by an account
    """

    sort = get_account_sort(request.GET.get('sort_by', None), default=None)

    sorted_following = Account.for_list.filter(followers=account)
    if sort['key']:
        sorted_following = sorted_following.order_by(sort['db_sort'])

    page = paginate(request, sorted_following, settings.ACCOUNTS_PER_PAGE)

    context = dict(
        account = account,
        page = page,
        sort = dict(
            key = sort['key'],
            reverse = sort['reverse'],
        ),
    )

    return render(request, 'core/accounts/following.html', context)
Example #7
0
def contributors(request, backend, project, repository=None):
    """
    Page listing users contributing to a repository
    """

    sort = get_account_sort(request.GET.get('sort_by', None), default=None)

    sorted_contributors = Account.for_list.filter(contributing=repository)
    if sort['key']:
        sorted_contributors = sorted_contributors.order_by(sort['db_sort'])

    page = paginate(request, sorted_contributors, settings.ACCOUNTS_PER_PAGE)

    context = dict(
        repository = repository,
        page = page,
        sort = dict(
            key = sort['key'],
            reverse = sort['reverse'],
        ),
    )

    return render(request, 'core/repositories/contributors.html', context)
Example #8
0
def notes(request, obj_type=None):
    """
    Display all repositories or accounts with a note
    """
    if obj_type is None:
        return redirect(notes, obj_type='repositories')

    model = obj_type_from_url(obj_type)

    sort_key = request.GET.get('sort_by', '-note')
    if model == 'account':
        sort = get_account_sort(sort_key, default=None)
        per_page = settings.ACCOUNTS_PER_PAGE
    else:
        sort = get_repository_sort(sort_key, default=None)
        per_page = settings.REPOSITORIES_PER_PAGE
    if not sort.get('db_sort'):
        sort = prepare_sort(sort_key,
                            dict(note='modified'),
                            default='note',
                            default_reverse=True)

    all_notes = _get_last_user_notes(request.user,
                                     only=model,
                                     sort_by=sort['db_sort'])[model]

    page = paginate(request, all_notes, per_page)

    context = dict(
        page=page,
        obj_type=obj_type,
        sort=dict(
            key=sort['key'],
            reverse=sort['reverse'],
        ),
    )
    return render(request, 'dashboard/notes.html', context)