Exemple #1
0
    def list(request: HttpRequest):
        if request.method != CommonData.Method.GET.value:
            response = Response(RequestMethodError, 'Method is invalid', {})
            return HttpResponse(response.toJson(),
                                content_type='application/json')
        limit = 10
        page = 1
        if 'limit' in request.GET.keys():
            limit = int(request.GET['limit'])
        if 'current_page' in request.GET.keys():
            page = int(request.GET['current_page'])

        offset = (page - 1) * limit
        project_list = ProjectDao.get_project_list_with_user(
            request.user, offset, limit)
        count = ProjectDao.get_all_projects_count()

        response = Response(
            Success, 'Success', {
                'projects': project_list,
                'current_page': page,
                'total': count,
                'limit': limit
            })
        return HttpResponse(response.toJson(), content_type='application/json')
Exemple #2
0
    def list(request):
        if request.method != CommonData.Method.GET.value:
            data = CommonData.response_data(RequetMethodError,
                                            "Method is invalid")
            return HttpResponse(json.dumps(data),
                                content_type="application/json")

        limit = 10
        page = 1
        if 'limit' in request.GET.keys():
            limit = int(request.GET['limit'])
        if 'current_page' in request.GET.keys():
            page = int(request.GET['current_page'])

        offset = (page - 1) * limit

        project_list = ProjectDao.get_all_project_list(offset, limit)
        data = CommonData.response_data(Success, "Success")

        count = ProjectDao.get_all_projects_count()
        data["projects_data"] = {
            "projects": project_list,
            "current_page": page,
            "total": count,
            "limit": limit
        }

        return HttpResponse(json.dumps(data, default=datetime2string),
                            content_type="application/json")
Exemple #3
0
    def update(request, project_id):
        if request.method != CommonData.Method.POST.value:
            data = CommonData.response_data(RequetMethodError,
                                            "Method is invalid")
            return HttpResponse(json.dumps(data),
                                content_type="application/json")

        form = ProjectUpateForm(data=request.POST)
        if form.is_valid():
            model = ProjectDao.get_project_with_id(project_id)
            model.name = form.clean().get('name')
            model.note = form.clean().get('note')
            model.status = form.clean().get('status')
            result = ProjectDao.update(model)

            if result is False:
                data = CommonData.response_data(DaoOperationError,
                                                "Project update faild")
                return HttpResponse(json.dumps(data),
                                    content_type="application/json")
            else:
                data = CommonData.response_data(Success, "sucsses")
                return HttpResponse(json.dumps(data),
                                    content_type="application/json")
        else:
            data = CommonData.response_data(FormParseError, "Form parse faild")
            return HttpResponse(json.dumps(data),
                                content_type="application/json")
Exemple #4
0
    def update(request: HttpRequest, project_id):
        if request.method != CommonData.Method.POST.value:
            return HttpResponse(Response.methodInvalidResponse().toJson(),
                                content_type='application/json')
        form = ProjectUpateForm(data=request.POST)
        if form.is_valid():
            model = ProjectDao.get_project_with_id(project_id)
            model.name = form.clean().get('name')
            model.note = form.clean().get('note')
            model.permissionType = form.clean().get('permissionType')
            model.status = form.clean().get('status')
            result = ProjectDao.update(model)

            # setting group permissions
            default_group = AccountDao.get_default_group()
            if model.permissionType == Project.PermissionType.Public.value:
                assign_perm('view_project', default_group, model)
            else:
                remove_perm('view_project', default_group, model)

            if result is False:
                response = Response(DaoOperationError, 'Project update failed',
                                    {})
                return HttpResponse(response.toJson(),
                                    content_type='application/json')
            else:
                response = Response(Success, 'Success', {})
                return HttpResponse(response.toJson(),
                                    content_type='application/json')
        else:
            response = Response(FormParseError, 'Form parse failed', {})
            return HttpResponse(response.toJson(),
                                content_type='application/json')
