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
})