示例#1
0
def new_job():
    form = JobForm()
    if form.validate_on_submit():
        session = db_session.create_session()
        job = Jobs()
        job.job = form.title.data
        job.team_leader = form.leader_id.data
        job.work_size = form.work_size.data
        job.collaborators = form.collaborators.data
        job.is_finished = form.is_finished.data
        job.creator = current_user.id

        category_id = form.category.data
        category = session.query(CategoryJob).filter(
            CategoryJob.id == category_id).first()
        job.categories.append(category)
        session.commit()

        try:
            current_user.jobs.append(job)
        except:
            pass
        session.merge(current_user)
        session.commit()
        return redirect('/')
    return render_template('new_job.html', title='New job', form=form)
示例#2
0
def add_job():
    form = JobForm()
    if form.validate_on_submit():
        session = db_session.create_session()
        job = Jobs()
        job.job = form.title.data
        job.team_leader = form.leader_id.data
        job.work_size = form.work_size.data
        job.collaborators = form.collaborators.data
        job.is_finished = form.is_finished.data
        job.creator = current_user.id

        category_id = form.category.data
        category = session.query(CategoryJob).filter(
            CategoryJob.id == category_id).first()
        job.categories.append(category)
        session.commit()

        try:
            current_user.jobs.append(job)
        except sqlalchemy.orm.exc.DetachedInstanceError:
            pass
        except sqlalchemy.exc.InvalidRequestError:
            pass
        session.merge(current_user)
        session.commit()
        return redirect('/')
    return render_template('add_job.html', title='Adding a job', form=form)
示例#3
0
def edit_job(id):
    form = JobsForm()
    if request.method == "GET":
        session = db_session.create_session()
        job = session.query(Jobs).filter(Jobs.id == id).first()
        if job:
            form.job.data = job.job
            form.team_leader.data = job.team_leader
            form.work_size.data = job.work_size
            form.collaborators.data = job.collaborators
            form.start_date.data = job.start_date
            form.end_date.data = job.end_date
            form.is_finished.data = job.is_finished
            cats = ""
            for i in job.categories:
                cats += str(i.id) + ","
            form.categories.data = cats[:-1]
        else:
            abort(404)
    if form.validate_on_submit():
        session = db_session.create_session()
        job = session.query(Jobs).filter(Jobs.id == id,
                                         ((Jobs.creator == current_user.id) |
                                          (current_user.id == 1))).first()
        if job:
            creatorr = job.creator
            session.delete(job)
            job = Jobs()
            job.team_leader = form.team_leader.data
            job.job = form.job.data
            job.work_size = form.work_size.data
            job.collaborators = form.collaborators.data
            job.start_date = form.start_date.data
            job.end_date = form.end_date.data
            job.is_finished = form.is_finished.data
            job.creator = creatorr
            for i in job.categories:
                job.categories.remove(HazardCategory(name=i.name))
            categories = HazardCategory(name=form.categories.data)
            job.categories.append(categories)
            session.add(job)
            session.commit()
            return redirect('/page')
        else:
            abort(404)
    return render_template('edit_job.html',
                           title='Редактирование работы',
                           form=form)
示例#4
0
def get_jobs():
    session = db_session.create_session()
    if request.method == "GET":

        def format_for_table(d: dict, categories: list):
            dn = dict()
            dn["Title of activity"] = d['job']
            leader = session.query(User).filter(
                User.id == d['team_leader']).first()
            dn["Team leader"] = f"{leader.surname} {leader.name}"
            dn["Duration"] = f"{d['work_size']} hours"
            dn["List of collaborators"] = d["collaborators"]
            dn["Hazard category"] = ', '.join(
                map(lambda x: str(x.id), categories))
            dn["Is finished"] = "Finished" if d[
                'is_finished'] else "Is not finished"
            return [tuple(dn.keys()), tuple(dn.values()), d['creator']]

        return jsonify([
            format_for_table(i.__dict__, i.categories)
            for i in session.query(Jobs)
        ])
    elif request.method == "POST":
        if not request.json:
            return jsonify({'error': 'Empty request'})
        elif not all(
                key in (rj := request.json) for key in {
                    'team_leader', 'job', 'collaborators', 'is_finished',
                    'work_size', 'job_id', 'current_user_id'
                }):
            return jsonify({'error': 'Bad request'})
        elif session.query(Jobs).get(request.json['job_id']):
            return jsonify(error="Id already exists")
        jobs = Jobs()
        jobs.team_leader = request.json['team_leader']
        jobs.job = request.json['job']
        jobs.collaborators = request.json['collaborators']
        jobs.is_finished = request.json['is_finished']
        jobs.work_size = request.json['work_size']
        jobs.id = request.json["job_id"]
        jobs.creator = request.json['current_user_id']
        session.add(jobs)
        session.commit()
        return jsonify(success="OK")
示例#5
0
def add_job():
    form = JobsForm()
    if request.method == 'POST' and form.validate_on_submit():
        s = db_session.create_session()
        job = Jobs()
        job.team_leader = form.team_leader.data
        job.user = s.query(User).filter(User.id == job.team_leader).first()
        job.job = form.job.data
        job.work_size = form.work_size.data
        job.collaborators = form.collaborators.data
        job.start_date = form.start_date.data
        job.end_date = form.end_date.data
        job.is_finished = form.is_finished.data
        job.creator = current_user.id
        s.add(job)
        s.commit()
        return redirect('/page')
    return render_template('add_job.html', title='Добавление работы',
                           form=form)
示例#6
0
def addjob():
    form = JobForm()
    if form.validate_on_submit():
        session = db_session.create_session()
        jobs = Jobs()
        jobs.team_leader = form.team_leader.data
        jobs.job = form.job.data
        jobs.collaborators = form.collaborators.data
        jobs.is_finished = form.is_finished.data
        jobs.work_size = form.work_size.data
        jobs.creator = current_user.id
        session.add(jobs)
        session.commit()
        return redirect('/')
    if form.errors:
        for k, v in form.errors.items():
            flash(f"Error with input {k}: {v[0]}")
    return render_template("standart.html",
                           form=form,
                           base_title="Add Job",
                           st_title="Adding Job",
                           current_user=current_user,
                           stpath=onepath)