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)
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)
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)
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)
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)
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)
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)
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)