Sfoglia il codice sorgente

Handle registration input

https
jakobsn 6 anni fa
parent
commit
2ae1eb1d75
6 ha cambiato i file con 52 aggiunte e 22 eliminazioni
  1. +13
    -6
      mysql/sql/init.sql
  2. +4
    -1
      src/app/models/login.py
  3. +3
    -3
      src/app/models/register.py
  4. +3
    -1
      src/app/templates/register.html
  5. +2
    -6
      src/app/views/forms.py
  6. +27
    -5
      src/app/views/register.py

+ 13
- 6
mysql/sql/init.sql Vedi File

@@ -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");


/*


+ 4
- 1
src/app/models/login.py Vedi File

@@ -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



+ 3
- 3
src/app/models/register.py Vedi File

@@ -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()

+ 3
- 1
src/app/templates/register.html Vedi File

@@ -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>

+ 2
- 6
src/app/views/forms.py Vedi File

@@ -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"),
)


+ 27
- 5
src/app/views/register.py Vedi File

@@ -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)


Loading…
Annulla
Salva