From fd9b18cee6f0076cf0853e9c067e8b7042682ef8 Mon Sep 17 00:00:00 2001 From: jakobsn Date: Thu, 7 Nov 2019 17:55:44 +0100 Subject: [PATCH] Add task to project frontend --- src/app/templates/index.html | 13 +------- src/app/views/forms.py | 35 ++++++++++++++----- src/app/views/index.py | 12 +++---- src/app/views/project.py | 65 +++++++++++++++++++++++++++++++++--- src/app/views/utils.py | 3 +- 5 files changed, 94 insertions(+), 34 deletions(-) diff --git a/src/app/templates/index.html b/src/app/templates/index.html index c6d7134..5465897 100644 --- a/src/app/templates/index.html +++ b/src/app/templates/index.html @@ -1,4 +1,4 @@ -$def with (nav, categories, open_projects) +$def with (nav) Beelance2 @@ -11,17 +11,6 @@ $def with (nav, categories, open_projects) $:nav -

Open Projects:

- -
- $for category in categories: -
$category[1]
-
- -
- $for project in open_projects: -

$project[3]

$project[4]

-
Honeybee diff --git a/src/app/views/forms.py b/src/app/views/forms.py index 9b4cdf8..9c0351b 100644 --- a/src/app/views/forms.py +++ b/src/app/views/forms.py @@ -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") + ) diff --git a/src/app/views/index.py b/src/app/views/index.py index d7ccf95..aa56629 100644 --- a/src/app/views/index.py +++ b/src/app/views/index.py @@ -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) diff --git a/src/app/views/project.py b/src/app/views/project.py index 70829d9..9634a98 100644 --- a/src/app/views/project.py +++ b/src/app/views/project.py @@ -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 + diff --git a/src/app/views/utils.py b/src/app/views/utils.py index e5434a5..4437310 100644 --- a/src/app/views/utils.py +++ b/src/app/views/utils.py @@ -9,7 +9,8 @@ def get_nav_bar(session): else: result += '
  • Register
  • ' result += '
  • Login
  • ' - result += '
  • Projects
  • ' + result += '
  • New
  • ' + result += '
  • Projects
  • ' result += '
  • Guestbook
  • ' result += ' ' result += ''