Ændringer så prototype passer til 213eec1813
This commit is contained in:
104
aula/models.py
104
aula/models.py
@ -5,15 +5,15 @@ from flask_login import UserMixin
|
||||
from aula import conn, login_manager
|
||||
|
||||
@login_manager.user_loader
|
||||
def load_user(user_id):
|
||||
def load_user(cpr_num):
|
||||
cur = conn.cursor()
|
||||
|
||||
user_sql = """
|
||||
SELECT * FROM users
|
||||
WHERE user_id = %s
|
||||
WHERE cpr_num = %s
|
||||
"""
|
||||
|
||||
cur.execute(user_sql, (user_id,))
|
||||
cur.execute(user_sql, (cpr_num,))
|
||||
user = User(cur.fetchone()) if cur.rowcount > 0 else None
|
||||
cur.close()
|
||||
return user
|
||||
@ -31,9 +31,9 @@ class Group(tuple):
|
||||
def get_posts(self):
|
||||
cur = conn.cursor()
|
||||
sql_call = """
|
||||
SELECT post_id, title, content, created_date, g.group_id, g.name, g.mandatory, u.user_id, u.first_name, u.last_name, u.email, u.address, u.role FROM posts as p
|
||||
SELECT post_id, title, content, created_date, g.group_id, g.name, g.mandatory, u.cpr_num, u.first_name, u.last_name, u.role FROM posts as p
|
||||
INNER JOIN groups g on g.group_id = p.group_id
|
||||
INNER JOIN users u on u.user_id = p.author_id
|
||||
INNER JOIN users u on u.cpr_num = p.author_cpr_num
|
||||
WHERE p.group_id = %s
|
||||
ORDER BY created_date DESC;
|
||||
"""
|
||||
@ -67,7 +67,7 @@ class Message(tuple):
|
||||
self.thread_id = message_data[2]
|
||||
self._created_date = message_data[3]
|
||||
self.author = {
|
||||
"user_id": message_data[4],
|
||||
"cpr_num": message_data[4],
|
||||
"first_name": message_data[5],
|
||||
"last_name": message_data[6],
|
||||
"role": message_data[7],
|
||||
@ -109,12 +109,10 @@ class Post(tuple):
|
||||
'mandatory': post_data[6],
|
||||
}
|
||||
self.author = {
|
||||
'user_id': post_data[7],
|
||||
'cpr_num': post_data[7],
|
||||
'first_name': post_data[8],
|
||||
'last_name': post_data[9],
|
||||
'email': post_data[10],
|
||||
'address': post_data[11],
|
||||
'role': post_data[12],
|
||||
'role': post_data[10],
|
||||
}
|
||||
super().__init__()
|
||||
|
||||
@ -135,9 +133,10 @@ class Thread(tuple):
|
||||
def get_messages(self):
|
||||
cur = conn.cursor()
|
||||
sql_call = """
|
||||
SELECT message_id, content, thread_id, created_date ,u.user_id, u.first_name, u.last_name, u.role FROM messages
|
||||
INNER JOIN users u on u.user_id = messages.author_id
|
||||
WHERE messages.thread_id = %s;
|
||||
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;
|
||||
"""
|
||||
cur.execute(sql_call, (self.thread_id,))
|
||||
messages = cur.fetchall()
|
||||
@ -150,24 +149,22 @@ class Thread(tuple):
|
||||
|
||||
class User(tuple, UserMixin):
|
||||
def __init__(self, user_data):
|
||||
self.user_id = user_data[0]
|
||||
self.cpr_num = user_data[0]
|
||||
self.first_name = user_data[1]
|
||||
self.last_name = user_data[2]
|
||||
self.password = user_data[3]
|
||||
self.email = user_data[4]
|
||||
self.address = user_data[5]
|
||||
self.role = user_data[6]
|
||||
self.role = user_data[4]
|
||||
super().__init__()
|
||||
|
||||
def get_id(self):
|
||||
return self.user_id
|
||||
return self.cpr_num
|
||||
|
||||
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.user_id = %s
|
||||
SELECT groups.* FROM users_groups JOIN groups ON users_groups.group_id = groups.group_id WHERE users_groups.cpr_num = %s
|
||||
"""
|
||||
cur.execute(sql_call, (self.user_id,))
|
||||
cur.execute(sql_call, (self.cpr_num,))
|
||||
groups = cur.fetchall()
|
||||
result = []
|
||||
for group_data in groups:
|
||||
@ -178,21 +175,21 @@ class User(tuple, UserMixin):
|
||||
def is_member_of_group(self, group_id):
|
||||
cur = conn.cursor()
|
||||
sql_call = """
|
||||
SELECT * FROM users_groups WHERE user_id = %s AND group_id = %s
|
||||
SELECT * FROM users_groups WHERE cpr_num = %s AND group_id = %s
|
||||
"""
|
||||
cur.execute(sql_call, (self.user_id, group_id))
|
||||
cur.execute(sql_call, (self.cpr_num, group_id))
|
||||
return cur.rowcount > 0
|
||||
|
||||
|
||||
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.user_id = %s
|
||||
SELECT groups.* FROM groups INNER JOIN users_groups ON groups.group_id = users_groups.group_id WHERE users_groups.cpr_num = %s
|
||||
UNION
|
||||
SELECT groups.* FROM groups WHERE groups.mandatory = FALSE
|
||||
ORDER BY mandatory ASC, name DESC
|
||||
"""
|
||||
cur.execute(sql_call, (self.user_id,))
|
||||
cur.execute(sql_call, (self.cpr_num,))
|
||||
groups = cur.fetchall()
|
||||
result = []
|
||||
for group_data in groups:
|
||||
@ -204,9 +201,9 @@ class User(tuple, UserMixin):
|
||||
# TODO: Tjek om brugeren må forlade gruppen
|
||||
cur = conn.cursor()
|
||||
sql_call = """
|
||||
DELETE FROM users_groups WHERE user_id = %s AND group_id = %s
|
||||
DELETE FROM users_groups WHERE cpr_num = %s AND group_id = %s
|
||||
"""
|
||||
cur.execute(sql_call, (self.user_id, group_id))
|
||||
cur.execute(sql_call, (self.cpr_num, group_id))
|
||||
conn.commit()
|
||||
cur.close()
|
||||
|
||||
@ -215,7 +212,7 @@ class User(tuple, UserMixin):
|
||||
sql_call = """
|
||||
INSERT INTO users_groups VALUES (%s, %s)
|
||||
"""
|
||||
cur.execute(sql_call, (self.user_id, group_id))
|
||||
cur.execute(sql_call, (self.cpr_num, group_id))
|
||||
conn.commit()
|
||||
cur.close()
|
||||
|
||||
@ -232,11 +229,11 @@ class User(tuple, UserMixin):
|
||||
WHERE g.group_id IN
|
||||
(
|
||||
SELECT group_id FROM users_groups
|
||||
WHERE user_id = %s
|
||||
WHERE cpr_num = %s
|
||||
)
|
||||
ORDER BY last_message_date DESC NULLS LAST;
|
||||
"""
|
||||
cur.execute(sql_call, (self.user_id,))
|
||||
cur.execute(sql_call, (self.cpr_num,))
|
||||
threads = cur.fetchall()
|
||||
result = []
|
||||
for thread_data in threads:
|
||||
@ -248,58 +245,47 @@ class User(tuple, UserMixin):
|
||||
cur = conn.cursor()
|
||||
sql_call = """
|
||||
SELECT * FROM users_threads WHERE
|
||||
user_id = %s AND
|
||||
cpr_num = %s AND
|
||||
thread_id = %s
|
||||
"""
|
||||
cur.execute(sql_call, (self.user_id, thread_id))
|
||||
cur.execute(sql_call, (self.cpr_num, thread_id))
|
||||
return cur.rowcount > 0
|
||||
|
||||
def insert_users(user_id, first_name, last_name, password, email, adresse, role):
|
||||
def insert_users(cpr_num, first_name, last_name, password, email, adresse, role):
|
||||
cur = conn.cursor()
|
||||
sql_call = """
|
||||
INSERT INTO users(user_id, first_name, last_name, password, email, adresse, role)
|
||||
INSERT INTO users(cpr_num, first_name, last_name, password, email, adresse, role)
|
||||
VALUES (%s, %s, %s, %s, %s, %s, %s)
|
||||
"""
|
||||
cur.execute(sql_call, (user_id, first_name, last_name, password, email, adresse, role))
|
||||
cur.execute(sql_call, (cpr_num, first_name, last_name, password, email, adresse, role))
|
||||
# Husk commit() for INSERT og UPDATE, men ikke til SELECT!
|
||||
conn.commit()
|
||||
cur.close()
|
||||
|
||||
def select_users_by_id(user_id):
|
||||
def select_users_by_cpr(cpr_num):
|
||||
cur = conn.cursor()
|
||||
sql_call = """
|
||||
SELECT * FROM users
|
||||
WHERE user_id = %s
|
||||
WHERE cpr_num = %s
|
||||
"""
|
||||
cur.execute(sql_call, (user_id,))
|
||||
cur.execute(sql_call, (cpr_num,))
|
||||
user = User(cur.fetchone()) if cur.rowcount > 0 else None
|
||||
cur.close()
|
||||
return user
|
||||
|
||||
def select_users_by_email(email):
|
||||
def get_posts_for_user(cpr_num):
|
||||
cur = conn.cursor()
|
||||
sql_call = """
|
||||
SELECT * FROM users
|
||||
WHERE email = %s
|
||||
"""
|
||||
cur.execute(sql_call, (email,))
|
||||
user = User(cur.fetchone()) if cur.rowcount > 0 else None
|
||||
cur.close()
|
||||
return user
|
||||
|
||||
def get_posts_for_user(user_id):
|
||||
cur = conn.cursor()
|
||||
sql_call = """
|
||||
SELECT post_id, title, content, created_date, g.group_id, g.name, g.mandatory, u.user_id, u.first_name, u.last_name, u.email, u.address, u.role FROM posts as p
|
||||
SELECT post_id, title, content, created_date, g.group_id, g.name, g.mandatory, u.cpr_num, u.first_name, u.last_name, u.role FROM posts as p
|
||||
INNER JOIN groups g on g.group_id = p.group_id
|
||||
INNER JOIN users u on u.user_id = p.author_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
|
||||
WHERE user_id = %s
|
||||
WHERE cpr_num = %s
|
||||
)
|
||||
ORDER BY created_date DESC
|
||||
"""
|
||||
cur.execute(sql_call, (user_id,))
|
||||
cur.execute(sql_call, (cpr_num,))
|
||||
user = [Post(i) for i in cur.fetchmany(50)] if cur.rowcount > 0 else []
|
||||
cur.close()
|
||||
return user
|
||||
@ -357,22 +343,22 @@ def insert_group(name, mandatory):
|
||||
cur.close()
|
||||
return result
|
||||
|
||||
def insert_post(group_id, author_id, title, content):
|
||||
def insert_post(group_id, author_cpr_num, title, content):
|
||||
cur = conn.cursor()
|
||||
sql = """
|
||||
INSERT INTO posts(group_id, author_id, title, content) VALUES (%s, %s, %s, %s)
|
||||
INSERT INTO posts(group_id, author_cpr_num, title, content) VALUES (%s, %s, %s, %s)
|
||||
"""
|
||||
cur.execute(sql, (group_id, author_id, title, content))
|
||||
cur.execute(sql, (group_id, author_cpr_num, title, content))
|
||||
conn.commit()
|
||||
cur.close()
|
||||
|
||||
def insert_message(content, thread_id, author_id):
|
||||
def insert_message(content, thread_id, author_cpr_num):
|
||||
cur = conn.cursor()
|
||||
sql_call = """
|
||||
INSERT INTO messages(content, thread_id, author_id, created_date)
|
||||
INSERT INTO messages(content, thread_id, author_cpr_num, created_date)
|
||||
VALUES (%s, %s, %s, NOW())
|
||||
"""
|
||||
cur.execute(sql_call, (content, thread_id, author_id))
|
||||
cur.execute(sql_call, (content, thread_id, author_cpr_num))
|
||||
# Husk commit() for INSERT og UPDATE, men ikke til SELECT!
|
||||
conn.commit()
|
||||
cur.close()
|
||||
|
Reference in New Issue
Block a user