示例#1
0
    def get(self, jwt_payload, project_id, workspace_id):
        try:

            user_id = get_token_user_id(jwt_payload)

            workspace = db.get_workspace_by_id_project_id_and_user_id(
                user_id, project_id, workspace_id)

            if not workspace:
                print(sys.exc_info())
                abort(404)

            workitems = db.get_all_workitems_by_workspace_id(workspace_id)

            res_workitems = []
            for workitem in workitems:
                res_workitems.append({
                    'id': workitem.id,
                    'name': workitem.name,
                    'description': workitem.description,
                    'duration': workitem.duration,
                })

            return {
                'success': True,
                'workspace': workspace.format(),
                'workitems': res_workitems
            }
        except werkzeug.exceptions.NotFound:
            abort(404)
        except AuthError:
            abort(401)
        except Exception:
            print(sys.exc_info())
            abort(500)
示例#2
0
    def get(self, jwt_payload, project_id):
        try:
            user_id = get_token_user_id(jwt_payload)
            is_users_project = db.check_project_ownership(user_id, project_id)
            if not is_users_project:
                raise AuthError(
                    {
                        'status': 'invalid_project_permission',
                        'description': 'action is not allowed for this user'
                    }, 401)
            workspaces = db.get_all_workspaces_by_project_and_user(
                user_id, project_id)
            res = []
            for workspace in workspaces:

                res.append({
                    "id": workspace.id,
                    "name": workspace.name,
                    "description": workspace.description,
                    "price": workspace.price,
                    "project_id": workspace.project_id
                })
            return jsonify({"success": True, "workspaces": res})
        except AuthError:
            print(sys.exc_info())
            abort(401)
        except Exception:
            print(sys.exc_info())
            abort(500)
示例#3
0
    def delete(self, jwt_payload, project_id):
        try:
            user_id = get_token_user_id(jwt_payload)
            project = db.get_project_by_id_and_user(user_id, project_id)
            if not project:
                print(sys.exc_info())
                abort(404)
            delete = project.delete()

            if not delete:
                print(sys.exc_info())
            updated_projects = db.get_all_projects_by_user_id(user_id)

            res_data = []
            for project in updated_projects:
                res_data.append({
                    'id': project.id,
                    'name': project.name,
                    'description': project.description,
                    'user_id': project.user_id,
                    'start_date': project.start_date,
                    'end_date': project.end_date
                })
            return jsonify({'success': True, 'projects': res_data})
        except werkzeug.exceptions.NotFound:
            print(sys.exc_info())
            abort(404)
        except AuthError:
            print(sys.exc_info())
            abort(401)
        except Exception:
            print(sys.exc_info())
            abort(500)
示例#4
0
    def get(self, jwt_payload, project_id, workspace_id):
        try:
            user_id = get_token_user_id(jwt_payload)
            is_users_project = db.check_project_and_workspace_ownership(
                user_id, project_id, workspace_id)
            if not is_users_project:
                raise AuthError(
                    {
                        'status': 'invalid_project_and_workspace_permission',
                        'description': 'action is not allowed for this user'
                    }, 401)

            workitems = db.get_all_workitems_by_workspace_id(workspace_id)
            res_data = []
            for workitem in workitems:

                res_data.append({
                    "id": workitem.id,
                    "name": workitem.name,
                    "description": workitem.description,
                    "duration": workitem.duration,
                    "workspace_id": workitem.workspace_id
                })

            return {"success": True, "workitems": res_data}

        except AuthError:
            print(sys.exc_info())
            abort(401)
        except Exception:
            print(sys.exc_info())
            abort(500)
