old_contents: # -*- coding: utf-8 -*-
  from django.conf.urls.defaults import *
  from django.contrib.admin.views.decorators import staff_member_required
  from experiments.views import experiment_details, list_experiments
  
  urlpatterns = patterns('experiments.views',
      url(r'^(?P<experiment_name>.+)/$', staff_member_required(experiment_details)),
      url(r'^$', staff_member_required(list_experiments))
  )
  
new_contents: # -*- coding: utf-8 -*-
  from django.conf.urls.defaults import *
  from django.contrib.admin.views.decorators import staff_member_required
  from experiments.views import experiment_details, list_experiments
  
  urlpatterns = patterns('experiments.views',
      url(r'^(?P<experiment_name>.+)/$', staff_member_required(experiment_details)),
      url(r'^(.+)/$', 'experiment_details'),
      url(r'^$', staff_member_required(list_experiments)),
      url(r'^$', 'list_experiments'),
  )
  
subject: make the reverse url() function work with these urls. I don't know why, but it doesn't work with the 'staff member required' wrapper