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