Exemple #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}
Exemple #2
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
Exemple #3
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
Exemple #4
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
Exemple #5
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
Exemple #6
0
 def put(self, pname):
     data = Project.parser.parse_args()
     project = ProjectModel.find_by_name(pname, int(current_identity))
     if project:
         project.description = data['description']
     else:
         project = ProjectModel(pname, **data)
     project.save_to_db()
     return project.json()
Exemple #7
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,
            }
        }
Exemple #8
0
 def get(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 task_schema.dump(taskItem), 200
     return {'message': gettext("task_not_found")}, 404
Exemple #9
0
 def delete(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:
             project.update(pull__task__title=title)
             return {'message': gettext("task_deleted")}, 200
     return {'message': gettext("task_not_found")}, 404
Exemple #10
0
 def delete(self, pname):
     # data = Project.parser.parse_args()
     project = ProjectModel.find_by_name(pname, int(current_identity))
     if project:
         project.delete_from_db()
         return {
             'message': "Project named '{}' is deleted".format(pname)
         }, 200
     return {
         'message':
         "Some error occurred when deleting project named '{}'".format(
             pname)
     }, 404
Exemple #11
0
    def put(cls, name: str):
        project_json = request.get_json()
        project = ProjectModel.find_by_name(name)
        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
        if project:
            project.status = project_json['status']
        else:
            project_json['name'] = name
            project = project_schema.load(project_json)
        try:
            project.save()
        except:
            return {"message": gettext("project_error_creating")}, 500

        return project_schema.dump(project), 200
Exemple #12
0
 def put(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:
             taskDict = task_schema.dump(taskItem)
             taskDict.pop("owner", None)
             taskDict.pop("assigned", None)
             task_json = request.get_json()
             print(task_json)
             task_json["title"] = title
             if "assigned" in task_json:
                 user_assg = UserModel.find_by_username(task_json['assigned'])
                 task_json.pop("assigned", None)
             else:
                 user_assg = None
             taskDict.update(task_json)
             print(taskDict)
             task = task_schema.load(taskDict)
             task['owner'] = user
             if user_assg:
                 task['assigned'] = user_assg
             print(task.to_json())
             project.update(pull__task__title=title)
             project.reload()
             # ProjectModel.objects.filter(task__title=task).update(push__task=task)
             
             
             project.task.append(task)
             project.save()
             return {"message": "success"}, 500
             # try:
             #     project.task.append(task)
             #     project.save()
             # except:
             #     return {"message": gettext("task_error_creating")}, 500
             # return task_schema.dump(task), 201 
     return {'message': gettext("task_not_found")}, 400
Exemple #13
0
    def post(cls, name: str):
        if ProjectModel.find_by_name(name):
            return {
                'message': gettext("project_name_exists").format(name)
            }, 400
        current_user = get_jwt_identity()
        user = UserModel.find_by_username(current_user)
        print(user.to_json())
        project_json = {}
        project_json['name'] = name
        project = project_schema.load(project_json)
        project['createdate'] = datetime.now()
        project['owner'] = user
        project['authorized'] = [user]
        print(project.to_json())
        try:
            project.save()
        except:
            return {"message": gettext("project_error_creating")}, 500

        return project_schema.dump(project), 201
Exemple #14
0
    def delete(self, name):
        project = ProjectModel.find_by_name(name)
        project_parse = reqparse.RequestParser()
        data = project_parse.parse_args()
        if project:
            if project.created_by_id == get_jwt_identity():
                # owner can do anything
                project.delete_from_db()
                return {"message": "Project Deleted..", "status": 200}
            else:
                # not owner but have a permission to delete
                collaborator = ShareProjectModel.query.filter(
                    and_(ShareProjectModel.share_with_id == get_jwt_identity(),
                         ShareProjectModel.uuid == project.uuid)).first()

                if collaborator:
                    if collaborator.permission == "Delete":
                        project.delete_from_db()
                        return {"message": "Project Deleted.", "status": 200}

                    # no permission to update
                    return {
                        "DeletingProjectError": {
                            "message": "You don't have Delete permission",
                            "status": 401
                        }
                    }
                return {
                    "CollaboratorNotExistsError": {
                        "message": "Collaborator with given id doesn't exists",
                        "status": 400
                    }
                }
        return {
            "ProjectNotExistsError": {
                "message": "Project with given name doesn't exists",
                "status": 400
            }
        }
Exemple #15
0
    def post(cls, project: str, task: 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 == task:
                comment_json = request.get_json()
                comment = comment_schema.load(comment_json)
                comment['user'] = user
                comment['id'] = uuid4().hex
                comment['date'] = datetime.now()
                print(comment.to_json())
                # taskItem.comment.append(comment)
                ProjectModel.objects.filter(task__title=task).update(
                    push__task__S__comment=comment)
        # project.save()
        return comment_schema.dump(comment), 201
Exemple #16
0
    def put(self, name):
        project_parse = reqparse.RequestParser()
        project_parse.add_argument('description',
                                   type=non_empty_string,
                                   required=True,
                                   help="description is required")
        project_parse.add_argument('permission',
                                   type=non_empty_string,
                                   required=False)
        project_parse.add_argument('name',
                                   type=non_empty_string,
                                   required=False)

        data = project_parse.parse_args()
        project = ProjectModel.find_by_name(name)

        if project:
            if project.created_by_id == get_jwt_identity():
                # owner can do anything
                project.description = data['description']
                if data['permission'] != None:
                    project.permissions = data['permission']

                if data['name'] != None:
                    project.name = data['name']

                project.save_to_db()
                return {"Message": "Project Updated..", "status": 200}
            else:
                # not owner but have permission to edit

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

                if collaborator:
                    if collaborator.permission == "Edit" or collaborator.permission == "Delete":
                        project.description = data['description']
                        project.save_to_db()
                        return {
                            "message": "Project Details Updated..",
                            "Note": "You are part of this project not Owner.",
                            "status": 200
                        }

                    # no permission to update
                    return {
                        "UpdatingProjectError": {
                            "message": "You don't have Edit permission",
                            "status": 401
                        }
                    }

                return {
                    "CollaboratorNotExistsError": {
                        "message": "Collaborator with given id doesn't exists",
                        "status": 400
                    }
                }

        return {
            "ProjectNotExistsError": {
                "message": "Project with given name doesn't exists",
                "status": 400
            }
        }