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() new_package.fetch_commits() # 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_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() new_package.fetch_commits() # 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 populate_random_packages(): residents = Resident.on_site.all()[0:random.randint(5, 15)] s = Site.objects.get_current() num_added = 0 for r in residents: for i in range(random.randint(0, 5)): p = Package( recipient = r, at_dorm = s, ) if random.randint(0, 3) > 0: p.retrieved_at = timezone.now() p.save() num_added += 1 print "Added %d packages" % num_added
def delete_package(request): """ 删除版本 :param request: :return: """ response = {"success": False, "error": ""} try: package_id = request.POST.get('id', None) if package_id is None: response['error'] = "版本ID为空!" return HttpResponse(json.dumps(response), mimetype="application/json") package = Package.objects(pk=package_id) if len(package) == 0: response['error'] = "未获取到版本对象[id=%s]" % package_id return HttpResponse(json.dumps(response), mimetype="application/json") package = package[0] package.delete() response['success'] = True response['error'] = '删除成功!' return HttpResponse(json.dumps(response), mimetype="application/json") except Exception as e: response['error'] = "程序异常![%s]" % str(e) logger.error(response["error"] + getTraceBack()) return HttpResponse(json.dumps(response), mimetype="application/json")
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 package_add(request): if request.method == 'POST': form = PackageForm(request.POST) if form.is_valid(): cd = form.cleaned_data p = Package(recipient = cd['recipient'], location = cd['location'],) p.save() jsonPackage = json.dumps({'recipient': p.recipient.full_name, 'location': p.location, 'id': p.id}) return HttpResponse(jsonPackage, mimetype="application/json") raise Http404
def package(request): post_data = request.POST get_data = request.GET if 'name' and 'limit' in post_data: new_package = Package(name=post_data['name'], remarks=post_data['details'], limit=int(post_data['limit'])) new_package.save() active_packages = Package.objects.filter(isActive=True) inactive_packages = Package.objects.filter(isActive=False) if 'toggle' in get_data: package_id = get_data['toggle'] if Package.objects.filter(id=package_id).exists: this_package = Package.objects.get(id=package_id) if this_package.isActive: this_package.isActive = False else: this_package.isActive = True this_package.save() return redirect('/package') else: return render(request, 'admin/package.sho', {'active_packages': active_packages, 'inactive_packages': inactive_packages})
def list(request): """ 版本列表 :param request: :return: """ try: packages = Package.objects().order_by('-create_time') return render_to_response("package/package_list.html", locals(), context_instance=RequestContext(request)) except Exception as e: error = "程序异常![%s]" % (str(e)) logger.error(error + getTraceBack()) return render_to_response('item/temp.html', locals(), context_instance=RequestContext(request))
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_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 download_package(request): """ 下载版本 :param request: :return: """ try: package_id = request.GET.get('id', None) if package_id is None: error = "版本ID为空!" logger.error(error) return render_to_response('item/temp.html', locals(), context_instance=RequestContext(request)) package = Package.objects(pk=package_id) if len(package) == 0: error = "未获取到版本对象[id=%s]" % package_id logger.error(error) return render_to_response('item/temp.html', locals(), context_instance=RequestContext(request)) package = package[0] content = package.package.read() size = len(content) response = HttpResponse(content) response['Content-Length'] = size response[ 'Content-Disposition'] = 'attachment; filename=%s' % package.package_full_name.encode( 'utf-8') return response except Exception as e: error = "下载文件异常![%s]" % str(e) logger.error(error + getTraceBack()) return render_to_response('item/temp.html', locals(), context_instance=RequestContext(request))
def change_status(request): """ 改变状态 :param request: :return: """ response = {"success": False, "error": ""} try: path = request.path is_enabled = None if path == '/package/enable/': is_enabled = True elif path == '/package/disable/': is_enabled = False package_id = request.POST.get('id', None) if package_id is None: response['error'] = "版本ID为空!" return HttpResponse(json.dumps(response), mimetype="application/json") package = Package.objects(pk=package_id) if len(package) == 0: response['error'] = "未获取到版本对象[id=%s]" % package_id return HttpResponse(json.dumps(response), mimetype="application/json") package = package[0] package.is_enabled = is_enabled package.save() response['success'] = True response['error'] = '启用成功!' if is_enabled else '禁用成功!' return HttpResponse(json.dumps(response), mimetype="application/json") except Exception as e: response['error'] = "程序异常![%s]" % str(e) logger.error(response["error"] + getTraceBack()) return HttpResponse(json.dumps(response), mimetype="application/json")
def package_scan(request): message = None if request.method == 'POST': form = PackageForm(request.POST) if form.is_valid(): p = Package() p.at_dorm = Site.objects.get_current() p.recipient = form.cleaned_data['recipient'] p.notes = form.cleaned_data['notes'] p.tracking_number = form.cleaned_data['tracking_number'] p.save() form = PackageForm() message = "Successfully scanned package for %s" % p.recipient.full_name else: form = PackageForm() payload = {'form': form, 'done_url': reverse('desk.views.packages')} if message is not None: payload['message'] = message return render_to_response('package/package_form.html', payload, context_instance=RequestContext(request))
def view(request): """ 版本列表查看 :param request: :return: """ try: package_id = request.GET.get('id', None) if package_id is None: error = "版本ID为空!" logger.error(error.encode(ENCODE)) return render_to_response('item/temp.html', locals(), context_instance=RequestContext(request)) package = Package.objects(pk=package_id) if len(package) == 0: error = "未获取到版本对象[id=%s]" % package_id logger.error(error.encode(ENCODE)) return render_to_response('item/temp.html', locals(), context_instance=RequestContext(request)) package = package[0] is_view = True return render_to_response("package/package_create.html", locals(), context_instance=RequestContext(request)) except Exception as e: error = "程序异常![%s]" % str(e) logger.error(error + getTraceBack()) return render_to_response('item/temp.html', locals(), context_instance=RequestContext(request))
def update_package_cache(): Package.create_cache() PackageReward.create_cache()
def get_package(pk): return Package.get(pk)
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 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)
def edit(request): """ 版本列表编辑 :param request: :return: """ if request.method == 'GET': try: package_id = request.GET.get('id', None) if package_id is None: error = "版本ID为空!" logger.error(error) return render_to_response( 'item/temp.html', locals(), context_instance=RequestContext(request)) package = Package.objects(pk=package_id) if len(package) == 0: error = "未获取到版本对象[id=%s]" % package_id logger.error(error) return render_to_response( 'item/temp.html', locals(), context_instance=RequestContext(request)) package = package[0] is_edit = True return render_to_response("package/package_create.html", locals(), context_instance=RequestContext(request)) except Exception as e: error = "程序异常![%s]" % str(e) logger.error(error + getTraceBack()) return render_to_response('item/temp.html', locals(), context_instance=RequestContext(request)) elif request.method == 'POST': response = {"success": False, "error": ""} try: #获取参数 package_id = request.POST.get('id', None) is_enabled = request.POST.get('is_enabled', None) if is_enabled == 'true': is_enabled = True elif is_enabled == 'false': is_enabled = False else: response['error'] = "[is_enabled=%s]参数异常!" % is_enabled return HttpResponse(json.dumps(response), mimetype="application/json") remark = request.POST.get('remark', None) #json_info = request.POST.get('json_info', None) if package_id is None: response['error'] = "版本ID为空!" return HttpResponse(json.dumps(response), mimetype="application/json") package = Package.objects(pk=package_id) if len(package) == 0: response['error'] = "未获取到版本对象[id=%s]" % package_id return HttpResponse(json.dumps(response), mimetype="application/json") package = package[0] #package.version = VERSION_PREFIX_PACKAGE + str(int(time.mktime(package.create_time.timetuple()) * 1000)) #package.json_info = json.dumps(json.loads(json_info), ensure_ascii=False).encode(ENCODE) package.is_enabled = is_enabled package.remark = remark package.update_user = User.objects(pk=request.user.id)[0] package.update_time = datetime.datetime.now() package.save() response['success'] = True response['error'] = '更新成功!' return HttpResponse(json.dumps(response), mimetype="application/json") except Exception as e: response['error'] = "程序异常![%s]" % str(e) logger.error(response["error"] + getTraceBack()) return HttpResponse(json.dumps(response), mimetype="application/json")