began adding addpost function
This commit is contained in:
parent
81c455f014
commit
c50d047233
15 changed files with 106 additions and 21 deletions
2
.idea/jsLibraryMappings.xml
generated
2
.idea/jsLibraryMappings.xml
generated
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="JavaScriptLibraryMappings">
|
||||
<file url="file://$PROJECT_DIR$" libraries="{jquery-3.6.0, jquery-3.6.0.slim, simplemde}" />
|
||||
<file url="file://$PROJECT_DIR$" libraries="{jquery-3.6.0, jquery-3.6.0.slim, js-cookie, simplemde}" />
|
||||
</component>
|
||||
</project>
|
||||
1
.idea/mdblog.iml
generated
1
.idea/mdblog.iml
generated
|
|
@ -23,6 +23,7 @@
|
|||
<orderEntry type="library" name="jquery-3.6.0.slim" level="application" />
|
||||
<orderEntry type="library" name="jquery-3.6.0" level="application" />
|
||||
<orderEntry type="library" name="simplemde" level="application" />
|
||||
<orderEntry type="library" name="js-cookie" level="application" />
|
||||
</component>
|
||||
<component name="PyDocumentationSettings">
|
||||
<option name="format" value="PLAIN" />
|
||||
|
|
|
|||
6
.idea/sqldialects.xml
generated
6
.idea/sqldialects.xml
generated
|
|
@ -1,6 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="SqlDialectMappings">
|
||||
<file url="file://$PROJECT_DIR$/markdownblog/db_scripts/init_user_db.sql" dialect="PostgreSQL" />
|
||||
</component>
|
||||
</project>
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
import factory
|
||||
|
||||
from blog.models import Topic
|
||||
from blog.models import Topic, Blogpost, Tag
|
||||
|
||||
|
||||
class TopicFactory(factory.Factory):
|
||||
|
|
@ -9,3 +9,16 @@ class TopicFactory(factory.Factory):
|
|||
|
||||
name = factory.Faker("word")
|
||||
numbered = False
|
||||
|
||||
|
||||
class PostFactory(factory.Factory):
|
||||
class Meta:
|
||||
model = Blogpost
|
||||
|
||||
title = factory.Faker("word")
|
||||
tags = Tag.objects.all()[0] if len(Tag.objects.all()) != 0 else None
|
||||
if len(Topic.objects.all()) == 0:
|
||||
TopicFactory.create_batch(10)
|
||||
topics = Topic.objects.all()[0]
|
||||
|
||||
mdfile = "/tmp/test.md"
|
||||
|
|
|
|||
19
markdownblog/blog/migrations/0003_blogpost_mdfile.py
Normal file
19
markdownblog/blog/migrations/0003_blogpost_mdfile.py
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
# Generated by Django 4.0.5 on 2022-06-01 19:13
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('blog', '0002_alter_blogpost_topics_alter_topic_roottopic'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='blogpost',
|
||||
name='mdfile',
|
||||
field=models.CharField(default='/tmp/test.md', max_length=255),
|
||||
preserve_default=False,
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 4.0.5 on 2022-06-01 19:19
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('blog', '0003_blogpost_mdfile'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RenameField(
|
||||
model_name='blogpost',
|
||||
old_name='topics',
|
||||
new_name='topic',
|
||||
),
|
||||
]
|
||||
|
|
@ -16,8 +16,13 @@ class Topic(models.Model):
|
|||
|
||||
|
||||
class Blogpost(models.Model):
|
||||
|
||||
def __str__(self) -> str:
|
||||
return str(self.title)
|
||||
|
||||
created = models.DateTimeField(auto_now_add=True)
|
||||
last_modified = models.DateTimeField(auto_now=True)
|
||||
title = models.CharField(max_length=255)
|
||||
tags = models.ManyToManyField(Tag)
|
||||
topics = models.ForeignKey(Topic, blank=True, null=True, on_delete=models.CASCADE)
|
||||
topic = models.ForeignKey(Topic, blank=True, null=True, on_delete=models.CASCADE)
|
||||
mdfile = models.CharField(max_length=255)
|
||||
|
|
|
|||
|
|
@ -5,5 +5,5 @@ urlpatterns = [
|
|||
path('', viewblog, name="index"),
|
||||
path('manage/addpost', addpost, name='addpost'),
|
||||
path('manage/order', order, name='order'),
|
||||
path('mock/topic/<int:n>/', createmocks, name='mock'),
|
||||
path('mock/<str:object>/<int:n>/', createmocks, name='mock'),
|
||||
]
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ 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
|
||||
from blog.models import Topic, Tag, Blogpost
|
||||
|
||||
from markdownblog import settings
|
||||
|
||||
|
|
@ -15,16 +15,34 @@ def viewblog(request) -> HttpResponse:
|
|||
|
||||
@login_required
|
||||
def order(request):
|
||||
return None
|
||||
return render(request, 'blog/order.html')
|
||||
|
||||
|
||||
@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)
|
||||
|
||||
|
||||
def createmocks(request, n) -> HttpResponse:
|
||||
def createmocks(request, objtype, n) -> HttpResponse:
|
||||
|
||||
topics = TopicFactory.create_batch(n)
|
||||
|
||||
for topic in topics:
|
||||
|
|
|
|||
|
|
@ -126,3 +126,5 @@ DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
|
|||
|
||||
LOGIN_REDIRECT_URL = "/"
|
||||
LOGOUT_REDIRECT_URL = "/"
|
||||
|
||||
CSRF_HEADER_NAME = "X-CSRFToken"
|
||||
|
|
|
|||
|
|
@ -2,3 +2,8 @@
|
|||
border: 1px solid #eaeaea;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
#input_title {
|
||||
font-size: 2.3em;
|
||||
margin-top: 0.5em;
|
||||
}
|
||||
|
|
@ -4,7 +4,6 @@
|
|||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>{% block title %}{% endblock %}</title>
|
||||
<!-- Compiled and minified CSS -->
|
||||
<link type="text/css" rel="stylesheet"
|
||||
href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css"
|
||||
media="screen,projection"/>
|
||||
|
|
@ -24,7 +23,7 @@
|
|||
<ul id="slide-out" class="sidenav sidenav-fixed">
|
||||
{% if user.is_authenticated %}
|
||||
<li><a class="waves-effect" href="{% url 'addpost' %}"><i class="material-icons">add</i>New post</a></li>
|
||||
<li><a class="waves-effect" href="{% url 'addpost' %}"><i class="material-icons">reorder</i>Manage posts</a>
|
||||
<li><a class="waves-effect" href="{% url 'order' %}"><i class="material-icons">reorder</i>Manage posts</a>
|
||||
</li>
|
||||
<li>
|
||||
<div class="divider"></div>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{% extends 'base/base.html' %}
|
||||
{% load static %}
|
||||
{% block title %}
|
||||
Neuer Post
|
||||
New Post
|
||||
{% endblock %}
|
||||
{% block includehere %}
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/simplemde/latest/simplemde.min.css">
|
||||
|
|
@ -9,20 +9,20 @@
|
|||
{% endblock %}
|
||||
{% block content %}
|
||||
<div class="col s12">
|
||||
<form method="post" action="{% url 'addpost' %}">
|
||||
<form action="{% url 'addpost' %}" method="post" enctype="multipart/form-data">
|
||||
{% csrf_token %}
|
||||
<h3 contenteditable="true" class="posttitle">Titel</h3>
|
||||
<textarea>
|
||||
<input name="title" type="text" class="posttitle" id="input_title" value="Title">
|
||||
<textarea name="markdown" id="mde">
|
||||
</textarea>
|
||||
<div class="row">
|
||||
<div class="col s6">
|
||||
<label>
|
||||
Tags
|
||||
<input type="text">
|
||||
<input type="text" id="input_tags" name="tags">
|
||||
</label>
|
||||
</div>
|
||||
<div class="input-field col s6">
|
||||
<select>
|
||||
<select name="topic" id="topic_select">
|
||||
<option selected>No topic</option>
|
||||
{% for topic in alltopics %}
|
||||
<option value="{{ topic.id }}">{{ topic.name }}</option>
|
||||
|
|
@ -102,6 +102,8 @@
|
|||
}
|
||||
]
|
||||
});
|
||||
|
||||
$("#mde").data({editor: simplemde});
|
||||
</script>
|
||||
<script>
|
||||
|
||||
|
|
|
|||
9
markdownblog/markdownblog/templates/blog/order.html
Normal file
9
markdownblog/markdownblog/templates/blog/order.html
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
{% extends 'base/base.html' %}
|
||||
{% load static %}
|
||||
{% block title %}
|
||||
Order Topics
|
||||
{% endblock %}
|
||||
{% block includehere %}
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
{% endblock %}
|
||||
Loading…
Add table
Add a link
Reference in a new issue