def page_lists(request, page):
    page_posts = RichTextPage.objects.published(for_user=request.user).filter(parent=page).order_by("-publish_date")

    paginate(page_posts, request.GET.get("page", 1),
                         settings.BLOG_POST_PER_PAGE,
                         settings.MAX_PAGING_LINKS)
    return {'page_posts': page_posts}
Example #2
0
def person_list(request,
                category=None,
                template="mezzanine_people/person_list.html"):
    """
    Display a list of people that are filtered by category.
    Custom templates are checked for using the name
    ``people/person_list_XXX.html`` where ``XXX`` is the category's slug.
    """
    settings.use_editable()
    templates = []
    people = Person.objects.published()
    if category is not None:
        category = get_object_or_404(PersonCategory, slug=category)
        people = people.filter(categories=category)
        templates.append(u"mezzanine_people/person_list_%s.html" %
                         unicode(category.slug))

    # requires Django VERSION >= (1, 4):
    people = people.prefetch_related("categories")

    people = paginate(people, request.GET.get("page", 1),
                      settings.PEOPLE_PER_PAGE, settings.MAX_PAGING_LINKS)
    context = {"people": people, "category": category}
    templates.append(template)
    return render(request, templates, context)
Example #3
0
 def get_context_data(self, **kwargs):
     context = super(DocumentDuplicatesView,
                     self).get_context_data(**kwargs)
     context['sha_document_list'] = paginate(
         self.get_sha_document_list(context['document_list']),
         self.request.GET.get("page", 1), self.mezz_paginate_by, 7)
     return context
Example #4
0
def blog_post_list(request, tag=None, year=None, month=None, username=None,
                   category=None, template="blog/blog_post_list.html"):
    """
    Display a list of blog posts that are filtered by tag, year, month,
    author or category. Custom templates are checked for using the name
    ``blog/blog_post_list_XXX.html`` where ``XXX`` is either the
    category slug or author's username if given.
    """
    settings.use_editable()
    templates = []
    blog_posts = BlogPost.objects.published(for_user=request.user)
    if tag is not None:
        tag = get_object_or_404(Keyword, slug=tag)
        blog_posts = blog_posts.filter(keywords__in=tag.assignments.all())
    if year is not None:
        blog_posts = blog_posts.filter(publish_date__year=year)
        if month is not None:
            blog_posts = blog_posts.filter(publish_date__month=month)
            month = month_name[int(month)]
    if category is not None:
        category = get_object_or_404(BlogCategory, slug=category)
        blog_posts = blog_posts.filter(categories=category)
        templates.append(u"blog/blog_post_list_%s.html" %
                          unicode(category.slug))
    author = None
    if username is not None:
        author = get_object_or_404(User, username=username)
        blog_posts = blog_posts.filter(user=author)
        templates.append(u"blog/blog_post_list_%s.html" % username)
    # Create dicts mapping blog post IDs to lists of categories and
    # keywords, and assign these to each blog post, to avoid querying
    # the database inside the template loop for posts.
    blog_posts = list(blog_posts.select_related("user"))
    categories = defaultdict(list)
    if blog_posts:
        ids = ",".join([str(p.id) for p in blog_posts])
        for cat in BlogCategory.objects.raw(
            "SELECT * FROM blog_blogcategory "
            "JOIN blog_blogpost_categories "
            "ON blog_blogcategory.id = blogcategory_id "
            "WHERE blogpost_id IN (%s)" % ids):
            categories[cat.blogpost_id].append(cat)
    keywords = defaultdict(list)
    blogpost_type = ContentType.objects.get(app_label="blog", model="blogpost")
    assigned = AssignedKeyword.objects.filter(blogpost__in=blog_posts,
                          content_type=blogpost_type).select_related("keyword")
    for a in assigned:
        keywords[a.object_pk].append(a.keyword)
    for i, post in enumerate(blog_posts):
        setattr(blog_posts[i], "category_list", categories[post.id])
        setattr(blog_posts[i], "keyword_list", keywords[post.id])
    blog_posts = paginate(blog_posts,
                          request.GET.get("page", 1),
                          settings.BLOG_POST_PER_PAGE,
                          settings.MAX_PAGING_LINKS)
    context = {"blog_page": blog_page(), "blog_posts": blog_posts,
               "year": year, "month": month, "tag": tag,
               "category": category, "author": author}
    templates.append(template)
    return render(request, templates, context)
Example #5
0
def blog_detail(request,
                slug,
                year=None,
                month=None,
                day=None,
                template="pages/blog_detail.html",
                extra_context=None):
    """. Custom templates are checked for using the name
    ``blog/blog_post_detail_XXX.html`` where ``XXX`` is the blog
    posts's slug.
    """
    # blog_posts = MyBlog.objects.get(slug=slug)
    blog_post = get_object_or_404(MyBlog, slug=slug)
    par_blog_posts = BlogPostNew.objects.filter(blog=blog_post)
    blog_posts = paginate(par_blog_posts, request.GET.get("page", 1),
                          settings.BLOG_POST_PER_PAGE,
                          settings.MAX_PAGING_LINKS)
    # related_posts = blog_post.related_posts.published(for_user=request.user)
    context = {
        "blog_post": blog_post,
        "editable_obj": blog_post,
        "blog_posts": blog_posts
    }
    context.update(extra_context or {})
    templates = [u"pages/blog_detail.html", template]
    # return TemplateResponse(request, templates, context)
    return render(request, 'pages/blog_detail.html', context)
Example #6
0
def author_list(request,
                tag=None,
                year=None,
                month=None,
                username=None,
                category=None,
                template="pages/blogs_list.html",
                extra_context=None):
    """
    Display a list of blog posts that are filtered by tag, year, month,
    author or category. Custom templates are checked for using the name
    ``blog/blog_post_list_XXX.html`` where ``XXX`` is either the
    category slug or author's username if given.
    """
    templates = []
    blog_posts = MyProfile.objects.all()
    author = None
    blog_posts = paginate(blog_posts, request.GET.get("page", 1),
                          settings.BLOG_POST_PER_PAGE,
                          settings.MAX_PAGING_LINKS)
    context = {
        "blog_posts": blog_posts,
        "year": year,
        "month": month,
        "tag": tag,
        "category": category,
        "author": author,
    }
    context.update(extra_context or {})
    templates.append(template)
    return render(request, 'pages/author_list.html', context)
Example #7
0
def search(request, template="search_results.html"):
    """
    Display search results. Takes an optional "contenttype" GET parameter
    in the form "app-name.ModelName" to limit search results to a single model.
    """
    settings.use_editable()
    query = request.GET.get("q", "")
    page = request.GET.get("page", 1)
    per_page = settings.SEARCH_PER_PAGE
    max_paging_links = settings.MAX_PAGING_LINKS
    try:
        parts = request.GET.get("type", "").split(".", 1)
        search_model = apps.get_model(*parts)
        search_model.objects.search  # Attribute check
    except (ValueError, TypeError, LookupError, AttributeError):
        search_model = Displayable
        search_type = _("Everything")
    else:
        search_type = search_model._meta.verbose_name_plural.capitalize()
    results = search_model.objects.search(query, for_user=request.user)
    paginated = paginate(results, page, per_page, max_paging_links)
    context = {
        "query": query,
        "results": paginated,
        "search_type": search_type
    }
    return render(request, template, context)
