Esempio n. 1
0
    def post(self, name):
        project_parse = reqparse.RequestParser()
        project_parse.add_argument('name',
                                   type=non_empty_string,
                                   required=True,
                                   help='Name is required')
        project_parse.add_argument('description',
                                   type=non_empty_string,
                                   required=True,
                                   help="description is required")
        project_parse.add_argument('project_color_identity',
                                   type=non_empty_string,
                                   required=True,
                                   help="project_color_identity is required")

        project = ProjectModel.find_by_name(name)
        if project:
            return {
                "ProjectAlreadyExistsError": {
                    "message": "Project with given name already exists",
                    "status": 400
                }
            }

        data = project_parse.parse_args()
        project = ProjectModel(data['name'], data['description'],
                               get_jwt_identity(),
                               data['project_color_identity'])
        project.save_to_db()
        return {"message": "Project Created", "status": 200}
Esempio n. 2
0
def create():
    # Process data
    dataJSON = json.loads(request.form['data'])
    audio = request.files['audio']
    data, error = project_schema.load(dataJSON)

    # If an error, return status code (400).
    if error:
        return custom_response(error, 400)

    # Add audio to bucket
    if minioClient.bucket_exists(data['username']):
        minioClient.put_object(data['username'], data['name'], audio,
                               dataJSON['audioSize'])
    else:
        return custom_response(
            'User does not exist for the project you are creating!', 400)

    # Save the model
    project = ProjectModel(data)
    user = UserModel.query.filter_by(username=project.username).first()
    user.projects.append(project)
    project.save()
    UserModel.commit()

    # Send a successful response to the client.
    return custom_response(data, 201)
Esempio n. 3
0
 def post(self):
     """This method handle the creation of new Projects"""
     data = PARSER.parse_args()
     owner = get_jwt_identity()
     project = ProjectModel(data.title, data.description, owner)
     res = project.insert()
     return {'message': res['message']}
Esempio n. 4
0
    def setUp(self) -> None:
        """Create all db tables before each test"""
        self.client = app.test_client()
        self.app_context = app.app_context()

        with self.app_context:
            db.create_all()

            self.keynote_1 = KeynoteModel(**TEST_KEYNOTE_1)
            self.keynote_2 = KeynoteModel(**TEST_KEYNOTE_2)
            self.member_1 = MemberModel(**TEST_MEMBER_1)
            self.member_2 = MemberModel(**TEST_MEMBER_2)
            self.meeting_1 = MeetingModel(**TEST_MEETING_1)
            self.meeting_2 = MeetingModel(**TEST_MEETING_2)
            self.permission_1 = PermissionModel(**TEST_PERMISSION_1)
            self.permission_2 = PermissionModel(**TEST_PERMISSION_2)
            self.permission_3 = PermissionModel(**TEST_PERMISSION_3)
            self.permission_4 = PermissionModel(**TEST_PERMISSION_4)
            self.permission_5 = PermissionModel(**TEST_PERMISSION_5)
            self.permission_6 = PermissionModel(**TEST_PERMISSION_6)
            self.permission_7 = PermissionModel(**TEST_PERMISSION_7)
            self.permission_8 = PermissionModel(**TEST_PERMISSION_8)
            self.project_1 = ProjectModel(**TEST_PROJECT_1)
            self.project_2 = ProjectModel(**TEST_PROJECT_2)
            self.role_1 = RoleModel(**TEST_ROLE_1)
            self.role_2 = RoleModel(**TEST_ROLE_2)
            self.role_3 = RoleModel(**TEST_ROLE_3)
            self.role_4 = RoleModel(**TEST_ROLE_4)
            self.role_5 = RoleModel(**TEST_ROLE_5)
            self.speaker_1 = SpeakerModel(**TEST_SPEAKER_1)
            self.speaker_2 = SpeakerModel(**TEST_SPEAKER_2)
