src: rich text editor added

master
tiyn 2 years ago
parent 2d25888ee3
commit 2a09b0bc86

@ -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)

@ -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"

@ -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)

@ -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.")

@ -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>

@ -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>

Loading…
Cancel
Save