Selaa lähdekoodia

checkpoint

https
jakobsn 6 vuotta sitten
vanhempi
commit
2c79fbe461
5 muutettua tiedostoa jossa 77 lisäystä ja 92 poistoa
  1. +2
    -3
      src/app/views/apply.py
  2. +10
    -17
      src/app/views/forms.py
  3. +45
    -71
      src/app/views/new_project.py
  4. +1
    -1
      src/app/views/register.py
  5. +19
    -0
      src/app/views/utils.py

+ 2
- 3
src/app/views/apply.py Näytä tiedosto

@@ -1,9 +1,8 @@
import web
import models.project
from models.login import get_user_name_by_id
from views.utils import get_nav_bar
from views.utils import get_nav_bar, get_element_count
from views.forms import get_apply_form, get_user_dropdown
from views.new_project import get_user_count

# Get html templates
render = web.template.render('templates/')
@@ -68,7 +67,7 @@ class Apply:
def get_applicants(self, data, operation):
print(operation)
print(data)
user_count = get_user_count(data)
user_count = get_element_count(data, "user_name_")
print("count", user_count)
applicants = []
for i in range (0, user_count):


+ 10
- 17
src/app/views/forms.py Näytä tiedosto

@@ -3,6 +3,12 @@ from models.project import get_categories
from models.login import get_users, get_user_id_by_name


# Regex for input validation
vemail = form.regexp(r".*@.*", "- Must be a valid email address")
vpass = form.regexp(r".{6,100}$", '- Must be atleast 6 characters long')
number = form.regexp(r"^[1-9]+$", "- Must be a number")
not_empty = form.regexp(r".+", "- This field is required")