Esempio n. 5
0
    def post(self):
        data = ProjectList.parser.parse_args()
        y, m, d = data['to_date'].split('-')
        project = ProjectModel(data['name'], datetime.datetime(int(y), int(m), int(d)))

        try:
            project.save_to_db()
        except:
            return {'message': 'An error occured inserting the project'}, 500

        return project.json(), 201
Esempio n. 6
0
    def post(self):
        data = NewProject.parser.parse_args()
        user_id = get_jwt_identity()
        check_projects = ProjectModel.get_projects_by_user_id(user_id)
        check_projects = [
            pr for pr in check_projects if pr.name == data['name']
        ]
        if check_projects:
            return {
                'message':
                "A project with name '{}' already exists.".format(data['name'])
            }, 400

        # Create a new project
        project = ProjectModel(id=None, **data)
        try:
            project.save_to_db()
        except Exception as e:
            print(e)
            return {"message": "An error occurred inserting the item."}, 500

        # Map the project to the user
        mapping_user = UserProjectMap(user_id=user_id, project_id=project.id)
        try:
            mapping_user.save_to_db()
        except:
            project.delete_from_db()
            return {
                "message": "An error occurred mapping the user to the project."
            }, 500

        return project.json(), 201
Esempio n. 7
0
 def post(self, pname):
     data = Project.parser.parse_args()
     # TODO: fix this <class 'werkzeug.local.LocalProxy'> to int problem
     project = ProjectModel(pname, data['description'],
                            int(current_identity), data['roles'])
     # print((data['roles']))
     # for rolestr in data['roles']:
     # print(eval(rolestr))
     # save roles
     try:
         project.save_to_db()
     except:
         return {"message": "An error occured inserting the project"}, 500
     return project.json(), 201
Esempio n. 8
0
    def post(self):
        data = Projects.parser.parse_args()
        project = ProjectModel(name=data['name'], user_id=data['user_id'])

        if (UserModel.find_by_id(project.user_id)):
            try:
                project.save_to_db()
                return project.json(), 201
            except:
                return {
                    "message": "An error occurred inserting the project."
                }, 500
        else:
            return {"message": "The associated user does not exist."}, 500
Esempio n. 9
0
    def delete(self, name):
        # user id,project id,task_name
        parse = reqparse.RequestParser()
        parse.add_argument('uuid',
                           type=non_empty_string,
                           required=True,
                           help='uuid Required..')

        data = parse.parse_args()

        project = ProjectModel.find_by_id(data['uuid'])
        if project:
            task = TaskModel.query.filter(
                and_(TaskModel.uuid == data['uuid'],
                     TaskModel.task_name == name)).first()
            if task:
                if project.created_by_id == get_jwt_identity():
                    # owner
                    task.delete_from_db()
                    return {"Message": "Task Deleted", "status": 200}

                else:
                    collaborator = ShareProjectModel.query.filter(
                        and_(
                            ShareProjectModel.share_with_id ==
                            get_jwt_identity(),
                            ShareProjectModel.uuid == project.uuid)).first()

                    if collaborator:
                        if collaborator.permission == 'Delete':
                            # share with permission to delete
                            task.delete_from_db()
                            return {"Message": "Task Deleted", "status": 200}
                        return {
                            "UnauthorizedError": {
                                "message":
                                "You don't have permission to Delete Task.",
                                "status": 401
                            }
                        }
                    return {
                        "CollaboratorNotExistsError": {
                            "message":
                            "User with given id is not a part of this project or not owner",
                            "status": 400
                        }
                    }

            return {
                "TaskNotExistsError": {
                    "message": "Task with given name doesn't exists",
                    "status": 400
                }
            }
        return {
            "ProjectNotExistsError": {
                "message": "Project with given id doesn't exists",
                "status": 400
            }
        }
Esempio n. 10
0
 def get(self):
     return {
         'projects':
         list(
             map(lambda x: x.json(),
                 ProjectModel.get_projects_by_user_id(get_jwt_identity())))
     }
