コード例 #1
0
ファイル: views.py プロジェクト: d9pouces/PythonNest
def prepare_query(previous_query, prefix, key, value, global_and=True):
    kwargs = {}
    if (isinstance(value, list) or isinstance(value, tuple)) and len(value) > 1:
        value = [normalize_str(x) for x in value]
        kwargs = {prefix + key + '__in': value}
    elif isinstance(value, list) or isinstance(value, tuple):
        value = normalize_str(value[0])
    if not kwargs:
        kwargs = {prefix + key + '__icontains': value}
    if previous_query is None:
        return Q(**kwargs)
    elif global_and:
        return previous_query & Q(**kwargs)
    return previous_query | Q(**kwargs)
コード例 #2
0
ファイル: views.py プロジェクト: pombredanne/PythonNest
def prepare_query(previous_query, prefix, key, value, global_and=True):
    kwargs = {}
    if (isinstance(value, list)
            or isinstance(value, tuple)) and len(value) > 1:
        value = [normalize_str(x) for x in value]
        kwargs = {prefix + key + '__in': value}
    elif isinstance(value, list) or isinstance(value, tuple):
        value = normalize_str(value[0])
    if not kwargs:
        kwargs = {prefix + key + '__icontains': value}
    if previous_query is None:
        return Q(**kwargs)
    elif global_and:
        return previous_query & Q(**kwargs)
    return previous_query | Q(**kwargs)
コード例 #3
0
ファイル: views.py プロジェクト: d9pouces/PythonNest
def package_json(request, package_name):
    package = get_object_or_404(Package, normalized_name__iexact=normalize_str(package_name))
    releases = list(Release.objects.filter(package=package).order_by('-id')[0:1])
    if not releases:
        raise Http404
    release = releases[0]
    result = {'info': release.data(), 'urls': [x.data() for x in ReleaseDownload.objects.filter(release=release)]}
    return HttpResponse(json.dumps(result, ensure_ascii=False, cls=JSONDatetime, indent=4),
                        content_type='application/json')
コード例 #4
0
ファイル: views.py プロジェクト: d9pouces/PythonNest
def simple(request, package_name=None, version=None):
    if package_name is not None:
        package = get_object_or_404(Package, normalized_name__iexact=normalize_str(package_name))
        if version is not None:
            release = get_object_or_404(Release, package=package, version__iexact=version)
            downloads = ReleaseDownload.objects.filter(release=release)
        else:
            downloads = ReleaseDownload.objects.filter(package=package)
    else:
        package = None
        downloads = ReleaseDownload.objects.all()
    template_values = {'package': package, 'downloads': downloads}
    return TemplateResponse(request, 'pythonnest/simple.html', template_values)
コード例 #5
0
ファイル: views.py プロジェクト: pombredanne/PythonNest
def version_json(request, package_name, version):
    release = get_object_or_404(
        Release,
        package__normalized_name__iexact=normalize_str(package_name),
        version=version)
    result = {
        'info': release.data(),
        'urls':
        [x.data() for x in ReleaseDownload.objects.filter(release=release)]
    }
    return HttpResponse(json.dumps(result,
                                   ensure_ascii=False,
                                   cls=JSONDatetime,
                                   indent=4),
                        content_type='application/json')
コード例 #6
0
ファイル: views.py プロジェクト: pombredanne/PythonNest
def simple(request, package_name=None, version=None):
    if package_name is not None:
        package = get_object_or_404(
            Package, normalized_name__iexact=normalize_str(package_name))
        if version is not None:
            release = get_object_or_404(Release,
                                        package=package,
                                        version__iexact=version)
            downloads = ReleaseDownload.objects.filter(release=release)
        else:
            downloads = ReleaseDownload.objects.filter(package=package)
    else:
        package = None
        downloads = ReleaseDownload.objects.all()
    template_values = {'package': package, 'downloads': downloads}
    return TemplateResponse(request, 'pythonnest/simple.html', template_values)
コード例 #7
0
ファイル: views.py プロジェクト: pombredanne/PythonNest
def package_json(request, package_name):
    package = get_object_or_404(
        Package, normalized_name__iexact=normalize_str(package_name))
    releases = list(
        Release.objects.filter(package=package).order_by('-id')[0:1])
    if not releases:
        raise Http404
    release = releases[0]
    result = {
        'info': release.data(),
        'urls':
        [x.data() for x in ReleaseDownload.objects.filter(release=release)]
    }
    return HttpResponse(json.dumps(result,
                                   ensure_ascii=False,
                                   cls=JSONDatetime,
                                   indent=4),
                        content_type='application/json')
コード例 #8
0
ファイル: utils.py プロジェクト: pombredanne/PythonNest
def prepare_query(previous_query, prefix, key, value, global_and=True):
    kwargs = {}
    value = normalize_str(value)
    if (isinstance(value, list) or isinstance(value, tuple)) and len(value) > 1:
        kwargs = {prefix + key + '__in': value}
    elif isinstance(value, list) or isinstance(value, tuple):
        value = value[0]
    if not kwargs:
        if value[:1] == '*' and value[-1:] == '*':
            kwargs = {prefix + key + '__icontains': value[1:-1]}
        elif value[:1] == '*':
            kwargs = {prefix + key + '__iendswith': value[1:]}
        elif value[-1:] == '*':
            kwargs = {prefix + key + '__istartswith': value[:-1]}
        else:
            kwargs = {prefix + key + '__iexact': value}
    if previous_query is None:
        return Q(**kwargs)
    elif global_and:
        return previous_query & Q(**kwargs)
    return previous_query | Q(**kwargs)
コード例 #9
0
ファイル: views.py プロジェクト: d9pouces/PythonNest
def version_json(request, package_name, version):
    release = get_object_or_404(Release, package__normalized_name__iexact=normalize_str(package_name), version=version)
    result = {'info': release.data(), 'urls': [x.data() for x in ReleaseDownload.objects.filter(release=release)]}
    return HttpResponse(json.dumps(result, ensure_ascii=False, cls=JSONDatetime, indent=4),
                        content_type='application/json')