Tweaks to sobol to make its use simpler: added a prerendered version of the results...
[philo.git] / philo / contrib / sobol / models.py
index 2cb1651..37bb29e 100644 (file)
@@ -4,6 +4,7 @@ from django.conf import settings
 from django.conf.urls.defaults import patterns, url
 from django.contrib import messages
 from django.core.exceptions import ValidationError
 from django.conf.urls.defaults import patterns, url
 from django.contrib import messages
 from django.core.exceptions import ValidationError
+from django.core.validators import URLValidator
 from django.db import models
 from django.http import HttpResponseRedirect, Http404, HttpResponse
 from django.utils import simplejson as json
 from django.db import models
 from django.http import HttpResponseRedirect, Http404, HttpResponse
 from django.utils import simplejson as json
@@ -15,7 +16,6 @@ from philo.contrib.sobol.utils import HASH_REDIRECT_GET_KEY, URL_REDIRECT_GET_KE
 from philo.exceptions import ViewCanNotProvideSubpath
 from philo.models import MultiView, Page
 from philo.models.fields import SlugMultipleChoiceField
 from philo.exceptions import ViewCanNotProvideSubpath
 from philo.models import MultiView, Page
 from philo.models.fields import SlugMultipleChoiceField
-from philo.validators import RedirectValidator
 
 eventlet = None
 if getattr(settings, 'SOBOL_USE_EVENTLET', False):
 
 eventlet = None
 if getattr(settings, 'SOBOL_USE_EVENTLET', False):
@@ -83,7 +83,7 @@ class Search(models.Model):
 
 class ResultURL(models.Model):
        search = models.ForeignKey(Search, related_name='result_urls')
 
 class ResultURL(models.Model):
        search = models.ForeignKey(Search, related_name='result_urls')
-       url = models.TextField(validators=[RedirectValidator()])
+       url = models.TextField(validators=[URLValidator()])
        
        def __unicode__(self):
                return self.url
        
        def __unicode__(self):
                return self.url
@@ -204,7 +204,7 @@ class SearchView(MultiView):
                                        })
                                else:
                                        context.update({
                                        })
                                else:
                                        context.update({
-                                               'searches': [{'verbose_name': verbose_name, 'slug': slug, 'url': self.reverse('ajax_api_view', kwargs={'slug': slug}, node=request.node), 'result_template': registry[slug].result_template} for slug, verbose_name in registry.iterchoices() if slug in self.searches]
+                                               'searches': [{'verbose_name': verbose_name, 'slug': slug, 'url': "%s?%s=%s" % (self.reverse('ajax_api_view', kwargs={'slug': slug}, node=request.node), SEARCH_ARG_GET_KEY, search_string), 'result_template': registry[slug].result_template} for slug, verbose_name in registry.iterchoices() if slug in self.searches]
                                        })
                else:
                        form = SearchForm()
                                        })
                else:
                        form = SearchForm()
@@ -224,7 +224,8 @@ class SearchView(MultiView):
                        raise Http404
                
                search_instance = self.get_search_instance(slug, search_string)
                        raise Http404
                
                search_instance = self.get_search_instance(slug, search_string)
-               response = HttpResponse(json.dumps({
+               
+               return HttpResponse(json.dumps({
                        'results': [result.get_context() for result in search_instance.results],
                        'results': [result.get_context() for result in search_instance.results],
-               }))
-               return response
\ No newline at end of file
+                       'rendered': [result.render() for result in search_instance.results]
+               }))
\ No newline at end of file