Mercurial > personas_backend
changeset 129:3aff48d6beca
Created a wrapper for dynamic personas, so that we can provide custom functionality for some dynamic persona methods to help ensure that a dynamic persona doesn't get overloaded/DOS'd.
author | Atul Varma <varmaa@toolness.com> |
---|---|
date | Wed, 02 Apr 2008 14:45:13 -0700 |
parents | 9bcc77e37c19 |
children | 694ff9b2474d |
files | personasbackend/personas/models.py personasbackend/personas/urls.py personasbackend/personas/views.py |
diffstat | 3 files changed, 15 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/personasbackend/personas/models.py Wed Apr 02 12:01:42 2008 -0700 +++ b/personasbackend/personas/models.py Wed Apr 02 14:45:13 2008 -0700 @@ -219,7 +219,10 @@ def __get_resolved_url(self): viewinfo = parse_personas_view_url( self.url ) if not viewinfo: - return self.url + return make_absolute_url( reverse( + 'dynamic-persona', + kwargs = { 'persona_id' : str(self.id) } + ) ) else: return make_absolute_url( reverse( viewinfo['view'],
--- a/personasbackend/personas/urls.py Wed Apr 02 12:01:42 2008 -0700 +++ b/personasbackend/personas/urls.py Wed Apr 02 14:45:13 2008 -0700 @@ -12,10 +12,13 @@ 'personasbackend.personas.json_feeds.personas', name='personas-all-json'), - # Dynamic wrappers for views + # Dynamic wrappers for persona URLs url(r'^legacy/(?P<name>.+)$', 'personasbackend.personas.views.legacy_cbeard_persona', name='legacy-cbeard-persona'), + url(r'^dynamic/(?P<persona_id>\d+)/$', + 'personasbackend.personas.views.dynamic_persona_proxy', + name='dynamic-persona'), # Auth url(r'^login/$', 'django.contrib.auth.views.login',
--- a/personasbackend/personas/views.py Wed Apr 02 12:01:42 2008 -0700 +++ b/personasbackend/personas/views.py Wed Apr 02 14:45:13 2008 -0700 @@ -33,6 +33,13 @@ mimetype = "application/vnd.mozilla.xul+xml" ) +def dynamic_persona_proxy( request, persona_id ): + # TODO: Deal with case where persona.url already has a querystring. + persona = models.Persona.objects.get( pk=int(persona_id) ) + action = request.GET.get( "action", "" ) + return HttpResponseRedirect( "%s?action=%s" % (persona.url, + action) ) + def list_view( request ): personas = models.Persona.objects.filter( status="published" ) return render_to_response(