Exemple #5
0
    def remove_member(request: HttpRequest, project_id, user_id):
        if request.method != CommonData.Method.GET.value:
            return HttpResponse(Response.methodInvalidResponse().toJson(),
                                content_type='application/json')

        project = ProjectDao.get_project_with_id(project_id)
        user = User.objects.get(id=user_id)
        # setting user permissions
        remove_perm('view_project', user, project)

        ProjectDao.remove_user(project_id, user_id)

        response = Response(Success, 'Success', {})
        return HttpResponse(response.toJson(), content_type='application/json')
Exemple #6
0
    def add_member(request: HttpRequest, project_id):
        if request.method != CommonData.Method.GET.value:
            return HttpResponse(Response.methodInvalidResponse().toJson(),
                                content_type='application/json')

        user_ids = request.GET.getlist('id[]')
        users = ProjectDao.add_users(project_id, user_ids)

        project = ProjectDao.get_project_with_id(project_id)
        # setting user permissions
        for user_id in user_ids:
            user = User.objects.get(id=user_id)
            assign_perm('view_project', user, project)

        response = Response(Success, 'Success', users)
        return HttpResponse(response.toJson(), content_type='application/json')
Exemple #7
0
    def starList(request):
        if request.method != CommonData.Method.GET.value:
            return HttpResponse(Response.methodInvalidResponse().toJson(), content_type='application/json')

        limit = 10
        page = 1
        if 'limit' in request.GET.keys():
            limit = int(request.GET['limit'])
        if 'current_page' in request.GET.keys():
            page = int(request.GET['current_page'])

        offset = (page - 1) * limit

        apis = ApiDao.get_all_stared_apis(offset, limit)
        apis_dict = []
        for api in apis:
            api_dic = api.as_dict()
            project_dic = ProjectDao.get_project_with_api_id(api.api_id)
            if project_dic is not None:
                api_dic['project'] = project_dic
            apis_dict.append(api_dic)
        count = ApiDao.get_stared_apis_count()
        response = Response(Success,
                            'Success',
                            {'apis': apis_dict,
                             'current_page': page,
                             'total': count,
                             'limit': limit})
        return HttpResponse(response.toJson(), content_type='application/json')
Exemple #8
0
    def repeat_name_verification(request: HttpRequest):
        if request.method != CommonData.Method.GET.value:
            return HttpResponse(Response.methodInvalidResponse().toJson(),
                                content_type='application/json')

        if ('name' not in request.GET.keys()):
            response = Response(MissingParametersError, 'Missing parameters',
                                {})
            return HttpResponse(response.toJson(),
                                content_type='application/json')
        name = request.GET['name']
        project = ProjectDao.get_project_with_Name(name)

        response = Response(Success, 'Success', {})

        if project is None:
            response.data['repeatability'] = False
        else:
            response.data['api'] = project.as_dict()
            if 'project_id' in request.GET.keys():
                project_id = request.GET['project_id']
                if str(project.project_id) == str(project_id):
                    response.data['repeatability'] = False
                else:
                    response.data['repeatability'] = True
            else:
                response.data['repeatability'] = True
        return HttpResponse(response.toJson(), content_type='application/json')
Exemple #9
0
    def starList(request):
        if request.method != CommonData.Method.GET.value:
            data = CommonData.response_data(RequetMethodError,
                                            "Method is invalid")
            return HttpResponse(json.dumps(data),
                                content_type="application/json")

        limit = 10
        page = 1
        if 'limit' in request.GET.keys():
            limit = int(request.GET['limit'])
        if 'current_page' in request.GET.keys():
            page = int(request.GET['current_page'])

        offset = (page - 1) * limit

        apis = ApiDao.get_all_stared_apis(offset, limit)
        apis_dict = []
        for api in apis:
            api_dic = api.as_dict()
            project_dic = ProjectDao.get_project_with_api_id(api.api_id)
            if project_dic is not None:
                api_dic['project'] = project_dic
            apis_dict.append(api_dic)
        count = ApiDao.get_stared_apis_count()
        data = CommonData.response_data(Success, "Success")
        data["apis_data"] = {
            "apis": apis_dict,
            "current_page": page,
            "total": count,
            "limit": limit
        }
        return HttpResponse(json.dumps(data, default=datetime2string),
                            content_type="application/json")
