✨
This commit is contained in:
@ -1,6 +1,7 @@
|
||||
from flask import render_template, Blueprint
|
||||
from flask import redirect, render_template, Blueprint
|
||||
from flask_login import login_required, current_user
|
||||
from aula.models import get_thread
|
||||
from aula.models import get_thread, insert_message
|
||||
from aula.forms import SendMessageForm
|
||||
|
||||
Threads = Blueprint('Threads', __name__)
|
||||
|
||||
@ -10,7 +11,7 @@ def threads():
|
||||
threads_data = current_user.get_threads()
|
||||
return render_template("threads.html", threads=threads_data)
|
||||
|
||||
@Threads.route("/threads/<int:thread_id>", methods=['GET'])
|
||||
@Threads.route("/threads/<int:thread_id>", methods=['GET', 'POST'])
|
||||
@login_required
|
||||
def show(thread_id):
|
||||
thread = get_thread(thread_id)
|
||||
@ -19,4 +20,10 @@ def show(thread_id):
|
||||
elif not current_user.in_thread(thread_id):
|
||||
return f"Du har ikke adgang til tråden med id {thread_id}."
|
||||
else:
|
||||
return render_template("thread_show.html", thread=thread, messages=thread.get_messages())
|
||||
form = SendMessageForm()
|
||||
|
||||
if form.validate_on_submit():
|
||||
insert_message(form.besked.data, thread_id, current_user.user_id)
|
||||
return redirect(f"/threads/{thread_id}")
|
||||
|
||||
return render_template("thread_show.html", thread=thread, messages=thread.get_messages(), form=form)
|
||||
|
@ -15,3 +15,7 @@ class UserLoginForm(FlaskForm):
|
||||
password = PasswordField('Password', validators=[DataRequired()])
|
||||
remember = BooleanField('Remember Me')
|
||||
submit = SubmitField('Login')
|
||||
|
||||
class SendMessageForm(FlaskForm):
|
||||
besked = StringField('Besked', validators=[DataRequired()])
|
||||
submit = SubmitField('Send')
|
||||
|
@ -321,3 +321,13 @@ def get_thread(thread_id):
|
||||
cur.close()
|
||||
return thread
|
||||
|
||||
def insert_message(content, thread_id, author_id):
|
||||
cur = conn.cursor()
|
||||
sql_call = """
|
||||
INSERT INTO messages(content, thread_id, author_id, created_date)
|
||||
VALUES (%s, %s, %s, NOW())
|
||||
"""
|
||||
cur.execute(sql_call, (content, thread_id, author_id))
|
||||
# Husk commit() for INSERT og UPDATE, men ikke til SELECT!
|
||||
conn.commit()
|
||||
cur.close()
|
||||
|
@ -17,18 +17,18 @@ INSERT INTO users_groups (user_id, group_id) VALUES (5000, 1000), (5001, 1001);
|
||||
INSERT INTO threads(thread_id ,title, group_id) VALUES
|
||||
(2000, 'Anbefalinger til fodboldsko?', 1000);
|
||||
|
||||
INSERT INTO messages (message_id, content, thread_id, author_id, created_date) VALUES
|
||||
(4000,'Eleverne har ondt i fødderne når de spiller fodbild. Hvem kender et godt skomærke?', 2000, 5000, NOW() - INTERVAL '3.189 day'),
|
||||
(4005,'Jeg tror min søn har nogle han er glad for. Jeg spørger ham lige 😀', 2000, 5002, NOW() - INTERVAL '2.951 day'),
|
||||
(4010,'Tak 👍', 2000, 5000, NOW() - INTERVAL '1.894 day'),
|
||||
(4001,'Er det meningen vi skal give dem sko med????', 2000, 5001, NOW() - INTERVAL '1.05 hour'),
|
||||
(4002,'Rachel, giver du ikke dine børn sko med til fodbold?', 2000, 5002, NOW() - INTERVAL '0.95 hour'),
|
||||
(4003,'Hvad er der galt med dig?', 2000, 5003, NOW() - INTERVAL '0.94 hour'),
|
||||
(4004,'Jeg troede de lånte sko af skolen!', 2000, 5001, NOW() - INTERVAL '0.91 hour'),
|
||||
(4006,'Er det noget der nogensinde sket?', 2000, 5003, NOW() - INTERVAL '0.908 hour'),
|
||||
(4007,'Kan vi ikke godt komme tilbage til pointen?', 2000, 5000, NOW() - INTERVAL '0.9 hour'),
|
||||
(4008,'Hvorfor er det ligepludselig mig der skal holde styr på om skolen uddeler sko eller ej?', 2000, 5001, NOW() - INTERVAL '0.898 hour'),
|
||||
(4009,'Fordi du er dit barns mor?', 2000, 5003, NOW() - INTERVAL '0.89 hour');
|
||||
INSERT INTO messages (content, thread_id, author_id, created_date) VALUES
|
||||
('Eleverne har ondt i fødderne når de spiller fodbild. Hvem kender et godt skomærke?', 2000, 5000, NOW() - INTERVAL '3.189 day'),
|
||||
('Jeg tror min søn har nogle han er glad for. Jeg spørger ham lige 😀', 2000, 5002, NOW() - INTERVAL '2.951 day'),
|
||||
('Tak 👍', 2000, 5000, NOW() - INTERVAL '1.894 day'),
|
||||
('Er det meningen vi skal give dem sko med????', 2000, 5001, NOW() - INTERVAL '1.05 hour'),
|
||||
('Rachel, giver du ikke dine børn sko med til fodbold?', 2000, 5002, NOW() - INTERVAL '0.95 hour'),
|
||||
('Hvad er der galt med dig?', 2000, 5003, NOW() - INTERVAL '0.94 hour'),
|
||||
('Jeg troede de lånte sko af skolen!', 2000, 5001, NOW() - INTERVAL '0.91 hour'),
|
||||
('Er det noget der nogensinde sket?', 2000, 5003, NOW() - INTERVAL '0.908 hour'),
|
||||
('Kan vi ikke godt komme tilbage til pointen?', 2000, 5000, NOW() - INTERVAL '0.9 hour'),
|
||||
('Hvorfor er det ligepludselig mig der skal holde styr på om skolen uddeler sko eller ej?', 2000, 5001, NOW() - INTERVAL '0.898 hour'),
|
||||
('Fordi du er dit barns mor?', 2000, 5003, NOW() - INTERVAL '0.89 hour');
|
||||
|
||||
INSERT INTO users_threads (user_id, thread_id) VALUES
|
||||
(5000, 2000),
|
||||
|
@ -33,15 +33,26 @@ h1, h2, h3, h4, h5, h6 {
|
||||
.thread {
|
||||
border-radius: 20px !important;
|
||||
height: 80vh;
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
.thread h1 {
|
||||
margin-top: 20px;
|
||||
margin-left: 20px;
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
.messages {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin-top: auto;
|
||||
height: 60vh;
|
||||
height: 61vh;
|
||||
overflow: scroll;
|
||||
padding-right: 5px;
|
||||
padding-left: 20px;
|
||||
padding-right: 20px;
|
||||
border-top: 3px black solid;
|
||||
border-bottom: 3px black solid;
|
||||
}
|
||||
|
||||
.message-container {
|
||||
@ -68,6 +79,40 @@ h1, h2, h3, h4, h5, h6 {
|
||||
margin-bottom: 0px !important;
|
||||
}
|
||||
|
||||
.new-message form {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
padding: 10px;
|
||||
padding-right: 20px;
|
||||
padding-left: 20px;
|
||||
}
|
||||
|
||||
.new-message form .message-box {
|
||||
height: auto;
|
||||
font-size: large;
|
||||
display: flex;
|
||||
flex-grow: 3;
|
||||
margin-right: 10px;
|
||||
border-radius: 10px;
|
||||
border: 2px black solid;
|
||||
padding: 3px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
.new-message form .send:hover {
|
||||
background-color: rgb(84 158 199);
|
||||
border: 2px rgb(22 97 148) solid;
|
||||
}
|
||||
|
||||
.new-message form .send {
|
||||
color: #fff;
|
||||
background-color: rgb(22 97 148);
|
||||
border-radius: 10px;
|
||||
border: 2px black solid;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.message-container .timestamp {
|
||||
align-self: flex-start;
|
||||
margin-right: 5px;
|
||||
|
@ -2,8 +2,7 @@
|
||||
{% block content %}
|
||||
<div class="thread content-section">
|
||||
<h1>{{ thread.title }}</h1>
|
||||
<hr>
|
||||
<div class="messages">
|
||||
<div id="messages" class="messages">
|
||||
{% for message in messages %}
|
||||
{% if message.author_id == current_user.user_id %}
|
||||
<div class="message-container self">
|
||||
@ -18,5 +17,16 @@
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="new-message">
|
||||
<form method="POST" action="">
|
||||
{{ form.hidden_tag() }}
|
||||
{{ form.besked(class="message-box") }}
|
||||
{{ form.submit(class="send") }}
|
||||
</form>
|
||||
</div>
|
||||
<script>
|
||||
var objDiv = document.getElementById("messages");
|
||||
objDiv.scrollTop = objDiv.scrollHeight;
|
||||
</script>
|
||||
</div>
|
||||
{% endblock content %}
|
||||
|
Reference in New Issue
Block a user