import random from django.contrib.auth.decorators import login_required from django.http import HttpResponse from django.shortcuts import render, redirect from blog.factories import TopicFactory from blog.models import Topic, Tag, Blogpost from django.views.decorators.csrf import csrf_exempt from markdownblog import settings def viewblog(request) -> HttpResponse: return render(request, 'blog/index.html', {"debug": settings.DEBUG}) @login_required @csrf_exempt 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']) 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() context = {'roottopics': Topic.objects.all().filter(rootTopic=None)} return render(request, 'blog/order.html', context) @login_required def addpost(request) -> HttpResponse: 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: tags.append(Tag.objects.filter(name=tag)[0]) topicstr = request.POST['topic'] topics = None if topicstr == "No topic" else Topic.objects.filter(name=topicstr)[0] new_post = Blogpost.objects.create(title=title, topics=topics) new_post.tags.set(tags) context = {'alltopics': Topic.objects.all().order_by('name').values()} return render(request, 'blog/addpost.html', context) @login_required def createmocks(request, objtype, n) -> HttpResponse: topics = TopicFactory.create_batch(n) for topic in topics: topic.save() while len(topics) > 1: child = random.choice(topics) topics.remove(child) child.rootTopic = random.choice(topics) child.save() print('Created ' + str(n) + ' mock topics.') return redirect("index")