| @@ -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"); | |||
| /* | |||
| @@ -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 | |||
| @@ -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() | |||
| @@ -1,4 +1,4 @@ | |||
| $def with (nav, register_form) | |||
| $def with (nav, register_form, message) | |||
| <head> | |||
| <title>Beelance2</title> | |||
| @@ -16,6 +16,8 @@ $def with (nav, register_form) | |||
| <form method="POST"> | |||
| $:register_form.render() | |||
| </form> | |||
| <p>$message</p> | |||
| </body> | |||
| <footer></footer> | |||
| @@ -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"), | |||
| ) | |||
| @@ -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) | |||