diff --git a/mysql/sql/init.sql b/mysql/sql/init.sql index 39acac4..a8a8231 100644 --- a/mysql/sql/init.sql +++ b/mysql/sql/init.sql @@ -5,6 +5,7 @@ CREATE TABLE users ( password VARCHAR(45) NOT NULL, full_name VARCHAR(200) NOT NULL, company VARCHAR(50), + email VARCHAR(50) NOT NULL, phone_number VARCHAR(50), street_address VARCHAR(50), city VARCHAR(50), @@ -18,13 +19,16 @@ CREATE TABLE users ( * Project tables */ +/* CREATE TABLE teams ( teamid INT UNSIGNED AUTO_INCREMENT, team_name VARCHAR(200) NOT NULL, write_permission BOOLEAN, PRIMARY KEY (teamid) ); +*/ +/* CREATE TABLE teams_users ( teamid INT UNSIGNED NOT NULL, userid INT UNSIGNED NOT NULL, @@ -32,6 +36,7 @@ CREATE TABLE teams_users ( FOREIGN KEY (teamid) REFERENCES teams(teamid), FOREIGN KEY (userid) REFERENCES users(userid) ); +*/ CREATE TABLE project_category ( categoryid INT UNSIGNED AUTO_INCREMENT, @@ -73,14 +78,14 @@ CREATE TABLE projects_users ( CREATE TABLE tasks ( taskid INT UNSIGNED AUTO_INCREMENT, projectid INT UNSIGNED NOT NULL, - teamid INT UNSIGNED, + /*teamid INT UNSIGNED,*/ title VARCHAR(200) NOT NULL, task_description VARCHAR(500), budget INT NOT NULL, task_status VARCHAR(64) NOT NULL, -- This should be Waiting for delivery, delivered, accepted and declined delivery feedback VARCHAR(500) NULL, PRIMARY KEY (taskid), - FOREIGN KEY (teamid) REFERENCES teams(teamid), + /*FOREIGN KEY (teamid) REFERENCES teams(teamid),*/ FOREIGN KEY (projectid) REFERENCES projects(projectid) ); @@ -92,6 +97,7 @@ CREATE TABLE task_files ( FOREIGN KEY (taskid) REFERENCES tasks(taskid) ); +/* CREATE TABLE delivery ( deliveryid INT UNSIGNED AUTO_INCREMENT, taskid INT UNSIGNED NOT NULL, @@ -106,8 +112,9 @@ CREATE TABLE delivery ( PRIMARY KEY (deliveryid), FOREIGN KEY (taskid) REFERENCES tasks(taskid), FOREIGN KEY (userid) REFERENCES users(userid) -); +);*/ +/* CREATE TABLE task_offer ( offerid INT UNSIGNED AUTO_INCREMENT, taskid INT UNSIGNED NOT NULL, @@ -118,15 +125,15 @@ CREATE TABLE task_offer ( feedback VARCHAR(500), PRIMARY KEY (offerid), FOREIGN KEY (taskid) REFERENCES tasks(taskid) -); +);*/ /* * Initial data */ -insert into users values (NULL, "admin", "password", "Admin Modsen", "ntnu", "12345678", "street", "trondheim", "trondheim", "1234", "norway"); +insert into users values (NULL, "admin", "password", "Admin Modsen", "ntnu", 'mail@ntnu.no',"12345678", "street", "trondheim", "trondheim", "1234", "norway"); -insert into project_category values (NULL, "Test"); +insert into project_category values (NULL, "Test Category"); /* diff --git a/src/app/models/login.py b/src/app/models/login.py index 687c8f6..24efc17 100644 --- a/src/app/models/login.py +++ b/src/app/models/login.py @@ -16,7 +16,10 @@ def get_user_id_by_name(username): cursor = db.cursor() query = ("SELECT userid from users WHERE username =\"" + username + "\"") cursor.execute(query) - userid = cursor.fetchall()[0][0] + try: + userid = cursor.fetchall()[0][0] + except: + userid = None cursor.close() return userid diff --git a/src/app/models/register.py b/src/app/models/register.py index 028f62d..be0221c 100644 --- a/src/app/models/register.py +++ b/src/app/models/register.py @@ -1,6 +1,6 @@ from models.database import db -def set_user(username, password, full_name, company, phone_number, +def set_user(username, password, full_name, company, email, phone_number, street_address, city, state, postal_code, country): """ Register a new user in the database @@ -28,8 +28,8 @@ def set_user(username, password, full_name, company, phone_number, cursor = db.cursor() query = ("INSERT INTO users VALUES (NULL, \"" + username + "\", \"" + password + "\", \"" + full_name + "\" , \"" + company + "\", \"" + - phone_number + "\", \"" + street_address + "\", \"" + city + "\", \"" + - state + "\", \"" + postal_code + "\", \"" + country + "\")") + email + "\", \"" + phone_number + "\", \"" + street_address + "\", \"" + + city + "\", \"" + state + "\", \"" + postal_code + "\", \"" + country + "\")") cursor.execute(query) db.commit() cursor.close() diff --git a/src/app/templates/register.html b/src/app/templates/register.html index ba1a49d..31acc0e 100644 --- a/src/app/templates/register.html +++ b/src/app/templates/register.html @@ -1,4 +1,4 @@ -$def with (nav, register_form) +$def with (nav, register_form, message) Beelance2 @@ -16,6 +16,8 @@ $def with (nav, register_form)
$:register_form.render()
+ +

$message

diff --git a/src/app/views/forms.py b/src/app/views/forms.py index e53d27c..5211564 100644 --- a/src/app/views/forms.py +++ b/src/app/views/forms.py @@ -15,6 +15,7 @@ register_form = form.Form( form.Textbox("username", description="Username"), form.Textbox("full_name", description="Full name"), form.Textbox("company", description="Company"), + form.Textbox("email", description="Email Address"), form.Textbox("phone_number", description="Phone Number"), form.Textbox("street_address", description="Street address"), form.Textbox("city", description="City"), @@ -96,6 +97,7 @@ def get_apply_form(elements): form.Button("Remove User", type="submit", description="Remove User", value="remove_user"), form.Button("Apply", type="submit", description="Apply", value="apply") ) + # Exception will occur if the form only contains one element except TypeError as e: apply_form = form.Form(elements, form.Button("Add User", type="submit", description="Add User", value="add_user"), @@ -106,9 +108,3 @@ def get_apply_form(elements): def get_user_dropdown(identifier=0): users = get_users() return form.Dropdown("user_id_" + str(identifier), description="User", args=users) - -# Define the guestbook form -guestbook_form = form.Form( - form.Textbox("entry", description="Entry"), -) - diff --git a/src/app/views/register.py b/src/app/views/register.py index b3f83ee..2203497 100644 --- a/src/app/views/register.py +++ b/src/app/views/register.py @@ -1,8 +1,10 @@ import web from views.forms import register_form import models.register +import models.login from views.utils import get_nav_bar import hashlib +import re # Get html templates render = web.template.render('templates/') @@ -18,7 +20,7 @@ class Register: """ session = web.ctx.session nav = get_nav_bar(session) - return render.register(nav, register_form) + return render.register(nav, register_form, "") def POST(self): """ @@ -26,9 +28,29 @@ class Register: :return: Main page """ + session = web.ctx.session + + nav = get_nav_bar(session) + data = web.input() - models.register.set_user(data.username, hashlib.md5(b'TDT4237' + data.password.encode('utf-8')).hexdigest(), - data.full_name, data.company, data.phone_number, data.street_address, - data.city, data.state, data.postal_code, data.country) - raise web.seeother('/') + + message = "" + + if models.login.get_user_id_by_name(data.username): + message += "Invalid user, already exists. " + + if not re.match(r"[^@]+@[^@]+\.[^@]+", data.email): + message += "Invalid email address. " + + if not len(data.password) > 5: + message += "Invalid password, must be atleast 6 characters long. " + + if len(message) == 0: + models.register.set_user(data.username, hashlib.md5(b'TDT4237' + data.password.encode('utf-8')).hexdigest(), + data.full_name, data.email, data.company, data.phone_number, data.street_address, + data.city, data.state, data.postal_code, data.country) + message += "User Registered. " + + + return render.register(nav, register_form, message)