Ejemplo n.º 1
0
def create_job():
    email = request.json.get('email')
    password = request.json.get('password')
    user = User.query.filter_by(email=email).first()
    if user == None:
        return "Incorrect email"

    if bcrypt.check_password_hash(user.password, password):
        if user.customer:
            customer_id = request.json.get('customer_id')
            customer_query = Customer.query.get(customer_id)
            performer_id = request.json.get('performer_id')
            performer_query = Performer.query.get(performer_id)

            title = request.json.get('title')
            start_time = request.json.get('start_time')
            start_time = datetime.strptime(start_time, '%Y-%m-%d,%H:%M')
            end_time = request.json.get('end_time')
            end_time = datetime.strptime(end_time, '%Y-%m-%d,%H:%M')

            address = request.json.get('address')
            price_per_hour = request.json.get('price_per_hour')


            addedjob = Job(customer=customer_query, performer=performer_query,
                           title=title, end_time=end_time,start_time=start_time, address=address, price_per_hour=price_per_hour)
            db.session.add(addedjob)
            db.session.commit()

            job_schema = JobSchema()
            output = job_schema.dump(addedjob).data
            return jsonify(output)
Ejemplo n.º 2
0
def create(job):
    schema = JobSchema()
    new_job = schema.load(job, session=db.session)

    db.session.add(new_job)
    db.session.commit()

    data = schema.dump(new_job)

    return data, 201
Ejemplo n.º 3
0
def read_one(job_id):
    job = (Job.query.filter(Job.job_id == job_id).one_or_none())

    if job is not None:
        job_schema = JobSchema()
        data = job_schema.dump(job)
        return data

    else:
        abort(404, "Job with ID {job_id} not found".format(job_id=job_id))
Ejemplo n.º 4
0
def read_all():
    """
    This function responds to a request for /api/job
    with the complete lists of job
    :return:        json string of list of job
    """
    # Create the list of job from our data
    job = Job.query.order_by(Job.job_id).all()

    # Serialize the data for the response
    job_schema = JobSchema(many=True)
    data = job_schema.dump(job)
    return data
Ejemplo n.º 5
0
def update(job_id, job):
    update_job = Job.query.filter(Job.job_id == job_id).one_or_none()

    if update_job is not None:
        schema = JobSchema()
        up = schema.load(job, session=db.session)
        up.job_id = update_job.job_id

        db.session.merge(up)
        db.session.commit()
        data = schema.dump(update_job)

        return data, 200
    else:
        abort(404, f"Job not found for Id: {job_id}")
Ejemplo n.º 6
0
def read_one(job_id):
    # Get the job requested
    job = Job.query.filter(Job.job_id == job_id).one_or_none()

    # Did we find a job?
    if job is not None:

        # Serialize the data for the response
        job_schema = JobSchema()
        data = job_schema.dump(job)
        return data

    # Otherwise, nope, didn't find that job
    else:
        abort(
            404,
            "Job not found for Id: {job_id}".format(job_id=job_id),
        )
Ejemplo n.º 7
0
def create(job):

    job_id = job.get("job_id")
    app_name = job.get("app_name")
    state = job.get("state")

    existing_job = (Job.query.filter(Job.job_id == job_id).filter(
        Job.app_name == app_name).filter(Job.state == state).one_or_none())

    if existing_job is None:

        # Create a job instance using the schema and the passed in job
        schema = JobSchema()
        new_job = schema.load(job, session=db.session)

        # Add the job to the database
        db.session.add(new_job)
        db.session.commit()

        # Serialize and return the newly created job in the response
        data = schema.dump(new_job)

        return data, 201
Ejemplo n.º 8
0
def list_jobs():

    email = request.json.get('email')
    password = request.json.get('password')
    user = User.query.filter_by(email=email).first()
    if user == None:
        return "Incorrect email"

    if bcrypt.check_password_hash(user.password, password):
        if user.performer:
            user_jobs = Job.query.filter_by(performer=user.performer)
            job_schema = JobSchema(many=True)
            job_output = job_schema.dump(user_jobs).data
        else:
            user_jobs = Job.query.filter_by(customer=user.customer)
            job_schema = JobSchema(many=True)
            job_output = job_schema.dump(user_jobs).data
    else:
        return "Invalid credentials"

    return jsonify({'your jobs are': job_output})
Ejemplo n.º 9
0
def login():
    email = request.json.get('email')
    password = request.json.get('password')
    user = User.query.filter_by(email=email).first()
    if user == None:
        return "Incorrect email"
    if bcrypt.check_password_hash(user.password, password):
        session["user_id"] = user.id
        session["role"] = user.role
        if user.performer:
            performer_schema = PerformerSchema()
            output = performer_schema.dump(user.performer).data
            user_jobs = Job.query.filter_by(performer=user.performer)
            job_schema = JobSchema(many=True)
            job_output = job_schema.dump(user_jobs).data
            for job in job_output:
                job['performer_name'] = user.performer.name
                job['performer_email'] = user.performer.email
                customer_query = Customer.query.get(job['customer'])
                job['customer_name'] = customer_query.name
                job['customer_email'] = customer_query.email

        else:
            customer_schema = CustomerSchema()
            output = customer_schema.dump(user.customer).data
            user_jobs = Job.query.filter_by(customer=user.customer)
            job_schema = JobSchema(many=True)
            job_output = job_schema.dump(user_jobs).data
            for job in job_output:
                job['customer_name'] = user.customer.name
                job['customer_email'] = user.customer.email
                performer_query = Performer.query.get(job['performer'])
                job['performer_name'] = performer_query.name
                job['performer_email'] = performer_query.email

        output['jobs'] = job_output
        return jsonify({'user': output})
    else:
        return "Log in failed"
Ejemplo n.º 10
0
from flask import request
from flask_restful import Resource
from models import db, Job, JobSchema

from .helper import *

job_list_schema = JobSchema(many=True)
job_schema = JobSchema()


# Job
# shows a single job
class JobResource(Resource):
    def get(self, jobID):
        return generic_get_single(Job, jobID, job_schema)

    # Delete Job
    def delete(self, jobID):
        job = Job.query.filter(Job.id == jobID).delete()
        db.session.commit()

        result = job_schema.dump(job).data

        return result, 204


# Job List
# - get to show a list of all jobs
# - post to add a new job
# - put to edit a existing job
# - delete to delete job
Ejemplo n.º 11
0
def read_all():
    job = Job.query.order_by(Job.job_id).all()

    job_schema = JobSchema(many=True)
    data = job_schema.dump(job)
    return data