#9956: Problematic Regexp in django.contrib.comments.urls
-------------------------------------+--------------------------------------
 Reporter:  james_stevenson          |       Owner:  nobody    
   Status:  new                      |   Milestone:            
Component:  django.contrib.comments  |     Version:  1.0       
 Keywords:  comments urls            |       Stage:  Unreviewed
Has_patch:  0                        |  
-------------------------------------+--------------------------------------
 I'm using Django for my blog:  http://www.mazelife.com/blog. My model for
 a blog post uses a slug as a primary key, and that field only allows
 letters, numbers and dashes to be used (in regex terms, [a-zA-Z0-9-]+)
 When using the comments app, this causes and error when I try to call
 get_content_object_url on a comment object attached to a blog post.

 Let's assume a hypothetical comment object, with the following properties:


 {{{
 comment.object_pk = "sample-blog-post-slug"

 comment.content_type_id = 11
 }}}


 '''Step 1''':  comment.get_content_object_url() is called in my
 application
 '''Step 2''':  in django.contrib.comments.models, this is in the
 get_content_object_url method, ln. 36 - 39:



 {{{
         return urlresolvers.reverse(
             "comments-url-redirect",
             args=(self.content_type_id, self.object_pk)
         )
 }}}


 So, in this case, this code is executed:


 {{{
         urlresolvers.reverse("comments-url-redirect", args=(11, "sample-
 blog-post-slug"))
 }}}


 '''Step 3'''. urlresolvers.reverse attempts to match this candidate:

         "comments/cr/11/sample-blog-post-slug/"

 against this pattern, from django.contrib.comments.urls (ln. 17):


 {{{
         r'^cr/(\d+)/(\w+)/$'
 }}}


 The problem here is that \w sequence does not match "-" in the blog post
 slug, so urlresolvers.reverse raises a NoReverseMatch exception.
 I think that, for a primary key that will be used in a url, "-" is a vaild
 character and is probably even more prevalent than "_", which is matched
 by \w.
 My proposed solution would be to modify django.contrib.comments.urls to
 match "-" characters in an object_pk. I've attached a patch to
 django.contrib.comments.urls that does this.

-- 
Ticket URL: <http://code.djangoproject.com/ticket/9956>
Django <http://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to django-updates@googlegroups.com
To unsubscribe from this group, send email to 
django-updates+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to