def feeds(request, template="yarr/feeds.html"): """ Mark entries as saved Arguments: entry_pk Primary key for an Entry (required) is_saved If True, mark as saved If False, unmark as saved """ # Get list of feeds for feed list feeds = models.Feed.objects.filter(user=request.user) add_form = forms.AddFeedForm() return render( request, template, { 'title': 'Manage feeds', 'feed_form': add_form, 'feeds': feeds, 'yarr_settings': { 'add_jquery': settings.ADD_JQUERY, # JavaScript YARR_CONFIG variables 'config': utils.jsonEncode({ 'api': reverse('yarr-api_base'), }), }, })
def feeds(request, template="yarr/feeds.html"): """ Mark entries as saved Arguments: entry_pk Primary key for an Entry (required) is_saved If True, mark as saved If False, unmark as saved """ # Get list of feeds for feed list feeds = models.Feed.objects.filter(user=request.user) add_form = forms.AddFeedForm() return render(request, template, { 'title': 'Manage feeds', 'feed_form': add_form, 'feeds': feeds, 'yarr_settings': { 'add_jquery': settings.ADD_JQUERY, # JavaScript YARR_CONFIG variables 'config': utils.jsonEncode({ 'api': reverse('yarr-api_base'), }), }, })
def list_entries( request, feed_pk=None, state=None, template="yarr/list_entries.html", ): """ Display a list of entries Takes optional arguments to determine which entries to list: feed_pk Primary key for a Feed state The state of entries to list; one of: None All entries ENTRY_UNREAD Unread entries ENTRY_SAVED Saved entries Takes a single querystring argument: order If "asc", order chronologically (otherwise reverse-chronologically). Note: no built-in url calls this with state == ENTRY_READ, but support exists for a custom url. """ # Get entries queryset qs, feed = get_entries(request, feed_pk, state) order = request.GET.get('order', ORDER_DESC) if order == ORDER_ASC: qs = qs.order_by('date') else: qs = qs.order_by('-date') # Make list of available pks for this page available_pks = list(qs.values_list('pk', flat=True)) # Paginate entries, pagination = utils.paginate(request, qs) # Base title if state is None: title = 'All items' elif state == ENTRY_UNREAD: title = 'Unread items' elif state == ENTRY_SAVED: title = 'Saved items' else: raise ValueError('Cannot list entries in unknown state') # Add tag feed to title if feed: title = '%s - %s' % (feed.title, title) # Get list of feeds for feed list feeds = models.Feed.objects.filter(user=request.user) # Determine current view for reverse if state is None: current_view = 'yarr-list_all' elif state == ENTRY_UNREAD: current_view = 'yarr-list_unread' elif state == ENTRY_SAVED: current_view = 'yarr-list_saved' return render( request, template, { 'title': title, 'entries': entries, 'pagination': pagination, 'feed': feed, 'feeds': feeds, 'state': state, 'order_asc': order == ORDER_ASC, 'constants': constants, 'current_view': current_view, 'yarr_settings': { 'add_jquery': settings.ADD_JQUERY, # JavaScript YARR_CONFIG variables 'config': utils.jsonEncode({ 'api': reverse('yarr-api_base'), 'con': '#yarr_con', 'initial_state': state, 'initial_order': order, 'initial_feed': feed_pk, 'layout_fixed': settings.LAYOUT_FIXED, 'api_page_length': settings.API_PAGE_LENGTH, 'title_template': settings.TITLE_TEMPLATE, 'title_selector': settings.TITLE_SELECTOR, 'available_pks': available_pks, 'url_all': { None: reverse('yarr-list_all'), ENTRY_UNREAD: reverse('yarr-list_unread'), ENTRY_SAVED: reverse('yarr-list_saved'), }, 'url_feed': { None: reverse('yarr-list_all', kwargs={'feed_pk': '00'}), ENTRY_UNREAD: reverse('yarr-list_unread', kwargs={'feed_pk': '00'}), ENTRY_SAVED: reverse('yarr-list_saved', kwargs={'feed_pk': '00'}), } }), }, })
def list_entries( request, feed_pk=None, state=None, template="yarr/list_entries.html", ): """ Display a list of entries Takes optional arguments to determine which entries to list: feed_pk Primary key for a Feed state The state of entries to list; one of: None All entries ENTRY_UNREAD Unread entries ENTRY_SAVED Saved entries Takes a single querystring argument: order If "asc", order chronologically (otherwise reverse-chronologically). Note: no built-in url calls this with state == ENTRY_READ, but support exists for a custom url. """ # Get entries queryset qs, feed = get_entries(request, feed_pk, state) order = request.GET.get('order', ORDER_DESC) if order == ORDER_ASC: qs = qs.order_by('date') else: qs = qs.order_by('-date') # Make list of available pks for this page available_pks = list(qs.values_list('pk', flat=True)) # Paginate entries, pagination = utils.paginate(request, qs) # Base title if state is None: title = 'All items' elif state == ENTRY_UNREAD: title = 'Unread items' elif state == ENTRY_SAVED: title = 'Saved items' else: raise ValueError('Cannot list entries in unknown state') # Add tag feed to title if feed: title = '%s - %s' % (feed.title, title) # Get list of feeds for feed list feeds = models.Feed.objects.filter(user=request.user) # Determine current view for reverse if state is None: current_view = 'yarr-list_all' elif state == ENTRY_UNREAD: current_view = 'yarr-list_unread' elif state == ENTRY_SAVED: current_view = 'yarr-list_saved' return render(request, template, { 'title': title, 'entries': entries, 'pagination': pagination, 'feed': feed, 'feeds': feeds, 'state': state, 'order_asc': order == ORDER_ASC, 'constants': constants, 'current_view': current_view, 'yarr_settings': { 'add_jquery': settings.ADD_JQUERY, # JavaScript YARR_CONFIG variables 'config': utils.jsonEncode({ 'api': reverse('yarr-api_base'), 'con': '#yarr_con', 'initial_state': state, 'initial_order': order, 'initial_feed': feed_pk, 'layout_fixed': settings.LAYOUT_FIXED, 'api_page_length': settings.API_PAGE_LENGTH, 'title_template': settings.TITLE_TEMPLATE, 'title_selector': settings.TITLE_SELECTOR, 'available_pks': available_pks, 'url_all': { None: reverse('yarr-list_all'), ENTRY_UNREAD: reverse('yarr-list_unread'), ENTRY_SAVED: reverse('yarr-list_saved'), }, 'url_feed': { None: reverse('yarr-list_all', kwargs={'feed_pk':'00'}), ENTRY_UNREAD: reverse('yarr-list_unread', kwargs={'feed_pk':'00'}), ENTRY_SAVED: reverse('yarr-list_saved', kwargs={'feed_pk':'00'}), } }), }, })