Esempio n. 11
0
 def get(self, project_id, id):
     if len(ProjectModel.find_by_id(project_id)) == 0:
         return {'message': 'Project not found'}, 404
     executions = ExecutionModel.find_by_id_and_project_id(id, project_id)
     if executions:
         return {'execution': executions[0].json()}
     return {'message': 'Execution not found'}, 404
Esempio n. 12
0
    def post(cls, project: str, title: str):
        project = ProjectModel.find_by_name(project)
        if not project:
            return {'message': gettext("project_not_found").format(project)}, 400
        current_user = get_jwt_identity()
        user = UserModel.find_by_username(current_user)
        if user not in project.authorized:
            return {'message': gettext("project_not_authorized")}, 401
        for taskItem in project.task:
            if taskItem.title == title:
                return {'message': gettext("task_name_exists").format(title)}, 400
        task_json = request.get_json()
        task_json['title'] = title
        if "assigned" in task_json:
            user_assg = UserModel.find_by_username(task_json['assigned'])
            task_json.pop("assigned")
        else:
            user_assg = None
        task = task_schema.load(task_json)
        task['createdate'] = datetime.now()
        task['owner'] = user
        task['status'] = "Boşta"
        if user_assg:
            task['assigned'] = user_assg

        print(task.to_json())
        try:
            project.task.append(task)
            project.save()
        except:
            return {"message": gettext("task_error_creating")}, 500

        return task_schema.dump(task), 201
Esempio n. 13
0
    def post(self, name):
        data = Task.parse.parse_args()
        project = ProjectModel.query.filter_by(uuid=data['uuid']).first()

        if project:
            if project.created_by_id == get_jwt_identity():
                # owner
                if TaskModel.find_by_name(name):
                    return {
                        "TaskAlreadyExistsError": {
                            "message": "Task with given name alredy exists.",
                            "status": 401
                        }
                    }

                task = TaskModel(name, data['task_desc'], data["uuid"])
                task.save_to_db()
                project = ProjectModel.find_by_id(data['uuid'])
                project.task_id = task
                project.save_to_db()
                return {"Message": "Task Added...", "status": 200}
            else:
                return {
                    "UnauthorizedError": {
                        "message": "Project Owner can only create task.",
                        "status": 401
                    }
                }

        return {
            "ProjectNotExistsError": {
                "message": "Project with given id doesn't exists",
                "status": 400
            }
        }
Esempio n. 14
0
 def get(self, pname):
     project = ProjectModel.find_by_name(pname)
     if project:
         return project.json(), 200
     return {
         'message': "Project named '{}' is not found".format(pname)
     }, 404
Esempio n. 15
0
    def get(self, id):
        current_user_id = get_jwt_identity()
        project = ProjectModel.find_by_id(id)
        if not project:
            return {"message": "project not found"}, 404
        if project.is_archived == True:
            return {"message": "project already archived"}
        if project.user_id != current_user_id:
            return {"message": "Unauthorized"}, 401

        # tasks = Comment.query.filter_by(thread_id=thread.id)\
        #                         .order_by(Comment.created_at.desc())\
        #                         .all()


        tasks = TaskModel.query.filter(TaskModel.project_id==id)\
                                .all()

        print(tasks)

        # current_user_id = get_jwt_identity()
        # if current_user_id:
        #     tasks = [x.json() for x in TaskModel.query.filter(TaskModel.user_id==current_user_id).all()]
        #

        # task_termined = [r._asdict() for r in tasks]

        for row in tasks:
            print(row)

        return {"message": "project_task_termined"}, 200
