from django.shortcuts import render from markdown2 import markdown import django.utils.html as html from django import forms from django.http import HttpResponseRedirect from django.urls import reverse import random from . import util class NewPage(forms.Form): title = forms.CharField(label="Title") content = forms.CharField(widget=forms.Textarea(), label="Markdown Content") class EditPage(forms.Form): newContent = forms.CharField(widget=forms.Textarea(), label="Edit Markdown Content") def index(request): return render(request, "encyclopedia/index.html", { "entries": util.list_entries() }) def wiki(request, entry): wiki_body = util.get_entry(entry) if wiki_body == None: return render(request, "encyclopedia/error.html", { "error_message": html.format_html("

ERROR: Not Found

") }) else: return render(request, "encyclopedia/wiki.html", { "wiki_entry": entry, "wiki_body": html.format_html(markdown(wiki_body)) }) def new(request): if request.method == "POST": form = NewPage(request.POST) if form.is_valid(): title = form.cleaned_data["title"] if title in util.list_entries(): return render(request, "encyclopedia/error.html", { "error_message": html.format_html("

ERROR: Entry Already Exists

") }) content = form.cleaned_data["content"] util.save_entry(title, content) return HttpResponseRedirect("/wiki/" + title) else: return render(request, "encyclopedia/new.html", { "form": form }) else: return render(request, "encyclopedia/new.html", { "form": NewPage() }) def randomPage(request): wiki_entry = random.choice(util.list_entries()) return HttpResponseRedirect("/wiki/" + wiki_entry) def searchPage(request): if request.method == "POST": q = request.POST.get('q') wiki_body = util.get_entry(q) if wiki_body == None: searchResults = [] empty_list = [] for entry in util.list_entries(): if q in entry: searchResults.append(entry) return render(request, "encyclopedia/search.html", { "entries": searchResults, }) else: return HttpResponseRedirect("/wiki/" + q) def editPage(request, entry): wiki_body = util.get_entry(entry) if wiki_body == None: return render(request, "encyclopedia/error.html", { "error_message": html.format_html("

ERROR: Entry Does Not Exist

") }) if request.method == "POST": newContent = request.POST.get('newContent') util.save_entry(entry, newContent) return HttpResponseRedirect("/wiki/" + entry) else: return render(request, "encyclopedia/edit.html", { "entry": entry, "old_content": wiki_body })