This commit is contained in:
NikolajDanger
2022-05-31 12:56:05 +02:00
parent de1fb39833
commit f5ac1a6c15
6 changed files with 95 additions and 19 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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