mirror of
https://github.com/tiyn/container-critique.git
synced 2025-04-01 23:57:49 +02:00
src: rich text editor added
This commit is contained in:
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)
|
||||
|
19
src/forms.py
19
src/forms.py
@ -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…
x
Reference in New Issue
Block a user