| @@ -5,7 +5,6 @@ from views.forms import project_form | |||||
| import os | import os | ||||
| from time import sleep | from time import sleep | ||||
| # Get html templates | # Get html templates | ||||
| render = web.template.render('templates/') | render = web.template.render('templates/') | ||||
| @@ -38,63 +37,53 @@ class Project: | |||||
| return render.project(nav, project_form, project, tasks,permissions) | return render.project(nav, project_form, project, tasks,permissions) | ||||
| def POST(self): | def POST(self): | ||||
| print("HELLO") | |||||
| # Get session | # Get session | ||||
| session = web.ctx.session | session = web.ctx.session | ||||
| data = web.input(myfile={}, deliver=None, accepted=None, declined=None) | |||||
| data = web.input(myfile={}, deliver=None, accepted=None, declined=None, projectid=0) | |||||
| fileitem = data['myfile'] | fileitem = data['myfile'] | ||||
| permissions = models.project.get_user_permissions(str(session.userid), data.projectid) | permissions = models.project.get_user_permissions(str(session.userid), data.projectid) | ||||
| tasks = models.project.get_tasks_by_project_id(data.projectid) | tasks = models.project.get_tasks_by_project_id(data.projectid) | ||||
| print(data) | |||||
| # Determine task status | |||||
| # Determine status of the targeted task | |||||
| all_tasks_accepted = True | all_tasks_accepted = True | ||||
| task_waiting = False | task_waiting = False | ||||
| task_delivered = False | task_delivered = False | ||||
| for task in tasks: | for task in tasks: | ||||
| print("TASK", task) | |||||
| print("taskid", data.taskid, "equal", task[0]) | |||||
| if task[0] == int(data.taskid): | if task[0] == int(data.taskid): | ||||
| print("ASDASADSSD", task[6]) | |||||
| if(task[5] == "waiting for delivery" or task[5] == "declined"): | if(task[5] == "waiting for delivery" or task[5] == "declined"): | ||||
| task_waiting = True | task_waiting = True | ||||
| if(task[5] == 'accepted'): | if(task[5] == 'accepted'): | ||||
| task_delivered = True | task_delivered = True | ||||
| print(task_waiting, task_delivered) | |||||
| print(permissions) | |||||
| print(not permissions[1], not task_waiting) | |||||
| # Deliver task | |||||
| if data.deliver and not task_delivered: | if data.deliver and not task_delivered: | ||||
| models.project.update_task_status(data.taskid, "delivered") | models.project.update_task_status(data.taskid, "delivered") | ||||
| # Accept task delivery | |||||
| elif data.accepted: | elif data.accepted: | ||||
| print("accept") | |||||
| models.project.update_task_status(data.taskid, "accepted") | models.project.update_task_status(data.taskid, "accepted") | ||||
| print(data.taskid) | |||||
| # If all tasks are accepted then update project status to finished | |||||
| all_tasks_accepted = True | all_tasks_accepted = True | ||||
| print("================================================") | |||||
| print("================================================") | |||||
| tasks = models.project.get_tasks_by_project_id(data.projectid) | tasks = models.project.get_tasks_by_project_id(data.projectid) | ||||
| for task in tasks: | for task in tasks: | ||||
| print("task", task) | |||||
| if task[5] != "accepted": | if task[5] != "accepted": | ||||
| all_tasks_accepted = False | all_tasks_accepted = False | ||||
| if all_tasks_accepted: | if all_tasks_accepted: | ||||
| models.project.update_project_status(str(data.projectid), "finished") | models.project.update_project_status(str(data.projectid), "finished") | ||||
| # Decline task delivery | |||||
| elif data.declined: | elif data.declined: | ||||
| models.project.update_task_status(data.taskid, "declined") | models.project.update_task_status(data.taskid, "declined") | ||||
| # Test if the file was inserted | |||||
| # Upload file | |||||
| elif fileitem.filename: | elif fileitem.filename: | ||||
| # Check if user has write permission | |||||
| if not permissions[1] or not task_waiting: | if not permissions[1] or not task_waiting: | ||||
| print("Permission denied") | |||||
| raise web.seeother(('/project?projectid=' + data.projectid)) | raise web.seeother(('/project?projectid=' + data.projectid)) | ||||
| data = web.input(projectid=0) | |||||
| fn = fileitem.filename | fn = fileitem.filename | ||||
| print("DATA", data) | |||||
| # Create the project directory if it doesnt exist | # Create the project directory if it doesnt exist | ||||
| path = 'static/project' + data.projectid | path = 'static/project' + data.projectid | ||||
| if not os.path.isdir(path): | if not os.path.isdir(path): | ||||
| @@ -102,18 +91,12 @@ class Project: | |||||
| os.popen(command) | os.popen(command) | ||||
| sleep(0.2) | sleep(0.2) | ||||
| path = path + '/task' + data.taskid | path = path + '/task' + data.taskid | ||||
| print(path) | |||||
| if not os.path.isdir(path): | if not os.path.isdir(path): | ||||
| print(data.taskid) | |||||
| command = 'mkdir ' + path | command = 'mkdir ' + path | ||||
| os.popen(command) | os.popen(command) | ||||
| sleep(0.2) | sleep(0.2) | ||||
| open(path + '/' + fn, 'wb').write(fileitem.file.read()) | open(path + '/' + fn, 'wb').write(fileitem.file.read()) | ||||
| message = 'The file "' + fn + '" was uploaded successfully' | |||||
| models.project.set_task_file(data.taskid, (path + "/" + fn)) | models.project.set_task_file(data.taskid, (path + "/" + fn)) | ||||
| else: | |||||
| message = 'No file was uploaded' | |||||
| raise web.seeother(('/project?projectid=' + data.projectid)) | raise web.seeother(('/project?projectid=' + data.projectid)) | ||||