示例#1
0
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
        })
示例#2
0
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},
    )
示例#3
0
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
示例#4
0
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")
示例#5
0
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))
示例#6
0
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
示例#7
0
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})
示例#8
0
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))
示例#9
0
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))
示例#10
0
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),
    )
示例#11
0
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))
示例#12
0
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))
示例#13
0
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")
示例#14
0
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))
示例#15
0
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))
示例#16
0
def update_package_cache():
    Package.create_cache()
    PackageReward.create_cache()
示例#17
0
def get_package(pk):
    return Package.get(pk)
示例#18
0
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")
示例#19
0
    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)
示例#20
0
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")