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