def add_package(request, template_name="package/package_form.html"): if not request.user.get_profile().can_add_package: return HttpResponseForbidden("permission denied") new_package = Package() form = PackageForm(request.POST or None, instance=new_package) package_extenders = build_package_extenders(request) if form.is_valid(): new_package = form.save() new_package.created_by = request.user new_package.last_modified_by = request.user new_package.save() new_package.fetch_metadata() # stick in package_extender form processing for package_extender in package_extenders: if package_extender['form'].is_valid(): package_extender['form'].save() return HttpResponseRedirect(reverse("package", kwargs={"slug": new_package.slug})) return render(request, template_name, { "form": form, "repo_data": repo_data_for_js(), "action": "add", "package_extenders": package_extenders })
def add_new_grid_package(request, grid_slug, template_name="package/package_form.html"): """Add a package to a grid that isn't yet represented on the site.""" if not request.user.get_profile().can_add_grid_package: return HttpResponseForbidden("permission denied") grid = get_object_or_404(Grid, slug=grid_slug) new_package = Package() form = PackageForm(request.POST or None, instance=new_package) if form.is_valid(): new_package = form.save() GridPackage.objects.create(grid=grid, package=new_package) return HttpResponseRedirect(reverse("grid", kwargs={"slug": grid_slug})) return render_to_response(template_name, { "form": form, "repo_data": repo_data_for_js(), "action": "add", }, context_instance=RequestContext(request))
def create(request): """ 创建版本 :param request: :return: """ if request.method == "GET": return render_to_response("package/package_create.html", locals(), context_instance=RequestContext(request)) elif request.method == 'POST': response = {"success": False, "error": ""} try: file_obj = request.FILES.get('uploadFile', None) file_name = file_obj.name file_size = file_obj.size #json_info = request.POST.get('json') remark = request.GET.get('remark') package_version = request.GET.get('package_version') package = Package() package.version = package_version #package.json_info = json.dumps(json.loads(json_info), ensure_ascii=False).encode(ENCODE) package.is_enabled = True package_suffix = file_name[file_name.rindex('.') + 1:] #写入流文件 package.package.put(file_obj, content_type=CONTENT_TYPE[package_suffix]) #文件名 package.package_full_name = file_name package.package_name = file_name[0:file_name.rindex('.')] package.package_suffix = package_suffix package.package_size = file_size package.remark = remark package.upload_user = User.objects(pk=request.user.id)[0] package.create_time = datetime.datetime.now() package.source = SOURCE_UPLOAD package.save() response["success"] = True response["id"] = str(package.id) response["error"] = "执行成功!" return HttpResponse(json.dumps(response), mimetype="application/json") except Exception, e: response["error"] = "系统异常![%s]" % str(e) logger.error(response["error"] + getTraceBack()) return HttpResponse(json.dumps(response), mimetype="application/json")
def add_package(request, template_name="package/package_form.html"): new_package = Package() form = PackageForm(request.POST or None, instance=new_package) if form.is_valid(): new_package = form.save() new_package.created_by = request.user new_package.last_modified_by = request.user new_package.save() new_package.fetch_metadata() return HttpResponseRedirect( reverse("package", kwargs={"slug": new_package.slug})) return render_to_response(template_name, { "form": form, "repo_data": repo_data_for_js(), "action": "add", }, context_instance=RequestContext(request))
def add_new_grid_package(request, grid_slug, template_name="package/package_form.html"): grid = get_object_or_404(Grid, slug=grid_slug) new_package = Package() form = PackageForm(request.POST or None, instance=new_package) if form.is_valid(): new_package = form.save() GridPackage.objects.create(grid=grid, package=new_package) return HttpResponseRedirect(reverse("grid", kwargs={"slug": grid_slug})) return render_to_response(template_name, { "form": form, "repos": repos_for_js(), "action": "add", }, context_instance=RequestContext(request))
def add_package(request, template_name="package/package_form.html"): if not request.user.profile.can_add_package: return HttpResponseForbidden("permission denied") new_package = Package() form = PackageForm(request.POST or None, instance=new_package) if form.is_valid(): new_package = form.save() new_package.created_by = request.user new_package.last_modified_by = request.user new_package.save() #new_package.fetch_metadata() #new_package.fetch_commits() return HttpResponseRedirect(reverse("package", kwargs={"slug": new_package.slug})) return render(request, template_name, { "form": form, "repo_data": repo_data_for_js(), "action": "add", })
def post(self, request): '''添加阅读器的新版本''' # 获取数据 reader_id = request.POST.get('reader_id') version = request.POST.get('version') title = request.POST.get('title') description = request.POST.get('description') depend_version = request.POST.get('depend_version') # 校检数据完整性 if not all([reader_id, version]): content = { "code": CODE.PARAMERR, "msg": "参数不完整" } return JsonResponse(content) # 校检阅读器号是否存在,避免发布不存在的阅读器号的版本 # 获取当前阅读器号未删除的所有对象 reader = Reader.objects.filter(id=reader_id).first() if not reader: # 不存在阅读器号 content = { "code": CODE.PARAMERR, "msg": '阅读器号不存在' } return JsonResponse(content) # 获取当前阅读器号对应的所有对象 rversions = RVersion.objects.filter(reader_id=reader_id) if rversions.exists(): # 校验阅读器号的当前版本是否存在,避免发布阅读器号已经存在的版本 rv_obj = rversions.filter(version=version) if rv_obj.exists(): # 当前阅读器的当前版本已存在 content = { "code": CODE.PARAMERR, "msg": '当前阅读器号的当前版本已存在' } return JsonResponse(content) # 校验阅读器版本是否低于已发布的版本,只有高版本才能发布 max_rv_obj = RVersion.objects.raw(test_newest_rv, [reader_id])[0] max_vcode = max_rv_obj.vcode # 当前版本小于最大版本 if fill_version(version) < max_vcode: content = { "code": CODE.PARAMERR, "msg": '最新发布的版本不能小于已发布的版本' } return JsonResponse(content) if max_rv_obj.state == RV_STATE['ADD']: # 当前版本号大于已发布但是未同步更新的版本号 content = { "code": CODE.PARAMERR, "msg": '该阅读器号存在已发布未同步更新的版本' } return JsonResponse(content) # 将最新的版本的所有升级包信息加入到新建版本中,如果有依赖版本,就只添加大于等于依赖版本对应基础版本的升级包信息 # 如果有依赖版本 if depend_version not in ('0', None): depend_base_version = depend_version.split('.')[0]+'.0' pack_objs = Package.objects.raw(test_get_rv_gte_depend_package, [max_rv_obj.id, fill_package(depend_base_version)]) else: pack_objs = Package.objects.filter(pid=max_rv_obj.id) try: new_rv_obj = RVersion() new_rv_obj.reader_id = reader_id new_rv_obj.version = version new_rv_obj.title = title new_rv_obj.description = description new_rv_obj.depend_version = depend_version new_rv_obj.sort = reader.sort new_rv_obj.save() for pack_obj in pack_objs: new_pack_obj = Package() new_pack_obj.base_version = pack_obj.base_version new_pack_obj.model = pack_obj.model new_pack_obj.pack = '' new_pack_obj.md5 = '' new_pack_obj.pid = new_rv_obj.id new_pack_obj.state = pack_obj.state new_pack_obj.save() except Exception as e: logger.error('{}{}发布失败,detail:{}'.format(reader_id, version, e)) content = { "code": CODE.DBERR, "msg": "发布失败" } return JsonResponse(content) else: try: new_rv_obj = RVersion() new_rv_obj.reader_id = reader_id new_rv_obj.version = version new_rv_obj.title = title new_rv_obj.description = description new_rv_obj.depend_version = depend_version new_rv_obj.sort = reader.sort new_rv_obj.save() except Exception as e: logger.error('{}{}发布失败,detail:{}'.format(reader_id, version, e)) content = { "code": CODE.DBERR, "msg": "发布失败" } return JsonResponse(content) content = { "code": CODE.OK, "msg": '发布成功' } return JsonResponse(content)