本文整理汇总了Python中wagtail.wagtailadmin.forms.SearchForm类的典型用法代码示例。如果您正苦于以下问题:Python SearchForm类的具体用法?Python SearchForm怎么用?Python SearchForm使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了SearchForm类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: search
def search(request):
Image = get_image_model()
images = []
q = None
is_searching = False
if 'q' in request.GET:
form = SearchForm(request.GET)
if form.is_valid():
q = form.cleaned_data['q']
# page number
p = request.GET.get("p", 1)
is_searching = True
images = Image.search(q, results_per_page=20, page=p)
else:
form = SearchForm()
if request.is_ajax():
return render(request, "wagtailimages/images/results.html", {
'images': images,
'is_searching': is_searching,
'search_query': q,
})
else:
return render(request, "wagtailimages/images/index.html", {
'form': form,
'images': images,
'is_searching': is_searching,
'popular_tags': Image.popular_tags(),
'search_query': q,
})
示例2: search
def search(request, parent_page_id=None):
# A missing or empty page_type parameter indicates 'all page types' (i.e. descendants of wagtailcore.page)
page_type_string = request.GET.get('page_type') or 'wagtailcore.page'
try:
desired_classes = page_models_from_string(page_type_string)
except (ValueError, LookupError):
raise Http404
search_form = SearchForm(request.GET)
if search_form.is_valid() and search_form.cleaned_data['q']:
pages = Page.objects.exclude(
depth=1 # never include root
)
pages = filter_page_type(pages, desired_classes)
pages = pages.search(search_form.cleaned_data['q'], fields=['title'])
else:
pages = Page.objects.none()
paginator, pages = paginate(request, pages, per_page=25)
for page in pages:
page.can_choose = True
return render(
request, 'wagtailadmin/chooser/_search_results.html',
shared_context(request, {
'searchform': search_form,
'pages': pages,
'page_type_string': page_type_string,
})
)
示例3: search
def search(request, parent_page_id=None):
page_type = request.GET.get('page_type') or 'wagtailcore.page'
content_type_app_name, content_type_model_name = page_type.split('.')
try:
content_type = ContentType.objects.get_by_natural_key(content_type_app_name, content_type_model_name)
except ContentType.DoesNotExist:
raise Http404
desired_class = content_type.model_class()
search_form = SearchForm(request.GET)
if search_form.is_valid() and search_form.cleaned_data['q']:
pages = desired_class.objects.exclude(
depth=1 # never include root
).filter(title__icontains=search_form.cleaned_data['q'])[:10]
else:
pages = desired_class.objects.none()
shown_pages = []
for page in pages:
page.can_choose = True
shown_pages.append(page)
return render(request, 'wagtailadmin/chooser/_search_results.html', {
'querystring': get_querystring(request),
'searchform': search_form,
'pages': shown_pages,
})
示例4: chooser
def chooser(request):
Document = get_document_model()
if permission_policy.user_has_permission(request.user, "add"):
DocumentForm = get_document_form(Document)
uploadform = DocumentForm()
else:
uploadform = None
documents = []
q = None
is_searching = False
if "q" in request.GET or "p" in request.GET or "collection_id" in request.GET:
documents = Document.objects.all()
collection_id = request.GET.get("collection_id")
if collection_id:
documents = documents.filter(collection=collection_id)
searchform = SearchForm(request.GET)
if searchform.is_valid():
q = searchform.cleaned_data["q"]
documents = documents.search(q)
is_searching = True
else:
documents = documents.order_by("-created_at")
is_searching = False
# Pagination
paginator, documents = paginate(request, documents, per_page=10)
return render(
request,
"wagtaildocs/chooser/results.html",
{"documents": documents, "query_string": q, "is_searching": is_searching},
)
else:
searchform = SearchForm()
collections = Collection.objects.all()
if len(collections) < 2:
collections = None
documents = Document.objects.order_by("-created_at")
paginator, documents = paginate(request, documents, per_page=10)
return render_modal_workflow(
request,
"wagtaildocs/chooser/chooser.html",
"wagtaildocs/chooser/chooser.js",
{
"documents": documents,
"uploadform": uploadform,
"searchform": searchform,
"collections": collections,
"is_searching": False,
},
)
示例5: search
def search(request):
pages = []
q = None
if "q" in request.GET:
form = SearchForm(request.GET)
if form.is_valid():
q = form.cleaned_data["q"]
pages = Page.objects.all().prefetch_related("content_type").search(q)
paginator, pages = paginate(request, pages)
else:
form = SearchForm()
if request.is_ajax():
return render(
request,
"wagtailadmin/pages/search_results.html",
{"pages": pages, "query_string": q, "pagination_query_params": ("q=%s" % q) if q else ""},
)
else:
return render(
request,
"wagtailadmin/pages/search.html",
{
"search_form": form,
"pages": pages,
"query_string": q,
"pagination_query_params": ("q=%s" % q) if q else "",
},
)
示例6: search
def search(request):
documents = []
q = None
is_searching = False
if 'q' in request.GET:
form = SearchForm(request.GET)
if form.is_valid():
q = form.cleaned_data['q']
is_searching = True
documents = Document.search(q, results_per_page=20, prefetch_tags=True)
else:
form = SearchForm()
if request.is_ajax():
return render(request, "wagtaildocs/documents/results.html", {
'documents': documents,
'is_searching': is_searching,
'search_query': q
})
else:
return render(request, "wagtaildocs/documents/index.html", {
'form': form,
'documents': documents,
'is_searching': True,
'search_query': q,
'popular_tags': Document.popular_tags(),
})
示例7: chooser
def chooser(request, get_results=False):
# Get most popular queries
queries = models.Query.get_most_popular()
# If searching, filter results by query string
query_string = None
if "q" in request.GET:
searchform = SearchForm(request.GET)
if searchform.is_valid():
query_string = searchform.cleaned_data["q"]
queries = queries.filter(query_string__icontains=normalise_query_string(query_string))
else:
searchform = SearchForm()
paginator, queries = paginate(request, queries, per_page=10)
# Render
if get_results:
return render(request, "wagtailsearch/queries/chooser/results.html", {"queries": queries})
else:
return render_modal_workflow(
request,
"wagtailsearch/queries/chooser/chooser.html",
"wagtailsearch/queries/chooser/chooser.js",
{"queries": queries, "searchform": searchform},
)
示例8: index
def index(request):
submissions = Submission.objects.all()
# Ordering
if request.GET.get('ordering') in ['title', '-submitted_at']:
ordering = request.GET['ordering']
else:
ordering = '-submitted_at'
submissions = submissions.order_by(ordering)
# Search
query_string = None
if 'q' in request.GET:
form = SearchForm(request.GET, placeholder=_("Search submissions"))
if form.is_valid():
query_string = form.cleaned_data['q']
submissions = submissions.search(query_string)
else:
form = SearchForm(placeholder=_("Search submissions"))
# Pagination
paginator, submissions = paginate(request, submissions)
return render(request, 'submissions/admin/index.html', {
'submissions': submissions,
'ordering': ordering,
'query_string': query_string,
'is_searching': bool(query_string),
'search_form': form,
})
示例9: search
def search(request):
pages = []
q = None
if 'q' in request.GET:
form = SearchForm(request.GET)
if form.is_valid():
q = form.cleaned_data['q']
pages = Page.objects.all().prefetch_related('content_type').search(q)
paginator, pages = paginate(request, pages)
else:
form = SearchForm()
if request.is_ajax():
return render(request, "wagtailadmin/pages/search_results.html", {
'pages': pages,
'query_string': q,
'pagination_query_params': ('q=%s' % q) if q else ''
})
else:
return render(request, "wagtailadmin/pages/search.html", {
'search_form': form,
'pages': pages,
'query_string': q,
'pagination_query_params': ('q=%s' % q) if q else ''
})
示例10: index
def index(request):
q = None
is_searching = False
model_fields = [f.name for f in User._meta.get_fields()]
if 'q' in request.GET:
form = SearchForm(request.GET, placeholder=_("Search users"))
if form.is_valid():
q = form.cleaned_data['q']
is_searching = True
conditions = Q()
if 'username' in model_fields:
conditions |= Q(username__icontains=q)
if 'first_name' in model_fields:
conditions |= Q(first_name__icontains=q)
if 'last_name' in model_fields:
conditions |= Q(last_name__icontains=q)
if 'email' in model_fields:
conditions |= Q(email__icontains=q)
users = User.objects.filter(conditions)
else:
form = SearchForm(placeholder=_("Search users"))
if not is_searching:
users = User.objects.all()
if 'last_name' in model_fields and 'first_name' in model_fields:
users = users.order_by('last_name', 'first_name')
if 'ordering' in request.GET:
ordering = request.GET['ordering']
if ordering == 'username':
users = users.order_by(User.USERNAME_FIELD)
else:
ordering = 'name'
paginator, users = paginate(request, users)
if request.is_ajax():
return render(request, "wagtailusers/users/results.html", {
'users': users,
'is_searching': is_searching,
'query_string': q,
'ordering': ordering,
})
else:
return render(request, "wagtailusers/users/index.html", {
'search_form': form,
'users': users,
'is_searching': is_searching,
'ordering': ordering,
'query_string': q,
})
示例11: search
def search(request, parent_page_id=None):
# A missing or empty page_type parameter indicates 'all page types' (i.e. descendants of wagtailcore.page)
page_type_string = request.GET.get('page_type') or 'wagtailcore.page'
try:
desired_class = page_model_from_string(page_type_string)
except (ValueError, LookupError):
raise Http404
search_form = SearchForm(request.GET)
if search_form.is_valid() and search_form.cleaned_data['q']:
pages = desired_class.objects.exclude(
depth=1 # never include root
).filter(title__icontains=search_form.cleaned_data['q'])[:10]
else:
pages = desired_class.objects.none()
shown_pages = []
for page in pages:
page.can_choose = True
shown_pages.append(page)
return render(
request, 'wagtailadmin/chooser/_search_results.html',
shared_context(request, {
'searchform': search_form,
'pages': shown_pages,
'page_type_string': page_type_string,
})
)
示例12: browse
def browse(request, parent_page_id=None):
page_type = request.GET.get('page_type') or 'wagtailcore.page'
content_type_app_name, content_type_model_name = page_type.split('.')
is_searching = False
try:
content_type = ContentType.objects.get_by_natural_key(content_type_app_name, content_type_model_name)
except ContentType.DoesNotExist:
raise Http404
desired_class = content_type.model_class()
if 'q' in request.GET:
search_form = SearchForm(request.GET)
if search_form.is_valid() and search_form.cleaned_data['q']:
pages = desired_class.objects.exclude(
depth=1 # never include root
).filter(title__icontains=search_form.cleaned_data['q'])[:10]
is_searching = True
if not is_searching:
if parent_page_id:
parent_page = get_object_or_404(Page, id=parent_page_id)
else:
parent_page = Page.get_first_root_node()
parent_page.can_choose = issubclass(parent_page.specific_class, desired_class)
search_form = SearchForm()
pages = parent_page.get_children()
# restrict the page listing to just those pages that:
# - are of the given content type (taking into account class inheritance)
# - or can be navigated into (i.e. have children)
shown_pages = []
for page in pages:
page.can_choose = issubclass(page.specific_class, desired_class)
page.can_descend = page.get_children_count()
if page.can_choose or page.can_descend:
shown_pages.append(page)
if is_searching:
return render(request, 'wagtailadmin/chooser/_search_results.html', {
'querystring': get_querystring(request),
'searchform': search_form,
'pages': pages,
'is_searching': is_searching
})
return render_modal_workflow(request, 'wagtailadmin/chooser/browse.html', 'wagtailadmin/chooser/browse.js', {
'allow_external_link': request.GET.get('allow_external_link'),
'allow_email_link': request.GET.get('allow_email_link'),
'querystring': get_querystring(request),
'parent_page': parent_page,
'pages': shown_pages,
'search_form': search_form,
'is_searching': False
})
示例13: index
def index(request):
# Get documents
documents = Document.objects.all()
# Ordering
if 'ordering' in request.GET and request.GET['ordering'] in ['title', '-created_at']:
ordering = request.GET['ordering']
else:
ordering = '-created_at'
documents = documents.order_by(ordering)
# Permissions
if not request.user.has_perm('wagtaildocs.change_document'):
# restrict to the user's own documents
documents = documents.filter(uploaded_by_user=request.user)
# Search
query_string = None
if 'q' in request.GET:
form = SearchForm(request.GET, placeholder_suffix='documents')
if form.is_valid():
query_string = form.cleaned_data['q']
if not request.user.has_perm('wagtaildocs.change_document'):
# restrict to the user's own documents
documents = Document.search(query_string, filters={'uploaded_by_user_id': request.user.id})
else:
documents = Document.search(query_string)
else:
form = SearchForm(placeholder_suffix='documents')
# Pagination
p = request.GET.get('p', 1)
paginator = Paginator(documents, 20)
try:
documents = paginator.page(p)
except PageNotAnInteger:
documents = paginator.page(1)
except EmptyPage:
documents = paginator.page(paginator.num_pages)
# Create response
if request.is_ajax():
return render(request, 'wagtaildocs/documents/results.html', {
'ordering': ordering,
'documents': documents,
'query_string': query_string,
'is_searching': bool(query_string),
})
else:
return render(request, 'wagtaildocs/documents/index.html', {
'ordering': ordering,
'documents': documents,
'query_string': query_string,
'is_searching': bool(query_string),
'search_form': form,
'popular_tags': Document.popular_tags(),
})
示例14: index
def index(request):
Image = get_image_model()
# Get images (filtered by user permission)
images = permission_policy.instances_user_has_any_permission_for(request.user, ["change", "delete"]).order_by(
"-created_at"
)
# Search
query_string = None
if "q" in request.GET:
form = SearchForm(request.GET, placeholder=_("Search images"))
if form.is_valid():
query_string = form.cleaned_data["q"]
images = images.search(query_string)
else:
form = SearchForm(placeholder=_("Search images"))
# Filter by collection
current_collection = None
collection_id = request.GET.get("collection_id")
if collection_id:
try:
current_collection = Collection.objects.get(id=collection_id)
images = images.filter(collection=current_collection)
except (ValueError, Collection.DoesNotExist):
pass
paginator, images = paginate(request, images)
collections = permission_policy.collections_user_has_any_permission_for(request.user, ["add", "change"])
if len(collections) < 2:
collections = None
# Create response
if request.is_ajax():
return render(
request,
"wagtailimages/images/results.html",
{"images": images, "query_string": query_string, "is_searching": bool(query_string)},
)
else:
return render(
request,
"wagtailimages/images/index.html",
{
"images": images,
"query_string": query_string,
"is_searching": bool(query_string),
"search_form": form,
"popular_tags": Image.popular_tags(),
"collections": collections,
"current_collection": current_collection,
"user_can_add": permission_policy.user_has_permission(request.user, "add"),
},
)
示例15: index
def index(request):
q = None
is_searching = False
if 'q' in request.GET:
form = SearchForm(request.GET, placeholder=_("Search users"))
if form.is_valid():
q = form.cleaned_data['q']
is_searching = True
if User.USERNAME_FIELD == 'username':
users = User.objects.filter(
Q(username__icontains=q) |
Q(first_name__icontains=q) |
Q(last_name__icontains=q) |
Q(email__icontains=q)
)
else:
users = User.objects.filter(
Q(first_name__icontains=q) |
Q(last_name__icontains=q) |
Q(email__icontains=q)
)
else:
form = SearchForm(placeholder=_("Search users"))
if not is_searching:
users = User.objects
users = users.order_by('last_name', 'first_name')
if 'ordering' in request.GET:
ordering = request.GET['ordering']
if ordering == 'username':
users = users.order_by(ordering)
else:
ordering = 'name'
paginator, users = paginate(request, users)
if request.is_ajax():
return render(request, "wagtailusers/users/results.html", {
'users': users,
'is_searching': is_searching,
'query_string': q,
'ordering': ordering,
})
else:
return render(request, "wagtailusers/users/index.html", {
'search_form': form,
'users': users,
'is_searching': is_searching,
'ordering': ordering,
'query_string': q,
})