Example #8
0
def search(request, template="search_results.html"):
    """
    Display search results. Takes an optional "contenttype" GET parameter
    in the form "app-name.ModelName" to limit search results to a single model.
    """
    settings.use_editable()
    query = request.GET.get("q", "")
    page = request.GET.get("page", 1)
    per_page = settings.SEARCH_PER_PAGE
    max_paging_links = settings.MAX_PAGING_LINKS
    try:
        search_model = get_model(*request.GET.get("type", "").split(".", 1))
        if not issubclass(search_model, Displayable):
            raise TypeError
    except TypeError:
        search_model = Displayable
        search_type = _("Everything")
    else:
        search_type = search_model._meta.verbose_name_plural.capitalize()
    results = search_model.objects.search(query, for_user=request.user)

    if 'location' and 'age' in request.session:
        if 'cart loaded' in request.session:
            stores = request.session['stores']

        else:
            avail_store_ids = request.session['store ids']

            if avail_store_ids:
                stores = Store.objects.filter(id__in=avail_store_ids)
            else:
                return HttpResponseRedirect('/shop/no-stores-yet')

        avail_prod_ids = []
        for p in stores:
            for k in results:
                if p == k.store:
                    avail_prod_ids.append(k.id)

        results = Product.objects.filter(id__in=avail_prod_ids)

        sort_options = [(slugify(option[0]), option[1])
                    for option in settings.SHOP_PRODUCT_SORT_OPTIONS]
        sort_by = request.GET.get("sort", sort_options[0][1])
        results = paginate(results.order_by(sort_by),
                        request.GET.get("page", 1),
                        settings.SHOP_PER_PAGE_CATEGORY,
                        settings.MAX_PAGING_LINKS)
        results.sort_by = sort_by

    else:
#        return render(request, template, {"have_loc": False})
	info(request, _("Enter your location to use the search"))
        return HttpResponseRedirect('/')

#    paginated = paginate(results, page, per_page, max_paging_links)
    paginated = results
    context = {"query": query, "results": paginated,
               "search_type": search_type, "have_loc": True}
    return render(request, template, context)
Example #9
0
def homepage(request,
             tag=None,
             year=None,
             month=None,
             username=None,
             category=None,
             template="index.html"):
    settings.use_editable()
    templates = []
    blog_posts = BlogPost.objects.published(for_user=request.user)
    author = None

    prefetch = ("categories", "keywords__keyword")
    blog_posts = blog_posts.select_related(
        "user", "user__profile").prefetch_related(*prefetch)[:5]

    blog_posts = paginate(blog_posts, request.GET.get("page", 1),
                          settings.BLOG_POST_PER_PAGE,
                          settings.MAX_PAGING_LINKS)
    context = {
        "blog_posts": blog_posts,
        "year": year,
        "month": month,
        "tag": tag,
        "category": category,
        "author": author
    }
    templates.append(template)
    return render(request, templates, context)
Example #10
0
def show_forum(request, forum_id, full=True):
    forum = get_object_or_404(Forum, pk=forum_id)
    if not forum.category.has_access(request.user):
        raise PermissionDenied
    topics = forum.topics.order_by('-sticky', '-updated').select_related()
    topics = paginate(topics, request.GET.get("page", 1),
                      forum_settings.FORUM_PAGE_SIZE, 20)
    moderator = request.user.is_superuser or\
        request.user in forum.moderators.all()

    categories = []
    for category in Category.objects.all():
        if category.has_access(request.user):
            categories.append(category)

    to_return = {'categories': categories,
                'forum': forum,
                'posts': forum.post_count,
                'topics': topics,
                'moderator': moderator,
                }
    if full:
        return render(request, 'djangobb_forum/forum.html', to_return)
    else:
        return render(request, 'djangobb_forum/lofi/forum.html', to_return)
Example #11
0
File: views.py Project: toway/towi
def blog_post_home(request, template="blog/blog_post_list.html"):
    settings.use_editable()
    templates = []
    category = BlogCategory.objects.get(slug='ads')
    blog_posts = BlogPost.objects.published(for_user=request.user)
    ads_posts = None

    if category:
        blog_posts = blog_posts.exclude(categories=category)
        ads_posts = BlogPost.objects.published(for_user=request.user)
        ads_posts = ads_posts.filter(categories=category)

    blog_posts = paginate(blog_posts, request.GET.get("page", 1),
                          settings.BLOG_POST_PER_PAGE,
                          settings.MAX_PAGING_LINKS)

    context = {
        "blog_posts": blog_posts,
        "ads_posts": ads_posts,
        "year": None,
        "month": None,
        "tag": None,
        "category": None,
        "author": None
    }

    templates.append(template)
    return render(request, templates, context)
Example #12
0
def search(request, template="search_results.html", extra_context=None):
    """
    Display search results. Takes an optional "contenttype" GET parameter
    in the form "app-name.ModelName" to limit search results to a single model.
    """
    settings.use_editable()
    query = request.GET.get("q", "")
    page = request.GET.get("page", 1)
    per_page = settings.SEARCH_PER_PAGE
    max_paging_links = settings.MAX_PAGING_LINKS
    try:
        parts = request.GET.get("type", "").split(".", 1)
        search_model = apps.get_model(*parts)
        search_model.objects.search  # Attribute check
    except (ValueError, TypeError, LookupError, AttributeError):
        search_model = Displayable
        search_type = _("Everything")
    else:
        search_type = search_model._meta.verbose_name_plural.capitalize()
    results = search_model.objects.search(query, for_user=request.user)
    paginated = paginate(results, page, per_page, max_paging_links)
    context = {"query": query, "results": paginated,
               "search_type": search_type}
    context.update(extra_context or {})
    return render(request, template, context)
Example #13
0
def fashion_list(request, sub=None, template="fashion.j2"):
    """
    Display a list of blog posts that are filtered by tag, year, month,
    author or category. Custom templates are checked for using the name
    ``blog/blog_post_list_XXX.html`` where ``XXX`` is either the
    category slug or author's username if given.
    """
    category = get_object_or_404(BlogCategory, slug="fashion")
    blog_posts = BlogPost.objects.published(for_user=request.user).filter(
        categories=category)

    if sub is not None:
        sub = get_object_or_404(BlogCategory, slug=sub)
        blog_posts = blog_posts.filter(categories=sub)

    author = None

    prefetch = ("categories", "keywords__keyword")
    blog_posts = blog_posts.select_related("user").prefetch_related(*prefetch)
    blog_posts = paginate(blog_posts, request.GET.get("page", 1), 12,
                          settings.MAX_PAGING_LINKS)
    context = {
        "blog_posts": blog_posts,
        "year": None,
        "month": None,
        "tag": None,
        "category": sub,
        "author": author
    }
    #context.update(extra_context or {})
    #templates.append(template)
    return TemplateResponse(request, template, context)
Example #14
0
def have_location_get_categories_products(request, page, published_products, avail_stores, avail_store_names, avail_liquor_types):

    avail_prod_ids = []
    for p in avail_stores:
        for k in published_products:
            if p == k.store:
                avail_prod_ids.append(k.id)

    products = Product.objects.filter(id__in=avail_prod_ids)

    sort_options = [(slugify(option[0]), option[1])
                for option in settings.SHOP_PRODUCT_SORT_OPTIONS]
    sort_by = request.GET.get("sort", sort_options[0][1])
    products = paginate(products.order_by(sort_by),
                    request.GET.get("page", 1),
                    settings.SHOP_PER_PAGE_CATEGORY,
                    settings.MAX_PAGING_LINKS)
    products.sort_by = sort_by

    sub_categories = [p.titles for p in page.category.children.published()]
    avail_stores = list(set(sub_categories) & set(avail_store_names))
    avail_liquors = list(set(sub_categories) & set(avail_liquor_types))
    avail_categories = avail_liquors + avail_stores

    child_categories = Category.objects.filter(titles__in=avail_categories)

    return products, child_categories
