예제 #1
0
class LoginAPI(Resource):
    def __init__(self):
        super(LoginAPI, self).__init__()

    user_args = {
        "email": fields.Str(required=True),
        "password": fields.Str(required=True)
    }

    @use_args(user_args, location="json")
    def post(self, args):
        email = args['email']
        password = args['password']

        rst, user = search_user(email)

        if not rst:
            raise UnauthorizedError

        if not check_password_hash(user[0][1], password): 
            raise UnauthorizedError

        expires = datetime.timedelta(minutes=60)
        token = {'AccessToken': create_access_token(identity=email, expires_delta=expires, fresh=True),
                 'RefreshToken': create_refresh_token(identity=email)}
        return jsonify(token)
예제 #2
0
class ProjectListAPI(Resource):
    def __init__(self):
        super(ProjectListAPI, self).__init__()

    # Return project list

    @jwt_required
    @use_args({"type": fields.Str(required=True)}, location="query") # authorized or owner
    def get(self, args):
        email = get_jwt_identity()
        typeList = args['type']

        if (typeList != AUTHORIZED and typeList != OWNER):
            raise InvalidTypeListError

        if typeList == AUTHORIZED:
            project_list = all_project_list(email)
        else:
            project_list = own_project_list(email)

        if project_list == []:
            return {"Error": "There are no projects"}

        project_list = json.dumps([{"projectId": project[0],
                                    "projectName": project[1],
                                    "projectOwner": project[2],
                                    "phenomenon": project[3],
                                    "tuplesize": project[4],
                                    "replicate": project[5],
                                    "Location": url_for('project', id=project[0], _external=True)}
                                   for project in project_list])

        project_list_json = json.loads(project_list)

        return project_list_json
예제 #3
0
class NinjsSchema(Schema):
        id = fields.Str()
        uri = fields.Str()
        type = fields.Str()
        versioncreated = fields.Str()
        byline = fields.Str()
        headline = fields.Str()
        body_text = fields.Str()
        body_xhtml = fields.Str()
예제 #4
0
class DisableResponseSchema(Schema):
    id = fields.Str(default='Success')
    name = fields.Str(default='Success')
    email = fields.Str(default='Success')
    mobile = fields.Str(default='Success')
    exams = fields.Str(default='Success')
    ratings = fields.Str(default='Success')
예제 #5
0
class CreateTaskAPI(MethodResource, Resource):
    args = {
        'content': fields.Str(
            required=True,
        ),
    }
    @doc(description='Create  Task with content', tags=['Task'])
    @marshal_with(TasksResponseSchema)
    @use_kwargs(args)
    def post(self,content):
        NewTask = TaskContainer(content=content, table_name="TODO")

        try:
            db.session.add(NewTask)
            db.session.commit()

            return jsonify(result="SUCCESS")
        except:
            return jsonify(result="ERROR - create new task error")
예제 #6
0
    return jsonify({"companies": [i.as_dict() for i in companies()]})


@app.route("/companies/<int:company_id>", methods=["GET"])
def route_company_get_by_id(company_id):
    company = Company.query.filter(Company.id == company_id).first()
    if not company:
        return abort(
            400, "The company with id: {0} does not exists".format(company_id))
    return jsonify(company.as_dict())


@app.route("/companies", methods=["POST"])
@marshal_with(CompanySchema())
@use_kwargs({
    "name": fields.Str(),
    "description": fields.Str(),
    "company_type": fields.Str(),
})
def route_company_create(name, description, company_type):
    if company_type.lower() not in ["buyer", "seller"]:
        return abort(
            400,
            "{0} is not a valid company type. Please choose buyer or seller.".
            format(company_type))
    company = Company(
        name=name,
        description=description,
        company_type=company_type,
    )
    db.session.add(company)
