コード例 #1
0
def add_translation_by_search(request):
	resp, li, access = _list_access_from_post_pk(request, request.POST, need_edit = True)
	if resp: return resp
	form = HighlightedModelSearchForm(request.POST)
	if li.language:
		results = form.search().filter(language_key = li.language)
		other_language_results = form.search().filter(language_key__not = li.language)
	else:
		results = form.search()
		other_language_results = None
	if len(results) == 1:
		if results[0].language_key == li.language or li.language is None:
			""" Only one results, apply directly. """
			if results[0].object in li.translations.all():
				add_message(request, WARNING, '"%s" (the only result) is already on the list.' % results[0].object)
			else:
				li.translations.add(results[0].object)
				""" everyone who follows this list needs to update active translations """
				for need_update_access in ListAccess.objects.filter(translations_list = li):
					need_update_access.learner.need_update()
				add_message(request, INFO, '"%s" (the only result) was added to the list.' % results[0].object)
			return redirect(request.POST['next'] or li.get_absolute_url())
	""" Show options to the user """
	return render(request, 'add_choose.html', {
		'results': results,
		'language_results': other_language_results,
		'query': request.POST['q'],
		'list': li,
		'next': request.POST['next'],
	})
コード例 #2
0
ファイル: views.py プロジェクト: myles/gtalug
def search(request):
	query = ''
	results = []
	
	if request.GET.get('q'):
		form = HighlightedModelSearchForm(request.GET, None, load_all=True)
		
		if form.is_valid():
			query = form.cleaned_data['q']
			results = form.search()
	else:
		form = HighlightedModelSearchForm(None, load_all=True)
	
	paginator = Paginator(results, RESULTS_PER_PAGE)
	
	try:
		page = paginator.page(int(request.GET.get('page', 1)))
	except InvalidPage:
		raise Http404("Not such page of results!")
	
	if page.object_list:
		if request.GET.get('output') == 'rss':
			feed = feedgenerator.Rss201rev2Feed(title=u"GTALUG Search feed %s" % query,
				link=u"http://gtalug.org/", description="")
		elif request.GET.get('output') == 'atom':
			feed = feedgenerator.Atom1Feed(title=u"GTALUG Search feed %s" % query,
				link=u"http://gtalug.org/", description="")
		else:
			feed = None
		
		if feed:
			for result in page.object_list:
				feed.add_item(title=result.object,
					link=result.object.get_absolute_url(), description="")
				return HttpResponse(feed.writeString('UTF-8'), mimetype=feed.mime_type)
	
	context = {
		'form': form,
		'page': page,
		'paginator': paginator,
		'query': query,
	}
	
	return render_to_response('search/search.html', context,
		context_instance=RequestContext(request))
コード例 #3
0
 def render(self, context, instance, placeholder):
     request = context.get('request')
     query = request.GET.get('q', None)
     page = request.GET.get('page', 1)
     form = HighlightedModelSearchForm(request.GET)
     form.search_queryset = SearchQuerySet
     if query:
         queryset = form.search()
         #TODO: filter pages and titles (for the unique page usage)
         # queryset = queryset.filter()
         # for item in queryset:
         #     print item.object
         if not request.user.is_authenticated():
             queryset = queryset.exclude(login_required=True)
         paginated = DiggPaginator(queryset, COMMON_PAGINATOR_PAGINATE_BY)
         context.update({
             'page_obj': paginated.page(page),
         })
     context.update({
         'instance': instance,
         'form': form,
     })
     return context
コード例 #4
0
class AdvancedSearchView(SearchView):
    '''Overrides the Haystack view'''
    template = 'search/advanced_search.html'
    form = HighlightedModelSearchForm()