예제 #1
0
def folder_edit(request, folder_id,page=1):
    if not request.is_logged_in:
        folder = _create_anonymous_user(request)
        folder_id = folder.id
    else:
        folder = get_object_or_404(folder_models.Folder, pk=folder_id)

    subscription_feed_id = None
    if request.method == 'POST':
        form = folder_forms.FolderEditForm(request.POST)
        if form.is_valid():
#            if request.user_account.id == settings.DEFAULT_USER_ID
            rawfeed_id = form.cleaned_data['raw_feed_id']
            folder.name = form.cleaned_data['name']
            folder.items_per_page = int(form.cleaned_data['items_per_page'])
            folder.days_old_limit = int(form.cleaned_data['days_old_limit'])
            folder.save()
    pager = Pager(page_number=int(page), limit=folder.items_per_page, total_count=200)
    if subscription_feed_id > 0:
        sub_feed = folder_models.SubscriptionFeed.objects.get(rawfeed=rawfeed_id,folder=folder.id)
        return render_to_response('feed-items-snippet.html',
                                    {'sub_feed': sub_feed,
                                    'selected_folder': folder,
                                    },
                                    context_instance=RequestContext(request))
    return render_to_response('feed-items-snippet.html',
                              {'selected_folder': folder,
                               'feed_items': utils.get_folder_feed_items(folder, pager.start, pager.limit),
                               }, context_instance=RequestContext(request))
예제 #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))