Added content filter for max len and URLs
This commit is contained in:
@@ -72,6 +72,7 @@ def newentry():
|
|||||||
return render_template('entry/create.html')
|
return render_template('entry/create.html')
|
||||||
|
|
||||||
content = str(request.form["content"])
|
content = str(request.form["content"])
|
||||||
|
content = content.strip()
|
||||||
content = content[:1000]
|
content = content[:1000]
|
||||||
|
|
||||||
fileattached = False
|
fileattached = False
|
||||||
|
|||||||
@@ -20,6 +20,29 @@ def timestamp_filter(value):
|
|||||||
except:
|
except:
|
||||||
return value
|
return value
|
||||||
|
|
||||||
|
import html, re
|
||||||
|
|
||||||
|
@app.template_filter('content')
|
||||||
|
def content_filter(value):
|
||||||
|
value = value.strip()
|
||||||
|
value = html.escape(value)
|
||||||
|
# Regulärer Ausdruck, um URLs zu finden
|
||||||
|
url_pattern = re.compile(
|
||||||
|
r'https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)'
|
||||||
|
)
|
||||||
|
|
||||||
|
# Ersetze jede gefundene URL durch einen <a>-Tag
|
||||||
|
def replace_url(match):
|
||||||
|
url = match.group(0)
|
||||||
|
if not url.startswith(('http://', 'https://')):
|
||||||
|
url = 'http://' + url
|
||||||
|
return f'<a href="{url}" target="_blank">{match.group(0)}</a>'
|
||||||
|
|
||||||
|
value = url_pattern.sub(replace_url, value)
|
||||||
|
value = value.replace('\n', '<br>')
|
||||||
|
|
||||||
|
return value
|
||||||
|
|
||||||
import auth
|
import auth
|
||||||
import entry
|
import entry
|
||||||
import user
|
import user
|
||||||
|
|||||||
+6
-2
@@ -51,7 +51,8 @@ hr {
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 10pt; }
|
gap: 10pt; }
|
||||||
#contentnotice h1, #contentnotice h3 {
|
#contentnotice h1,
|
||||||
|
#contentnotice h3 {
|
||||||
margin: 6pt; }
|
margin: 6pt; }
|
||||||
#contentnotice div {
|
#contentnotice div {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@@ -64,7 +65,10 @@ hr {
|
|||||||
|
|
||||||
.entry .content {
|
.entry .content {
|
||||||
margin: 10pt;
|
margin: 10pt;
|
||||||
font-size: 14pt; }
|
font-size: 14pt;
|
||||||
|
word-wrap: break-word;
|
||||||
|
max-height: 500px;
|
||||||
|
overflow: hidden; }
|
||||||
|
|
||||||
.entry img {
|
.entry img {
|
||||||
max-width: 100%; }
|
max-width: 100%; }
|
||||||
|
|||||||
@@ -66,7 +66,8 @@ hr {
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 10pt;
|
gap: 10pt;
|
||||||
|
|
||||||
h1, h3 {
|
h1,
|
||||||
|
h3 {
|
||||||
margin: 6pt;
|
margin: 6pt;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -86,6 +87,10 @@ hr {
|
|||||||
.content {
|
.content {
|
||||||
margin: 10pt;
|
margin: 10pt;
|
||||||
font-size: 14pt;
|
font-size: 14pt;
|
||||||
|
word-wrap: break-word;
|
||||||
|
|
||||||
|
max-height: 500px;
|
||||||
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
img {
|
img {
|
||||||
|
|||||||
@@ -2,9 +2,11 @@
|
|||||||
|
|
||||||
<div class="entry">
|
<div class="entry">
|
||||||
<div class="meta">{{ p[6] }} - {{ p[3] | timestamp }}<br /></div>
|
<div class="meta">{{ p[6] }} - {{ p[3] | timestamp }}<br /></div>
|
||||||
|
{% if p[4] != '' %}
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<p>{{ p[4] }}</p>
|
<p>{{ p[4] | content | safe}}</p>
|
||||||
</div>
|
</div>
|
||||||
|
{% endif %}
|
||||||
{% if p[5] != 'none' %}
|
{% if p[5] != 'none' %}
|
||||||
<img src="/{{ p[5] }}" />
|
<img src="/{{ p[5] }}" />
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
Reference in New Issue
Block a user