#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 -~----------~----~----~----~------~----~------~--~---