def create_job(): if not request.json: return jsonify({'error': 'Empty request'}) elif not all(key in request.json for key in [ 'id', 'job', 'team_leader_id', 'work_size', 'collaborators', 'categories_id', 'is_finished' ]): return jsonify({'error': 'Bad request'}) session = db_session.create_session() if session.query(Jobs).filter(Jobs.id == request.json['id']).first(): return jsonify({'error': 'Id already exists'}) job = Jobs() job.job = request.json['job'] job.id = request.json['id'] job.team_leader_id = request.json['team_leader_id'] job.work_size = request.json['work_size'] job.collaborators = request.json['collaborators'] job.is_finished = request.json['is_finished'] job.team_leader = session.query(User).filter( User.id == request.json['team_leader_id']).first() job.categories_id = request.json['categories_id'] session.add(job) session.commit() for i in request.json['categories_id'].split(', '): job.categories.append( session.query(Category).filter(Category.id == int(i)).first()) session.commit() return jsonify({'success': 'OK'})
def create_job(): if not request.json: return jsonify({'error': 'Empty request'}) elif not all(key in request.json for key in ['job', 'work_size', 'collaborators', 'start_date', 'is_finished', 'team_leader']): return jsonify({'error': 'Bad request'}) db_sess = db_session.create_session() if request.json.get('id'): if db_sess.query(Jobs).filter(Jobs.id == int(request.json['id'])).first(): return jsonify({'error': 'Id already exists'}) job = Jobs( job=request.json['job'], work_size=int(request.json['work_size']), collaborators=request.json['collaborators'], start_date=datetime.datetime.strptime( request.json['start_date'], '%d-%m-%y').date(), is_finished=request.json['is_finished'], team_leader=int(request.json['team_leader']) ) if request.json.get('id'): job.id = int(request.json['id']) if request.json.get('end_date'): job.end_date = datetime.datetime.strptime( request.json['end_date'], '%d-%m-%y').date() db_sess.add(job) db_sess.commit() return jsonify({'success': 'OK'})
def add_job(): form = JobsForm() if form.validate_on_submit(): session = create_session() job = Jobs() job.id = random_id() job.customer = current_user.id job.title = form.title.data job.cost = form.cost.data job.description = form.description.data job.brief = ''.join(form.description.data[:30] + '...') job.category = form.category.data job.category_2 = form.category_2.data UPLOAD_DIR: Path = Path(__file__).parent / 'static/jobs_img' UPLOAD_DIR.mkdir(parents=True, exist_ok=True) for upload in request.files.getlist('images'): filename = secure_filename(upload.filename) if filename != '': save_path = str(UPLOAD_DIR / filename) save_path2 = save_path.split('jobs_img') filename = random_name() save_path = save_path2[0] + 'jobs_img\\' + filename + '.jpg' upload.save(save_path) job.img = '\\static\\jobs_img\\{}.jpg'.format(filename) session.add(job) session.merge(current_user) session.commit() return redirect('/') return render_template('job_add.html', title='Adding a job', 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 post(self): args = parser.parse_args() session = db_session.create_session() if session.query(Jobs).get(args['id']): abort(400, message='Id already exists') abort_if_user_not_found(args['team_leader']) jobs = Jobs() jobs.user = session.query(User).get(args['team_leader']) jobs.id = args['id'] jobs.team_leader = args['team_leader'] jobs.job = args['job'] jobs.work_size = args['work_size'] jobs.collaborators = args['collaborators'] jobs.speciality = args['speciality'] jobs.hazard_category = args['hazard_category'] jobs.is_finished = args['is_finished'] session.add(jobs) session.commit() return jsonify({'success': 'OK'})
def create_jobs(): if not request.json: return jsonify({'error': 'Empty request'}) elif not all(key in request.json for key in [ 'id', 'team_leader', 'collaborators', 'job', 'work_size', 'is_finished' ]): return jsonify({'error': 'Bad request'}) db_sess = db_session.create_session() if db_sess.query(Jobs).filter(Jobs.id == request.json['id']).first(): return jsonify({'error': 'Id already exists'}) jobs = Jobs() jobs.id = request.json['id'] jobs.team_leader = request.json['team_leader'] jobs.collaborators = request.json['collaborators'] jobs.job = request.json['job'] jobs.work_size = request.json['work_size'] jobs.is_finished = request.json['is_finished'] db_sess.add(jobs) db_sess.commit() return jsonify({'success': 'OK'})
def post(self): args = parser.parse_args() session = db_session.create_session() job = session.query(Jobs).get(args['id']) if job: abort(404, message=f"Id {args['id']} already exists") job = Jobs() job.job = args['job'] job.id = args['id'] job.team_leader_id = args['team_leader_id'] job.work_size = args['work_size'] job.collaborators = args['collaborators'] job.is_finished = args['is_finished'] job.team_leader = session.query(User).filter( User.id == args['team_leader_id']).first() job.categories_id = args['categories_id'] session.add(job) session.commit() for i in args['categories_id'].split(', '): job.categories.append( session.query(Category).filter(Category.id == int(i)).first()) session.commit() return jsonify({'success': 'OK'})
def test_delete_invalid(self): resp = requests.delete("127.0.0.1:8080/api/jobs/2020") self.assertEqual({'error': 'Not found'}, resp.json()) def test_delete_valid(self): resp = requests.delete("127.0.0.1:8080/api/jobs/1") self.assertEqual({"success": "OK"}, resp.json()) if __name__ == "__main__": db_session.global_init("db/test_database.db") job_1 = Jobs() job_1.id = 1 job_1.team_leader = 2 job_1 = "Repair broken TV" job_1.work_size = 1 job_1.collaborators = "1,2,3" job_1.start_date = datetime.datetime.now() job_1.end_date = datetime.datetime.now() + datetime.timedelta(1, 2, 3) job_1.is_finished = False job_2 = Jobs() job_1.id = 2 job_1.team_leader = 1 job_1 = "Repair broken spaceship" job_1.work_size = 5
db_session.global_init("database.db") db_sess = db_session.create_session() captain = User() captain.id = 1 captain.surname = "Scott" captain.name = "Ridley" captain.age = 21 captain.position = "captain" captain.speciality = "research engineer" captain.address = "module_1" captain.email = "*****@*****.**" job = Jobs() job.id = 1 job.team_leader = 1 job.job = "deployment of residental modules 1 and 2" job.work_size = 15 job.collaborators = "2, 3" job.start_date = datetime.datetime.now() job.is_finished = False db_sess.add(captain) db_sess.add(job) db_sess.commit() r = requests.delete("http://127.0.0.1:8080/api/jobs/1") assert r.json() == jsonify({"success": "OK"}) r = requests.delete("http://127.0.0.1:8080/api/jobs/2020")