Пример #1
0
def add_task():
    orderer = Worker.get_by_username(g.current_invest.id, current_user.username)
    if not orderer.id:
        flash("Choose investment first.")
        return redirect(url_for("tasks.tasks"))
    form = TaskForm()
    if form.validate_on_submit():
        executor = Worker.get_by_username(g.current_invest.id, form.executor_name.data)
        db.session.add(
            Task(
                description=form.description.data,
                deadline=form.deadline.data,
                priority=form.priority.data,
                orderer=orderer,
                executor=executor,
                progress=0,
                investment_id=g.current_invest.id,
            )
        )
        db.session.commit()
        flash("You have created the task successfully.")
        notification = create_notification(
            worker_id=executor.id,
            n_type="task",
            description=f"You have a new task: '{form.description.data}' from {orderer.users.username}",
        )
        add_notification(r, notification)
        return redirect(url_for("tasks.tasks"))
    return render_template("tasks/form.html", title="Add Task", form=form)
Пример #2
0
def deputed_tasks():
    # TODO wrap queries in functions

    tasks_in_progress = (
        Worker.get_by_username(
            invest_id=g.current_invest.id, username=current_user.username
        )
        .deputed_tasks.filter(Task.progress != 100)
        .order_by(Task.deadline)
        .order_by(Task.priority.desc())
        .all()
    )
    realized_tasks = (
        Worker.get_by_username(
            invest_id=g.current_invest.id, username=current_user.username
        )
        .deputed_tasks.filter(Task.progress == 100)
        .order_by(Task.deadline)
        .order_by(Task.priority.desc())
        .all()
    )
    admin = Worker.is_admin(user_id=current_user.id, investment_id=g.current_invest.id)
    next_page = url_for("tasks.deputed_tasks")
    return render_template(
        "tasks/tasks.html",
        title="Deputed Tasks",
        tasks_in_progress=tasks_in_progress,
        realized_tasks=realized_tasks,
        admin=admin,
        next_page=next_page,
    )
Пример #3
0
def edit_task():
    _id = request.args.get("_id")
    next_page = request.args.get("next_page")
    if not next_page:
        next_page = url_for("tasks.tasks")
    task = Task.query.get(int(_id))
    if task:
        form = TaskForm()
        if form.validate_on_submit():
            task.description = form.description.data
            task.deadline = form.deadline.data
            task.priority = form.priority.data
            if form.executor_name != task.executor.users.username:
                task.executor = Worker.get_by_username(
                    invest_id=g.current_invest.id, username=form.executor_name.data
                )
            db.session.commit()
            flash("You have edited the task successfully.")
            return redirect(next_page)
        elif request.method == "GET":
            form.description.data = task.description
            form.deadline.data = task.deadline
            form.priority.data = task.priority
            form.executor_name.data = task.executor.users.username
        return render_template("tasks/form.html", title="Edit Task", form=form)
    return redirect(next_page)
Пример #4
0
 def validate_executor_name(self, executor_name):
     if not Worker.get_by_username(g.current_invest.id,
                                   executor_name.data).id:
         raise ValidationError(
             "We can not find worker with this name. Check typing and try again."
         )
Пример #5
0
def before_request():
    if current_user.is_authenticated:
        current_user.update_last_activity()
        g.current_invest = current_user.get_current_invest()
        g.current_worker = Worker.get_by_username(g.current_invest.id,
                                                  current_user.username)
Пример #6
0
 def test_get_coming_tasks(add_tasks):
     user = User.query.filter_by(username="******").first()
     investment = Investment.query.filter_by(name="Test Invest").first()
     worker = Worker.get_by_username(investment.id, user.username)
     task = Task.query.filter_by(description="test task 2").first()
     assert worker.get_coming_tasks() == [task]
Пример #7
0
 def test_get_new_tasks(add_tasks):
     user = User.query.filter_by(username="******").first()
     investment = Investment.query.filter_by(name="Test Invest").first()
     worker = Worker.get_by_username(investment.id, user.username)
     assert worker.last_time_tasks_displayed
     assert worker.get_new_tasks()