Exemplo n.º 1
0
def search_add_related(request, wiki_url):

    (article, path, err) = fetch_from_url(request, wiki_url)
    if err:
        return err

    perm_err = check_permissions(request, article, check_read=True)
    if perm_err:
        return perm_err

    search_string = request.GET.get('query', None)
    self_pk = request.GET.get('self', None)
    if search_string:
        results = []
        related = Article.objects.filter(title__istartswith = search_string)
        others = article.related.all()
        if self_pk:
            related = related.exclude(pk=self_pk)
        if others:
            related = related.exclude(related__in = others)
        related = related.order_by('title')[:10]
        for item in related:
            results.append({'id': str(item.id),
                            'value': item.title,
                            'info': item.get_url()})
    else:
        results = []
    
    json = simplejson.dumps({'results': results})
    return HttpResponse(json, mimetype='application/json')
Exemplo n.º 2
0
def is_author(user, request, wiki_url):
    (article, path, err) = fetch_from_url(request, wiki_url)
    if err:
        return False
    if article.created_by == user and user.is_authenticated and user.is_active:
        return True
    elif user.groups.filter(name='Editors') and user.is_authenticated and user.is_active:
        return True
    return False
Exemplo n.º 3
0
def history(request, wiki_url, page=1):
    chapters = Chapter.objects.filter(visible=True).extra(select={'r': '((100/%s*rating_score/(rating_votes+%s))+100)/2' % (Chapter.rating.range, Chapter.rating.weight)}).order_by('-r')
    (article, path, err) = fetch_from_url(request, wiki_url)
    if err:
        return err

    perm_err = check_permissions(request, article, check_read=True)
    if perm_err:
        return perm_err

    page_size = 10
    
    try:
        p = int(page)
    except ValueError:
        p = 1
   
    history = Revision.objects.filter(article__exact = article).order_by('-counter')
    
    if request.method == 'POST':
        if request.POST.__contains__('revision'):
            perm_err = check_permissions(request, article, check_write=True, check_locked=True)
            if perm_err:
                return perm_err
            try:
                r = int(request.POST['revision'])
                article.current_revision = Revision.objects.get(id=r)
                article.save()
            except:
                pass
            finally:
                return HttpResponseRedirect(reverse('wiki_view', args=(article.get_url(),)))
    
    page_count = (history.count()+(page_size-1)) / page_size
    if p > page_count:
        p = 1
    beginItem = (p-1) * page_size
    
    next_page = p + 1 if page_count > p else None
    prev_page = p - 1 if p > 1 else None
    
    c = RequestContext(request, {'wiki_page': p,
                                 'wiki_next_page': next_page,
                                 'wiki_prev_page': prev_page,
                                 'wiki_write': article.can_write_l(request.user),
                                 'wiki_attachments_write': article.can_attach(request.user),
                                 'wiki_article': article,
                                 'wiki_history': history[beginItem:beginItem+page_size],
                                 'chapters': chapters,})

    return render_to_response('simplewiki_history.html', c)
Exemplo n.º 4
0
def remove_related(request, wiki_url, related_id):

    (article, path, err) = fetch_from_url(request, wiki_url)
    if err:
        return err

    perm_err = check_permissions(request, article, check_write=True, check_locked=True)
    if perm_err:
        return perm_err

    try:
        rel_id = int(related_id)
        rel = Article.objects.get(id=rel_id)
        article.related.remove(rel)
        article.save()
    except:
        pass
    finally:
        return HttpResponseRedirect(reverse('wiki_view', args=(article.get_url(),)))
