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