def search(translation, request): """Perform search or returns cached search results.""" # Possible new search form = SearchForm(request.user, request.GET, show_builder=False) # Process form form_valid = form.is_valid() if not form_valid: show_form_errors(request, form) search_result = { "form": form, "offset": form.cleaned_data.get("offset", 1), "checksum": form.cleaned_data.get("checksum"), } search_url = form.urlencode() session_key = "search_{0}_{1}".format(translation.pk, search_url) if ( session_key in request.session and "offset" in request.GET and "sort_by" not in request.GET and "items" in request.session[session_key] ): search_result.update(request.session[session_key]) return search_result allunits = translation.unit_set.search(form.cleaned_data.get("q", "")).distinct() search_query = form.get_search_query() if form_valid else "" name = form.get_name() # Grab unit IDs unit_ids = list( allunits.order_by_request(form.cleaned_data).values_list("id", flat=True) ) # Check empty search results if not unit_ids: messages.warning(request, _("No string matched your search!")) return redirect(translation) # Remove old search results cleanup_session(request.session) store_result = { "query": search_query, "url": search_url, "items": form.items(), "key": session_key, "name": force_str(name), "ids": unit_ids, "ttl": int(time.time()) + 86400, } request.session[session_key] = store_result search_result.update(store_result) return search_result
def search(translation, request): """Perform search or returns cached search results.""" # Possible new search form = SearchForm(request.GET) # Process form form_valid = form.is_valid() if not form_valid: show_form_errors(request, form) search_result = { 'form': form, 'offset': form.cleaned_data.get('offset', 1), 'checksum': form.cleaned_data.get('checksum'), } search_url = form.urlencode() session_key = 'search_{0}_{1}'.format(translation.pk, search_url) if (session_key in request.session and 'offset' in request.GET and 'items' in request.session[session_key]): search_result.update(request.session[session_key]) return search_result allunits = translation.unit_set.search( form.cleaned_data, translation=translation, ) search_query = form.get_search_query() if form_valid else '' name = form.get_name() if form_valid else '' # Grab unit IDs unit_ids = list(allunits.order().values_list('id', flat=True)) # Check empty search results if not unit_ids: messages.warning(request, _('No string matched your search!')) return redirect(translation) # Remove old search results cleanup_session(request.session) store_result = { 'query': search_query, 'url': search_url, 'items': form.items(), 'key': session_key, 'name': force_text(name), 'ids': unit_ids, 'ttl': int(time.time()) + 86400, } request.session[session_key] = store_result search_result.update(store_result) return search_result
def search(translation, request): """Perform search or returns cached search results.""" # Possible new search form = SearchForm(request.GET) # Process form form_valid = form.is_valid() if not form_valid: show_form_errors(request, form) search_result = { 'form': form, 'offset': form.cleaned_data.get('offset', 1), 'checksum': form.cleaned_data.get('checksum'), } search_url = form.urlencode() session_key = 'search_{0}_{1}'.format(translation.pk, search_url) if (session_key in request.session and 'offset' in request.GET and 'items' in request.session[session_key]): search_result.update(request.session[session_key]) return search_result allunits = translation.unit_set.search( form.cleaned_data, translation=translation, ) search_query = form.get_search_query() if form_valid else '' name = form.get_name() if form_valid else '' # Grab unit IDs unit_ids = list(allunits.values_list('id', flat=True)) # Check empty search results if not unit_ids: messages.warning(request, _('No string matched your search!')) return redirect(translation) # Remove old search results cleanup_session(request.session) store_result = { 'query': search_query, 'url': search_url, 'items': form.items(), 'key': session_key, 'name': force_text(name), 'ids': unit_ids, 'ttl': int(time.time()) + 86400, } request.session[session_key] = store_result search_result.update(store_result) return search_result
def search(translation, request): """Perform search or returns cached search results.""" # Possible new search search_form = SearchForm(request.GET) review_form = ReviewForm(request.GET) # Process form if 'date' in request.GET: if review_form.is_valid(): form = review_form else: show_form_errors(request, review_form) # Use blank form form = SearchForm([]) form.is_valid() elif search_form.is_valid(): form = search_form else: show_form_errors(request, search_form) # Use blank form form = SearchForm([]) form.is_valid() search_result = { 'form': form, 'offset': form.cleaned_data['offset'], 'checksum': form.cleaned_data['checksum'], } search_url = form.urlencode() session_key = 'search_{0}_{1}'.format(translation.pk, search_url) if session_key in request.session and 'offset' in request.GET: search_result.update(request.session[session_key]) return search_result if form.cleaned_data['type'] == 'review': allunits = translation.unit_set.review(form.cleaned_data['date'], request.user) else: allunits = translation.unit_set.search( translation, form.cleaned_data, ) if form.cleaned_data['type'] == 'random': allunits = allunits[:25] search_query = form.get_search_query() name = form.get_name() # Grab unit IDs unit_ids = list(allunits.values_list('id', flat=True)) # Check empty search results if len(unit_ids) == 0: messages.warning(request, _('No string matched your search!')) return redirect(translation) # Remove old search results cleanup_session(request.session) store_result = { 'query': search_query, 'url': search_url, 'key': session_key, 'name': force_text(name), 'ids': unit_ids, 'ttl': int(time.time()) + 86400, } request.session[session_key] = store_result search_result.update(store_result) return search_result
def search(translation, request): """Perform search or returns cached search results.""" # Possible new search search_form = SearchForm(request.GET) review_form = ReviewForm(request.GET) # Process form if 'date' in request.GET: if review_form.is_valid(): form = review_form else: show_form_errors(request, review_form) # Use blank form form = SearchForm([]) form.is_valid() elif search_form.is_valid(): form = search_form else: show_form_errors(request, search_form) # Use blank form form = SearchForm([]) form.is_valid() search_result = { 'form': form, 'offset': form.cleaned_data['offset'], 'checksum': form.cleaned_data['checksum'], } search_url = form.urlencode() session_key = 'search_{0}_{1}'.format(translation.pk, search_url) if session_key in request.session: search_result.update(request.session[session_key]) return search_result if form.cleaned_data['type'] == 'review': allunits = translation.unit_set.review( form.cleaned_data['date'], request.user ) else: allunits = translation.unit_set.search( translation, form.cleaned_data, ) if form.cleaned_data['type'] == 'random': allunits = allunits[:25] search_query = form.get_search_query() name = form.get_name() # Grab unit IDs unit_ids = list(allunits.values_list('id', flat=True)) # Check empty search results if len(unit_ids) == 0: messages.warning(request, _('No string matched your search!')) return redirect(translation) # Remove old search results cleanup_session(request.session) store_result = { 'query': search_query, 'url': search_url, 'key': session_key, 'name': force_text(name), 'ids': unit_ids, 'ttl': int(time.time()) + 86400, } request.session[session_key] = store_result search_result.update(store_result) return search_result