Exemple #1
0
def update_default():
    """
    Updates/creates the default Folder, getting the info from
    http://www.bloglines.com/topblogs and removing Bloglines News from it.
    Should be run as a cron job, maybe w/django-cron.
    """
    default_folder = Folder.objects.get(id=1)
    # Gets list of most popular RSS feeds.  In the future we might decide to get
    # the list from somewhere else.
    rss_list = most_pop_bloglines()
    return [add_feed(default_folder, feed) for feed in rss_list]
Exemple #2
0
def folder_render(request, folder_id=None, page=1):
    folder_add_form, feed_add_form, selected_folder = None, None, None

    if not request.is_logged_in and request.method == 'POST':
        selected_folder = _create_anonymous_user(request)
        folder_id = selected_folder.id
        user_id = request.user_account.id
    elif not request.is_logged_in:
        user_id = settings.DEFAULT_USER_ID
    else:
        user_id = request.user_account.id

    if folder_id and not selected_folder:
        selected_folder = get_object_or_404(folder_models.Folder, pk=int(folder_id))
    else:
        selected_folder = get_object_or_404(folder_models.Folder, user=user_id, default_folder=True)

    pager = Pager(page_number=int(page), limit=selected_folder.items_per_page, total_count=selected_folder.item_count)

    # On  post back, check for feed add and folder add actions
    if request.method == 'POST':
        action = request.POST['action']
        if action == 'feed_add':
            feed_add_form = folder_forms.FeedAddForm(request.POST)
            if feed_add_form.is_valid():
                try:
                    utils.add_feed(selected_folder, feed_add_form.cleaned_data['url'])
                except utils.CannotParseFeed:
                    pass #FIXME:Ticket #42. Right now fails silently
        elif action == 'folder_add':
            folder_add_form = folder_forms.FolderAddForm(request.POST)
            if folder_add_form.is_valid():
                selected_folder = folder_models.Folder()
                selected_folder.user = UserAccount.objects.get(id=user_id)
                selected_folder.name = folder_add_form.cleaned_data['name']
                selected_folder.default_folder = False
                selected_folder.save()
                HttpResponseRedirect(reverse('folder_render', args=[selected_folder.id, selected_folder.name]))
        elif action == 'feed_delete' and request.POST.has_key('feed_id'):
            rawfeed_id = int(request.POST['feed_id'])
            feed = folder_models.SubscriptionFeed.objects.get(rawfeed=rawfeed_id,folder=selected_folder.id)
            feed.delete()
        elif action == 'feed_edit' and request.POST.has_key('feed_id') and request.POST.has_key('feed_name'):
            rawfeed_id = int(request.POST['feed_id'])
            feed = folder_models.SubscriptionFeed.objects.get(rawfeed=rawfeed_id,folder=selected_folder.id)
            feed.name = request.POST['feed_name']
            feed.save()
        elif action == 'folder_delete' and not selected_folder.default_folder:
            selected_folder.delete()
            selected_folder = get_object_or_404(folder_models.Folder, user=user_id, default_folder=True)

    if not feed_add_form:
        feed_add_form = folder_forms.FeedAddForm()
    if not folder_add_form:
        folder_add_form = folder_forms.FolderAddForm()

    return render_to_response('folder-render.html',
                              {'selected_folder': selected_folder,
                               'folders': folder_models.Folder.objects.filter(user=user_id),
                               'folder_edit_form': _folder_edit_form(selected_folder),
                                'folder_add_form': folder_add_form,
                                'feed_add_form': feed_add_form,
                                'feed_items': utils.get_folder_feed_items(selected_folder, pager.start, pager.limit),
                                'pager': pager
                                },
                               context_instance=RequestContext(request))