From a696c319df9a6a67fd90cd35424a9aebf9a38c0f Mon Sep 17 00:00:00 2001 From: jakobsn Date: Wed, 22 Jan 2020 17:37:23 +0100 Subject: [PATCH 1/3] Add smtp server --- .gitmodules | 3 +++ docker-compose.yml | 11 +++++++++++ docker-smtp | 1 + src/app/views/app.py | 6 ++++-- 4 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 .gitmodules create mode 160000 docker-smtp diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..9c3deba --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "docker-smtp"] + path = docker-smtp + url = https://github.com/jakobsn/docker-smtp.git diff --git a/docker-compose.yml b/docker-compose.yml index 890921f..ccff8be 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -21,10 +21,21 @@ services: - "4${groupid}:443" depends_on: - db + - smtp networks: backend: ipv4_address: 10.${groupid}.0.6 + smtp: + build: + context: ./docker-smtp + dockerfile: Dockerfile + restart: always + networks: + backend: + ipv4_address: 10.${groupid}.0.7 + + networks: backend: diff --git a/docker-smtp b/docker-smtp new file mode 160000 index 0000000..0961794 --- /dev/null +++ b/docker-smtp @@ -0,0 +1 @@ +Subproject commit 0961794dc8722eb4c8bcbbdf48323ab9e8e4dff7 diff --git a/src/app/views/app.py b/src/app/views/app.py index 5ccd8f8..874c15a 100644 --- a/src/app/views/app.py +++ b/src/app/views/app.py @@ -10,6 +10,10 @@ from views.project import Project from views.index import Index from views.apply import Apply +# Connect to smtp server, enables web.sendmail() +groupid = os.getenv("groupid").lstrip("0") +web.config.smtp_server = '10.' + groupid + '.0.7:25' +#web.sendmail("mailserver@beelance2.com", "some@user.com", "Hello", "Grz, the beelance app is running") # Define application routes urls = ( @@ -50,5 +54,3 @@ def session_hook(): app.add_processor(web.loadhook(session_hook)) app = app.wsgifunc() - - From dfc0928f7c28034afd13e5c336af32d01d756fbf Mon Sep 17 00:00:00 2001 From: jakobsn Date: Sat, 25 Jan 2020 19:06:37 +0100 Subject: [PATCH 2/3] Database exception handling --- src/app/models/project.py | 181 ++++++++++++++++++++++++++++--------- src/app/models/register.py | 13 ++- src/app/models/user.py | 41 +++++++-- 3 files changed, 182 insertions(+), 53 deletions(-) diff --git a/src/app/models/project.py b/src/app/models/project.py index bf4bd86..43eb3cd 100644 --- a/src/app/models/project.py +++ b/src/app/models/project.py @@ -1,4 +1,5 @@ from models.database import db +import mysql.connector def get_categories(): """ @@ -9,9 +10,16 @@ def get_categories(): db.connect() cursor = db.cursor() query = ("SELECT * FROM project_category") - cursor.execute(query) - categories = cursor.fetchall() - cursor.close() + try: + cursor.execute(query) + categories = cursor.fetchall() + except mysql.connector.Error as err: + print("Failed executing query: {}".format(err)) + categories = [] + exit(1) + finally: + cursor.close() + db.close() return categories def set_project(categoryid, userid, project_title, project_description, project_status): @@ -35,11 +43,18 @@ def set_project(categoryid, userid, project_title, project_description, project_ query = ("INSERT INTO projects VALUES (NULL, \"" + categoryid + "\", \"" + userid + "\", \"" + project_title + "\", \"" + project_description + "\", \"" + project_status + "\")") - cursor.execute(query) - db.commit() - cursor.close() - users_projects = get_projects_by_owner(userid) - projectid = users_projects[-1][0] + try: + cursor.execute(query) + db.commit() + users_projects = get_projects_by_owner(userid) + projectid = users_projects[-1][0] + except mysql.connector.Error as err: + print("Failed executing query: {}".format(err)) + projectid = None + exit(1) + finally: + cursor.close() + db.close() return projectid def get_project_by_id(projectid): @@ -53,9 +68,16 @@ def get_project_by_id(projectid): db.connect() cursor = db.cursor() query = ("SELECT * FROM projects WHERE projectid = \"" + projectid + "\"") - cursor.execute(query) - project = cursor.fetchall() - cursor.close() + try: + cursor.execute(query) + project = cursor.fetchall() + except mysql.connector.Error as err: + print("Failed executing query: {}".format(err)) + project = [] + exit(1) + finally: + cursor.close() + db.close() return project[0] def update_project_status(projectid, status): @@ -70,9 +92,15 @@ def update_project_status(projectid, status): cursor = db.cursor() query = ("UPDATE projects SET project_status = \"" + status + "\" WHERE projectid = \"" + projectid + "\"") - cursor.execute(query) - db.commit() - cursor.close() + try: + cursor.execute(query) + db.commit() + except mysql.connector.Error as err: + print("Failed executing query: {}".format(err)) + exit(1) + finally: + cursor.close() + db.close() def get_user_permissions(userid, projectid): """ @@ -88,9 +116,15 @@ def get_user_permissions(userid, projectid): query = ("SELECT read_permission, write_permission, modify_permission \ FROM projects_users WHERE projectid = \"" + projectid + "\" AND userid = \"" + userid + "\"") - cursor.execute(query) - permissions = cursor.fetchall() - cursor.close() + try: + cursor.execute(query) + permissions = cursor.fetchall() + except mysql.connector.Error as err: + print("Failed executing query: {}".format(err)) + exit(1) + finally: + cursor.close() + db.close() if len(permissions): return permissions[0] return [0,0,0] @@ -109,9 +143,16 @@ def get_projects_by_status_and_category(categoryid, project_status): cursor = db.cursor() query = ("SELECT * FROM projects WHERE project_status = \"" + project_status + "\" AND categoryid = \"" + categoryid + "\"") - cursor.execute(query) - projects = cursor.fetchall() - cursor.close() + try: + cursor.execute(query) + projects = cursor.fetchall() + except mysql.connector.Error as err: + print("Failed executing query: {}".format(err)) + projects = [] + exit(1) + finally: + cursor.close() + db.close() return projects def get_projects_by_owner(userid): @@ -124,8 +165,16 @@ def get_projects_by_owner(userid): db.connect() cursor = db.cursor() query = ("SELECT * FROM projects WHERE userid = \"" + userid + "\"") - cursor.execute(query) - projects = cursor.fetchall() + try: + cursor.execute(query) + projects = cursor.fetchall() + except mysql.connector.Error as err: + print("Failed executing query: {}".format(err)) + projects = [] + exit(1) + finally: + cursor.close() + db.close() return projects def get_projects_by_status_and_owner(userid, project_status): @@ -142,8 +191,16 @@ def get_projects_by_status_and_owner(userid, project_status): cursor = db.cursor() query = ("SELECT * FROM projects WHERE project_status = \"" + project_status + "\" AND userid = \"" + userid + "\"") - cursor.execute(query) - projects = cursor.fetchall() + try: + cursor.execute(query) + projects = cursor.fetchall() + except mysql.connector.Error as err: + print("Failed executing query: {}".format(err)) + projects = [] + exit(1) + finally: + cursor.close() + db.close() return projects def get_projects_by_participant_and_status(userid, project_status): @@ -162,8 +219,16 @@ def get_projects_by_participant_and_status(userid, project_status): project_status + "\" AND projects_users.userid = \"" + userid + "\" AND projects_users.projectid = projects.projectid") db.connect() - cursor.execute(query) - projects = cursor.fetchall() + try: + cursor.execute(query) + projects = cursor.fetchall() + except mysql.connector.Error as err: + print("Failed executing query: {}".format(err)) + projects = [] + exit(1) + finally: + cursor.close() + db.close() return projects def set_task(projectid, task_title, task_description, budget): @@ -184,10 +249,16 @@ def set_task(projectid, task_title, task_description, budget): query = ("INSERT INTO tasks (projectid, title, task_description, budget, task_status) VALUES (\"" + projectid + "\", \"" + task_title + "\", \"" + task_description + "\", \"" + budget + "\", \"waiting for delivery\")") - cursor.execute(query) - db.commit() - cursor.close - + try: + cursor.execute(query) + db.commit() + except mysql.connector.Error as err: + print("Failed executing query: {}".format(err)) + exit(1) + finally: + cursor.close() + db.close() + def update_task_status(taskid, status): db.connect() cursor = db.cursor() @@ -208,9 +279,16 @@ def get_tasks_by_project_id(projectid): db.connect() cursor = db.cursor() query = ("SELECT * FROM tasks WHERE projectid = \"" + projectid + "\"") - cursor.execute(query) - tasks = cursor.fetchall() - cursor.close + try: + cursor.execute(query) + tasks = cursor.fetchall() + except mysql.connector.Error as err: + print("Failed executing query: {}".format(err)) + tasks = [] + exit(1) + finally: + cursor.close() + db.close() return tasks def set_task_file(taskid, filename): @@ -226,9 +304,15 @@ def set_task_file(taskid, filename): cursor = db.cursor() query = ("INSERT INTO task_files (taskid, filename) VALUES (\"" + taskid + "\", \"" + filename + "\")") - cursor.execute(query) - db.commit() - cursor.close() + try: + cursor.execute(query) + db.commit() + except mysql.connector.Error as err: + print("Failed executing query: {}".format(err)) + exit(1) + finally: + cursor.close() + db.close() def get_task_files(taskid): """ @@ -240,9 +324,16 @@ def get_task_files(taskid): db.connect() cursor = db.cursor() query = ("SELECT filename FROM task_files WHERE taskid = \"" + str(taskid) + "\"") - cursor.execute(query) - filenames = cursor.fetchall() - cursor.close + try: + cursor.execute(query) + filenames = cursor.fetchall() + except mysql.connector.Error as err: + print("Failed executing query: {}".format(err)) + filenames = [] + exit(1) + finally: + cursor.close() + db.close() return filenames def set_projects_user(projectid, userid, read_permission="TRUE", @@ -264,6 +355,12 @@ def set_projects_user(projectid, userid, read_permission="TRUE", query = ("INSERT INTO projects_users VALUES (\"" + projectid + "\", \"" + userid + "\", " + read_permission + ", " + write_permission + ", " + modify_permission + ")") - cursor.execute(query) - db.commit() - cursor.close() + try: + cursor.execute(query) + db.commit() + except mysql.connector.Error as err: + print("Failed executing query: {}".format(err)) + exit(1) + finally: + cursor.close() + db.close() diff --git a/src/app/models/register.py b/src/app/models/register.py index 289810b..39bccda 100644 --- a/src/app/models/register.py +++ b/src/app/models/register.py @@ -1,4 +1,5 @@ from models.database import db +import mysql.connector def set_user(username, password, full_name, company, email, street_address, city, state, postal_code, country): @@ -31,6 +32,12 @@ def set_user(username, password, full_name, company, email, password + "\", \"" + full_name + "\" , \"" + company + "\", \"" + email + "\", \"" + street_address + "\", \"" + city + "\", \"" + state + "\", \"" + postal_code + "\", \"" + country + "\")") - cursor.execute(query) - db.commit() - cursor.close() + try: + cursor.execute(query) + db.commit() + except mysql.connector.Error as err: + print("Failed executing query: {}".format(err)) + exit(1) + finally: + cursor.close() + db.close() diff --git a/src/app/models/user.py b/src/app/models/user.py index 8156a4a..2ad3df9 100644 --- a/src/app/models/user.py +++ b/src/app/models/user.py @@ -1,4 +1,5 @@ from models.database import db +import mysql.connector def get_users(): """ @@ -8,9 +9,16 @@ def get_users(): db.connect() cursor = db.cursor() query = ("SELECT userid, username from users") - cursor.execute(query) - users = cursor.fetchall() - cursor.close() + try: + cursor.execute(query) + users = cursor.fetchall() + except mysql.connector.Error as err: + print("Failed executing query: {}".format(err)) + users = [] + exit(1) + finally: + cursor.close() + db.close() return users def get_user_id_by_name(username): @@ -25,9 +33,13 @@ def get_user_id_by_name(username): cursor.execute(query) try: userid = cursor.fetchall()[0][0] - except: + except mysql.connector.Error as err: + print("Failed executing query: {}".format(err)) userid = None - cursor.close() + exit(1) + finally: + cursor.close() + db.close() return userid def get_user_name_by_id(userid): @@ -42,8 +54,13 @@ def get_user_name_by_id(userid): cursor.execute(query) try: username = cursor.fetchall()[0][0] - except: + except mysql.connector.Error as err: + print("Failed executing query: {}".format(err)) username = None + exit(1) + finally: + cursor.close() + db.close() cursor.close() return username @@ -64,7 +81,15 @@ def match_user(username, password): cursor.execute(query) try: user = cursor.fetchall()[0] - except: + except mysql.connector.Error as err: + print("Failed executing query: {}".format(err)) user = None - cursor.close() + exit(1) + finally: + cursor.close() + db.close() return user + + + + From b6ed4e59a6b1780c38c60afefaa1486b24022ee5 Mon Sep 17 00:00:00 2001 From: jakobsn Date: Sat, 25 Jan 2020 19:13:02 +0100 Subject: [PATCH 3/3] Remove smtp stuff --- .env | 2 +- .gitignore | 1 + docker-compose.yml | 11 ----------- docker-smtp | 1 - 4 files changed, 2 insertions(+), 13 deletions(-) delete mode 160000 docker-smtp diff --git a/.env b/.env index afb3dca..e53e686 100644 --- a/.env +++ b/.env @@ -1 +1 @@ -groupid=19 +groupid=51 diff --git a/.gitignore b/.gitignore index 6ecb113..f211725 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ __pycache__ src/app/sessions/ +.env diff --git a/docker-compose.yml b/docker-compose.yml index ccff8be..890921f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -21,21 +21,10 @@ services: - "4${groupid}:443" depends_on: - db - - smtp networks: backend: ipv4_address: 10.${groupid}.0.6 - smtp: - build: - context: ./docker-smtp - dockerfile: Dockerfile - restart: always - networks: - backend: - ipv4_address: 10.${groupid}.0.7 - - networks: backend: diff --git a/docker-smtp b/docker-smtp deleted file mode 160000 index 0961794..0000000 --- a/docker-smtp +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 0961794dc8722eb4c8bcbbdf48323ab9e8e4dff7