Last active
August 29, 2015 14:27
-
-
Save absyah/51e5e74d6bc3d027304f to your computer and use it in GitHub Desktop.
Book list
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class BookListView(ListViewPublic): | |
def get(self, request, *args, **kwargs): | |
t = loader.get_template('core/reader/index.html') | |
filter_kwargs = { | |
'status': Book.STATUS.public, | |
} | |
form = SearchForm(load_all=True) | |
books = Book.objects.filter(**filter_kwargs) | |
c = Context({ 'form': form, 'books':books }) | |
if self.request.user.is_authenticated(): | |
if request.user.is_administrator: | |
return redirect('/admin') | |
elif request.user.is_author: | |
return redirect('/author') | |
else: | |
return render_to_response('core/reader/index.html', c, context_instance=RequestContext(request)) | |
else: | |
return render_to_response('core/reader/index.html', c, context_instance=RequestContext(request)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@register.inclusion_tag('bootstraptags/pagination.html') | |
def pagination(page_obj, params=None, size=None, align=None, page_kwarg='page', num_items=7): | |
pagination_classes = ['pagination'] | |
if size in ('large', 'small', 'mini'): | |
pagination_classes.append('pagination-%s' % size) | |
if align in ('centered', 'right'): | |
pagination_classes.append('pagination-%s' % align) | |
paginator = page_obj.paginator | |
num_items = int(num_items) | |
def build_url_param(params, page_kwarg): | |
if params is None: | |
params = QueryDict('') | |
params = params.copy() | |
if params.has_key(page_kwarg): | |
params.pop(page_kwarg) | |
params.appendlist(page_kwarg, '') | |
return '?%s' % params.urlencode() | |
pagination_classes = ' '.join(pagination_classes) | |
url_param = build_url_param(params, page_kwarg) | |
is_first = page_obj.number == 1 | |
is_last = page_obj.number == paginator.num_pages | |
page_range = paginator.page_range | |
has_back = False | |
has_forward = False | |
if len(page_range) > num_items: | |
start = page_obj.number - (num_items / 2) | |
start = max(start, 1) | |
start = min(start, paginator.num_pages - num_items + 1) | |
page_range = range(start, start + num_items) | |
has_back = start > 1 | |
has_forward = start < paginator.num_pages - num_items + 1 | |
return { | |
'page_obj': page_obj, | |
'pagination_class': pagination_classes, | |
'url_param': url_param, | |
'is_first': is_first, | |
'is_last': is_last, | |
'has_back': has_back, | |
'has_forward': has_forward, | |
'page_range': page_range | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment