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)
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)
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)
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")
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)
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)