Example #15
0
def frontpage(request):
    # @TODO: Use weight and featured fields, which need to be implemented.
    articles = Article.objects.filter(public=True).order_by('-updated_at')[:5]
    articles = paginate(articles, request.GET.get("page", 1),
                        settings.BLOG_POST_PER_PAGE,
                        settings.MAX_PAGING_LINKS)
    return render(request, ['frontpage.html'], {'articles': articles})
Example #16
0
def bookmarks(request, slug=None, username=None):
    bookmarks = Bookmark.objects.all().order_by("-publish_date")
    keyword = None
    user = None

    if slug:
        try:
            keyword = Keyword.objects.get(slug=slug)
        except Keyword.DoesNotExist:
            raise Http404

        bookmarks = bookmarks.filter(keywords__keyword_id=keyword.pk)

    if username:
        try:
            user = User.objects.get(username=username)
        except User.DoesNotExist:
            raise Http404

        bookmarks = bookmarks.filter(user__username=username)

    bookmarks = paginate(
        bookmarks,
        request.GET.get("page", 1),
        15,
        settings.MAX_PAGING_LINKS,
    )
    return render(request, ["bookmarks/bookmarks.html"], {
        "bookmarks": bookmarks,
        "tag": keyword,
        "username": user,
    })
Example #17
0
def article_list(request, tag=None, category=None, template="article/article_list.html"):
    """
    Display a list of blog posts that are filtered by tag, year, month,
    author or category. Custom templates are checked for using the name
    ``blog/blog_post_list_XXX.html`` where ``XXX`` is either the
    category slug or author's username if given.
    """
    settings.use_editable()
    templates = []
    articles = Article.objects.published(for_user=request.user)
    if tag is not None:
        tag = get_object_or_404(Keyword, slug=tag)
        articles = articles.filter(keywords__in=tag.assignments.all())
    if category is not None:
        category = get_object_or_404(BlogCategory, slug=category)
        articles = articles.filter(categories=category)
        # templates.append(u"article/blog_post_list_%s.html" %
        #                  str(category.slug))
    author = None
    prefetch = ("categories", "keywords__keyword")
    articles = articles.select_related("user").prefetch_related(*prefetch)
    articles = paginate(articles, request.GET.get("page", 1),
                          settings.BLOG_POST_PER_PAGE,
                          settings.MAX_PAGING_LINKS)
    context = {"articles": articles,
               "tag": tag, "category": category, "author": author}
    templates.append(template)
    return render(request, templates, context)
Example #18
0
def agents(request, agent_state_slug, agent_city_slug):
    agents = queryset_iterator(
        Agent.objects.filter(
            slugged_state=abbreviate_slugged_state(agent_state_slug),
            slugged_city=agent_city_slug))
    # agents = get_list_or_404(Agent, slugged_state=abbreviate_slugged_state(agent_state_slug),
    #                          slugged_city=agent_city_slug)

    agent_list = []
    for ag in agents:
        agent_list.append(ag)

    agents = paginate(agent_list, request.GET.get("page", 1), 100, 10)

    profile_claimed = is_profile_claimed(request.user)

    if request.GET.get("page") == '1':
        return HttpResponsePermanentRedirect(
            reverse('agent.views.agents',
                    args=[agent_state_slug, agent_city_slug]))

    return render_to_response('pages/agents.html', {
        'agents': agents,
        'agent_state_slug': agent_state_slug,
        'agent_city_slug': agent_city_slug,
        'profile_claimed': profile_claimed
    },
                              context_instance=RequestContext(request))
Example #19
0
def bookmarks(request, slug=None):
    if not slug:
        bookmarks = Bookmark.objects.all().order_by("-publish_date")
        keyword = None
    else:
        try:
            keyword = Keyword.objects.get(slug=slug)
        except Keyword.DoesNotExist:
            raise Http404

        bookmarks = Bookmark.objects.filter(
            keywords__keyword_id=keyword.pk).order_by("-publish_date")
        if len(bookmarks) == 0:
            raise Http404

    bookmarks = paginate(
        bookmarks,
        request.GET.get("page", 1),
        15,
        settings.MAX_PAGING_LINKS,
    )
    return render(request, ["bookmarks/bookmarks.html"], {
        "bookmarks": bookmarks,
        "tag": keyword,
    })
Example #20
0
def lco_blog_post_list(request, tag=None, year=None, month=None, username=None,
                   category=None, template="blog/blog_post_list.html",
                   extra_context=None):
    """
    Display a list of blog posts that are filtered by tag, year, month,
    author or category.
    """
    templates = []
    blog_posts = BlogPost.objects.published(for_user=request.user)

    if category is not None:
        category = get_object_or_404(BlogCategory, slug=category)
        blog_posts = blog_posts.filter(categories=category)
        templates.append(u"blog/blog_post_list_%s.html" %
                          str(category.slug))
    if category == None:
        blog_posts = blog_posts.filter(categories=None)
    author = None
    if username is not None:
        author = get_object_or_404(User, username=username)
        blog_posts = blog_posts.filter(user=author)
        templates.append(u"blog/blog_post_list_%s.html" % username)

    prefetch = ("categories", "keywords__keyword")
    blog_posts = blog_posts.select_related("user").prefetch_related(*prefetch)
    blog_posts = paginate(blog_posts, request.GET.get("page", 1),
                          settings.BLOG_POST_PER_PAGE,
                          settings.MAX_PAGING_LINKS)
    context = {"blog_posts": blog_posts, "year": year, "month": month,
               "tag": tag, "category": category, "author": author}
    context.update(extra_context or {})
    templates.append(template)
    return TemplateResponse(request, templates, context)
Example #21
0
 def paginate_queryset(self, queryset, page_size):
     page_kwarg = self.page_kwarg
     page_num = self.kwargs.get(page_kwarg) or self.request.GET.get(
         page_kwarg) or 1
     page = paginate(queryset, page_num, page_size,
                     self.get_max_paging_links())
     return (page.paginator, page, page.object_list, page.has_other_pages())
Example #22
0
 def get_context_data(self, **kwargs):
     context = super(ArticleEventView, self).get_context_data(**kwargs)
     context['objects'] = paginate(self.qs, self.request.GET.get("page", 1),
                                   settings.MEDIA_PER_PAGE,
                                   settings.MAX_PAGING_LINKS)
     context['title'] = _('Laboratory News')
     return context