示例#5
0
    def post(self, jwt_payload):
        try:
            req_data = request.get_json()

            if not req_data:
                print(sys.exc_info())
                abort(400)
            name = req_data['name']
            description = req_data['description']
            start_date = datetime.now().date()

            end_date = start_date + timedelta(days=14)
            user_id = get_token_user_id(jwt_payload)

            new_project = Project(name=name,
                                  description=description,
                                  start_date=start_date,
                                  end_date=end_date,
                                  user_id=user_id)
            Project.insert(new_project)
            projects = db.get_all_projects_by_user_id(user_id)
            if not projects:
                print(sys.exc_info())
                abort(404)
            res = []
            for project in projects:

                res.append({
                    "name":
                    project.name,
                    "description":
                    project.description,
                    "start_date":
                    json.dumps(project.start_date,
                               indent=4,
                               sort_keys=True,
                               default=str),
                    "end_date":
                    json.dumps(project.end_date,
                               indent=4,
                               sort_keys=True,
                               default=str),
                    "user_id":
                    project.user_id
                })

            return {"success": True, "projects": res}

        except AuthError:
            print(sys.exc_info())
            abort(401)
        except Exception:
            print(sys.exc_info())
            abort(500)
示例#6
0
    def post(self, jwt_payload, project_id):
        try:

            user_id = get_token_user_id(jwt_payload)
            req_data = request.get_json()
            name = req_data['name']
            description = req_data['description']
            price = req_data['price']

            is_users_project = db.check_project_ownership(user_id, project_id)
            if not is_users_project:
                raise AuthError(
                    {
                        'status': 'invalid_project_permission',
                        'description': 'action is not allowed for this user'
                    }, 401)
            new_workspace = db_Workspace(name=name,
                                         description=description,
                                         price=price,
                                         project_id=project_id)
            db_Workspace.insert(new_workspace)

            workspaces = db.get_all_workspaces_by_project_and_user(
                user_id, project_id)

            if not workspaces:
                print(sys.exc_info())
                abort(404)
            res = []
            for workspace in workspaces:

                res.append({
                    "name": workspace.name,
                    "description": workspace.description,
                    "price": workspace.price,
                    "project_id": workspace.project_id
                })
            return jsonify({"success": True, "workspaces": res})
        except AuthError:
            print(sys.exc_info())
            abort(401)
        except Exception:
            print(sys.exc_info())
            abort(500)
示例#7
0
    def post(self, jwt_payload, project_id, workspace_id):
        try:
            user_id = get_token_user_id(jwt_payload)
            is_users_project = db.check_project_and_workspace_ownership(
                user_id, project_id, workspace_id)
            if not is_users_project:
                raise AuthError(
                    {
                        'status': 'invalid_project_and_workspace_permission',
                        'description': 'action is not allowed for this user'
                    }, 401)
            req_data = request.get_json()
            name = req_data['name']
            description = req_data['description']
            duration = req_data['duration']

            new_item = db_Workitem(name=name,
                                   description=description,
                                   duration=duration,
                                   workspace_id=workspace_id)

            db_Workitem.insert(new_item)
            workitems = db.get_all_workitems_by_workspace_id(workspace_id)
            if not workitems:
                print(sys.exc_info())
                abort(404)
            res_data = []
            for workitem in workitems:

                res_data.append({
                    "name": workitem.name,
                    "description": workitem.description,
                    "duration": workitem.duration,
                    "workspace_id": workitem.workspace_id
                })

            return {"success": True, "workitems": res_data}
        except AuthError:
            print(sys.exc_info())
            abort(401)
        except Exception:
            print(sys.exc_info())
            abort(500)
示例#8
0
    def get(self, jwt_payload, project_id):
        try:
            user_id = get_token_user_id(jwt_payload)

            project = db.get_project_by_id_and_user(user_id, project_id)

            if not project:
                print(sys.exc_info())
                abort(404)

            project_workspaces = []
            workspaces = db.get_all_workspaces_by_project_and_user(
                user_id, project_id)

            for workspace in workspaces:
                project_workspaces.append({
                    "id": workspace.id,
                    "name": workspace.name,
                    "description": workspace.description,
                    "price": workspace.price,
                    "project_id": workspace.project_id
                })

            return jsonify({
                'success': True,
                'project': project.format(),
                'workspaces': project_workspaces
            })
        except werkzeug.exceptions.NotFound:
            print(sys.exc_info())
            abort(404)
        except AuthError:
            print(sys.exc_info())
            abort(401)
        except Exception:
            print(sys.exc_info())
            abort(500)