sorting topics

This commit is contained in:
CDaut 2022-06-17 22:48:54 +02:00 committed by CDaut
parent 4216e11e5b
commit 01ed26a939
4 changed files with 40 additions and 4 deletions

View file

@ -5,5 +5,5 @@ urlpatterns = [
path('', viewblog, name="index"), path('', viewblog, name="index"),
path('manage/addpost', addpost, name='addpost'), path('manage/addpost', addpost, name='addpost'),
path('manage/order', order, name='order'), path('manage/order', order, name='order'),
path('mock/<str:object>/<int:n>/', createmocks, name='mock'), path('mock/<str:objtype>/<int:n>/', createmocks, name='mock'),
] ]

View file

@ -5,6 +5,7 @@ from django.http import HttpResponse
from django.shortcuts import render, redirect from django.shortcuts import render, redirect
from blog.factories import TopicFactory from blog.factories import TopicFactory
from blog.models import Topic, Tag, Blogpost from blog.models import Topic, Tag, Blogpost
from django.views.decorators.csrf import csrf_exempt
from markdownblog import settings from markdownblog import settings
@ -14,7 +15,16 @@ def viewblog(request) -> HttpResponse:
@login_required @login_required
@csrf_exempt
def order(request): 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)} context = {'roottopics': Topic.objects.all().filter(rootTopic=None)}
return render(request, 'blog/order.html', context) return render(request, 'blog/order.html', context)
@ -42,6 +52,7 @@ def addpost(request) -> HttpResponse:
return render(request, 'blog/addpost.html', context) return render(request, 'blog/addpost.html', context)
@login_required
def createmocks(request, objtype, n) -> HttpResponse: def createmocks(request, objtype, n) -> HttpResponse:
topics = TopicFactory.create_batch(n) topics = TopicFactory.create_batch(n)

View file

@ -37,7 +37,7 @@
<div class="divider"></div> <div class="divider"></div>
</li> </li>
<li> <li>
<a class="waves-effect" href="{% url 'mock' object='topic' n=10 %}">Mock 10 topics</a> <a class="waves-effect" href="{% url 'mock' objtype='topic' n=10 %}">Mock 10 topics</a>
</li> </li>
<li> <li>
<a class="waves-effect" href="{% url 'admin:index' %}">Mock Posts</a> <a class="waves-effect" href="{% url 'admin:index' %}">Mock Posts</a>

View file

@ -17,6 +17,22 @@
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
function getCookie(cname) {
let name = cname + "=";
let decodedCookie = decodeURIComponent(document.cookie);
let ca = decodedCookie.split(';');
for (let i = 0; i < ca.length; i++) {
let c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
function resetbgColor(ev) { function resetbgColor(ev) {
ev.preventDefault(); ev.preventDefault();
ev.target.style.backgroundColor = ""; ev.target.style.backgroundColor = "";
@ -37,9 +53,18 @@
function drop(ev) { function drop(ev) {
ev.preventDefault(); ev.preventDefault();
var targetOject = ev.dataTransfer.getData("targetObject"); const targetObject = ev.dataTransfer.getData("targetObject");
ev.target.appendChild(document.getElementById(targetOject)); ev.target.appendChild(document.getElementById(targetObject));
ev.target.style.backgroundColor = ""; ev.target.style.backgroundColor = "";
let fakeForm = new FormData()
fakeForm.append("childID", targetObject.replace("list_elem_", ""));
fakeForm.append("rootID", ev.target.id.replace("list_elem_", ""));
fetch("{% url 'order' %}", {
method: 'POST',
body: fakeForm
});
} }
</script> </script>
{% endblock %} {% endblock %}