def create_task(): if current_user.roles[0].name != 'ADMIN': return render_template('errors/page_403.html'), 403 if request.method == 'GET': form = CreateTaskForm(request.form) return render_template('create_task.html', form=form) name = request.form['name'] project_id = request.form['project'] project = Project.query.filter_by(id=project_id).first() if project.is_old: actual_hour = request.form.get('actual_hour') else: actual_hour = 0.00 assign_to = request.form['assign_to'] student = db.session.query(Student).get(assign_to) batch = student.batch_id status = request.form['status'] deadline = datetime.strptime(request.form['deadline'], "%m/%d/%Y").date() start_date = datetime.strptime(request.form['start_date'], "%m/%d/%Y").date() semester = db.session.query(Semester)\ .filter(Semester.batch_id == batch)\ .filter(start_date >= Semester.start_date, deadline <= Semester.end_date).first() check_start_date = db.session.query(Project)\ .filter(Project.id == project_id)\ .filter(Project.start_date <= start_date)\ .first() # check_deadline = db.session.query(Project) \ # .filter(Project.id == project_id) \ # .filter(Project.deadline >= deadline) \ # .first() if semester is None: flash( 'Create error! start date and end date need to be within a semester!' ) return redirect('/project/' + project_id) if check_start_date is None: flash('Create error! Earlier than project start date!') return redirect('/project/' + project_id) # if check_deadline is None: # flash('Create error! Exceed project deadline!') # return redirect('/project/' + project_id) planning_hour = (deadline - start_date).days * float( semester.average_intern_hour.intern_hour) / 7 task = Task(name, assign_to, project_id, batch, status, planning_hour, actual_hour, start_date, deadline) task.created_at = datetime.now() db.session.add(task) db.session.commit() flash('Task created') return redirect('/project/' + project_id)