def tag(request, tag): """ Displays articles / notes tagged with a given tag. """ issue = _get_current_issue() context = {} context['issue'] = issue context['is_current'] = True tag = get_object_or_404(Tag, name=tag) context['tag'] = tag items = [] articles = TaggedItem.objects.get_by_model(Article.published.order_by('-publication_date'), tag) if articles: for article in articles: items.append((article.id, article)) notes = TaggedItem.objects.get_by_model(Note.published.order_by('-publication_date'), tag) if notes: for note in notes: items.append((note.id, note)) regions = TaggedItem.objects.get_by_model(RegionNote.published.order_by('-publication_date'), tag) if regions: for region in regions: items.append((region.id, region)) voyages = TaggedItem.objects.get_by_model(VoyagesArticle.published.order_by('-publication_date'), tag) if voyages: for voyage in voyages: items.append((voyage.id, voyage)) epicurien = TaggedItem.objects.get_by_model(EpicurienArticle.published.order_by('-publication_date'), tag) if epicurien: for e in epicurien: items.append((e.id, e)) anger = TaggedItem.objects.get_by_model(AngerArticle.published.order_by('-publication_date'), tag) if anger: for a in anger: items.append((a.id, a)) item_list = [item for k, item in items] # Pagination paginator = Paginator(item_list, 30) try: page = int(request.GET.get('page', '1')) except ValueError: page = 1 try: context['items'] = paginator.page(page) except (EmptyPage, InvalidPage): context['items'] = paginator.page(paginator.num_pages) return direct_to_template(request, 'tags/tag.html', context)
def page(request, page_slug): """ View of a page. """ issue = _get_current_issue() context = {} context['issue'] = issue context['is_current'] = True context['page'] = get_object_or_404(Page.objects.all(), slug=page_slug, is_published=True) return direct_to_template(request, 'pages/page.html', context)
def index(request): """ View of RSS feed list. """ issue = _get_current_issue() context = {} context['issue'] = issue context['is_current'] = True try: context['categories'] = Category.objects.all() except ObjectDoesNotExist: context['categories'] = False return direct_to_template(request, 'syndication/index.html', context)
def index(request): """ Displays all tags as tag cloud. """ issue = _get_current_issue() context = {} context['issue'] = issue context['is_current'] = True all_tags = [] article_tags = Tag.objects.usage_for_queryset(Article.published.all(), counts=True) for tag in article_tags: all_tags.append(tag) note_tags = Tag.objects.usage_for_queryset(Note.published.all(), counts=True) for tag in note_tags: all_tags.append(tag) region_tags = Tag.objects.usage_for_queryset(RegionNote.published.all(), counts=True) for tag in region_tags: all_tags.append(tag) voyages_tags = Tag.objects.usage_for_queryset(VoyagesArticle.published.all(), counts=True) for tag in voyages_tags: all_tags.append(tag) epicurien_tags = Tag.objects.usage_for_queryset(EpicurienArticle.published.all(), counts=True) for tag in epicurien_tags: all_tags.append(tag) anger_tags = Tag.objects.usage_for_queryset(AngerArticle.published.all(), counts=True) for tag in anger_tags: all_tags.append(tag) context['tags'] = calculate_cloud(all_tags, steps=10) return direct_to_template(request, 'tags/index.html', context)
def results(request): """ View of search results. """ issue = _get_current_issue() context = {} context['issue'] = issue context['is_current'] = True if request.method == 'POST': search_item = request.POST['search'] context['search_item'] = search_item items = [] from django.db.models import Q articles = Article.published.filter( Q(title__icontains=search_item) | Q(summary__icontains=search_item) | Q(content__icontains=search_item) | Q(tags__icontains=search_item)).order_by('-publication_date') if articles: for article in articles: items.append((article.id, article)) notes = Note.published.filter( Q(title__icontains=search_item) | Q(content__icontains=search_item) | Q(tags__icontains=search_item)).order_by('-publication_date') if notes: for note in notes: items.append((note.id, note)) regions = RegionNote.published.filter( Q(title__icontains=search_item) | Q(content__icontains=search_item) | Q(tags__icontains=search_item)).order_by('-publication_date') if regions: for region in regions: items.append((region.id, region)) voyages = VoyagesArticle.published.filter( Q(title__icontains=search_item) | Q(summary__icontains=search_item) | Q(content__icontains=search_item) | Q(tags__icontains=search_item)).order_by('-publication_date') if voyages: for voyage in voyages: items.append((voyage.id, voyage)) epicurien = EpicurienArticle.published.filter( Q(title__icontains=search_item) | Q(summary__icontains=search_item) | Q(content__icontains=search_item) | Q(tags__icontains=search_item)).order_by('-publication_date') if epicurien: for e in epicurien: items.append((e.id, e)) anger = AngerArticle.published.filter( Q(title__icontains=search_item) | Q(summary__icontains=search_item) | Q(content__icontains=search_item) | Q(tags__icontains=search_item)).order_by('-publication_date') if anger: for a in anger: items.append((a.id, a)) item_list = [item for k, item in items] # Pagination paginator = Paginator(item_list, 30) try: page = int(request.GET.get('page', '1')) except ValueError: page = 1 try: context['items'] = paginator.page(page) except (EmptyPage, InvalidPage): context['items'] = paginator.page(paginator.num_pages) else: return HttpResponseRedirect('/') return direct_to_template(request, 'search/results.html', context)