Example #23
0
def blog_post_list(request, tag=None, year=None, month=None, username=None,
    category=None, template="blog/blog_post_list.html"):
    """
    Display a list of blog posts.
    """
    settings.use_editable()
    blog_posts = BlogPost.objects.published(for_user=request.user)
    if tag is not None:
        tag = get_object_or_404(Keyword, slug=tag)
        blog_posts = blog_posts.filter(keywords=tag)
    if year is not None:
        blog_posts = blog_posts.filter(publish_date__year=year)
        if month is not None:
            blog_posts = blog_posts.filter(publish_date__month=month)
            month = month_name[int(month)]
    if category is not None:
        category = get_object_or_404(BlogCategory, slug=category)
        blog_posts = blog_posts.filter(categories=category)
    author = None
    if username is not None:
        author = get_object_or_404(User, username=username)
        blog_posts = blog_posts.filter(user=author)
    blog_posts = paginate(blog_posts, request.GET.get("page", 1),
        settings.BLOG_POST_PER_PAGE,
        settings.BLOG_POST_MAX_PAGING_LINKS)
    context = {"blog_posts": blog_posts, "year": year, "month": month,
               "tag": tag, "category": category, "author": author,
               "use_disqus": bool(settings.COMMENTS_DISQUS_SHORTNAME),
               "blog_page": blog_page()}
    return render_to_response(template, context, RequestContext(request))
Example #24
0
 def render_blog(self, request, year=None, month=None, author=None, category=None):
     posts = self.posts.published(for_user=request.user)
     #if tag is not None:
     #    tag = get_object_or_404(Keyword, slug=tag)
     #    blog_posts = blog_posts.filter(keywords=tag)
     if year is not None:
         if not year.isdigit():
             raise Http404
         posts = posts.filter(publish_date__year=year)
         if month is not None:
             if not month.isdigit():
                 raise Http404
             posts = posts.filter(publish_date__month=month)
             month = month_name[int(month)]
     if category is not None:
         try:
             category = self.categories.get(slug=category)
         except Category.DoesNotExist:
             raise Http404
         posts = posts.filter(category=category)
     if author is not None:
         author = get_object_or_404(User, username=author)
         posts = posts.filter(user=author)
     posts = paginate(posts,
                      request,
                      self.posts_per_page,
                      self.max_paging_links)
     context = {"displayable": self,
                "posts": posts,
                "year": year,
                "month": month,
                "category": category,
                "author": author,
                }
     return HttpResponse(self.get_template().render(RequestContext(request, context)))
Example #25
0
def search(request, template="search_results.html", extra_context=None):
    """
    Display search results. Takes an optional "contenttype" GET parameter
    in the form "app-name.ModelName" to limit search results to a single model.
    """
    query = request.GET.get("q", "")
    page = request.GET.get("page", 1)
    per_page = settings.SEARCH_PER_PAGE
    max_paging_links = settings.MAX_PAGING_LINKS
    try:
        parts = request.GET.get("type", "").split(".", 1)
        search_model = apps.get_model(*parts)
        search_model.objects.search  # Attribute check
    except (ValueError, TypeError, LookupError, AttributeError):
        search_model = Displayable
        search_type = _("Everything")
    else:
        search_type = search_model._meta.verbose_name_plural.capitalize()
    results = search_model.objects.search(query, for_user=request.user)
    queryTitle = query.split("‧", 1);

    results_title =  list(Book.objects.filter(Q(title__contains=query) | Q(chinese_title__contains=queryTitle[0])))
    author = Author.objects.filter(Q(chinese_name__contains=query) | Q(english_name__contains=query)).first()
    results_author = []
    if author:
        results_author = list(Book.objects.filter(author_id=author.id))

    results = list(set(results + results_author+ results_title))
    paginated = paginate(results, page, per_page, max_paging_links)
    context = {"query": query, "results": paginated,
               "search_type": search_type}
    context.update(extra_context or {})
    return TemplateResponse(request, template, context)
Example #26
0
def comment_thread(context, parent):
    """
    Return a list of child comments for the given parent, storing all
    comments in a dict in the context when first called, using parents
    as keys for retrieval on subsequent recursive calls from the
    comments template.
    """
    if "all_comments" not in context:
        comments = defaultdict(list)
        if "request" in context and context["request"].user.is_staff:
            comments_queryset = parent.comments.all()
        else:
            comments_queryset = parent.comments.visible()
        for comment in comments_queryset.select_related("user"):
            comments[comment.replied_to_id].append(comment)
        context["all_comments"] = comments
    parent_id = parent.id if isinstance(parent, Review) else None
    try:
        replied_to = int(context["request"].POST["replied_to"])
    except KeyError:
        replied_to = 0

    page = context['request'].GET.get("page", 1)
    per_page = django_settings.REVIEWS_PER_PAGE
    max_paging_links = django_settings.MAX_PAGING_LINKS

    comments_queryset = context["all_comments"].get(parent_id, [])
    paginated = paginate(comments_queryset, page, per_page, max_paging_links)

    context.update({
        "comments_for_thread": paginated,
        "no_comments": parent_id is None and not context["all_comments"],
        "replied_to": replied_to,
    })
    return context
Example #27
0
def agents(request, agent_state_slug, agent_city_slug):
    agents = queryset_iterator(Agent.objects.filter(slugged_state=abbreviate_slugged_state(agent_state_slug),
                               slugged_city=agent_city_slug))
    # agents = get_list_or_404(Agent, slugged_state=abbreviate_slugged_state(agent_state_slug),
    #                          slugged_city=agent_city_slug)

    agent_list = []
    for ag in agents:
        agent_list.append(ag)

    agents = paginate(agent_list,
                      request.GET.get("page", 1),
                      100, 10)

    profile_claimed = is_profile_claimed(request.user)

    if request.GET.get("page") == '1':
        return HttpResponsePermanentRedirect(reverse('agent.views.agents',
                                                     args=[agent_state_slug, agent_city_slug]))

    return render_to_response('pages/agents.html',
                              {'agents': agents,
                               'agent_state_slug': agent_state_slug,
                               'agent_city_slug': agent_city_slug,
                               'profile_claimed': profile_claimed}, context_instance=RequestContext(request))
Example #28
0
def bookmarks(request, slug=None, username=None):
    bookmarks = Bookmark.objects.all().order_by("-publish_date")
    keyword = None
    user = None

    if slug:
        try:
            keyword = Keyword.objects.get(slug=slug)
        except Keyword.DoesNotExist:
            raise Http404

        bookmarks = bookmarks.filter(keywords__keyword_id=keyword.pk)

    if username:
        try:
            user = User.objects.get(username=username)
        except User.DoesNotExist:
            raise Http404

        bookmarks = bookmarks.filter(user__username=username)

    bookmarks = paginate(
        bookmarks,
        request.GET.get("page", 1),
        15,
        settings.MAX_PAGING_LINKS,
    )
    return render(request, ["bookmarks/bookmarks.html"], {
        "bookmarks": bookmarks,
        "tag": keyword,
        "username": user,
    })
Example #29
0
File: views.py Project: pwhipp/pwc
 def get_context_data(self, **kwargs):
     context = super().get_context_data(**kwargs)
     context['testimonials'] = paginate(context['testimonials'],
                                        self.request.GET.get("page", 1),
                                        5,
                                        settings.MAX_PAGING_LINKS)
     return context
