Пример #1
0
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'),
                }),
            },
        })
Пример #2
0
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'),
            }),
        },
    })
Пример #3
0
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'}),
                    }
                }),
            },
        })
Пример #4
0
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'}),
                }
            }),
        },
    })