Ejemplo n.º 1
0
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)