Example #30
0
def list_infos(request, template="/pages/info_list.html"):
    listado_infos = InfoInteres.objects.published()
    filtrar_like = False
    if request.method == "POST":
        content = request.POST['content']
        if content != '':
            listado_infos = listado_infos.filter(Q(title__icontains=content) | Q(descripcion__icontains=content))
        # todo sacar el resto de parametros
        tipo_info = request.POST['tipo_info']
        if tipo_info != '':
            listado_infos = listado_infos.filter(tipo_info=tipo_info)
        try:
            like = request.POST['like']
            if like:
                filtrar_like = True
        except:
            pass
    templates = []
    templates.append(u'pages/info_list.html')
    # context = {"lista": lista, "most_viewed_talks":most_viewed_talks, "most_rated_talks":most_rated_talks}
    listado_infos = utils.getLikeCommentInfos(request.user, listado_infos, filtrar_like)
    listado_infos = paginate(listado_infos, request.GET.get("page", 1),
                     settings.BLOG_POST_PER_PAGE,
                     settings.MAX_PAGING_LINKS)
    context = {"lista": listado_infos}
    templates.append(template)
    return TemplateResponse(request, templates, context)
Example #31
0
    def get_context_data(self, **kwargs):
        context = super(ArticleListView, self).get_context_data(**kwargs)
        context['keywords'] = settings.ARTICLE_KEYWORDS

        # keywords
        assigned_keyword = AssignedKeyword()
        self.keywords = assigned_keyword.get_keywords_of_content_type(
            self.model._meta.app_label, self.model.__name__.lower())
        if self.keywords:
            context['keywords'] = self.keywords

        # pagination
        context['objects'] = paginate(self.qs, self.request.GET.get("page", 1),
                                      settings.ARTICLE_PER_PAGE,
                                      settings.MAX_PAGING_LINKS)

        # keyword by AssignKeyword
        if 'keyword' in self.kwargs:
            context['current_keyword_slug'] = self.kwargs['keyword']

        # keyword by MediaType: video, audio.....
        if 'type' in self.kwargs:
            context['current_keyword'] = self.kwargs['type']

        return context
Example #32
0
def blog_post_list(request,
                   tag=None,
                   year=None,
                   month=None,
                   username=None,
                   blog_name=None,
                   category=None,
                   template="blog/blog_post_list.html",
                   extra_context=None):
    """
    Display a list of blog posts that are filtered by tag, year, month,
    author or category. Custom templates are checked for using the name
    ``blog/blog_post_list_XXX.html`` where ``XXX`` is either the
    category slug or author's username if given.
    """
    templates = []
    if blog_name is not None:
        blog = get_object_or_404(Blog, slug=blog_name)
        blog_posts = BlogPost.objects.published(for_user=request.user).filter(
            blog=blog)
    else:
        blog_posts = BlogPost.objects.published(for_user=request.user)
    if tag is not None:
        tag = get_object_or_404(Keyword, slug=tag)
        blog_posts = blog_posts.filter(keywords__keyword=tag)
    if year is not None:
        blog_posts = blog_posts.filter(publish_date__year=year)
        if month is not None:
            blog_posts = blog_posts.filter(publish_date__month=month)
            try:
                month = month_name[int(month)]
            except IndexError:
                raise Http404()
    if category is not None:
        category = get_object_or_404(BlogCategory, slug=category)
        blog_posts = blog_posts.filter(categories=category)
        templates.append(u"blog/blog_post_list_%s.html" % str(category.slug))
    author = None
    if username is not None:
        author = get_object_or_404(User, username=username)
        blog_posts = blog_posts.filter(user=author)
        templates.append(u"blog/blog_post_list_%s.html" % username)

    prefetch = ("categories", "keywords__keyword")
    blog_posts = blog_posts.select_related("user").prefetch_related(*prefetch)
    blog_posts = paginate(blog_posts, request.GET.get("page", 1),
                          settings.BLOG_POST_PER_PAGE,
                          settings.MAX_PAGING_LINKS)
    context = {
        "blog_posts": blog_posts,
        "year": year,
        "month": month,
        "tag": tag,
        "category": category,
        "author": author
    }
    context.update(extra_context or {})
    templates.append(template)
    return TemplateResponse(request, templates, context)
Example #33
0
def comment_thread_social_level2(context, parent):
    """
    Return a list of child comments for the given parent, storing all
    comments in a dict in the context when first called, using parents
    as keys for retrieval on subsequent recursive calls from the
    comments template.
    """

    comments = None
    if "request" in context and context["request"].user.is_staff:
        comments_queryset = parent.comments.all()
    else:
        comments_queryset = parent.comments.visible()

    #user_social_auth_list = context["request"].user.social_auth.filter(provider="facebook")
    #if not user_social_auth_list:
    #    user_social_auth_list = context["request"].user.social_auth.filter(provider="twitter")
    #if user_social_auth_list:
    #    user_social_auth = user_social_auth_list[0]
    #    if user_social_auth:
    #        friends_of_friends = cache.get(user_social_auth.user.username+"SocialFriendListLevel2")
    #        if  not friends_of_friends:            
    #            friends = SocialFriendList.objects.existing_social_friends(context["request"].user.social_auth.filter(provider="facebook")[0])
    #            friends_of_friends = list(friends)
    #            for friend in friends:
    #                friends_level2 = SocialFriendList.objects.existing_social_friends(friend.social_auth.filter(provider="facebook")[0])
    #                friends_of_friends = list(chain(friends_of_friends, friends_level2))
    #            cache.set(user_social_auth.user.username+"SocialFriendListLevel2", friends_of_friends)
    friends_of_friends = set()

    friends = context["request"].user.relationships.following()
    for friend in friends:
        friends_of_friends.add(friend)
        friends_level2 = friend.relationships.following()
        for friend_level2 in friends_level2:
            friends_of_friends.add(friend_level2)

    comments_queryset = comments_queryset.order_by('-submit_date')

    comments = comments_queryset.select_related("user").filter(user__in=friends_of_friends)

    parent_id = parent.id if isinstance(parent, Review) else None
    try:
        replied_to = int(context["request"].POST["replied_to"])
    except KeyError:
        replied_to = 0

    page = context['request'].GET.get("page", 1)
    per_page = django_settings.REVIEWS_PER_PAGE
    max_paging_links = django_settings.MAX_PAGING_LINKS

    paginated = paginate(comments, page, per_page, max_paging_links)

    context.update({
        "comments_for_thread": paginated,
        "no_comments": parent_id is None and not comments,
        "replied_to": replied_to,
    })
    return context
