Esempio n. 1
0
def new_item(bucket_id):
    """
    Creates a new bucketlist item.
    """
    # check if bucketlist exists, then validate user input using try-catch block
    bucketlist = Bucketlist.query.filter_by(id=bucket_id,
                                            created_by=g.user.id).first()
    if not bucketlist:
        return jsonify(
            {"Message": "The bucketlist was not found. Please try again"}), 404
    else:
        try:
            item = BucketlistItem()
            sanitized = item.import_data(request.json)
            if sanitized == "Invalid":
                return jsonify({"Message": "The item must have a name"}), 400
        except ValidationError as e:
            return jsonify({"Message": str(e)}), 400

        # check for duplicates before creating the new item
        duplicate = BucketlistItem.query.filter_by(name=item.name,
                                                   bucket=bucket_id).first()
        if not duplicate:
            item.bucket = bucket_id
            item.created_by = g.user.id
            db.session.add(item)
            db.session.commit()
            return jsonify({
                "Message": item.name.title() + " has been created",
                "View it here": item.export_data()
            }), 201
        return jsonify({
            "Message":
            "A bucketlist item with that name already exists. Please try again"
        }), 400
Esempio n. 2
0
    def setUp(self):
        """
        Add bucketlists and items directly to db to avoid using tokens 
        required for POST request.
        """
        app.config.from_object(TestingConfig)
        self.client = app.test_client()
        db.create_all()

        self.client.post("/auth/register",
                         data=json.dumps(
                             dict(username="******", password="******")),
                         content_type="application/json")

        response = self.client.post("/auth/login",
                                    data=json.dumps(
                                        dict(username="******",
                                             password="******")),
                                    content_type="application/json")
        response_msg = json.loads(response.data)
        self.token = response_msg["Token"]

        bucket = {"name": "testbucketlist"}
        test_bucket = Bucketlist()
        test_bucket.import_data(bucket)
        test_bucket.created_by = 1

        bucket2 = {"name": "testbucketlist2"}
        test_bucket2 = Bucketlist()
        test_bucket2.import_data(bucket2)
        test_bucket2.created_by = 1

        bucket3 = {"name": "testbucketlist3"}
        test_bucket3 = Bucketlist()
        test_bucket3.import_data(bucket3)
        test_bucket3.created_by = 2

        item = {"name": "testitem", "done": ""}
        test_item = BucketlistItem()
        test_item.import_data(item)
        test_item.bucket = 1
        test_item.created_by = 1

        db.session.add(test_bucket)
        db.session.add(test_bucket2)
        db.session.add(test_bucket3)
        db.session.add(test_item)
        db.session.commit()