| @@ -1,4 +1,4 @@ | |||
| $def with (nav, categories, open_projects) | |||
| $def with (nav) | |||
| <head> | |||
| <title>Beelance2</title> | |||
| @@ -11,17 +11,6 @@ $def with (nav, categories, open_projects) | |||
| $:nav | |||
| <h1 class="title">Open Projects:</h1> | |||
| <div class="categories"> | |||
| $for category in categories: | |||
| <div class="category" onclick="location.href='/?categoryid=$category[0]'">$category[1]</div> | |||
| </div> | |||
| <div class="projects"> | |||
| $for project in open_projects: | |||
| <div class="project"><h4>$project[3]</h4><p>$project[4]</p></div> | |||
| </div> | |||
| <img src="static/honeybee.png" alt="Honeybee"> | |||
| @@ -23,20 +23,37 @@ register_form = form.Form( | |||
| form.Button("Register", type="submit", description="Register"), | |||
| ) | |||
| # Define the project form | |||
| # Define the project form elements | |||
| categories = get_categories() | |||
| project_form = form.Form( | |||
| form.Textbox("project_title", description="Title"), | |||
| form.Textbox("project_description", description="Description"), | |||
| form.Dropdown("category_name", args=categories), | |||
| form.Button("Submit", type="submit", description="submit") | |||
| ) | |||
| # Define the task form elements | |||
| def get_task_form_elements(count=0, task_title="", task_description="", budget=""): | |||
| task_form_elements = ( | |||
| form.Textbox("task_title_" + str(count), description="Title", value=task_title), | |||
| form.Textarea("task_description_" + str(count), description="Description", value=task_description), | |||
| form.Textbox("budget_" + str(count), description="Budget", value=budget) | |||
| ) | |||
| return task_form_elements | |||
| def get_project_form_elements(project_title="", project_description="", category_name=""): | |||
| project_form_elements = ( | |||
| form.Textbox("project_title", description="Title", value=project_title), | |||
| form.Textarea("project_description", description="Description", value=project_description), | |||
| form.Dropdown("category_name", description="Category Name", args=categories) | |||
| #form.Button("Submit", type="submit", description="submit") | |||
| ) | |||
| return project_form_elements | |||
| def get_new_project_form(elements): | |||
| return form.Form(*elements, | |||
| 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("Create Project", type="submit", description="Create Project", value = "create_project") | |||
| ) | |||
| # Define the guestbook form | |||
| guestbook_form = form.Form( | |||
| form.Textbox("entry", description="Entry"), | |||
| form.Button("Submit", type="submit", description="submit") | |||
| ) | |||
| @@ -6,7 +6,7 @@ from views.logout import Logout | |||
| from views.register import Register | |||
| from views.admin import Admin | |||
| from views.project import Project | |||
| from models.project import get_categories, get_projects_by_status_and_category | |||
| from views.my_projects import My_projects | |||
| # Define application routes | |||
| urls = ( | |||
| @@ -15,7 +15,8 @@ urls = ( | |||
| '/logout', 'Logout', | |||
| '/register', 'Register', | |||
| '/guestbook', 'Guestbook', | |||
| '/project', 'Project', | |||
| '/new_project', 'Project', | |||
| '/my_projects', 'My_projects', | |||
| '/admin', 'Admin', | |||
| ) | |||
| @@ -46,10 +47,5 @@ class Index: | |||
| # Get main page | |||
| def GET(self): | |||
| data = web.input(categoryid=0) | |||
| projects=[] | |||
| if data.categoryid != 0: | |||
| open_projects = get_projects_by_status_and_category(data.categoryid, "open") | |||
| nav = get_nav_bar(session) | |||
| categories = get_categories() | |||
| return render.index(nav, categories, open_projects) | |||
| return render.index(nav) | |||
| @@ -1,5 +1,5 @@ | |||
| import web | |||
| from views.forms import project_form | |||
| from views.forms import get_task_form_elements, get_new_project_form, get_project_form_elements | |||
| import models.project | |||
| from views.utils import get_nav_bar | |||
| @@ -12,15 +12,72 @@ class Project: | |||
| def GET(self): | |||
| session = web.ctx.session | |||
| nav = get_nav_bar(session) | |||
| project_form_elements = get_project_form_elements() | |||
| task_form_elements = get_task_form_elements() | |||
| project_form = get_new_project_form((project_form_elements + task_form_elements)) | |||
| return render.project(nav, project_form) | |||
| # Register new user in database | |||
| # Register new project in database | |||
| def POST(self): | |||
| data = web.input() | |||
| session = web.ctx.session | |||
| nav = get_nav_bar(session) | |||
| print(data) | |||
| print(session.userid) | |||
| task_count = self.get_task_count(data) | |||
| try: | |||
| if data["Add Task"]: | |||
| print("tiss") | |||
| project_form = self.compose_form(task_count, data, True) | |||
| return render.project(nav, project_form) | |||
| except Exception as e: | |||
| try: | |||
| if data["Remove Task"]: | |||
| print("ass") | |||
| project_form = self.compose_form(task_count, data, False) | |||
| return render.project(nav, project_form) | |||
| else: | |||
| pass | |||
| except Exception as e: | |||
| try: | |||
| if data["Create Project"]: | |||
| pass | |||
| else: | |||
| pass | |||
| except Exception as e: | |||
| pass | |||
| categories = models.project.set_project(data.category_name, str(session.userid), | |||
| data.project_title, data.project_description, "open") | |||
| print(categories) | |||
| raise web.seeother('/') | |||
| def get_task_count(self, data): | |||
| task_count = 0 | |||
| while True: | |||
| try: | |||
| if data["task_title_"+str(task_count)] or data["task_description_"+str(task_count)] or data["task_budget_"+str(task_count)]: | |||
| task_count += 1 | |||
| except Exception as e: | |||
| pass | |||
| break | |||
| return task_count | |||
| def compose_form(self, task_count, data, add): | |||
| project_form_elements = get_project_form_elements(data.project_title, data.project_description, data.category_name) | |||
| task_form_elements = () | |||
| old_task_form_element = () | |||
| print(task_count) | |||
| for i in range(0, task_count): | |||
| print("i: ", i) | |||
| 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) | |||
| print(len(task_form_elements)) | |||
| if add: | |||
| 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)) | |||
| else: | |||
| project_form = get_new_project_form((project_form_elements + task_form_elements)) | |||
| return project_form | |||
| @@ -9,7 +9,8 @@ def get_nav_bar(session): | |||
| else: | |||
| result += ' <li><a href="register">Register</a></li>' | |||
| result += ' <li><a href="login">Login</a></li>' | |||
| result += ' <li><a href="project">Projects</a></li>' | |||
| result += ' <li><a href="new_project">New</a></li>' | |||
| result += ' <li><a href="my_projects">Projects</a></li>' | |||
| result += ' <li><a href="guestbook">Guestbook</a></li>' | |||
| result += ' </ul>' | |||
| result += '</nav>' | |||