Example #34
0
def search(request, template="search_results.html"):
    """
    Display search results. Takes an optional "contenttype" GET parameter
    in the form "app-name.ModelName" to limit search results to a single model.
    """
    settings.use_editable()
    query = request.GET.get("q", "")
    page = request.GET.get("page", 1)
    per_page = settings.SEARCH_PER_PAGE
    max_paging_links = settings.MAX_PAGING_LINKS
    table_name = BlogPost._meta.db_table
    try:
        search_model = get_model(*request.GET.get("type", "").split(".", 1))
        if not issubclass(search_model, Displayable):
            raise TypeError
    except TypeError:
        search_model = BlogPost#Displayable
        search_type =  _("blog.BlogPost")#_("Everything")
    else:
        search_type = search_model._meta.verbose_name_plural.capitalize()
    queryWithQuotes = '"%s"' % query
    results = search_model.objects.search(queryWithQuotes, for_user=request.user)

    filters = request.GET.get("filter", '')
    filter_arr = []
    if filters != '':
        filter_arr = filters.split('-')
    filter_sum = ''
    if len(filter_arr) > 0:
        for i in range(len(filter_arr)):
            if is_valid_search_filter(filter_arr[i]):
                if i == 0:
                    filter_sum += filter_arr[i].lower()+'_average'
                else:
                    filter_sum += '+' + filter_arr[i].lower()+'_average'

    if filter_sum != '': 
        '''
        If filters are apllied, order vendors by sum of the filter parameter values.
        In case filter values are equal, order them as per their overall average.
        For now tie between equal overall_average is not broken. To break add more parameters ahead in order of priority.
        '''
        results = results.extra(select={'filtersum': filter_sum,
                                                     'fieldsum':'price_average + website_ex_average + quality_average + service_average',
                                                     'followers': 'SELECT COUNT(*) FROM %s WHERE target_blogpost_id=%s.id' % (Follow._meta.db_table, table_name)},
                                                     order_by=('-filtersum', '-overall_average', '-fieldsum', '-comments_count', '-followers',)).distinct()
    else:
        '''
            In absence of any filters, order vendors by overall_average by default.
        '''
        results = results.extra(select={'fieldsum':'price_average + website_ex_average + quality_average + service_average',
                                        'followers': 'SELECT COUNT(*) FROM %s WHERE target_blogpost_id=%s.id' % (Follow._meta.db_table, table_name)},
                                        order_by=('-overall_average', '-fieldsum', '-comments_count', '-followers',)).distinct()

    #results.sort(searchComparator, reverse=True)
    paginated = paginate(results, page, per_page, max_paging_links)
    context = {"query": query, "results": paginated,
               "search_type": search_type}
    return render(request, template, context)
Example #35
0
def index(request):
    results = CommunityModel.objects.published(for_user=request.user)
    result_list = paginate(results, request.GET.get("page", 1), settings.ITEMS_PER_PAGE, settings.MAX_PAGE_LINKS)

    return render(request, 'community/index.html', {
        'result_list': result_list,
        'title': "Community",
    })
Example #36
0
def list_to_paginate(list_object, request):
    """
    Transforma uma lista recebida em objeto para paginação
    """
    object_paginate = paginate(list_object, request.GET.get("page", 1),
                               settings.BLOG_POST_PER_PAGE,
                               settings.MAX_PAGING_LINKS)
    return object_paginate
Example #37
0
def community(request, page):

    results = CommunityModel.objects.all()
    result_list = paginate(results, request.GET.get("page", 1), settings.ITEMS_PER_PAGE, settings.MAX_PAGE_LINKS)

    return {
        'result_list': result_list,
    }
Example #38
0
 def get_context_data(self, **kwargs):
     context = super(DocumentDuplicatesView, self).get_context_data(**kwargs)
     context['sha_document_list'] = paginate(
         self.get_sha_document_list(context['document_list']),
         self.request.GET.get("page", 1),
         self.mezz_paginate_by,
         7)
     return context
Example #39
0
def list_to_paginate(list_object, request):
    """
    Transforma uma lista recebida em objeto para paginação
    """
    object_paginate = paginate(list_object, request.GET.get("page", 1),
                          settings.BLOG_POST_PER_PAGE,
                          settings.MAX_PAGING_LINKS)
    return object_paginate
Example #40
0
def event_list(request):
    """
    List view of all events.
    The filter form determines the start and end date interval.
    """
    start = None
    end = None
    form = ListFilterForm(request.GET)
    occurrences = Occurrence.objects.published().select_related("event")

    if form.is_valid():
        occurrences = form.filter(occurrences)
        start = form.cleaned_data["start_day"]
        end = form.cleaned_data["end_day"]

    # Adjust to include the current time if start is set to today
    if start == today():
        start = now()

    featured_occurrences = paginate(
        list(
            occurrences.filter(event__featured=True).all_occurrences(
                start, end)),
        page_num=request.GET.get("featured-page", 1),
        per_page=settings.EVENTS_FEATURED_PER_PAGE,
        max_paging_links=settings.MAX_PAGING_LINKS,
    )
    regular_occurrences = paginate(
        list(
            occurrences.filter(event__featured=False).all_occurrences(
                start, end)),
        page_num=request.GET.get("page", 1),
        per_page=settings.EVENTS_PER_PAGE,
        max_paging_links=settings.MAX_PAGING_LINKS,
    )

    context = {
        "today": today(),
        "start_day": start,
        "end_day": end,
        "filter_form": form,
        "filter_form_url": request.path,
        "featured_occurrences": featured_occurrences,
        "occurrences": regular_occurrences,
    }
    return render(request, "mezzanine_events/event_list.html", context)
Example #41
0
def event_list(request,
               tag=None,
               year=None,
               month=None,
               username=None,
               location=None,
               template="agenda/event_list.html"):
    """
    Display a list of events that are filtered by tag, year, month,
    author or location. Custom templates are checked for using the name
    ``agenda/event_list_XXX.html`` where ``XXX`` is either the
    location slug or author's username if given.
    """
    settings.use_editable()
    templates = []
    events = Event.objects.published(for_user=request.user)
    if tag is not None:
        tag = get_object_or_404(Keyword, slug=tag)
        events = events.filter(keywords__keyword=tag)
    if year is not None:
        events = events.filter(start__year=year)
        if month is not None:
            events = events.filter(start__month=month)
            try:
                month = month_name[int(month)]
            except IndexError:
                raise Http404()
    if location is not None:
        location = get_object_or_404(EventLocation, slug=location)
        events = events.filter(location=location)
        templates.append(u"agenda/event_list_%s.html" % str(location.slug))
    author = None
    if username is not None:
        author = get_object_or_404(User, username=username)
        events = events.filter(user=author)
        templates.append(u"agenda/event_list_%s.html" % username)
    if not tag and not year and not location and not username:
        #Get upcoming events/ongoing events
        events = events.filter(
            Q(start__gt=datetime.now())
            | Q(end__gt=datetime.now())).order_by("start")

    prefetch = ("keywords__keyword", )
    events = events.select_related("user").prefetch_related(*prefetch)
    events = paginate(events, request.GET.get("page", 1),
                      settings.EVENT_PER_PAGE, settings.MAX_PAGING_LINKS)
    context = {
        "events": events,
        "year": year,
        "month": month,
        "tag": tag,
        "location": location,
        "author": author
    }
    templates.append(template)

    return TemplateResponse(request, templates, context)
Example #42
0
def get_all_events(request, page=1):
    events = Event.objects.filter(visible=True).annotate(startdate = models.Max('eventschedule__start'), enddate = models.Max('eventschedule__end')).order_by('startdate')
    if request.GET.get('page'):
        page = request.GET.get('page')
    events = paginate(events, page,
                          settings.EVENTS_POST_PER_PAGE,
                          settings.MAX_PAGING_LINKS)
    context = {'events':events}
    return render(request, 'events/event_list.html', context)
Example #43
0
def get_all_announcements(request, page=1):
    announcements = Announcement.objects.get_latest_announcements()
    if request.GET.get('page'):
        page = request.GET.get('page')
    announcements = paginate(announcements, page,
                          settings.ANNOUNCEMENT_POST_PER_PAGE,
                          settings.MAX_PAGING_LINKS)
    context = {'announcements':announcements}
    return render(request, 'announcements/announcement_list.html', context)
Example #44
0
 def get_context_data(self, **kwargs):
     context = super(TopicDetailView, self).get_context_data(**kwargs)
     # paginate "manually" articles because we are not in a ListView
     articles = paginate(self.object.articles.published(),
                         self.request.GET.get("page",
                                              1), settings.ARTICLE_PER_PAGE,
                         settings.MAX_PAGING_LINKS)
     context['articles'] = articles
     return context
