Beispiel #1
0
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)
Beispiel #2
0
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)
Beispiel #3
0
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)
Beispiel #4
0
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)
Beispiel #5
0
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)