# Define the login form
login_form = form.Form(
form.Textbox("username", description="Username"),
@@ -11,10 +17,6 @@ login_form = form.Form(
form.Button("Log In", type="submit", description="Login"),
)

vemail = form.regexp(r".*@.*", "- Must be a valid email address")
vpass = form.regexp(r".{6,100}$", '- Must be atleast 6 characters long')
number = form.regexp(r"^[1-9]+$", "- Must be a number")
not_empty = form.regexp(r".+", "- This field is required")
# Define the register form
register_form = form.Form(
form.Textbox("username", not_empty, description="Username"),
@@ -70,24 +72,15 @@ def get_project_form_elements(project_title="", project_description="", category
return project_form_elements

def get_user_form_elements(identifier=0, user_name="", read_permission=True, write_permission=False, modify_permission=False):
users = get_users()
user_form_elements = (
form.Textbox("user_name_" + str(identifier), description="User", value=user_name),
form.Checkbox("read_permission_" + str(identifier), description="Read Permission", checked=read_permission),
form.Checkbox("write_permission_" + str(identifier), description="Write Permission", checked=write_permission),
form.Checkbox("modify_permission_" + str(identifier), description="Modify Permission", checked=modify_permission)
form.Checkbox("read_permission_" + str(identifier), description="Read Permission", checked=read_permission, value=True),
form.Checkbox("write_permission_" + str(identifier), description="Write Permission", checked=write_permission, value=True),
form.Checkbox("modify_permission_" + str(identifier), description="Modify Permission", checked=modify_permission, value=True)
)
return user_form_elements

def get_new_project_form(elements):
"""
Combine a project form element and task elements to make a complete project form

:param elemets: All the project and task form elements
:return: The ready to use project form
"""
return form.Form(*elements)

# Define buttons to modify the project form or create a project
project_buttons = form.Form(
form.Button("add_user", type="submit", description="Add User", value="add_user", html="Add User"),
form.Button("remove_user", type="submit", description="Remove User", value="remove_user", html="Remove User"),


+ 45
- 71
src/app/views/new_project.py Näytä tiedosto

@@ -1,8 +1,9 @@
import web
from views.forms import get_task_form_elements, get_new_project_form, get_project_form_elements, get_user_form_elements, project_buttons
from web import form
from views.forms import get_task_form_elements, get_project_form_elements, get_user_form_elements, project_buttons
import models.project
import models.login
from views.utils import get_nav_bar
from views.utils import get_nav_bar, get_element_count

# Get html templates
render = web.template.render('templates/')
@@ -17,10 +18,12 @@ class New_project:
"""
session = web.ctx.session
nav = get_nav_bar(session)

# Retrive the required components to compose the form
project_form_elements = get_project_form_elements()
task_form_elements = get_task_form_elements()
user_form_elements = get_user_form_elements()
project_form = get_new_project_form((project_form_elements + task_form_elements + user_form_elements))
project_form = form.Form(*(project_form_elements + task_form_elements + user_form_elements))
return render.new_project(nav, project_form, project_buttons, "")

def POST(self):
@@ -61,8 +64,8 @@ class New_project:
if not project_form.validates():
return render.new_project(nav, project_form, project_buttons, "")

task_count = get_task_count(data)
user_count = get_user_count(data)
task_count = get_element_count(data, "task_title_")
user_count = get_element_count(data, "user_name_")

# If there already are users assignet to the project the status will be set to in progress
status = "open"
@@ -72,7 +75,7 @@ class New_project:
# Validate the input user names
for i in range(0, user_count):
if len(data["user_name_"+str(i)]) and not models.login.get_user_id_by_name(data["user_name_"+str(i)]):
return render.register(nav, project_form, project_buttons, "Invalid user: " + data["user_name_"+str(i)])
return render.new_project(nav, project_form, project_buttons, "Invalid user: " + data["user_name_"+str(i)])

# Save the project to the database
projectid = models.project.set_project(data.category_name, str(session.userid),
@@ -83,7 +86,7 @@ class New_project:
models.project.set_task(str(projectid), (data["task_title_" + str(i)]),
(data["task_description_" + str(i)]), (data["budget_" + str(i)]))
# Save the users in the database
# Save the users in the database given that the input field is not empty
for i in range(0, user_count):
if len(data["user_name_"+str(i)]):
userid = models.login.get_user_id_by_name(data["user_name_"+str(i)])
@@ -106,7 +109,6 @@ class New_project:
except Exception as e:
# This error will be raised if no permission is set
modify = "FALSE"
raise e
models.project.set_projects_user(str(projectid), str(userid), read, write, modify)
@@ -117,92 +119,64 @@ class New_project:
Compose a new project form by adding or removing a task

:param data: The data object from web.input
:param add: True or False
:type add: boolean
:return: A complete project form object
:param operation: Can be one of the four: add_task, add_user, remove_task, remove user
:type operation: str
:return: A project form object with all the required input fields
"""
task_count = get_task_count(data)
user_count = get_user_count(data)
print(user_count)
task_count = get_element_count(data, "task_title_")
user_count = get_element_count(data, "user_name_")
if operation == "remove_task" and task_count > 1:
task_count -= 1

if operation == "remove_user" and user_count >=1:
user_count -= 1
# Recreate project form fields
project_form_elements = get_project_form_elements(data.project_title, data.project_description, data.category_name)
task_form_elements = ()
user_form_elements = ()

# Recreate task form fields
task_form_elements = ()
for i in range(0, task_count):
old_task_form_element = get_task_form_elements(i, data["task_title_"+str(i)],
data["task_description_"+str(i)], data["budget_"+str(i)])
task_form_elements = (task_form_elements + old_task_form_element)

# Recreate user form fields
user_form_elements = ()
for i in range(0, user_count):

read, write, modify = "FALSE", "FALSE", "FALSE"
try:
old_user_form_element = get_user_form_elements(i, data["user_name_"+str(i)],
data["read_permission_"+str(i)], data["write_permission_"+str(i)], data["modify_permission_"+str(i)])
user_form_elements = (user_form_elements + old_user_form_element)
data["read_permission_"+str(i)]
read = True
except Exception as e:
try:
old_user_form_element = get_user_form_elements(i, data["user_name_"+str(i)],
data["read_permission_"+str(i)], data["write_permission_"+str(i)])
user_form_elements = (user_form_elements + old_user_form_element)
pass
except Exception as e:
try:
old_user_form_element = get_user_form_elements(i, data["user_name_"+str(i)],
data["read_permission_"+str(i)])
user_form_elements = (user_form_elements + old_user_form_element)
pass
except Exception as e:
try:
old_user_form_element = get_user_form_elements(i, data["user_name_"+str(i)])
user_form_elements = (user_form_elements + old_user_form_element)
pass
except Exception as e:
raise e
read = False
pass
try:
data["write_permission_"+str(i)]
write = True
except Exception as e:
write = False
pass
try:
data["modify_permission_"+str(i)]
modify = True
except Exception as e:
# This error will be raised if no permission is set
modify = False
pass
old_user_form_element = get_user_form_elements(i, data["user_name_"+str(i)], read, write, modify)
user_form_elements = (user_form_elements + old_user_form_element)

if operation == "add_task":
new_task_form_elements = get_task_form_elements(task_count)
project_form = get_new_project_form((project_form_elements + task_form_elements + new_task_form_elements + user_form_elements))
project_form = form.Form(*(project_form_elements + task_form_elements + new_task_form_elements + user_form_elements))
return project_form

if operation == "add_user":
new_user_form_elements = get_user_form_elements(user_count)
project_form = get_new_project_form((project_form_elements + task_form_elements + user_form_elements + new_user_form_elements))
project_form = form.Form(*(project_form_elements + task_form_elements + user_form_elements + new_user_form_elements))
return project_form

project_form = get_new_project_form((project_form_elements + task_form_elements + user_form_elements))
project_form = form.Form(*(project_form_elements + task_form_elements + user_form_elements))
return project_form
def get_task_count(data):
"""
Determine the number of tasks created by removing
the four other elements from count and divide by the
number of variables in one task.
:param data: The data object from web.input
:return: The number of tasks opened by the client
"""
task_count = 0
while True:
try:
data["task_title_"+str(task_count)]
task_count += 1
except:
break
return task_count

def get_user_count(data):
user_count = 0
while True:
try:
data["user_name_"+str(user_count)]
user_count += 1
except:
break
return user_count

+ 1
- 1
src/app/views/register.py Näytä tiedosto

@@ -33,7 +33,7 @@ class Register:
data = web.input()

register = register_form()
if not f.validates():
if not register.validates():
return render.register(nav, register, "All fields must be valid.")

# Check if user exists


+ 19
- 0
src/app/views/utils.py Näytä tiedosto

@@ -19,3 +19,22 @@ def get_nav_bar(session):
result += ' </ul>'
result += '</nav>'
return result

def get_element_count(data, element):
"""
Determine the number of tasks created by removing
the four other elements from count and divide by the
number of variables in one task.
:param data: The data object from web.input
:return: The number of tasks opened by the client
"""
task_count = 0
while True:
try:
data[element+str(task_count)]
task_count += 1
except:
break
return task_count

Loading…
Peruuta
Tallenna