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')
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")
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")
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')
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')
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')
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')
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')
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")
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")
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")
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')
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')
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')
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')
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')
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')
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")
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")
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")
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')