From b3c0ac3f38ac014917f11144ef988189592e33cf Mon Sep 17 00:00:00 2001 From: CDaut Date: Sat, 25 Jun 2022 18:31:51 +0200 Subject: [PATCH] posts can now be edited --- markdownblog/blog/urls.py | 3 +- markdownblog/blog/views.py | 48 +++++- .../markdownblog/templates/blog/addpost.html | 2 +- .../markdownblog/templates/blog/edit.html | 148 ++++++++++++++++++ .../markdownblog/templates/blog/order.html | 5 + .../templates/blog/tree_view_template.html | 5 + 6 files changed, 206 insertions(+), 5 deletions(-) create mode 100644 markdownblog/markdownblog/templates/blog/edit.html diff --git a/markdownblog/blog/urls.py b/markdownblog/blog/urls.py index b5e0c8d..92c29ee 100644 --- a/markdownblog/blog/urls.py +++ b/markdownblog/blog/urls.py @@ -1,10 +1,11 @@ -from blog.views import viewblog, addpost, order, index, createmocks +from blog.views import viewblog, addpost, order, index, createmocks, edit from django.urls import path urlpatterns = [ path('', index, name="index"), path('manage/addpost', addpost, name='addpost'), path('manage/order', order, name='order'), + path('manage/edit//', edit, name='editpost'), path('mock///', createmocks, name='mock'), path('read/', viewblog, name='readpost'), ] diff --git a/markdownblog/blog/views.py b/markdownblog/blog/views.py index a8635b4..1e06e67 100644 --- a/markdownblog/blog/views.py +++ b/markdownblog/blog/views.py @@ -43,6 +43,45 @@ def index(request) -> HttpResponse: return render(request, 'blog/index.html', context) +@login_required +def edit(request, id) -> HttpResponse: + blogpost = Blogpost.objects.get(pk=id) + mdfile_content = open(blogpost.mdfile, "r").read() + context = {'alltopics': Topic.objects.all().order_by('name').values(), 'markdown': mdfile_content, + 'roottopics': Topic.objects.all().filter(rootTopic=None), + 'allposts': Blogpost.objects.all(), 'post': Blogpost.objects.get(pk=id)} + + if request.method == 'POST': + title = request.POST['title'] + markdown = request.POST['markdown'] + + tags = [] + + if 'tags' in request.POST and request.POST['tags'] != '': + tags_str = request.POST['tags'].split(" ") + for tag in tags_str: + tagobj = Tag.objects.get_or_create(name=tag)[0] + tagobj.save() + tags.append(tagobj.id) + + topicname = request.POST['topic'] + topic = None if topicname == "No topic" else Topic.objects.get(name=topicname) + + filepath = os.path.join(os.environ.get("MD_FILE_PATH"), title + ".md") + + blogpost = Blogpost.objects.get(pk=id) + blogpost.topic = topic + blogpost.title = title + blogpost.tags.set(tags) + blogpost.save() + + with open(filepath, "w") as mdfile: + mdfile.write(markdown) + mdfile.close() + context['error'] = "Post \"" + title + "\" edited." + return render(request, 'blog/edit.html', context) + + @login_required @csrf_exempt def order(request) -> HttpResponse: @@ -78,13 +117,17 @@ def addpost(request) -> HttpResponse: if 'tags' in request.POST and request.POST['tags'] != '': tags_str = request.POST['tags'].split(" ") for tag in tags_str: - tags.append(Tag.objects.get_or_create(name=tag)) + tagobj = Tag.objects.get_or_create(name=tag)[0] + tagobj.save() + tags.append(tagobj.id) topicid = request.POST['topic'] topic = None if topicid == "No topic" else Topic.objects.get(pk=topicid) + filepath = os.path.join(os.environ.get("MD_FILE_PATH"), title + ".md") + try: - new_post = Blogpost.objects.create(title=title, topic=topic) + new_post = Blogpost.objects.create(title=title, topic=topic, mdfile=filepath) new_post.tags.set(tags) except IntegrityError: context = {'alltopics': Topic.objects.all().order_by('name').values(), @@ -92,7 +135,6 @@ def addpost(request) -> HttpResponse: "markdown": markdown} return render(request, 'blog/addpost.html', context) - filepath = os.path.join(os.environ.get("MD_FILE_PATH"), title + ".md") with open(filepath, "w+") as mdfile: mdfile.write(markdown) mdfile.close() diff --git a/markdownblog/markdownblog/templates/blog/addpost.html b/markdownblog/markdownblog/templates/blog/addpost.html index 8c44f17..53dd3b8 100644 --- a/markdownblog/markdownblog/templates/blog/addpost.html +++ b/markdownblog/markdownblog/templates/blog/addpost.html @@ -69,7 +69,7 @@ spellChecker: false, autosave: { enabled: true, - uniqueId: "mainBlogEditor" + uniqueId: "add_post" }, renderingConfig: { codeSyntaxHighlighting: true, diff --git a/markdownblog/markdownblog/templates/blog/edit.html b/markdownblog/markdownblog/templates/blog/edit.html new file mode 100644 index 0000000..c01c6b2 --- /dev/null +++ b/markdownblog/markdownblog/templates/blog/edit.html @@ -0,0 +1,148 @@ +{% extends 'base/base.html' %} +{% load static %} +{% block title %} + Edit Post "{{ post.title }}" +{% endblock %} +{% block includehere %} + + + +{% endblock %} +{% block content %} +
+
+ {% csrf_token %} + + +
+
+ +
+
+ + +
+
+ +
+
+{% endblock %} +{% block scripts %} + + + + + + + +{% endblock %} \ No newline at end of file diff --git a/markdownblog/markdownblog/templates/blog/order.html b/markdownblog/markdownblog/templates/blog/order.html index ac79ad4..c17beb2 100644 --- a/markdownblog/markdownblog/templates/blog/order.html +++ b/markdownblog/markdownblog/templates/blog/order.html @@ -24,6 +24,11 @@ delete + + + {% endif %} {% endfor %} diff --git a/markdownblog/markdownblog/templates/blog/tree_view_template.html b/markdownblog/markdownblog/templates/blog/tree_view_template.html index 0237b0b..d000a37 100644 --- a/markdownblog/markdownblog/templates/blog/tree_view_template.html +++ b/markdownblog/markdownblog/templates/blog/tree_view_template.html @@ -26,6 +26,11 @@ delete delete + + + {% endif %} {% endfor %}