From 3a30675cd405cc0d094af508502dc49c8b7b08eb Mon Sep 17 00:00:00 2001 From: Becky P <64131207+BeckyPauley@users.noreply.github.com> Date: Tue, 18 Aug 2020 15:32:14 +0100 Subject: [PATCH 1/2] Moves resource classes into separate files --- code/app.py | 78 +++--------------------------------------------- code/job.py | 69 ++++++++++++++++++++++++++++++++++++++++++ code/jobslist.py | 8 +++++ 3 files changed, 81 insertions(+), 74 deletions(-) create mode 100644 code/job.py create mode 100644 code/jobslist.py diff --git a/code/app.py b/code/app.py index 1c06826..2164a11 100644 --- a/code/app.py +++ b/code/app.py @@ -1,83 +1,13 @@ from flask import Flask -from flask_restful import Resource, Api, reqparse +from flask_restful import Api + +from job import Job +from jobslist import JobsList app = Flask(__name__) api = Api(app) -jobs = [] - -class Job(Resource): - parser = reqparse.RequestParser() - parser.add_argument( - 'company', - type=str, - required=True, - help="This field cannot be left blank" - ) - parser.add_argument('salary') - parser.add_argument('status') - - def post(self, title): - - if self.check_for_job(title) is not None: - return{'message': "A job with name '{}' already exists".format(title)}, 400 - - data = Job.parser.parse_args() - - job = { - 'title': title, - 'company': data['company'], - 'salary': data['salary'], - 'status': data['status'] - } - jobs.append(job) - - return job, 201 - - def check_for_job(self, title): - for job in jobs: - if job['title'] == title: - return job - return None - - def get(self, title): - job = self.check_for_job(title) - if job: - return {'job': job}, 200 - else: - return{"message": "Job does not exist"}, 404 - - def put(self, title): - - data = Job.parser.parse_args() - - job = self.check_for_job(title) - if job is None: - job = { - 'title': title, - 'company': data['company'], - 'salary': data['salary'], - 'status': data['status'] - } - jobs.append(job), 201 - else: - job.update(data), 200 - return job - - def delete(self, title): - if self.check_for_job(title) is None: - return{'message': "A job with name '{}' does not exist".format(title)}, 400 - global jobs - jobs = list([job for job in jobs if job['title'] != title]) - return {'message': 'Item deleted'}, 200 - - -class JobsList(Resource): - - def get(self): - return {"jobs": jobs}, 200 - api.add_resource(Job, '/job/') api.add_resource(JobsList, '/jobs') diff --git a/code/job.py b/code/job.py new file mode 100644 index 0000000..1f8117e --- /dev/null +++ b/code/job.py @@ -0,0 +1,69 @@ +from flask_restful import Resource, reqparse + +jobs = [] + +class Job(Resource): + parser = reqparse.RequestParser() + parser.add_argument( + 'company', + type=str, + required=True, + help="This field cannot be left blank" + ) + parser.add_argument('salary') + parser.add_argument('status') + + def post(self, title): + + if self.check_for_job(title) is not None: + return{'message': "A job with name '{}' already exists".format(title)}, 400 + + data = Job.parser.parse_args() + + job = { + 'title': title, + 'company': data['company'], + 'salary': data['salary'], + 'status': data['status'] + } + jobs.append(job) + + return job, 201 + + def check_for_job(self, title): + for job in jobs: + if job['title'] == title: + return job + return None + + def get(self, title): + job = self.check_for_job(title) + if job: + return {'job': job}, 200 + else: + return{"message": "Job does not exist"}, 404 + + def put(self, title): + + data = Job.parser.parse_args() + + job = self.check_for_job(title) + if job is None: + job = { + 'title': title, + 'company': data['company'], + 'salary': data['salary'], + 'status': data['status'] + } + jobs.append(job), 201 + else: + job.update(data), 200 + return job + + def delete(self, title): + if self.check_for_job(title) is None: + return{'message': "A job with name '{}' does not exist".format(title)}, 400 + global jobs + jobs = list([job for job in jobs if job['title'] != title]) + return {'message': 'Item deleted'}, 200 + diff --git a/code/jobslist.py b/code/jobslist.py new file mode 100644 index 0000000..ae341a3 --- /dev/null +++ b/code/jobslist.py @@ -0,0 +1,8 @@ +from flask_restful import Resource + +import job + +class JobsList(Resource): + + def get(self): + return {"jobs": job.jobs}, 200 \ No newline at end of file From 0f322d9823d7969f674ee306c80a3445c33b61f4 Mon Sep 17 00:00:00 2001 From: Becky P <64131207+BeckyPauley@users.noreply.github.com> Date: Wed, 19 Aug 2020 10:58:33 +0100 Subject: [PATCH 2/2] Improves job resource --- code/job.py | 60 ++++++++++++++++++++--------------------------------- 1 file changed, 22 insertions(+), 38 deletions(-) diff --git a/code/job.py b/code/job.py index 1f8117e..35c3b2f 100644 --- a/code/job.py +++ b/code/job.py @@ -1,6 +1,6 @@ from flask_restful import Resource, reqparse -jobs = [] +jobs = {} class Job(Resource): parser = reqparse.RequestParser() @@ -15,55 +15,39 @@ class Job(Resource): def post(self, title): - if self.check_for_job(title) is not None: - return{'message': "A job with name '{}' already exists".format(title)}, 400 + if jobs.get(title): + return{'message': f"A job with name '{title}' already exists"}, 400 data = Job.parser.parse_args() - job = { - 'title': title, - 'company': data['company'], - 'salary': data['salary'], - 'status': data['status'] + jobs.update( + {title : { + 'company': data['company'], + 'salary': data['salary'], + 'status': data['status'] + } } - jobs.append(job) - - return job, 201 - - def check_for_job(self, title): - for job in jobs: - if job['title'] == title: - return job - return None + ) + return jobs[title], 201 def get(self, title): - job = self.check_for_job(title) - if job: - return {'job': job}, 200 + if jobs.get(title): + return jobs[title], 200 else: - return{"message": "Job does not exist"}, 404 + return{"message": f"A job with neme {title} does not exist"}, 404 def put(self, title): data = Job.parser.parse_args() - job = self.check_for_job(title) - if job is None: - job = { - 'title': title, - 'company': data['company'], - 'salary': data['salary'], - 'status': data['status'] - } - jobs.append(job), 201 + if jobs.get(title): + jobs[title].update(data), 200 + return jobs[title] else: - job.update(data), 200 - return job + return self.post(title) def delete(self, title): - if self.check_for_job(title) is None: - return{'message': "A job with name '{}' does not exist".format(title)}, 400 - global jobs - jobs = list([job for job in jobs if job['title'] != title]) - return {'message': 'Item deleted'}, 200 - + if jobs.get(title) == None: + return {'message': f"A job with name '{title}' does not exist"}, 400 + jobs.pop(title) + return {'message' : f"{title} deleted"}, 200