Exemplo n.º 5
0
def edit(request, wiki_url):
    chapters = Chapter.objects.filter(visible=True).extra(select={'r': '((100/%s*rating_score/(rating_votes+%s))+100)/2' % (Chapter.rating.range, Chapter.rating.weight)}).order_by('-r')
    (article, path, err) = fetch_from_url(request, wiki_url)
    if err:
        return err

    # Check write permissions
    perm_err = check_permissions(request, article, check_write=True, check_locked=True)
    if perm_err:
        return perm_err

    if WIKI_ALLOW_TITLE_EDIT:
        EditForm = RevisionFormWithTitle
    else:
        EditForm = RevisionForm
    
    if request.method == 'POST':
        f = EditForm(request.POST)
        if f.is_valid():
            new_revision = f.save(commit=False)
            new_revision.article = article
            # Check that something has actually been changed...
            if not new_revision.get_diff():
                return (None, HttpResponseRedirect(reverse('wiki_view', args=(article.get_url(),))))
            if not request.user.is_anonymous():
                new_revision.revision_user = request.user
            new_revision.save()
            if WIKI_ALLOW_TITLE_EDIT:
                new_revision.article.title = f.cleaned_data['title']
                new_revision.article.save()
            return HttpResponseRedirect(reverse('wiki_view', args=(article.get_url(),)))
    else:
        f = EditForm({'contents': article.current_revision.contents, 'title': article.title})
    c = RequestContext(request, {'wiki_form': f,
                                 'wiki_write': True,
                                 'wiki_article': article,
                                 'wiki_attachments_write': article.can_attach(request.user),
                                 'chapters': chapters,
                                 })

    return render_to_response('simplewiki_edit.html', c)
Exemplo n.º 6
0
def discussion(request, wiki_url):
    if request.GET and not request.user.is_anonymous():
        if 'usermessage' in request.GET:
            usermessage_id = int(request.GET['usermessage'])
            try:
                usermessage = UserMessage.objects.get(pk=usermessage_id, user=request.user)
                usermessage.delete()
            except:
                error = "Notification could not be deleted"
    chapters = Chapter.objects.filter(visible=True).extra(select={'r': '((100/%s*rating_score/(rating_votes+%s))+100)/2' % (Chapter.rating.range, Chapter.rating.weight)}).order_by('-r')
    chapter = get_object_or_404(Article, slug=wiki_url)
    (article, path, err) = fetch_from_url(request, wiki_url)
    if err:
        return err

    # Check write permissions
    perm_err = check_permissions(request, article, check_write=True, check_locked=True)
    if perm_err:
        return perm_err
    c = RequestContext(request,{'chapters': chapters,'chapter': chapter,'wiki_article': article}) 
    return render_to_response('simplewiki_comments.html', c)
Exemplo n.º 7
0
def add_related(request, wiki_url):

    (article, path, err) = fetch_from_url(request, wiki_url)
    if err:
        return err
    
    perm_err = check_permissions(request, article, check_write=True, check_locked=True)
    if perm_err:
        return perm_err
    
    try:
        related_id = request.POST['id']
        rel = Article.objects.get(id=related_id)
        has_already = article.related.filter(id=related_id).count()
        if has_already == 0 and not rel == article:
            article.related.add(rel)
            article.save()
    except:
        pass
    finally:
        return HttpResponseRedirect(reverse('wiki_view', args=(article.get_url(),)))
Exemplo n.º 8
0
def view(request, wiki_url):
    if request.GET and not request.user.is_anonymous():
        if 'usermessage' in request.GET:
            usermessage_id = int(request.GET['usermessage'])
            try:
                usermessage = UserMessage.objects.get(pk=usermessage_id, user=request.user)
                usermessage.delete()
            except:
                error = "Notification could not be deleted"
    chapters = Chapter.objects.filter(visible=True).extra(select={'r': '((100/%s*rating_score/(rating_votes+%s))+100)/2' % (Chapter.rating.range, Chapter.rating.weight)}).order_by('-r')
    (article, path, err) = fetch_from_url(request, wiki_url)
    if err:
        return err
        
    perm_err = check_permissions(request, article, check_read=True)
    if perm_err:
        return perm_err
    c = RequestContext(request, {'wiki_article': article,
                                 'wiki_write': article.can_write_l(request.user),
                                 'wiki_attachments_write': article.can_attach(request.user),
                                 'chapters': chapters,
                                 } ) 
    return render_to_response('simplewiki_view.html', c)