Exemple #10
0
    def create(request):
        if request.method != CommonData.Method.POST.value:
            data = CommonData.response_data(RequetMethodError,
                                            "Method is invalid")
            return HttpResponse(json.dumps(data),
                                content_type="application/json")

        form = ProjectCreateForm(data=request.POST)
        if form.is_valid():
            model = Project()
            model.name = form.clean().get('name')
            model.note = form.clean().get('note')
            model.status = form.clean().get('status')
            project = ProjectDao.create(model)
            if project is None:
                data = CommonData.response_data(DaoOperationError,
                                                "API create faild")
                return HttpResponse(json.dumps(data),
                                    content_type="application/json")
            else:
                data = CommonData.response_data(Success, "sucsses")
                data['project'] = model_to_dict(project)
                return HttpResponse(json.dumps(data),
                                    content_type="application/json")
        else:
            data = CommonData.response_data(FormParseError, "form parse faild")
            return HttpResponse(json.dumps(data),
                                content_type="application/json")
Exemple #11
0
    def repeat_name_verification(request):
        if request.method != CommonData.Method.GET.value:
            data = CommonData.response_data(RequetMethodError,
                                            "Method is invalid")
            return HttpResponse(json.dumps(data),
                                content_type="application/json")

        if ('name' not in request.GET.keys()):
            data = CommonData.response_data(MissingParametersError, "缺少参数")
            return HttpResponse(json.dumps(data),
                                content_type="application/json")
        name = request.GET['name']
        project = ProjectDao.get_project_with_Name(name)
        data = CommonData.response_data(Success, "Success")
        if project is None:
            data['repeatability'] = False
        else:
            data['api'] = project.as_dict()
            if 'project_id' in request.GET.keys():
                project_id = request.GET['project_id']
                if str(project.project_id) == str(project_id):
                    data['repeatability'] = False
                else:
                    data['repeatability'] = True
            else:
                data['repeatability'] = True
        return HttpResponse(json.dumps(data, default=datetime2string),
                            content_type="application/json")
Exemple #12
0
    def list(request, project_id):
        if request.method != CommonData.Method.GET.value:
            data = CommonData.response_data(RequestMethodError, 'Method is invalid')
            return HttpResponse(json.dumps(data), content_type='application/json')

        limit = 10
        page = 1
        if 'limit' in request.GET.keys():
            limit = int(request.GET['limit'])
        if 'current_page' in request.GET.keys():
            page = int(request.GET['current_page'])

        offset = (page - 1) * limit

        apis = ApiDao.get_apis_with_project_id(project_id, offset, limit)
        apis_dict = []
        for api in apis:
            api_dic = api.as_dict()
            project_dic = ProjectDao.get_project_with_api_id(api.api_id)
            if project_dic is not None:
                api_dic['project'] = project_dic
            apis_dict.append(api_dic)

        count = ApiDao.get_apis_count_with_project_id(project_id)
        data = CommonData.response_data(Success, 'Success')

        data['apis_data'] = {'apis': apis_dict,
                             'current_page': page,
                             'total': count,
                             'limit': limit}
        return HttpResponse(json.dumps(data, default=datetime2string), content_type='application/json')
Exemple #13
0
    def get_members(request: HttpRequest, project_id):
        if request.method != CommonData.Method.GET.value:
            return HttpResponse(Response.methodInvalidResponse().toJson(),
                                content_type='application/json')

        if project_id is None:
            response = Response(RequestParamsError, 'project_id is None', {})
            return HttpResponse(response.toJson(),
                                content_type='application/json')

        aList = ProjectDao.get_all_users_with_project_id(project_id)
        response = Response(Success, 'Success', aList)
        return HttpResponse(response.toJson(), content_type='application/json')
