| @@ -5,6 +5,7 @@ CREATE TABLE users ( | |||||
| password VARCHAR(45) NOT NULL, | password VARCHAR(45) NOT NULL, | ||||
| full_name VARCHAR(200) NOT NULL, | full_name VARCHAR(200) NOT NULL, | ||||
| company VARCHAR(50), | company VARCHAR(50), | ||||
| email VARCHAR(50) NOT NULL, | |||||
| phone_number VARCHAR(50), | phone_number VARCHAR(50), | ||||
| street_address VARCHAR(50), | street_address VARCHAR(50), | ||||
| city VARCHAR(50), | city VARCHAR(50), | ||||
| @@ -18,13 +19,16 @@ CREATE TABLE users ( | |||||
| * Project tables | * Project tables | ||||
| */ | */ | ||||
| /* | |||||
| CREATE TABLE teams ( | CREATE TABLE teams ( | ||||
| teamid INT UNSIGNED AUTO_INCREMENT, | teamid INT UNSIGNED AUTO_INCREMENT, | ||||
| team_name VARCHAR(200) NOT NULL, | team_name VARCHAR(200) NOT NULL, | ||||
| write_permission BOOLEAN, | write_permission BOOLEAN, | ||||
| PRIMARY KEY (teamid) | PRIMARY KEY (teamid) | ||||
| ); | ); | ||||
| */ | |||||
| /* | |||||
| CREATE TABLE teams_users ( | CREATE TABLE teams_users ( | ||||
| teamid INT UNSIGNED NOT NULL, | teamid INT UNSIGNED NOT NULL, | ||||
| userid 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 (teamid) REFERENCES teams(teamid), | ||||
| FOREIGN KEY (userid) REFERENCES users(userid) | FOREIGN KEY (userid) REFERENCES users(userid) | ||||
| ); | ); | ||||
| */ | |||||
| CREATE TABLE project_category ( | CREATE TABLE project_category ( | ||||
| categoryid INT UNSIGNED AUTO_INCREMENT, | categoryid INT UNSIGNED AUTO_INCREMENT, | ||||
| @@ -73,14 +78,14 @@ CREATE TABLE projects_users ( | |||||
| CREATE TABLE tasks ( | CREATE TABLE tasks ( | ||||
| taskid INT UNSIGNED AUTO_INCREMENT, | taskid INT UNSIGNED AUTO_INCREMENT, | ||||
| projectid INT UNSIGNED NOT NULL, | projectid INT UNSIGNED NOT NULL, | ||||
| teamid INT UNSIGNED, | |||||
| /*teamid INT UNSIGNED,*/ | |||||
| title VARCHAR(200) NOT NULL, | title VARCHAR(200) NOT NULL, | ||||
| task_description VARCHAR(500), | task_description VARCHAR(500), | ||||
| budget INT NOT NULL, | budget INT NOT NULL, | ||||
| task_status VARCHAR(64) NOT NULL, -- This should be Waiting for delivery, delivered, accepted and declined delivery | task_status VARCHAR(64) NOT NULL, -- This should be Waiting for delivery, delivered, accepted and declined delivery | ||||
| feedback VARCHAR(500) NULL, | feedback VARCHAR(500) NULL, | ||||
| PRIMARY KEY (taskid), | PRIMARY KEY (taskid), | ||||
| FOREIGN KEY (teamid) REFERENCES teams(teamid), | |||||
| /*FOREIGN KEY (teamid) REFERENCES teams(teamid),*/ | |||||
| FOREIGN KEY (projectid) REFERENCES projects(projectid) | FOREIGN KEY (projectid) REFERENCES projects(projectid) | ||||
| ); | ); | ||||
| @@ -92,6 +97,7 @@ CREATE TABLE task_files ( | |||||
| FOREIGN KEY (taskid) REFERENCES tasks(taskid) | FOREIGN KEY (taskid) REFERENCES tasks(taskid) | ||||
| ); | ); | ||||
| /* | |||||
| CREATE TABLE delivery ( | CREATE TABLE delivery ( | ||||
| deliveryid INT UNSIGNED AUTO_INCREMENT, | deliveryid INT UNSIGNED AUTO_INCREMENT, | ||||
| taskid INT UNSIGNED NOT NULL, | taskid INT UNSIGNED NOT NULL, | ||||
| @@ -106,8 +112,9 @@ CREATE TABLE delivery ( | |||||
| PRIMARY KEY (deliveryid), | PRIMARY KEY (deliveryid), | ||||
| FOREIGN KEY (taskid) REFERENCES tasks(taskid), | FOREIGN KEY (taskid) REFERENCES tasks(taskid), | ||||
| FOREIGN KEY (userid) REFERENCES users(userid) | FOREIGN KEY (userid) REFERENCES users(userid) | ||||
| ); | |||||
| );*/ | |||||
| /* | |||||
| CREATE TABLE task_offer ( | CREATE TABLE task_offer ( | ||||
| offerid INT UNSIGNED AUTO_INCREMENT, | offerid INT UNSIGNED AUTO_INCREMENT, | ||||
| taskid INT UNSIGNED NOT NULL, | taskid INT UNSIGNED NOT NULL, | ||||
| @@ -118,15 +125,15 @@ CREATE TABLE task_offer ( | |||||
| feedback VARCHAR(500), | feedback VARCHAR(500), | ||||
| PRIMARY KEY (offerid), | PRIMARY KEY (offerid), | ||||
| FOREIGN KEY (taskid) REFERENCES tasks(taskid) | FOREIGN KEY (taskid) REFERENCES tasks(taskid) | ||||
| ); | |||||
| );*/ | |||||
| /* | /* | ||||
| * Initial data | * 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"); | |||||
| /* | /* | ||||
| @@ -16,7 +16,10 @@ def get_user_id_by_name(username): | |||||
| cursor = db.cursor() | cursor = db.cursor() | ||||
| query = ("SELECT userid from users WHERE username =\"" + username + "\"") | query = ("SELECT userid from users WHERE username =\"" + username + "\"") | ||||
| cursor.execute(query) | cursor.execute(query) | ||||
| userid = cursor.fetchall()[0][0] | |||||
| try: | |||||
| userid = cursor.fetchall()[0][0] | |||||
| except: | |||||
| userid = None | |||||
| cursor.close() | cursor.close() | ||||
| return userid | return userid | ||||
| @@ -1,6 +1,6 @@ | |||||
| from models.database import db | 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): | street_address, city, state, postal_code, country): | ||||
| """ | """ | ||||
| Register a new user in the database | Register a new user in the database | ||||
| @@ -28,8 +28,8 @@ def set_user(username, password, full_name, company, phone_number, | |||||
| cursor = db.cursor() | cursor = db.cursor() | ||||
| query = ("INSERT INTO users VALUES (NULL, \"" + username + "\", \"" + | query = ("INSERT INTO users VALUES (NULL, \"" + username + "\", \"" + | ||||
| password + "\", \"" + full_name + "\" , \"" + company + "\", \"" + | 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) | cursor.execute(query) | ||||
| db.commit() | db.commit() | ||||
| cursor.close() | cursor.close() | ||||
| @@ -1,4 +1,4 @@ | |||||
| $def with (nav, register_form) | |||||
| $def with (nav, register_form, message) | |||||
| <head> | <head> | ||||
| <title>Beelance2</title> | <title>Beelance2</title> | ||||
| @@ -16,6 +16,8 @@ $def with (nav, register_form) | |||||
| <form method="POST"> | <form method="POST"> | ||||
| $:register_form.render() | $:register_form.render() | ||||
| </form> | </form> | ||||
| <p>$message</p> | |||||
| </body> | </body> | ||||
| <footer></footer> | <footer></footer> | ||||
| @@ -15,6 +15,7 @@ register_form = form.Form( | |||||
| form.Textbox("username", description="Username"), | form.Textbox("username", description="Username"), | ||||
| form.Textbox("full_name", description="Full name"), | form.Textbox("full_name", description="Full name"), | ||||
| form.Textbox("company", description="Company"), | form.Textbox("company", description="Company"), | ||||
| form.Textbox("email", description="Email Address"), | |||||
| form.Textbox("phone_number", description="Phone Number"), | form.Textbox("phone_number", description="Phone Number"), | ||||
| form.Textbox("street_address", description="Street address"), | form.Textbox("street_address", description="Street address"), | ||||
| form.Textbox("city", description="City"), | 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("Remove User", type="submit", description="Remove User", value="remove_user"), | ||||
| form.Button("Apply", type="submit", description="Apply", value="apply") | form.Button("Apply", type="submit", description="Apply", value="apply") | ||||
| ) | ) | ||||
| # Exception will occur if the form only contains one element | |||||
| except TypeError as e: | except TypeError as e: | ||||
| apply_form = form.Form(elements, | apply_form = form.Form(elements, | ||||
| form.Button("Add User", type="submit", description="Add User", value="add_user"), | 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): | def get_user_dropdown(identifier=0): | ||||
| users = get_users() | users = get_users() | ||||
| return form.Dropdown("user_id_" + str(identifier), description="User", args=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"), | |||||
| ) | |||||
| @@ -1,8 +1,10 @@ | |||||
| import web | import web | ||||
| from views.forms import register_form | from views.forms import register_form | ||||
| import models.register | import models.register | ||||
| import models.login | |||||
| from views.utils import get_nav_bar | from views.utils import get_nav_bar | ||||
| import hashlib | import hashlib | ||||
| import re | |||||
| # Get html templates | # Get html templates | ||||
| render = web.template.render('templates/') | render = web.template.render('templates/') | ||||
| @@ -18,7 +20,7 @@ class Register: | |||||
| """ | """ | ||||
| session = web.ctx.session | session = web.ctx.session | ||||
| nav = get_nav_bar(session) | nav = get_nav_bar(session) | ||||
| return render.register(nav, register_form) | |||||
| return render.register(nav, register_form, "") | |||||
| def POST(self): | def POST(self): | ||||
| """ | """ | ||||
| @@ -26,9 +28,29 @@ class Register: | |||||
| :return: Main page | :return: Main page | ||||
| """ | """ | ||||
| session = web.ctx.session | |||||
| nav = get_nav_bar(session) | |||||
| data = web.input() | 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) | |||||