Beispiel #1
0
  def wrap(*args, **kwargs):

    # Get current user
    user_id = get_jwt_identity()

    # Get project and admin_id
    project_id = kwargs.get('project_id')
    project = find_by_project_id(project_id)

    if not project:
      response = {
        'success': False,
        'msg': 'Project does not exist',
      }
      return make_response(jsonify(response)), 404

    user_roles = get_user_roles(user_id, project_id)

    # If current user does not have models or admin role, then unauthorized
    if 'admin' not in user_roles and 'models' not in user_roles:
      response = {
        'success': False,
        'msg': 'Only a models team member can access this route',
      }
      return make_response(jsonify(response)), 401

    # Else continue
    return fun(*args, **kwargs)
    def wrap(*args, **kwargs):

        # Get current user
        user_id = get_jwt_identity()

        # Get project and admin_id
        project_id = kwargs.get('project_id')
        project = find_by_project_id(project_id)

        if not project:
            response = {
                'success': False,
                'msg': 'Project does not exist',
            }
            return make_response(jsonify(response)), 404

        user_roles = get_user_roles(user_id, project_id)

        # If current user has no roles in the project, then unauthorized
        if len(user_roles) == 0:
            response = {
                'success': False,
                'msg': 'Only a project member can access this route',
            }
            return make_response(jsonify(response)), 401

        # Else continue
        return fun(*args, **kwargs)
    def get(self, project_id):
        try:
            user_id = get_jwt_identity()
            user = find_by_user_id(user_id)

            project = find_by_project_id(project_id)
            if user_id == project['admin_id']:
                response = {
                    'success': False,
                    'msg': 'Cannot leave own project',
                }
                return make_response(jsonify(response)), 401

            team_ids = get_teams_of_user_in_project(user['id'], project_id)

            for id in team_ids:
                delete_by_user_id_team_id(user['id'], id)
                project_members = count_users_in_team(id)
                if project_members == 0:
                    delete_team(id)

            response = {
                'success': True,
                'msg': 'Project left',
            }
            return make_response(jsonify(response)), 200
        except Exception as err:
            print(err)
            response = {
                'success': False,
                'msg': 'Something went wrong',
            }
            return make_response(jsonify(response)), 500
Beispiel #4
0
 def get(self, project_id):
     try:
         if not project_id:
             response = {
                 "success":False,
                 "msg": "Project id not provided"
                 }
             return make_response(jsonify(response)), 400
         
         project = find_by_project_id(project_id)
         project['members'] = get_projectmembers(project_id)
         response = {
             "success": True,
             "msg": "Project found",
             "body": project
         }
         return make_response(jsonify(response)), 200
     
     except Exception:
         response = {
             "success":False,
             "msg": "Something went wrong!"
             }
         # Return a server error using the HTTP Error Code 500 (Internal
         # Server Error)
         return make_response(jsonify(response)), 500
Beispiel #5
0
    def wrap(*args, **kwargs):

        # Get current user
        user_id = get_jwt_identity()

        # Get project and admin_id
        project_id = kwargs.get('project_id')
        project = find_by_project_id(project_id)

        if not project:
            response = {
                'success': False,
                'msg': 'Project does not exist',
            }
            return make_response(jsonify(response)), 404

        admin_id = project['admin_id']

        # If current user is not equal to project admin, then unauthorized
        if user_id != admin_id:
            response = {
                'success': False,
                'msg': 'Only project owner can access this route',
            }
            return make_response(jsonify(response)), 401

        # Else continue
        return fun(*args, **kwargs)
Beispiel #6
0
    def put(self, project_id):
        """Handle PUT request for this view. Url --> /api/v1/project/update"""
        # getting JSON data from request
        post_data = request.get_json(silent=True,
                                     force=True)
        try:
            project_name = post_data["project_name"]
            project_description = post_data["project_description"]
            
        except KeyError as err:
            response = {
                "success": False,
                "msg": f'{str(err)} key is not present'
            }
            return make_response(jsonify(response)), 400

        # Search the database for this project_name
        project = find_by_project_name(project_name)

        if project and project['id'] != project_id:
            # There already exists another project with the same name.
            # So we can't let this project use that name
            response = {
                "success": False,
                "msg": "Project name already taken."
            }
            return make_response(jsonify(response)), 400

        try:
            project = find_by_project_id(project_id)
            project['members'] = get_projectmembers(project_id)

            if not project:
                response = {
                    "success": False,
                    "msg": "Project not present."}
                return make_response(jsonify(response)), 404

            data = {
                "project_name": project_name,
                "project_description": project_description
            }

            project_new = update_project(project_id, data)

            response = {
                    "success": True,
                    "msg": "Project updated.",
                    "body": project_new
            }
            return make_response(jsonify(response)), 201

        except Exception as err:
            print("Error occurred: ", err)
            response = {
                "success": False,
                "msg": "Something went wrong"}
            return make_response(jsonify(response)), 500