Esempio n. 16
0
    def put(self, id):
        current_user_id = get_jwt_identity()
        project = ProjectModel.find_by_id(id)
        if not project:
            return {"message": "project not found"}, 404
        if current_user_id != project.user_id:
            return {"message": "Unauthorized"}, 401

        data = Project.parser.parse_args()
        project_name = data["project_name"]
        if not project_name:
            project_name = project.project_name

        description = data['description']
        if not description:
            description = project.description

        try:
            project.project_name = project_name
            project.description = description
            project.save_to_db()
        except:
            return {"message": "An error occured updating the Project"}, 500

        project_id = project.id
        project_name = project.project_name
        description = project.description
        is_archived = project.is_archived
        return {
            "project_id": project_id,
            "project_name": project_name,
            "description": description,
            "is_archived": is_archived
        }, 201
Esempio n. 17
0
    def get(self, id):

        current_user_id = get_jwt_identity()
        project = ProjectModel.find_by_id(id)

        if not project:
            return {"message": "project not found"}, 404

        if project.user_id != current_user_id:
            return {"message": "Unauthorized"}, 401

        number_tasks = (db.session.query(
            func.count(TaskModel.id).label('total_task')).join(
                ProjectModel, TaskModel.project_id == ProjectModel.id).filter(
                    TaskModel.project_id == project.id).filter(
                        TaskModel.user_id == current_user_id).scalar())

        number_tasks_termined = (db.session.query(
            func.count(TaskModel.id).label('total_task_temined')).filter(
                TaskModel.project_id == project.id).filter(
                    TaskModel.status == False).filter(
                        TaskModel.user_id == current_user_id).scalar())

        if number_tasks == 0:
            return {"message": "Not task"}

        percentage = number_tasks_termined * 100 / number_tasks

        return {
            "number_tasks": number_tasks,
            "number_tasks_termined": number_tasks_termined,
            "percentage": percentage
        }, 200
Esempio n. 18
0
 def get(cls, project: str):
     project = ProjectModel.find_by_name(project)
     if not project:
         return {'message': gettext("project_not_found").format(project)}, 400
     current_user = get_jwt_identity()
     user = UserModel.find_by_username(current_user)
     if user not in project.authorized:
         return {'message': gettext("project_not_authorized")}, 401
     return {'task': task_list_schema.dump(project.task)}, 200
Esempio n. 19
0
 def get(cls, name: str):
     project = ProjectModel.find_by_name(name)
     if not project:
         return {'message': gettext("project_not_found")}, 404
     current_user = get_jwt_identity()
     user = UserModel.find_by_username(current_user)
     if user not in project.authorized:
         return {'message': gettext("project_not_authorized")}, 401
     return project_schema.dump(project), 200
    def test_find_by_id(self):
        with self.app_context:
            self.role_1.save_to_db()
            self.member_1.save_to_db()
            poject_id = self.project_1.save_to_db().id

            project = ProjectModel.find_by_id(poject_id)

            self.assertEqual(project.title, "REST API para sitio web")
    def test_find_by_status(self):
        with self.app_context:
            self.role_1.save_to_db()
            self.member_1.save_to_db()
            poject_id = self.project_1.save_to_db().id

            projects = ProjectModel.find_by_status("in progress")

            self.assertEqual(projects[0].id, poject_id)
    def test_find_by_admin_id(self):
        with self.app_context:
            self.role_1.save_to_db()
            admin_id = self.member_1.save_to_db().id
            poject_id = self.project_1.save_to_db().id

            projects = ProjectModel.find_by_admin_id(admin_id)

            self.assertEqual(projects[0].id, poject_id)
Esempio n. 23
0
 def get(self, project_id):
     if len(ProjectModel.find_by_id(project_id)) == 0:
         return {'message': 'Project not found'}, 404
     return {
         'executions':
         list(
             map(lambda x: x.json(),
                 ExecutionModel.find_executions_by_project_id(project_id)))
     }
