src: rich text editor added

This commit is contained in:
tiyn 2022-07-31 01:12:43 +02:00
parent 2d25888ee3
commit 2a09b0bc86
6 changed files with 31 additions and 11 deletions

View File

@ -1,5 +1,6 @@
from flask import Flask, flash, make_response, render_template, redirect, \
abort, url_for
abort, url_for, request
from flask_ckeditor import CKEditor
from flask_login import current_user, login_user, LoginManager, logout_user, \
login_required
from flask_wtf import CSRFProtect
@ -14,6 +15,7 @@ from forms import LoginForm, RegisterForm, WriteForm
app = Flask(__name__)
csrf = CSRFProtect()
db = Database()
ckeditor = CKEditor(app)
app.secret_key = os.urandom(32)
csrf.init_app(app)
@ -131,8 +133,11 @@ def write():
if not current_user.is_authenticated:
return redirect(url_for("index"))
form = WriteForm()
print("data", form.text.data)
print("data", request.form.get("text"))
if form.validate_on_submit():
db.insert_entry(form.name.data, form.date.data, form.text.data, form.rating.data, current_user.id)
db.insert_entry(form.name.data, form.date.data,
form.text.data, form.rating.data, current_user.id)
return redirect(url_for("index"))
return render_template("write.html", title=TITLE, form=form, style=STYLE)

View File

@ -60,9 +60,9 @@ def gen_index_string():
username = db.get_user_by_id(entry[5])[1]
reviewed = entry[6]
content_string += "<div class=\"entry\">\n"
content_string += "<h2 id=\"" + \
content_string += "<h1 id=\"" + \
str(ident) + "\">" + title + " (" + year + ") - " + \
str(rating) + "/100</h2>\n"
str(rating) + "/100</h1>\n"
content_string += "[<a href=\"" + "/entry/" + \
str(ident) + "\">" + "standalone" + "</a>]<br>\n"
content_string += text
@ -128,7 +128,8 @@ def get_rss_string():
username = db.get_user_by_id(entry[5])[1]
reviewed = entry[6]
content_string += "<item>\n"
content_string += "<title>" + title + "(" + year + ") " + str(rating) + "/100 </title>\n"
content_string += "<title>" + title + \
"(" + year + ") " + str(rating) + "/100 </title>\n"
content_string += "<guid>" + config.WEBSITE + \
"/index.html#" + str(ident) + "</guid>\n"
content_string += "<pubDate>" + reviewed + "</pubDate>\n"

View File

@ -3,6 +3,7 @@ import os
import sqlite3
from werkzeug.security import generate_password_hash, check_password_hash
class User():
def __init__(self, name, pass_hash=None):
@ -129,4 +130,4 @@ class Database:
#db = Database()
#db.insert_entry("name", "2020", "text", 50, 1)
#res = db.get_entries()
#print(res)
# print(res)

View File

@ -1,8 +1,10 @@
from datetime import date
from flask_ckeditor import CKEditorField
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField, TextAreaField
from wtforms import StringField, PasswordField, SubmitField
from wtforms.fields.html5 import IntegerField
from wtforms.validators import DataRequired, EqualTo, InputRequired, NumberRange
from wtforms.validators import DataRequired, EqualTo, InputRequired, \
NumberRange, ValidationError
class LoginForm(FlaskForm):
@ -18,9 +20,16 @@ class RegisterForm(FlaskForm):
"Repeat Password", validators=[DataRequired(), EqualTo("password")])
submit = SubmitField("Register")
class WriteForm(FlaskForm):
name = StringField("Name", validators=[DataRequired()])
date = IntegerField("Release Year", default=date.today().year, validators=[DataRequired(), NumberRange(min=0, max=date.today().year, message="Year has to be valid.")])
text = TextAreaField("Text", validators=[DataRequired()])
rating = IntegerField("Rating", default=50, validators=[InputRequired(), NumberRange(min=0, max=100, message="Number has to be between 0 and 100.")])
date = IntegerField("Release Year", default=date.today().year, validators=[DataRequired(
), NumberRange(min=0, max=date.today().year, message="Year has to be valid.")])
text = CKEditorField("Text", validators=[DataRequired()])
rating = IntegerField("Rating", default=50, validators=[InputRequired(
), NumberRange(min=0, max=100, message="Number has to be between 0 and 100.")])
submit = SubmitField("Publish")
def validate_text(self, text):
if "<h1>" in text.data or "</h1>" in text.data:
raise ValidationError("Headings on level 1 are not permitted.")

View File

@ -32,6 +32,7 @@
<a href="{{ url_for('register') }}">Register</a>
{% else %}
<a href="{{ url_for('logout') }}">Logout</a>
-
<a href="{{ url_for('write') }}">Write entry</a>
{% endif %}
</div>

View File

@ -22,11 +22,14 @@
{% endfor %}
</p>
<p>
{{ form.text.label }}<br>
{{ form.text }}
{% for error in form.text.errors %}
<span style="color: red;">[{{ error }}]</span>
{% endfor %}
{{ ckeditor.load() }}
{{ ckeditor.config(name="text") }}
</p>
<p>
{{ form.rating.label }}<br>