On Mon, 07 Sep 2015, Orestis Ioannou wrote:
> Thanks for the review.
> I updated my patch

Thanks. Here are my comments.

> > And then you reuse that code for functional testing with selenium (cf
> > functional_tests/tests.py).
> 
> Added a script. I am not sure though if the directory i put it is the
> correct.

Well, when I mentioned "./manage.py tracker_receive_news" it was a
suggestion for a way to inject many news for some manual testing. I don't
think it's an appropriate interface to just create News objects in
the context of automated testing.

A simple loop to create News objects should be enough, no?

for i in range(100):
    pkg.news_set.create(title="News {}".format(i),
                        created_by="Author {}".format(i))

> > There's possibly also room for simplication by using generic views like
> > django.views.generic.list.ListView, they support pagination natively...
> 
> I am not sure how to add the ListView for the panel so i didn't do as
> you suggested but i managed to factorize as much code as possible both
> in the templates and in the view-panel.

You don't use the ListView in the panel but only on the dedicated news
page. In the package page, in the news panel, you just reuse the same
bit of template and you feed the list of news that matches what is
actually displayed on page 1 of the "news page".

The ListView[1] has MultipleObjectMixin[2] as ancestor so you can
set a class attribute "paginate_by = 30" and it will do the right thing
for you (you just have to use variables provided in the context aka
object_list/is_paginated/paginator/page_obj, you can set 
"context_object_name = 'news'" in the ListView if you want to the context
to provide the list of News under that name instead of object_list so that
you can reuse the same name in the news panel and in the news page).

[1] 
https://docs.djangoproject.com/en/1.8/ref/class-based-views/generic-display/#listview
[2] 
https://docs.djangoproject.com/en/1.8/ref/class-based-views/mixins-multiple-object/#django.views.generic.list.MultipleObjectMixin

I don't necessarily want the package page to paginate. If the user wants to
see more news, the link he's offered redirect him to the page dedicated to
news. You can either only put a link pointing to page 2, or you can offer
a list of pages ready to access... it's up to you.

> I also added some tests. The tests for the view and the panel are quite
> similar. I am not sure if there's a better way to do this.

Yes there is: don't duplicate features and handle pagination only on the
news page... :-)

I hope it's enough guidance for you. Let me know if you have questions.

Cheers,
-- 
Raphaël Hertzog ◈ Debian Developer

Support Debian LTS: http://www.freexian.com/services/debian-lts.html
Learn to master Debian: http://debian-handbook.info/get/

Reply via email to