Esempio n. 24
0
 def get(self, project_id):
     user_id = get_jwt_identity()
     result = ProjectModel.find_one_by_id(project_id, user_id)
     columns_filter_id = result.columns_filter_id
     columns_filter = ProjectUnstructureModel.find_by_object_id(
         ObjectId(columns_filter_id))
     return {
         'message': SUCCESS_MESSAGE.format('columns_filter'),
         'columns_filter': columns_filter['columns']
     }
Esempio n. 25
0
 def get(self, project_id, id):
     data = ExecutionOutput.parser.parse_args()
     if len(ProjectModel.find_by_id(project_id)) == 0:
         return {'message': 'Project not found'}, 404
     exec_output = ExecutionModel.get_output(id, project_id,
                                             data['first_requested_byte'],
                                             data['last_requested_byte'])
     if exec_output:
         return {'output': exec_output.json()}
     return {'message': 'Execution not found'}, 404
def get_projects() -> ApiResponse:
    project_list = ProjectModel.find_all()

    if not project_list:
        abort(404, description=ERROR_404_LIST.format("projects"))

    return (
        jsonify({"projects": project_list_schema.dump(project_list)}),
        200,
    )
    def post(self, experiment_name):
        user_id = get_jwt_identity()
        data = Prediction.parser.parse_args()
        raw_data = data['data']
        dataset = File.read_json(raw_data)

        result = ExperimentModel.find_by_name(user_id, experiment_name)
        y_col = result.y_col
        datasource_id = result.datasource_id
        project_id = result.project_id

        result = DatasourceModel.find_one_by_id(user_id, datasource_id)
        user_schema_name = result.user_schema_name
        user_table_name = result.user_table_name
        columns = [
            col['column_name'] for col in DatasourceModel.get_columns(
                user_schema_name, user_table_name)
        ]

        try:
            columns_filter_id = ProjectModel.find_one_by_id(
                project_id, user_id).columns_filter_id
        except Exception as e:
            return {
                'message':
                ERROR_CANNOT_GET_COLUMNS_FILTER_ID.format(project_id)
            }, 500

        try:
            columns_filter = ProjectUnstructureModel.find_by_object_id(
                ObjectId(columns_filter_id))['columns']
        except Exception as e:
            return {
                'message': ERROR_CANNOT_GET_COLUMNS_FILTER.format(project_id)
            }, 500
        try:
            predict = Predicting(experiment_name, dataset, columns,
                                 columns_filter, y_col, user_id)
            predict.decorate_dataframe()
            predict.load_model()
            predict.predict()
            dataset = predict.merge_predict_to_dataframe()
            json_data = Dataset(dataset).get_json()
        except Exception as e:
            print(e)
            return {
                'message':
                ERROR_CANNOT_GET_PREDICT_WITH_DATA.format(experiment_name)
            }, 500
        # try:
        #     DatasourceModel.append_datasource(dataset, user_schema_name, user_table_name)
        # except Exception as e:
        #     return {'message': ERROR_CANNOT_INSERT_DB}, 500

        return {'data': json_data}, 200
Esempio n. 28
0
 def delete(self, project_id):
     user_id = get_jwt_identity()
     try:
         project = ProjectModel.find_one_by_id(project_id, user_id)
         project.delete_from_db()
         return {'message': SUCCESS_MESSAGE.format(project_id)}, 200
     except Exception as e:
         return {
             'message':
             'This project has many experiments, please remove experiment first.'
         }, 500
Esempio n. 29
0
    def get(self, name):
        project = ProjectModel.find_by_name(name)
        if project:
            return {"project": project.json(), "status": 200}

        return {
            "ProjectNotExistsError": {
                "message": "Project with given name doesn't exists",
                "status": 400,
            }
        }
Esempio n. 30
0
 def delete(self, id):
     project = ProjectModel.find_by_id(id)
     if project:
         if current_identity.id == project.user_id:
             project.delete_from_db()
             return {'message': 'Project deleted'}
         else:
             return {
                 'message': 'Sorry, this project was not created by you.'
             }
     else:
         return {'message': 'Sorry, this project was not found.'}