Example #1
0
    def get(self, project_name=None):
        """
        Get Project(s) info
        :param project_name:
        """

        if project_name is None:
            project_name = ""

        get_request = dict()

        if len(project_name) > 0:
            get_request["name"] = project_name

        res = []
        cursor = self.db.test_projects.find(get_request)
        while (yield cursor.fetch_next):
            test_project = TestProject.testproject_from_dict(cursor.next_object())
            res.append(test_project.format_http())

        meta = dict()
        meta["total"] = len(res)
        meta["success"] = True if len(res) > 0 else False

        answer = dict()
        answer["test_projects"] = res
        answer["meta"] = meta

        self.finish_request(answer)
Example #2
0
    def delete(self, project_name):
        """ Remove a test project"""

        print "DELETE request for : {}".format(project_name)

        # check for an existing project to be deleted
        mongo_dict = yield self.db.test_projects.find_one({"name": project_name})
        test_project = TestProject.testproject_from_dict(mongo_dict)
        if test_project is None:
            raise HTTPError(HTTP_NOT_FOUND, "{} could not be found as a project to be deleted".format(project_name))

        # just delete it, or maybe save it elsewhere in a future
        res = yield self.db.test_projects.remove({"name": project_name})
        print res

        self.finish_request({"message": "success"})
Example #3
0
    def post(self):
        """ Create a test project"""

        if self.json_args is None:
            raise HTTPError(HTTP_BAD_REQUEST)

        query = {"name": self.json_args.get("name")}

        # check for name in db
        mongo_dict = yield self.db.test_projects.find_one(query)
        if mongo_dict is not None:
            raise HTTPError(HTTP_FORBIDDEN, "{} already exists as a project".format(self.json_args.get("name")))

        test_project = TestProject.testproject_from_dict(self.json_args)
        test_project.creation_date = datetime.now()

        future = self.db.test_projects.insert(test_project.format())
        result = yield future
        test_project._id = result

        self.finish_request(test_project.format_http())
Example #4
0
    def put(self, project_name):
        """ Updates the name and description of a test project"""

        print "PUT request for : {}".format(project_name)

        query = {"name": project_name}
        mongo_dict = yield self.db.test_projects.find_one(query)
        test_project = TestProject.testproject_from_dict(mongo_dict)
        if test_project is None:
            raise HTTPError(HTTP_NOT_FOUND, "{} could not be found".format(project_name))

        new_name = self.json_args.get("name")
        new_description = self.json_args.get("description")

        # check for payload name parameter in db
        # avoid a request if the project name has not changed in the payload
        if new_name != test_project.name:
            mongo_dict = yield self.db.test_projects.find_one({"name": new_name})
            if mongo_dict is not None:
                raise HTTPError(HTTP_FORBIDDEN, "{} already exists as a project".format(new_name))

        # new dict for changes
        request = dict()
        request = prepare_put_request(request, "name", new_name, test_project.name)
        request = prepare_put_request(request, "description", new_description, test_project.description)

        """ raise exception if there isn't a change """
        if not request:
            raise HTTPError(HTTP_FORBIDDEN, "Nothing to update")

        """ we merge the whole document """
        edit_request = test_project.format()
        edit_request.update(request)

        """ Updating the DB """
        res = yield self.db.test_projects.update({"name": project_name}, edit_request)
        print res
        edit_request["_id"] = str(test_project._id)

        self.finish_request({"message": "success", "content": edit_request})