Example #45
0
    def get_context_data(self, **kwargs):
        context = super(ScoreOrderingView, self).get_context_data(**kwargs)
        qs = context["object_list"]
        context["by_score"] = self.kwargs.get("by_score", True)
        context["by_canteen"] = self.kwargs.get("by_canteen", False)
        context["canteen"] = self.kwargs.get("canteen", 'other')
        context["num"] = self.kwargs.get('num',0)  #0其实是用来作为false用
        context["solved"] = self.kwargs.get('solved',False)  #0其实是用来作为false用


            

        if context["by_score"]:
            '''全部按分数'''
            #默认所有数量
            qs = order_by_score(qs, self.score_fields, self.date_field)  #qs是queryset传递过去,返回queryset
            if context["num"]:
                #控制数量,通过url或者查询关键字 get 
                num=int(context["num"])
                qs=qs[0:num]

        else:
            #按时间,默认所有
            qs = qs.order_by("-" + self.date_field)
            #时间,控制数量
            if context["num"]:
                #控制数量,通过url或者查询关键字 get 
                num=int(context["num"])
                qs=qs[0:num]           
        #按餐厅
        if context["by_canteen"] :

            '''硬编码了,习惯不好,为了速度 dirty and quickly 核心逻辑:把if 当作开关'''
            qs = Link.objects.filter(canteen=context["canteen"])  #queryset
            if context["by_score"]:
                '''餐厅内部按分数'''
                qs = order_by_score(qs, self.score_fields, self.date_field)
                #餐厅,热度,数量
                if context["num"]:
                    num=int(context["num"])
                    qs=qs[0:num]            
            else:
                qs = qs.order_by("-" + self.date_field)
                #餐厅,时间,数量
                if context["num"]:
                    num=int(context["num"])
                    qs=qs[0:num]


        if context["solved"]:  #最后一步过滤,queryset是list,当作list来过滤
            #qs=qs.objects.filter(solved=True)
            qs = [item for item in qs if item.solved == False]

        context["object_list"] = paginate(qs, self.request.GET.get("page", 1),
            settings.ITEMS_PER_PAGE, settings.MAX_PAGING_LINKS)
        context["title"] = self.get_title(context)
        return context
Example #46
0
 def get_context_data(self, **kwargs):
     context = super(BlogPostList, self).get_context_data(**kwargs)
     context["drafts"] = context["object_list"].filter(status=1)
     context["object_list"] = paginate(
         context["object_list"].filter(status=2),
         self.request.GET.get("page", 1),
         settings.ITEMS_PER_PAGE, settings.MAX_PAGING_LINKS
     )
     return context
Example #47
0
def calls_post_list(request,
                    tag=None,
                    year=None,
                    month=None,
                    username=None,
                    category=None,
                    template="calls/calls_post_list.html"):
    """
    Display  a list of calls posts that are filtered by tag, year, month,
    author or category. Custom templates are checked for using the name
    ``calls/calls_post_list_XXX.html`` where ``XXX`` is either the
    category slug or author's username if given.
    """
    settings.use_editable()
    templates = []
    calls_posts = CallsPost.objects.published(for_user=request.user)
    if tag is not None:
        tag = get_object_or_404(Keyword, slug=tag)
        calls_posts = calls_posts.filter(keywords__in=tag.assignments.all())
    if year is not None:
        calls_posts = calls_posts.filter(publish_date__year=year)
        if month is not None:
            calls_posts = calls_posts.filter(publish_date__month=month)
            month = month_name[int(month)]
    if category is not None:
        category = get_object_or_404(CallsCategory, slug=category)
        calls_posts = calls_posts.filter(categories=category)
        templates.append(u"calls/calls_post_list_%s.html" % str(category.slug))
    author = None
    if username is not None:
        author = get_object_or_404(User, username=username)
        calls_posts = calls_posts.filter(user=author)
        templates.append(u"calls/calls_post_list_%s.html" % username)

    prefetch = ("categories", "keywords__keyword")
    calls_posts = calls_posts.select_related("user").prefetch_related(
        *prefetch)
    calls_posts = paginate(calls_posts, request.GET.get("page", 1),
                           settings.CALLS_POST_PER_PAGE,
                           settings.MAX_PAGING_LINKS)
    subscribed = 0
    subscribed = request.user.groups.filter(
        name='Calls Notification group').exists()
    context = {
        "calls_posts": calls_posts,
        "year": year,
        "month": month,
        "tag": tag,
        "category": category,
        "author": author,
        "subscribed": subscribed
    }
    templates.append(template)
    #return render(request, templates, context)

    return TemplateResponse(request, templates, context)
Example #48
0
def posts_change(request):
	try:
		page = request.GET.get("page", 1)
		per_page = settings.SEARCH_PER_PAGE
		max_paging_links = settings.MAX_PAGING_LINKS
		mod_posts = ModifiedPost.objects.all().order_by('publish_date')
	except ModifiedPost.DoesNotExist:
		mod_posts = []
	paginated = paginate(mod_posts, page, per_page, max_paging_links)
	return render(request, 'myadmin/myadminpage.html', {'modif_posts': paginated})
Example #49
0
def search(request, template="search_results.html"):
    """
    Display search results.
    """
    query = request.GET.get("q", "")
    results = Displayable.objects.search(request.settings, query)
    results = paginate(results, request.GET.get("page", 1),
        request.settings.SEARCH_PER_PAGE, request.settings.SEARCH_MAX_PAGING_LINKS)
    context = {"query": query, "results": results}
    return render_to_response(template, context, RequestContext(request))
Example #50
0
	def get(self, request, *args, **kwargs):
		try:
			page = request.GET.get("page", 1)
			per_page = settings.SEARCH_PER_PAGE
			max_paging_links = settings.MAX_PAGING_LINKS
			notifications = Blog_Post_Comment.objects.filter(post_to__user=request.user.pk).exclude(user = request.user.pk).order_by('-date')
		except Blog_Post_Comment.DoesNotExist:
			notifications = []
		paginated = paginate(notifications, page, per_page, max_paging_links)
		return render(request, 'pages/notifications.html', {'notifications': paginated})
Example #51
0
def users(request):
    users = User.objects.filter(forum_profile__post_count__gte=forum_settings.POST_USER_SEARCH).order_by('username')
    users = paginate(users, request.GET.get("page", 1),
                     forum_settings.USERS_PAGE_SIZE, 20)

    form = UserSearchForm(request.GET)
    users = form.filter(users)
    return render(request, 'djangobb_forum/users.html', {'users': users,
            'form': form,
            })
Example #52
0
def search(request, template="search_results.html"):
    """
    Display search results.
    """
    settings.use_editable()
    query = request.GET.get("q", "")
    page = request.GET.get("page", 1)
    results = paginate(Displayable.objects.search(query), page, settings.SEARCH_PER_PAGE, settings.MAX_PAGING_LINKS)
    context = {"query": query, "results": results}
    return render(request, template, context)
Example #53
0
    def get_context_data(self, **kwargs):
        context = super(PlaylistListView, self).get_context_data(**kwargs)

        context['playlists'] = paginate(self.qs,
                                        self.request.GET.get("page", 1),
                                        settings.MEDIA_PER_PAGE,
                                        settings.MAX_PAGING_LINKS)

        context['current_type'] = self.current_type
        return context
