can now also order topics

This commit is contained in:
CDaut 2022-06-18 12:18:44 +02:00 committed by CDaut
parent ead8a3a2ef
commit eca6e5d716
8 changed files with 103 additions and 13 deletions

View file

@ -2,6 +2,7 @@ import os
import random
from django.contrib.auth.decorators import login_required
from django.db import IntegrityError
from django.http import HttpResponse
from django.shortcuts import render, redirect
from blog.factories import TopicFactory
@ -21,17 +22,24 @@ def order(request):
if request.method == "POST":
root_id = int(request.POST['rootID']) if request.POST['rootID'] != 'root_list' else None
child_id = int(request.POST['childID'])
objtype = request.POST['relinkType']
child_topic = Topic.objects.get(pk=child_id)
child_topic.rootTopic = Topic.objects.get(pk=root_id) if root_id is not None else None
child_topic.save()
if objtype == 'topic':
child_topic = Topic.objects.get(pk=child_id)
child_topic.rootTopic = Topic.objects.get(pk=root_id) if root_id is not None else None
child_topic.save()
elif objtype == 'post':
post = Blogpost.objects.get(pk=child_id)
post.topic = Topic.objects.get(pk=root_id) if root_id is not None else None
post.save()
context = {'roottopics': Topic.objects.all().filter(rootTopic=None)}
context = {'roottopics': Topic.objects.all().filter(rootTopic=None), 'allposts': Blogpost.objects.all()}
return render(request, 'blog/order.html', context)
@login_required
def addpost(request) -> HttpResponse:
context = {'alltopics': Topic.objects.all().order_by('name').values(), 'markdown': ''}
if request.method == 'POST':
title = request.POST['title']
markdown = request.POST['markdown']
@ -46,15 +54,21 @@ def addpost(request) -> HttpResponse:
topicid = request.POST['topic']
topic = None if topicid == "No topic" else Topic.objects.get(pk=topicid)
new_post = Blogpost.objects.create(title=title, topic=topic)
new_post.tags.set(tags)
try:
new_post = Blogpost.objects.create(title=title, topic=topic)
new_post.tags.set(tags)
except IntegrityError:
context = {'alltopics': Topic.objects.all().order_by('name').values(),
'error': 'Blogpost titles need to be unique. No post created.',
"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()
context['error'] = "Post " + title + " created."
context = {'alltopics': Topic.objects.all().order_by('name').values()}
return render(request, 'blog/addpost.html', context)