Exemple #14
0
    def copy(request, api_id):
        if request.method != CommonData.Method.GET.value:
            return HttpResponse(Response.methodInvalidResponse().toJson(), content_type='application/json')
        if ('target_project_id' not in request.GET.keys()):
            response = Response(MissingParametersError, 'Has no param "status"', {})
            return HttpResponse(response.toJson(), content_type='application/json')

        target_project_id = request.GET['target_project_id']

        api = ApiDao.get_api_with_id(api_id)
        result = ApiDao.get_api(target_project_id, api.path, api.method)
        if result is not None:
            response = Response(APIAlreadyExist,
                                '该项目下已存在相同 Method 和 Path 的 API',
                                {})
            return HttpResponse(response.toJson(), content_type='application/json')

        project = ProjectDao.get_project_with_id(target_project_id)

        new_api = Api()
        new_api.path = api.path
        new_api.method = api.method
        new_api.name = api.name
        new_api.note = api.note
        new_api.status = api.status


        original_res = ResTemplateDao.get_private_res_template_with_api_id(api_id)
        res = ResTemplate()
        res.type = original_res.type
        res.name = uuid.uuid4()
        res.mimeType = original_res.mimeType
        res.responseJson = original_res.responseJson
        res.project = project
        result = ResTemplateDao.create(res)

        new_api.resTemplate = result
        result_api = ApiDao.create(new_api)

        project.apis.add(result_api)
        project.save()
        if result_api is None:
            response = Response(DaoOperationError,
                                'API create failed',
                                {})
            return HttpResponse(response.toJson(), content_type='application/json')
        response = Response(Success,
                            'API copy success',
                            {})
        return HttpResponse(response.toJson(), content_type='application/json')
Exemple #15
0
    def delete(request: HttpRequest):
        if request.method != CommonData.Method.GET.value:
            return HttpResponse(Response.methodInvalidResponse().toJson(),
                                content_type='application/json')

        project_id = request.GET['project_id']
        if project_id is None:
            response = Response(RequestParamsError, 'Project_id is None', {})
            return HttpResponse(response.toJson(),
                                content_type='application/json')
        success = ProjectDao.delete(project_id)

        if success:
            return HttpResponse(Response.successResponse().toJson(),
                                content_type='application/json')
        else:
            return HttpResponse(Response.daoOperationErrorResponse().toJson(),
                                content_type='application/json')
Exemple #16
0
    def create(request, project_id):
        if request.method != CommonData.Method.POST.value:
            return HttpResponse(Response.methodInvalidResponse().toJson(), content_type='application/json')

        form = ApiCreateForm(data=request.POST)
        # check whether it's valid:
        if form.is_valid():
            model = Api()
            model.path = form.clean().get('path')
            if model.path.startswith('/', ):
                model.path = model.path[1:]
            model.method = form.clean().get('method')
            model.name = form.clean().get('name')
            model.note = form.clean().get('note')
            model.status = form.clean().get('status')

            project = ProjectDao.get_project_with_id(project_id)
            res = ResTemplate()
            res.type = ResTemplate.Type.BelongsToProject.value
            res.name = uuid.uuid4()
            res.mimeType = ResTemplate.MIMEType.ApplicationJson.value
            res.responseJson = form.clean().get('responseJson')
            res.project = project
            result = ResTemplateDao.create(res)
            model.resTemplate = result

            api = ApiDao.create(model)

            project.apis.add(api)
            project.save()
            if api is None:
                response = Response(DaoOperationError,
                                    'API create failed',
                                    {})
                return HttpResponse(response.toJson(), content_type='application/json')
            else:
                response = Response(Success,
                                    'Success',
                                    model_to_dict(api))
                return HttpResponse(response.toJson(), content_type='application/json')
        else:
            return HttpResponse(Response.formParseErrorResponse().toJson(), content_type='application/json')