예제 #7
0
class UsersAPI(Resource):
    def __init__(self):
        super(UsersAPI, self).__init__()

    user_args = {
        "email": fields.Str(required=True),
        "password": fields.Str(required=True)
    }

    # Insert a new user
    @use_args(user_args, location="json")
    def post(self, args):
        email = args['email']
        password = args['password']
        
        regex = "^.+@(\[?)[a-zA-Z0-9-.]+.([a-zA-Z]{2,3}|[0-9]{1,3})(]?)$"
        pat = re.compile(regex)
        if not re.search(pat,email): 
            raise InvalidEmailError

        regex = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[A-Za-z\d@$!#%*?&]{6,20}$"
        pat = re.compile(regex)
        if not re.search(pat,password): 
            raise InvalidPasswordError
    
        password = generate_password_hash(password)

        result, msg = insert_user(email, password)
        if not result:
            raise EmailAlreadyExistsError

        with open('templates/welcome.html', 'r') as f:
            body = f.read()
         
        body = Template(body).safe_substitute(user=email)
        
        mail = {
        'from' : '*****@*****.**',
        'object' : 'LITESCALE - CONFIRM REGISTRATION',
        'message' : body 
        }
        
        # Connect to server
        server = smtplib.SMTP_SSL('out.virgilio.it', 465)
        # Login
        server.login(mail['from'], "6$ki7M!n8y3a2zc")
        # Send mail
        msg = MIMEText(mail['message'], 'html', 'utf-8')
        msg['Subject'] = mail['object']
        msg['From'] = mail['from']
        msg['To'] = email 
        server.sendmail(mail['from'], email, msg.as_string())
        
        return {"result" : "True"}

    # Delete user
    @fresh_jwt_required
    def delete(self):
        email = get_jwt_identity()

        rst, msg = delete_user(email)

        if not rst:
            raise ResourceNotFoundError

        return {"result": "True"}
예제 #8
0
class NexusSchema(Schema):
        id = fields.Str()
        self = fields.Str()
        query = fields.Str()
        policy = fields.Str()
예제 #9
0
    orders = Order.query.all
    return jsonify({"orders":[i.as_dict() for i in orders()]})

@app.route("/orders/<int:order_id>", methods=["GET"])
def route_order_get_by_id(order_id):
    order = Order.query.filter(Order.id == order_id).first()
    if not order:
      return abort(400, "The order with id: {0} does not exists".format(order_id))
    return jsonify(order.as_dict())


@app.route("/orders", methods=["POST"])
@marshal_with(OrderSchema())
@use_kwargs(
    {
        "name": fields.Str(),
        "description": fields.Str(),
        "buyer_id": fields.Int(),
        "seller_id": fields.Int(),
        "lineitems": fields.List(fields.Dict(), required=True),
    }
)
def route_order_create(name, description, buyer_id, seller_id, lineitems):
    buyer = Company.query.filter(Company.id == buyer_id).first()
    seller = Company.query.filter(Company.id == seller_id).first()
    order_items = []
    order = Order(
        name=name,
        description=description,
        buyer=buyer,
        seller=seller,
예제 #10
0
class TicketsSchema(Schema):
    id = fields.Str()
    self = fields.Str()
    use = fields.Str()
    asset = fields.Str()
예제 #11
0
class ExamResponseSchema(Schema):
    exam_name = fields.Str(default='Success')
    exam_date = fields.Str(default='Success')
    exam_start_time = fields.Str(default='Success')
    exam_end_time = fields.Str(default='Success')
    exam_centre_addr = fields.Str(default='Success')
    exam_city = fields.Str(default='Success')
    exam_area_pincode = fields.Str(default='Success')
    skills_preference = fields.Str(default='Success')
    gender_preference = fields.Str(default='Success')
    language_preference = fields.Str(default='Success')
    disabled_id = fields.Str(default='Success')
    volunteer_id = fields.Str(default='Success')
예제 #12
0
class VolunteerResponseSchema(Schema):
    password = fields.Str(default='Success')
    name = fields.Str(default='Success')
    email = fields.Str(default='Success')
    mobile = fields.Str(default='Success')
    gender = fields.Str(default='Success')
    city_town_village = fields.Str(default='Success')
    state = fields.Str(default='Success')
    pincode = fields.Str(default='Success')
    language_1 = fields.Str(default='Success')
    language_2 = fields.Str(default='Success')
    language_3 = fields.Str(default='Success')
    highest_degree = fields.Str(default='Success')
예제 #13
0
class TasksResponseSchema(Schema):
    message = fields.Str(default='Success')