Example #54
0
def blog_post_list(
    request,
    tag=None,
    year=None,
    month=None,
    username=None,
    category=None,
    template="blog/blog_post_list.html",
    extra_context=None,
):
    """
    Display a list of blog posts that are filtered by tag, year, month,
    author or category. Custom templates are checked for using the name
    ``blog/blog_post_list_XXX.html`` where ``XXX`` is either the
    category slug or author's username if given.
    """
    templates = []
    blog_posts = BlogPost.objects.published(for_user=request.user)
    if tag is not None:
        tag = get_object_or_404(Keyword, slug=tag)
        blog_posts = blog_posts.filter(keywords__keyword=tag)
    if year is not None:
        blog_posts = blog_posts.filter(publish_date__year=year)
        if month is not None:
            blog_posts = blog_posts.filter(publish_date__month=month)
            try:
                month = _(month_name[int(month)])
            except IndexError:
                raise Http404()
    if category is not None:
        category = get_object_or_404(BlogCategory, slug=category)
        blog_posts = blog_posts.filter(categories=category)
        templates.append("blog/blog_post_list_%s.html" % str(category.slug))
    author = None
    if username is not None:
        author = get_object_or_404(User, username=username)
        blog_posts = blog_posts.filter(user=author)
        templates.append("blog/blog_post_list_%s.html" % username)

    prefetch = ("categories", "keywords__keyword")
    blog_posts = blog_posts.select_related("user").prefetch_related(*prefetch)
    blog_posts = paginate(
        blog_posts, request.GET.get("page", 1), settings.BLOG_POST_PER_PAGE, settings.MAX_PAGING_LINKS
    )
    context = {
        "blog_posts": blog_posts,
        "year": year,
        "month": month,
        "tag": tag,
        "category": category,
        "author": author,
    }
    context.update(extra_context or {})
    templates.append(template)
    return TemplateResponse(request, templates, context)
Example #55
0
def order_history(request, template="shop/order_history.html"):
    """
    Display a list of the currently logged-in user's past orders.
    """
    all_orders = (Order.objects.filter(user_id=request.user.id).annotate(
        quantity_total=Sum('items__quantity')))
    orders = paginate(all_orders.order_by('-time'), request.GET.get("page", 1),
                      settings.SHOP_PER_PAGE_CATEGORY,
                      settings.MAX_PAGING_LINKS)
    context = {"orders": orders}
    return render(request, template, context)
Example #56
0
def paginated_comment_thread(context, parent):
    """
    Override Mezzanine's comment_thread inclusion_tag.
    The aim is to paginate all parent comments, but otherwise
    the behaviour is the same. N.B. context persists between the
    recursive calls to this tag. Remember this gets called with BlogPost
    as parent first.

    Return a list of child comments for the given parent, storing all
    comments in a dict in the context when first called, using parents
    as keys for retrieval on subsequent recursive calls from the
    comments template.
    """
    if "all_comments" not in context:
        comments = defaultdict(list)
        if "request" in context and context["request"].user.is_staff:
            comments_queryset = parent.comments.all()
        else:
            comments_queryset = parent.comments.visible()
        for comment in comments_queryset.select_related("user"):
            comments[comment.replied_to_id].append(comment)
        context["all_comments"] = comments
    parent_id = parent.id if isinstance(parent, ThreadedComment) else None
    try:
        replied_to = int(context["request"].POST["replied_to"])
    except KeyError:
        replied_to = 0

    # Pagination for zeroth level comments
    comments_for_thread = context["all_comments"].get(parent_id, [])
    context.update({"comments_for_thread": comments_for_thread})
    if parent_id is None:
        # Zeroth level comment
        comments_for_thread_paginator = paginate(comments_for_thread,
                                                 context["request"].GET.get("page", 1),
                                                 settings.COMMENTS_PER_PAGE,
                                                 settings.MAX_PAGING_LINKS)
        # For ease, tell the context we are at zeroth level in tree too
        # context.update({"zeroth_level": True})
        context.update({"comments_for_thread":
                        comments_for_thread_paginator.object_list})
        context.update({"comments_for_thread_paginator":
                        comments_for_thread_paginator})

    # If any comment id in all_comments keys, it means that it has children
    # comment_ids = [comment.id for comment in comments_for_thread]
    # more_children = any(map(lambda x: x in context["all_comments"].keys(),
    #                        comment_ids))

    context.update({
        "no_comments": parent_id is None and not context["all_comments"],
        "replied_to": replied_to,
    })
    return context
Example #57
0
def search(request, template="search_results.html"):
    """
    Display search results.
    """
    settings.use_editable()
    query = request.GET.get("q", "")
    page = request.GET.get("page", 1)
    results = paginate(Displayable.objects.search(query), page,
                       settings.SEARCH_PER_PAGE, settings.MAX_PAGING_LINKS)
    context = {"query": query, "results": results}
    return render(request, template, context)
Example #58
0
def especialistas_list(request, extra_context=None):
    """Display a list of blog posts that are filtered by tag, year, month,
    author or categoria. Custom templates are checked for using the name
    ``carceropolis/publicacao/publicacao_list_XXX.html`` where ``XXX`` is
    either the categoria slug or author's username if given.
    """
    areas_de_atuacao = AreaDeAtuacao.objects.all()
    areas_de_atuacao = areas_de_atuacao.order_by('ordem')
    especialistas = Especialista.objects.all()
    especialistas = especialistas.order_by('nome')

    context = {
        'area_atuacao': '',
        'nome': '',
        'especialidade': '',
        'areas_de_atuacao': areas_de_atuacao,
        'especialistas': None
    }

    if 'nome' in request.GET.keys():
        nome = request.GET.get('nome'),
        nome = nome[0]
        especialistas = especialistas.filter(nome__icontains=nome)
        context['nome'] = nome

    if 'area_atuacao' in request.GET.keys():
        area_atuacao = request.GET.get('area_atuacao'),
        area_atuacao = area_atuacao[0]
        especialistas = especialistas.filter(
            area_de_atuacao__nome__in=[area_atuacao])
        context['area_atuacao'] = area_atuacao

    if 'especialidade' in request.GET.keys():
        especialidade = request.GET.get('especialidade'),
        especialidade = especialidade[0]
        especialistas = especialistas.filter(
            especialidades__nome__in=[especialidade])
        context['especialidade'] = especialidade

    prefetch = ("area_de_atuacao", 'especialidades')
    especialistas = especialistas.prefetch_related(*prefetch)
    especialistas = paginate(especialistas, request.GET.get("page", 1),
                             settings.PUBLICACAO_PER_PAGE,
                             settings.MAX_PAGING_LINKS)

    context = {
        'areas_de_atuacao': areas_de_atuacao,
        'especialistas': especialistas
    }
    context.update(extra_context or {})

    templates = ['carceropolis/especialistas/especialistas.html']

    return TemplateResponse(request, templates, context)
Example #59
0
def search(request, template="search_results.html"):
    """
    Display search results.
    """
    settings.use_editable()
    query = request.GET.get("q", "")
    results = Displayable.objects.search(query)
    results = paginate(results, request.GET.get("page", 1),
        settings.SEARCH_PER_PAGE, settings.SEARCH_MAX_PAGING_LINKS)
    context = {"query": query, "results": results}
    return render_to_response(template, context, RequestContext(request))