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')
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
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)
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(),)))
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)
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)
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(),)))
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)