Compare commits
6 Commits
575b84f191
...
0db8c55675
Author | SHA1 | Date | |
---|---|---|---|
0db8c55675 | |||
1d25c819a1 | |||
ca0099063a | |||
6d09e89603 | |||
a1f9d2b065 | |||
95c5ec2a66 |
@ -18,6 +18,11 @@ def load_user(cpr_num):
|
||||
cur.close()
|
||||
return user
|
||||
|
||||
def convert_role(role):
|
||||
if role == "student": return "Elev"
|
||||
elif role == "parent": return "Forældre"
|
||||
else: return "Lærer"
|
||||
|
||||
#
|
||||
# Models
|
||||
#
|
||||
@ -70,7 +75,7 @@ class Message(tuple):
|
||||
"cpr_num": message_data[4],
|
||||
"first_name": message_data[5],
|
||||
"last_name": message_data[6],
|
||||
"role": message_data[7],
|
||||
"role": convert_role(message_data[7]),
|
||||
}
|
||||
super().__init__()
|
||||
|
||||
@ -112,7 +117,7 @@ class Post(tuple):
|
||||
'cpr_num': post_data[7],
|
||||
'first_name': post_data[8],
|
||||
'last_name': post_data[9],
|
||||
'role': post_data[10],
|
||||
'role': convert_role(post_data[7]),
|
||||
}
|
||||
super().__init__()
|
||||
|
||||
@ -136,7 +141,7 @@ class Thread(tuple):
|
||||
SELECT message_id, content, thread_id, created_date ,u.cpr_num, u.first_name, u.last_name, u.role FROM messages
|
||||
INNER JOIN users u on u.cpr_num = messages.author_cpr_num
|
||||
WHERE messages.thread_id = %s
|
||||
ORDER BY created_date DESC;
|
||||
ORDER BY created_date ASC;
|
||||
"""
|
||||
cur.execute(sql_call, (self.thread_id,))
|
||||
messages = cur.fetchall()
|
||||
@ -153,7 +158,7 @@ class User(tuple, UserMixin):
|
||||
self.first_name = user_data[1]
|
||||
self.last_name = user_data[2]
|
||||
self.password = user_data[3]
|
||||
self.role = user_data[4]
|
||||
self.role = convert_role(user_data[4])
|
||||
super().__init__()
|
||||
|
||||
def get_id(self):
|
||||
@ -162,7 +167,7 @@ class User(tuple, UserMixin):
|
||||
def get_groups(self):
|
||||
cur = conn.cursor()
|
||||
sql_call = """
|
||||
SELECT groups.* FROM users_groups JOIN groups ON users_groups.group_id = groups.group_id WHERE users_groups.cpr_num = %s
|
||||
SELECT groups.* FROM users_in_groups JOIN groups ON users_in_groups.group_id = groups.group_id WHERE users_in_groups.cpr_num = %s
|
||||
"""
|
||||
cur.execute(sql_call, (self.cpr_num,))
|
||||
groups = cur.fetchall()
|
||||
@ -175,7 +180,7 @@ class User(tuple, UserMixin):
|
||||
def is_member_of_group(self, group_id):
|
||||
cur = conn.cursor()
|
||||
sql_call = """
|
||||
SELECT * FROM users_groups WHERE cpr_num = %s AND group_id = %s
|
||||
SELECT * FROM users_in_groups WHERE cpr_num = %s AND group_id = %s
|
||||
"""
|
||||
cur.execute(sql_call, (self.cpr_num, group_id))
|
||||
return cur.rowcount > 0
|
||||
@ -184,7 +189,7 @@ class User(tuple, UserMixin):
|
||||
def get_groups_joinable(self):
|
||||
cur = conn.cursor()
|
||||
sql_call = """
|
||||
SELECT groups.* FROM groups INNER JOIN users_groups ON groups.group_id = users_groups.group_id WHERE users_groups.cpr_num = %s
|
||||
SELECT groups.* FROM groups INNER JOIN users_in_groups ON groups.group_id = users_in_groups.group_id WHERE users_in_groups.cpr_num = %s
|
||||
UNION
|
||||
SELECT groups.* FROM groups WHERE groups.mandatory = FALSE
|
||||
ORDER BY mandatory ASC, name DESC
|
||||
@ -201,7 +206,7 @@ class User(tuple, UserMixin):
|
||||
# TODO: Tjek om brugeren må forlade gruppen
|
||||
cur = conn.cursor()
|
||||
sql_call = """
|
||||
DELETE FROM users_groups WHERE cpr_num = %s AND group_id = %s
|
||||
DELETE FROM users_in_groups WHERE cpr_num = %s AND group_id = %s
|
||||
"""
|
||||
cur.execute(sql_call, (self.cpr_num, group_id))
|
||||
conn.commit()
|
||||
@ -210,7 +215,7 @@ class User(tuple, UserMixin):
|
||||
def join_group(self, group_id):
|
||||
cur = conn.cursor()
|
||||
sql_call = """
|
||||
INSERT INTO users_groups VALUES (%s, %s)
|
||||
INSERT INTO users_in_groups VALUES (%s, %s)
|
||||
"""
|
||||
cur.execute(sql_call, (self.cpr_num, group_id))
|
||||
conn.commit()
|
||||
@ -228,7 +233,7 @@ class User(tuple, UserMixin):
|
||||
ON threads.thread_id = lm.thread_id
|
||||
WHERE g.group_id IN
|
||||
(
|
||||
SELECT group_id FROM users_groups
|
||||
SELECT group_id FROM users_in_groups
|
||||
WHERE cpr_num = %s
|
||||
)
|
||||
ORDER BY last_message_date DESC NULLS LAST;
|
||||
@ -280,7 +285,7 @@ def get_posts_for_user(cpr_num):
|
||||
INNER JOIN groups g on g.group_id = p.group_id
|
||||
INNER JOIN users u on u.cpr_num = p.author_cpr_num
|
||||
WHERE g.group_id in (
|
||||
SELECT g.group_id FROM users_groups
|
||||
SELECT g.group_id FROM users_in_groups
|
||||
WHERE cpr_num = %s
|
||||
)
|
||||
ORDER BY created_date DESC
|
||||
@ -361,4 +366,4 @@ def insert_message(content, thread_id, author_cpr_num):
|
||||
cur.execute(sql_call, (content, thread_id, author_cpr_num))
|
||||
# Husk commit() for INSERT og UPDATE, men ikke til SELECT!
|
||||
conn.commit()
|
||||
cur.close()
|
||||
cur.close()
|
@ -3,10 +3,10 @@ TRUNCATE users, groups, threads, messages, posts, users_in_groups;
|
||||
INSERT INTO public.users(cpr_num, first_name, last_name, password, role) VALUES
|
||||
(5000, 'Gordon', 'Freeman', '$2b$12$KFkp1IEMGT4QrWwjPGhE3ejOv6Z3pYhx/S4qOoFbanR2sMiZqgeJO', 'teacher'),
|
||||
(5001, 'Rachel', 'Green', '$2b$12$KFkp1IEMGT4QrWwjPGhE3ejOv6Z3pYhx/S4qOoFbanR2sMiZqgeJO', 'parent'),
|
||||
(5002,'Joey', 'Trib', '$2b$12$KFkp1IEMGT4QrWwjPGhE3ejOv6Z3pYhx/S4qOoFbanR2sMiZqgeJO', 'student'),
|
||||
(5003,'Chandler', 'Bing', '$2b$12$KFkp1IEMGT4QrWwjPGhE3ejOv6Z3pYhx/S4qOoFbanR2sMiZqgeJO', 'student'),
|
||||
(5002,'Joey', 'Trib', '$2b$12$KFkp1IEMGT4QrWwjPGhE3ejOv6Z3pYhx/S4qOoFbanR2sMiZqgeJO', 'parent'),
|
||||
(5003,'Chandler', 'Bing', '$2b$12$KFkp1IEMGT4QrWwjPGhE3ejOv6Z3pYhx/S4qOoFbanR2sMiZqgeJO', 'parent'),
|
||||
(5004,'Phoebe', 'Buffay', '$2b$12$KFkp1IEMGT4QrWwjPGhE3ejOv6Z3pYhx/S4qOoFbanR2sMiZqgeJO', 'parent'),
|
||||
(5005,'Ross', 'Geller', '$2b$12$KFkp1IEMGT4QrWwjPGhE3ejOv6Z3pYhx/S4qOoFbanR2sMiZqgeJO', 'student');
|
||||
(5005,'Ross', 'Geller', '$2b$12$KFkp1IEMGT4QrWwjPGhE3ejOv6Z3pYhx/S4qOoFbanR2sMiZqgeJO', 'parent');
|
||||
|
||||
INSERT INTO public.groups(group_id, name, mandatory) VALUES
|
||||
(1000, 'fodbold', TRUE),
|
||||
|
@ -10,7 +10,7 @@
|
||||
<article class="media content-section">
|
||||
<div class="media-body">
|
||||
<div class="article-metadata">
|
||||
<a class="mr-2 author-name" href="#">{{ post.author.first_name }} {{ post.author.last_name }} </a>
|
||||
<a class="mr-2 author-name" href="#">{{ post.author.first_name }} {{ post.author.last_name }} ({{ post.author.role }})</a>
|
||||
<small class="text-muted float-right">{{ post.created_date.strftime('%H:%M %d-%m-%Y')}}</small>
|
||||
</div>
|
||||
<h2><a class="article-title" href="#">{{ post.title }}</a></h2>
|
||||
|
@ -30,10 +30,14 @@
|
||||
|
||||
{% block sidebar %}
|
||||
<p style="font-weight: bold;">Opret gruppe</p>
|
||||
{% if current_user.role == "teacher" %}
|
||||
<form method="POST" action="{{ url_for('Group.create')}}">
|
||||
<p>{{ form.title(class="form-control", placeholder="Gruppens navn") }}</p>
|
||||
|
||||
<p>{{ form.mandatory() }} {{ form.mandatory.label(class="form-check-label") }}</p>
|
||||
<p>{{ form.submit(class="btn btn-primary btn-block") }}</p>
|
||||
</form>
|
||||
{% else %}
|
||||
<p>Denne funktion er kun tilgængelig for lærer</p>
|
||||
{% endif %}
|
||||
{% endblock sidebar %}
|
||||
|
@ -20,5 +20,7 @@
|
||||
</article>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<h1>Forside</h1>
|
||||
<p>Login <a href="{{ url_for('Login.login') }}">her</a></p>
|
||||
{% endif %}
|
||||
{% endblock content %}
|
||||
|
@ -45,3 +45,15 @@
|
||||
</form>
|
||||
</div>
|
||||
{% endblock content %}
|
||||
|
||||
|
||||
{% block sidebar %}
|
||||
<h3>Login Information</h3>
|
||||
<p style="font-weight:bold">Lærer</p>
|
||||
<p> Brugernavne: 5000</p>
|
||||
<p> Kodeord: UIS</p>
|
||||
<p style="font-weight:bold">Forældre</p>
|
||||
<p> Brugernavne: 5001-5005</p>
|
||||
<p> Kodeord: UIS</p>
|
||||
|
||||
{% endblock sidebar %}
|
||||
|
@ -10,7 +10,7 @@
|
||||
<div class="message-container">
|
||||
{% endif %}
|
||||
<div class="content-section message">
|
||||
<a class="author-name" href="#">{{ message.author.first_name }}</a>
|
||||
<a class="author-name" href="#">{{ message.author.first_name }} ({{ message.author.role }})</a>
|
||||
<p>{{ message.content }}</p>
|
||||
</div>
|
||||
<p class="timestamp">{{ message.created_date }}</p>
|
||||
|
Reference in New Issue
Block a user