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)
$project[4]
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 += '