Exemple #17
0
    def create(request: HttpRequest):
        if request.method != CommonData.Method.POST.value:
            return HttpResponse(Response.methodInvalidResponse().toJson(),
                                content_type='application/json')

        form = ProjectCreateForm(data=request.POST)
        if form.is_valid():
            model = Project()
            model.name = form.clean().get('name')
            model.note = form.clean().get('note')
            model.permissionType = form.clean().get('permissionType')
            model.status = form.clean().get('status')
            project = ProjectDao.create(model)

            # setting user profile
            userProfile = AccountDao.get_userProfile_with_id(request.user.id)
            userProfile.projects.add(project)
            userProfile.save()
            # setting user permissions
            user = User.objects.get(id=request.user.id)
            assign_perm('view_project', user, project)
            # setting group permissions
            default_group = AccountDao.get_default_group()
            if model.permissionType == Project.PermissionType.Public.value:
                assign_perm('view_project', default_group, project)
            else:
                remove_perm('view_project', default_group, project)

            if project is None:
                response = Response(DaoOperationError, 'API create failed', {})
                return HttpResponse(response.toJson(),
                                    content_type='application/json')
            else:
                response = Response(Success, 'Sucsses', model_to_dict(project))
                return HttpResponse(response.toJson(),
                                    content_type='application/json')
        else:
            response = Response(FormParseError, 'Form parse failed', {})
            return HttpResponse(response.toJson(),
                                content_type='application/json')
Exemple #18
0
    def delete(request):
        if request.method != CommonData.Method.GET.value:
            data = CommonData.response_data(RequetMethodError,
                                            "Method is invalid")
            return HttpResponse(json.dumps(data),
                                content_type="application/json")

        project_id = request.GET['project_id']
        if project_id is None:
            data = CommonData.response_data(RequetParamsError,
                                            "project_id is None")
            return HttpResponse(json.dumps(data),
                                content_type="application/json")
        succesed = ProjectDao.delete(project_id)
        if succesed:
            data = CommonData.response_data(Success, "Success")
            return HttpResponse(json.dumps(data),
                                content_type="application/json")
        else:
            data = CommonData.response_data(DaoOperationError, "Delete Failed")
            return HttpResponse(json.dumps(data),
                                content_type="application/json")
Exemple #19
0
    def create(request, project_id):
        if request.method != CommonData.Method.POST.value:
            data = CommonData.response_data(RequetMethodError,
                                            "Method is invalid")
            return HttpResponse(json.dumps(data),
                                content_type="application/json")

        form = ApiCreateForm(data=request.POST)
        # check whether it's valid:
        if form.is_valid():
            model = Api()
            model.path = form.clean().get('path')
            if model.path.startswith('/', ):
                model.path = model.path[1:]
            model.method = form.clean().get('method')
            model.name = form.clean().get('name')
            model.note = form.clean().get('note')
            model.status = form.clean().get('status')
            model.responseJson = form.clean().get('responseJson')
            api = ApiDao.create(model)
            project = ProjectDao.get_project_with_id(project_id)
            project.apis.add(api)
            project.save()
            if api is None:
                data = CommonData.response_data(DaoOperationError,
                                                "API create faild")
                return HttpResponse(json.dumps(data),
                                    content_type="application/json")
            else:
                data = CommonData.response_data(Success, "sucsses")
                data['api'] = model_to_dict(api)
                return HttpResponse(json.dumps(data),
                                    content_type="application/json")
        else:
            data = CommonData.response_data(FormParseError, "form parse faild")
            return HttpResponse(json.dumps(data),
                                content_type="application/json")
Exemple #20
0
 def detail(request, project_id):
     project = ProjectDao.get_project_with_id(project_id)
     data = CommonData.response_data(Success, "Success")
     data["project"] = model_to_dict(project)
     return HttpResponse(json.dumps(data, default=datetime2string),
                         content_type="application/json")
Exemple #21
0
    def detail(request: HttpRequest, project_id):
        project = ProjectDao.get_project_with_id(project_id)

        response = Response(Success, 'Success', model_to_dict(project))
        return HttpResponse(response.toJson(), content_type='application/json')