| @@ -65,7 +65,7 @@ CREATE TABLE projects ( | |||||
| FOREIGN KEY (userid) REFERENCES users(userid) | FOREIGN KEY (userid) REFERENCES users(userid) | ||||
| ); | ); | ||||
| CREATE TABLE projects_users ( | |||||
| CREATE TABLE project_users ( | |||||
| projectid INT UNSIGNED NOT NULL, | projectid INT UNSIGNED NOT NULL, | ||||
| userid INT UNSIGNED NOT NULL, | userid INT UNSIGNED NOT NULL, | ||||
| read_permission BOOLEAN, | read_permission BOOLEAN, | ||||
| @@ -119,14 +119,14 @@ def set_task(projectid, task_title, task_description, budget): | |||||
| :type budget: str | :type budget: str | ||||
| """ | """ | ||||
| cursor = db.cursor() | cursor = db.cursor() | ||||
| query = ("INSERT INTO tasks (teamid, projectid, title, task_description, budget, task_status) VALUES (1, \"" + | |||||
| query = ("INSERT INTO tasks (projectid, title, task_description, budget, task_status) VALUES (\"" + | |||||
| projectid + "\", \"" + task_title + "\", \"" + | projectid + "\", \"" + task_title + "\", \"" + | ||||
| task_description + "\", \"" + budget + "\", \"waiting for delivery\")") | task_description + "\", \"" + budget + "\", \"waiting for delivery\")") | ||||
| cursor.execute(query) | cursor.execute(query) | ||||
| db.commit() | db.commit() | ||||
| cursor.close | cursor.close | ||||
| def get_tasks_by_project_id(project_id): | |||||
| def get_tasks_by_project_id(projectid): | |||||
| """ | """ | ||||
| Get all tasks belonging to a project | Get all tasks belonging to a project | ||||
| @@ -135,27 +135,37 @@ def get_tasks_by_project_id(project_id): | |||||
| :return: List of tasks | :return: List of tasks | ||||
| """ | """ | ||||
| cursor = db.cursor() | cursor = db.cursor() | ||||
| query = ("SELECT * FROM tasks WHERE projectid = \"" + project_id + "\"") | |||||
| query = ("SELECT * FROM tasks WHERE projectid = \"" + projectid + "\"") | |||||
| cursor.execute(query) | cursor.execute(query) | ||||
| tasks = cursor.fetchall() | tasks = cursor.fetchall() | ||||
| cursor.close | cursor.close | ||||
| return tasks | return tasks | ||||
| def set_task_file(task_id, filename): | |||||
| def set_task_file(taskid, filename): | |||||
| cursor = db.cursor() | cursor = db.cursor() | ||||
| query = ("INSERT INTO task_files (taskid, filename) VALUES (\"" + | query = ("INSERT INTO task_files (taskid, filename) VALUES (\"" + | ||||
| task_id + "\", \"" + filename + "\")") | |||||
| taskid + "\", \"" + filename + "\")") | |||||
| print(query) | print(query) | ||||
| cursor.execute(query) | cursor.execute(query) | ||||
| db.commit() | db.commit() | ||||
| cursor.close() | cursor.close() | ||||
| def get_task_files(task_id): | |||||
| def get_task_files(taskid): | |||||
| cursor = db.cursor() | cursor = db.cursor() | ||||
| query = ("SELECT filename FROM task_files WHERE taskid = \"" + str(task_id) + "\"") | |||||
| query = ("SELECT filename FROM task_files WHERE taskid = \"" + str(taskid) + "\"") | |||||
| cursor.execute(query) | cursor.execute(query) | ||||
| filenames = cursor.fetchall() | filenames = cursor.fetchall() | ||||
| print(query) | print(query) | ||||
| print(filenames) | print(filenames) | ||||
| cursor.close | cursor.close | ||||
| return filenames | return filenames | ||||
| def set_project_users(projectid, userid, read_permission="TRUE", | |||||
| write_permission="NULL", modify_permission="NULL"): | |||||
| cursor = db.cursor() | |||||
| query = ("INSERT INTO project_users VALUES (\"" + project_id + "\", \"" + | |||||
| userid + "\", \"" + read_permission + "\", \"" + | |||||
| write_permission + "\", \"" + modify_permission + "\"") | |||||
| cursor.execute(query) | |||||
| df.commit() | |||||
| cursor.close() | |||||
| @@ -27,9 +27,9 @@ 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 + "\", \"" + | |||||
| phone_number + "\", \"" + street_address + "\", \"" + city + "\", \"" + | |||||
| state + "\", \"" + postal_code + "\", \"" + country + "\")") | |||||
| password + "\", \"" + full_name + "\" , \"" + company + "\", \"" + | |||||
| phone_number + "\", \"" + street_address + "\", \"" + city + "\", \"" + | |||||
| state + "\", \"" + postal_code + "\", \"" + country + "\")") | |||||
| cursor.execute(query) | cursor.execute(query) | ||||
| db.commit() | db.commit() | ||||
| cursor.close() | cursor.close() | ||||
| @@ -64,6 +64,14 @@ def get_project_form_elements(project_title="", project_description="", category | |||||
| ) | ) | ||||
| return project_form_elements | return project_form_elements | ||||
| def get_user_form_elements(user_name, read_permission, write_permission, modify_permission): | |||||
| user_form_elements = ( | |||||
| form.Textbox("username", description="User", value=user_name), | |||||
| form.Checkbox("read_permission", description="Read Permission", checked=True), | |||||
| form.Checkbox("write_permission", description="Write Permission", checked=False), | |||||
| form.Checkbox("modify_permission", description="Modify Permission", checked=False) | |||||
| ) | |||||
| def get_new_project_form(elements): | def get_new_project_form(elements): | ||||
| """ | """ | ||||
| Combine a project form element and task elements to make a complete project form | Combine a project form element and task elements to make a complete project form | ||||
| @@ -72,6 +80,7 @@ def get_new_project_form(elements): | |||||
| :return: The ready to use project form | :return: The ready to use project form | ||||
| """ | """ | ||||
| return form.Form(*elements, | return form.Form(*elements, | ||||
| form.Button("Add User", type="submit", description="Add User", value="add_user"), | |||||
| form.Button("Add Task", type="submit", description="Add Task", value="add_task"), | form.Button("Add Task", type="submit", description="Add Task", value="add_task"), | ||||
| form.Button("Remove Task", type="submit", description="Remove Task ", value="remove_task"), | form.Button("Remove Task", type="submit", description="Remove Task ", value="remove_task"), | ||||
| form.Button("Create Project", type="submit", description="Create Project", value="create_project") | form.Button("Create Project", type="submit", description="Create Project", value="create_project") | ||||
| @@ -36,13 +36,13 @@ class New_project: | |||||
| try: | try: | ||||
| # Add a set of task fields to the form | # Add a set of task fields to the form | ||||
| if data["Add Task"]: | if data["Add Task"]: | ||||
| project_form = self.compose_form(data, True) | |||||
| project_form = self.compose_form(data, "add_task") | |||||
| return render.new_project(nav, project_form) | return render.new_project(nav, project_form) | ||||
| except Exception as e: | except Exception as e: | ||||
| try: | try: | ||||
| # Remove a set of task fields from the form | # Remove a set of task fields from the form | ||||
| if data["Remove Task"]: | if data["Remove Task"]: | ||||
| project_form = self.compose_form(data, False) | |||||
| project_form = self.compose_form(data, "remove_task") | |||||
| return render.new_project(nav, project_form) | return render.new_project(nav, project_form) | ||||
| except Exception as e: | except Exception as e: | ||||
| try: | try: | ||||
| @@ -71,7 +71,7 @@ class New_project: | |||||
| task_count = int((len(data) - 4) / 3) | task_count = int((len(data) - 4) / 3) | ||||
| return task_count | return task_count | ||||
| def compose_form(self, data, add): | |||||
| def compose_form(self, data, operation): | |||||
| """ | """ | ||||
| Compose a new project form by adding or removing a task | Compose a new project form by adding or removing a task | ||||
| @@ -82,7 +82,7 @@ class New_project: | |||||
| """ | """ | ||||
| task_count = self.get_task_count(data) | task_count = self.get_task_count(data) | ||||
| # A task is either added or removed | # A task is either added or removed | ||||
| if not add and task_count >= 1: | |||||
| if operation == "remove_task" and task_count >= 1: | |||||
| task_count -= 1 | task_count -= 1 | ||||
| project_form_elements = get_project_form_elements(data.project_title, data.project_description, data.category_name) | project_form_elements = get_project_form_elements(data.project_title, data.project_description, data.category_name) | ||||
| @@ -94,10 +94,11 @@ class New_project: | |||||
| data["task_description_"+str(i)], data["budget_"+str(i)]) | data["task_description_"+str(i)], data["budget_"+str(i)]) | ||||
| task_form_elements = (task_form_elements + old_task_form_element) | task_form_elements = (task_form_elements + old_task_form_element) | ||||
| if add: | |||||
| if operation == "add_task": | |||||
| new_task_form_elements = get_task_form_elements(task_count) | 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)) | project_form = get_new_project_form((project_form_elements + task_form_elements + new_task_form_elements)) | ||||
| else: | |||||
| project_form = get_new_project_form((project_form_elements + task_form_elements)) | |||||
| return project_form | |||||
| project_form = get_new_project_form((project_form_elements + task_form_elements)) | |||||
| return project_form | return project_form | ||||