We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
User profile failing to load
**Describe the bug**
Attempting to access https://bookwyrm.social/user/jonathan.brodsky causes a
```
Server Error
Something went wrong! Sorry about that.
```

**To Reproduce**
Go to https://bookwyrm.social/user/jonathan.brodsky
It appears to apply to all urls within user/jonathan.brodsky - see https://bookwyrm.social/user/jonathan.brodsky/generatednote/1994

**Expected behavior**
A user profile page loads.

**Desktop (please complete the following information):**
 - OS: windows
 - Browser Chrome
 - Version 87.0.4280.66

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `bookwyrm/urls.py`
Content:
```
1 ''' url routing for the app and api '''
2 from django.conf.urls.static import static
3 from django.contrib import admin
4 from django.urls import path, re_path
5 
6 from bookwyrm import incoming, outgoing, views, settings, wellknown
7 from bookwyrm import view_actions as actions
8 
9 username_regex = r'(?P<username>[\w\-_]+@[\w\-\_\.]+)'
10 localname_regex = r'(?P<username>[\w\-_]+)'
11 user_path = r'^user/%s' % username_regex
12 local_user_path = r'^user/%s' % localname_regex
13 
14 status_types = [
15     'status',
16     'review',
17     'comment',
18     'quotation',
19     'boost',
20     'generatednote'
21 ]
22 status_path = r'%s/(%s)/(?P<status_id>\d+)' % \
23         (local_user_path, '|'.join(status_types))
24 
25 book_path = r'^book/(?P<book_id>\d+)'
26 
27 handler404 = 'bookwyrm.views.not_found_page'
28 handler500 = 'bookwyrm.views.server_error_page'
29 urlpatterns = [
30     path('admin/', admin.site.urls),
31 
32     # federation endpoints
33     re_path(r'^inbox/?$', incoming.shared_inbox),
34     re_path(r'%s/inbox/?$' % local_user_path, incoming.inbox),
35     re_path(r'%s/outbox/?$' % local_user_path, outgoing.outbox),
36 
37     # .well-known endpoints
38     re_path(r'^.well-known/webfinger/?$', wellknown.webfinger),
39     re_path(r'^.well-known/nodeinfo/?$', wellknown.nodeinfo_pointer),
40     re_path(r'^nodeinfo/2\.0/?$', wellknown.nodeinfo),
41     re_path(r'^api/v1/instance/?$', wellknown.instance_info),
42     re_path(r'^api/v1/instance/peers/?$', wellknown.peers),
43     # TODO: re_path(r'^.well-known/host-meta/?$', incoming.host_meta),
44     # TODO: robots.txt
45 
46     # ui views
47     re_path(r'^login/?$', views.login_page),
48     re_path(r'^about/?$', views.about_page),
49     re_path(r'^password-reset/?$', views.password_reset_request),
50     re_path(r'^password-reset/(?P<code>[A-Za-z0-9]+)/?$', views.password_reset),
51     re_path(r'^invite/?$', views.manage_invites),
52     re_path(r'^invite/(?P<code>[A-Za-z0-9]+)/?$', views.invite_page),
53 
54     path('', views.home),
55     re_path(r'^(?P<tab>home|local|federated)/?$', views.home_tab),
56     re_path(r'^notifications/?', views.notifications_page),
57     re_path(r'^import/?$', views.import_page),
58     re_path(r'^import-status/(\d+)/?$', views.import_status),
59     re_path(r'^user-edit/?$', views.edit_profile_page),
60 
61     # should return a ui view or activitypub json blob as requested
62     # users
63     re_path(r'%s/?$' % user_path, views.user_page),
64     re_path(r'%s/?$' % local_user_path, views.user_page),
65     re_path(r'%s\.json$' % local_user_path, views.user_page),
66     re_path(r'%s/shelves/?$' % local_user_path, views.user_shelves_page),
67     re_path(r'%s/followers(.json)?/?$' % local_user_path, views.followers_page),
68     re_path(r'%s/following(.json)?/?$' % local_user_path, views.following_page),
69 
70     # statuses
71     re_path(r'%s(.json)?/?$' % status_path, views.status_page),
72     re_path(r'%s/activity/?$' % status_path, views.status_page),
73     re_path(r'%s/replies(.json)?/?$' % status_path, views.replies_page),
74 
75     # books
76     re_path(r'%s(.json)?/?$' % book_path, views.book_page),
77     re_path(r'%s/edit/?$' % book_path, views.edit_book_page),
78     re_path(r'%s/editions(.json)?/?$' % book_path, views.editions_page),
79 
80     re_path(r'^author/(?P<author_id>[\w\-]+)(.json)?/?$', views.author_page),
81     re_path(r'^tag/(?P<tag_id>.+)\.json/?$', views.tag_page),
82     re_path(r'^tag/(?P<tag_id>.+)/?$', views.tag_page),
83     re_path(r'^%s/shelf/(?P<shelf_identifier>[\w-]+)(.json)?/?$' % \
84             user_path, views.shelf_page),
85     re_path(r'^%s/shelf/(?P<shelf_identifier>[\w-]+)(.json)?/?$' % \
86             local_user_path, views.shelf_page),
87 
88     re_path(r'^search/?$', views.search),
89 
90     # internal action endpoints
91     re_path(r'^logout/?$', actions.user_logout),
92     re_path(r'^user-login/?$', actions.user_login),
93     re_path(r'^user-register/?$', actions.register),
94     re_path(r'^reset-password-request/?$', actions.password_reset_request),
95     re_path(r'^reset-password/?$', actions.password_reset),
96     re_path(r'^change-password/?$', actions.password_change),
97 
98     re_path(r'^edit-profile/?$', actions.edit_profile),
99 
100     re_path(r'^import-data/?', actions.import_data),
101     re_path(r'^retry-import/?', actions.retry_import),
102     re_path(r'^resolve-book/?', actions.resolve_book),
103     re_path(r'^edit-book/(?P<book_id>\d+)/?', actions.edit_book),
104     re_path(r'^upload-cover/(?P<book_id>\d+)/?', actions.upload_cover),
105     re_path(r'^add-description/(?P<book_id>\d+)/?', actions.add_description),
106 
107     re_path(r'^edit-readthrough/?', actions.edit_readthrough),
108     re_path(r'^delete-readthrough/?', actions.delete_readthrough),
109 
110     re_path(r'^rate/?$', actions.rate),
111     re_path(r'^review/?$', actions.review),
112     re_path(r'^quote/?$', actions.quotate),
113     re_path(r'^comment/?$', actions.comment),
114     re_path(r'^tag/?$', actions.tag),
115     re_path(r'^untag/?$', actions.untag),
116     re_path(r'^reply/?$', actions.reply),
117 
118     re_path(r'^favorite/(?P<status_id>\d+)/?$', actions.favorite),
119     re_path(r'^unfavorite/(?P<status_id>\d+)/?$', actions.unfavorite),
120     re_path(r'^boost/(?P<status_id>\d+)/?$', actions.boost),
121     re_path(r'^unboost/(?P<status_id>\d+)/?$', actions.unboost),
122 
123     re_path(r'^delete-status/(?P<status_id>\d+)/?$', actions.delete_status),
124 
125     re_path(r'^create-shelf/?$', actions.create_shelf),
126     re_path(r'^edit-shelf/(?P<shelf_id>\d+)?$', actions.edit_shelf),
127     re_path(r'^delete-shelf/(?P<shelf_id>\d+)?$', actions.delete_shelf),
128     re_path(r'^shelve/?$', actions.shelve),
129     re_path(r'^unshelve/?$', actions.unshelve),
130     re_path(r'^start-reading/(?P<book_id>\d+)/?$', actions.start_reading),
131     re_path(r'^finish-reading/(?P<book_id>\d+)/?$', actions.finish_reading),
132 
133     re_path(r'^follow/?$', actions.follow),
134     re_path(r'^unfollow/?$', actions.unfollow),
135     re_path(r'^accept-follow-request/?$', actions.accept_follow_request),
136     re_path(r'^delete-follow-request/?$', actions.delete_follow_request),
137 
138     re_path(r'^clear-notifications/?$', actions.clear_notifications),
139 
140     re_path(r'^create-invite/?$', actions.create_invite),
141 
142 ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
143
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py
--- a/bookwyrm/urls.py
+++ b/bookwyrm/urls.py
@@ -6,8 +6,8 @@
 from bookwyrm import incoming, outgoing, views, settings, wellknown
 from bookwyrm import view_actions as actions
 
-username_regex = r'(?P<username>[\w\-_]+@[\w\-\_\.]+)'
-localname_regex = r'(?P<username>[\w\-_]+)'
+username_regex = r'(?P<username>[\w\-_\.]+@[\w\-\_\.]+)'
+localname_regex = r'(?P<username>[\w\-_\.]+)'
 user_path = r'^user/%s' % username_regex
 local_user_path = r'^user/%s' % localname_regex
 
@@ -61,8 +61,8 @@
     # should return a ui view or activitypub json blob as requested
     # users
     re_path(r'%s/?$' % user_path, views.user_page),
-    re_path(r'%s/?$' % local_user_path, views.user_page),
     re_path(r'%s\.json$' % local_user_path, views.user_page),
+    re_path(r'%s/?$' % local_user_path, views.user_page),
     re_path(r'%s/shelves/?$' % local_user_path, views.user_shelves_page),
     re_path(r'%s/followers(.json)?/?$' % local_user_path, views.followers_page),
     re_path(r'%s/following(.json)?/?$' % local_user_path, views.following_page),

{"golden_diff": "diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py\n--- a/bookwyrm/urls.py\n+++ b/bookwyrm/urls.py\n@@ -6,8 +6,8 @@\n from bookwyrm import incoming, outgoing, views, settings, wellknown\n from bookwyrm import view_actions as actions\n \n-username_regex = r'(?P<username>[\\w\\-_]+@[\\w\\-\\_\\.]+)'\n-localname_regex = r'(?P<username>[\\w\\-_]+)'\n+username_regex = r'(?P<username>[\\w\\-_\\.]+@[\\w\\-\\_\\.]+)'\n+localname_regex = r'(?P<username>[\\w\\-_\\.]+)'\n user_path = r'^user/%s' % username_regex\n local_user_path = r'^user/%s' % localname_regex\n \n@@ -61,8 +61,8 @@\n     # should return a ui view or activitypub json blob as requested\n     # users\n     re_path(r'%s/?$' % user_path, views.user_page),\n-    re_path(r'%s/?$' % local_user_path, views.user_page),\n     re_path(r'%s\\.json$' % local_user_path, views.user_page),\n+    re_path(r'%s/?$' % local_user_path, views.user_page),\n     re_path(r'%s/shelves/?$' % local_user_path, views.user_shelves_page),\n     re_path(r'%s/followers(.json)?/?$' % local_user_path, views.followers_page),\n     re_path(r'%s/following(.json)?/?$' % local_user_path, views.following_page),\n", "issue": "User profile failing to load\n**Describe the bug**\r\nAttempting to access https://bookwyrm.social/user/jonathan.brodsky causes a\r\n```\r\nServer Error\r\nSomething went wrong! Sorry about that.\r\n```\r\n\r\n**To Reproduce**\r\nGo to https://bookwyrm.social/user/jonathan.brodsky\r\nIt appears to apply to all urls within user/jonathan.brodsky - see https://bookwyrm.social/user/jonathan.brodsky/generatednote/1994\r\n\r\n**Expected behavior**\r\nA user profile page loads.\r\n\r\n**Desktop (please complete the following information):**\r\n - OS: windows\r\n - Browser Chrome\r\n - Version 87.0.4280.66\n", "before_files": [{"content": "''' url routing for the app and api '''\nfrom django.conf.urls.static import static\nfrom django.contrib import admin\nfrom django.urls import path, re_path\n\nfrom bookwyrm import incoming, outgoing, views, settings, wellknown\nfrom bookwyrm import view_actions as actions\n\nusername_regex = r'(?P<username>[\\w\\-_]+@[\\w\\-\\_\\.]+)'\nlocalname_regex = r'(?P<username>[\\w\\-_]+)'\nuser_path = r'^user/%s' % username_regex\nlocal_user_path = r'^user/%s' % localname_regex\n\nstatus_types = [\n    'status',\n    'review',\n    'comment',\n    'quotation',\n    'boost',\n    'generatednote'\n]\nstatus_path = r'%s/(%s)/(?P<status_id>\\d+)' % \\\n        (local_user_path, '|'.join(status_types))\n\nbook_path = r'^book/(?P<book_id>\\d+)'\n\nhandler404 = 'bookwyrm.views.not_found_page'\nhandler500 = 'bookwyrm.views.server_error_page'\nurlpatterns = [\n    path('admin/', admin.site.urls),\n\n    # federation endpoints\n    re_path(r'^inbox/?$', incoming.shared_inbox),\n    re_path(r'%s/inbox/?$' % local_user_path, incoming.inbox),\n    re_path(r'%s/outbox/?$' % local_user_path, outgoing.outbox),\n\n    # .well-known endpoints\n    re_path(r'^.well-known/webfinger/?$', wellknown.webfinger),\n    re_path(r'^.well-known/nodeinfo/?$', wellknown.nodeinfo_pointer),\n    re_path(r'^nodeinfo/2\\.0/?$', wellknown.nodeinfo),\n    re_path(r'^api/v1/instance/?$', wellknown.instance_info),\n    re_path(r'^api/v1/instance/peers/?$', wellknown.peers),\n    # TODO: re_path(r'^.well-known/host-meta/?$', incoming.host_meta),\n    # TODO: robots.txt\n\n    # ui views\n    re_path(r'^login/?$', views.login_page),\n    re_path(r'^about/?$', views.about_page),\n    re_path(r'^password-reset/?$', views.password_reset_request),\n    re_path(r'^password-reset/(?P<code>[A-Za-z0-9]+)/?$', views.password_reset),\n    re_path(r'^invite/?$', views.manage_invites),\n    re_path(r'^invite/(?P<code>[A-Za-z0-9]+)/?$', views.invite_page),\n\n    path('', views.home),\n    re_path(r'^(?P<tab>home|local|federated)/?$', views.home_tab),\n    re_path(r'^notifications/?', views.notifications_page),\n    re_path(r'^import/?$', views.import_page),\n    re_path(r'^import-status/(\\d+)/?$', views.import_status),\n    re_path(r'^user-edit/?$', views.edit_profile_page),\n\n    # should return a ui view or activitypub json blob as requested\n    # users\n    re_path(r'%s/?$' % user_path, views.user_page),\n    re_path(r'%s/?$' % local_user_path, views.user_page),\n    re_path(r'%s\\.json$' % local_user_path, views.user_page),\n    re_path(r'%s/shelves/?$' % local_user_path, views.user_shelves_page),\n    re_path(r'%s/followers(.json)?/?$' % local_user_path, views.followers_page),\n    re_path(r'%s/following(.json)?/?$' % local_user_path, views.following_page),\n\n    # statuses\n    re_path(r'%s(.json)?/?$' % status_path, views.status_page),\n    re_path(r'%s/activity/?$' % status_path, views.status_page),\n    re_path(r'%s/replies(.json)?/?$' % status_path, views.replies_page),\n\n    # books\n    re_path(r'%s(.json)?/?$' % book_path, views.book_page),\n    re_path(r'%s/edit/?$' % book_path, views.edit_book_page),\n    re_path(r'%s/editions(.json)?/?$' % book_path, views.editions_page),\n\n    re_path(r'^author/(?P<author_id>[\\w\\-]+)(.json)?/?$', views.author_page),\n    re_path(r'^tag/(?P<tag_id>.+)\\.json/?$', views.tag_page),\n    re_path(r'^tag/(?P<tag_id>.+)/?$', views.tag_page),\n    re_path(r'^%s/shelf/(?P<shelf_identifier>[\\w-]+)(.json)?/?$' % \\\n            user_path, views.shelf_page),\n    re_path(r'^%s/shelf/(?P<shelf_identifier>[\\w-]+)(.json)?/?$' % \\\n            local_user_path, views.shelf_page),\n\n    re_path(r'^search/?$', views.search),\n\n    # internal action endpoints\n    re_path(r'^logout/?$', actions.user_logout),\n    re_path(r'^user-login/?$', actions.user_login),\n    re_path(r'^user-register/?$', actions.register),\n    re_path(r'^reset-password-request/?$', actions.password_reset_request),\n    re_path(r'^reset-password/?$', actions.password_reset),\n    re_path(r'^change-password/?$', actions.password_change),\n\n    re_path(r'^edit-profile/?$', actions.edit_profile),\n\n    re_path(r'^import-data/?', actions.import_data),\n    re_path(r'^retry-import/?', actions.retry_import),\n    re_path(r'^resolve-book/?', actions.resolve_book),\n    re_path(r'^edit-book/(?P<book_id>\\d+)/?', actions.edit_book),\n    re_path(r'^upload-cover/(?P<book_id>\\d+)/?', actions.upload_cover),\n    re_path(r'^add-description/(?P<book_id>\\d+)/?', actions.add_description),\n\n    re_path(r'^edit-readthrough/?', actions.edit_readthrough),\n    re_path(r'^delete-readthrough/?', actions.delete_readthrough),\n\n    re_path(r'^rate/?$', actions.rate),\n    re_path(r'^review/?$', actions.review),\n    re_path(r'^quote/?$', actions.quotate),\n    re_path(r'^comment/?$', actions.comment),\n    re_path(r'^tag/?$', actions.tag),\n    re_path(r'^untag/?$', actions.untag),\n    re_path(r'^reply/?$', actions.reply),\n\n    re_path(r'^favorite/(?P<status_id>\\d+)/?$', actions.favorite),\n    re_path(r'^unfavorite/(?P<status_id>\\d+)/?$', actions.unfavorite),\n    re_path(r'^boost/(?P<status_id>\\d+)/?$', actions.boost),\n    re_path(r'^unboost/(?P<status_id>\\d+)/?$', actions.unboost),\n\n    re_path(r'^delete-status/(?P<status_id>\\d+)/?$', actions.delete_status),\n\n    re_path(r'^create-shelf/?$', actions.create_shelf),\n    re_path(r'^edit-shelf/(?P<shelf_id>\\d+)?$', actions.edit_shelf),\n    re_path(r'^delete-shelf/(?P<shelf_id>\\d+)?$', actions.delete_shelf),\n    re_path(r'^shelve/?$', actions.shelve),\n    re_path(r'^unshelve/?$', actions.unshelve),\n    re_path(r'^start-reading/(?P<book_id>\\d+)/?$', actions.start_reading),\n    re_path(r'^finish-reading/(?P<book_id>\\d+)/?$', actions.finish_reading),\n\n    re_path(r'^follow/?$', actions.follow),\n    re_path(r'^unfollow/?$', actions.unfollow),\n    re_path(r'^accept-follow-request/?$', actions.accept_follow_request),\n    re_path(r'^delete-follow-request/?$', actions.delete_follow_request),\n\n    re_path(r'^clear-notifications/?$', actions.clear_notifications),\n\n    re_path(r'^create-invite/?$', actions.create_invite),\n\n] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)\n", "path": "bookwyrm/urls.py"}], "after_files": [{"content": "''' url routing for the app and api '''\nfrom django.conf.urls.static import static\nfrom django.contrib import admin\nfrom django.urls import path, re_path\n\nfrom bookwyrm import incoming, outgoing, views, settings, wellknown\nfrom bookwyrm import view_actions as actions\n\nusername_regex = r'(?P<username>[\\w\\-_\\.]+@[\\w\\-\\_\\.]+)'\nlocalname_regex = r'(?P<username>[\\w\\-_\\.]+)'\nuser_path = r'^user/%s' % username_regex\nlocal_user_path = r'^user/%s' % localname_regex\n\nstatus_types = [\n    'status',\n    'review',\n    'comment',\n    'quotation',\n    'boost',\n    'generatednote'\n]\nstatus_path = r'%s/(%s)/(?P<status_id>\\d+)' % \\\n        (local_user_path, '|'.join(status_types))\n\nbook_path = r'^book/(?P<book_id>\\d+)'\n\nhandler404 = 'bookwyrm.views.not_found_page'\nhandler500 = 'bookwyrm.views.server_error_page'\nurlpatterns = [\n    path('admin/', admin.site.urls),\n\n    # federation endpoints\n    re_path(r'^inbox/?$', incoming.shared_inbox),\n    re_path(r'%s/inbox/?$' % local_user_path, incoming.inbox),\n    re_path(r'%s/outbox/?$' % local_user_path, outgoing.outbox),\n\n    # .well-known endpoints\n    re_path(r'^.well-known/webfinger/?$', wellknown.webfinger),\n    re_path(r'^.well-known/nodeinfo/?$', wellknown.nodeinfo_pointer),\n    re_path(r'^nodeinfo/2\\.0/?$', wellknown.nodeinfo),\n    re_path(r'^api/v1/instance/?$', wellknown.instance_info),\n    re_path(r'^api/v1/instance/peers/?$', wellknown.peers),\n    # TODO: re_path(r'^.well-known/host-meta/?$', incoming.host_meta),\n    # TODO: robots.txt\n\n    # ui views\n    re_path(r'^login/?$', views.login_page),\n    re_path(r'^about/?$', views.about_page),\n    re_path(r'^password-reset/?$', views.password_reset_request),\n    re_path(r'^password-reset/(?P<code>[A-Za-z0-9]+)/?$', views.password_reset),\n    re_path(r'^invite/?$', views.manage_invites),\n    re_path(r'^invite/(?P<code>[A-Za-z0-9]+)/?$', views.invite_page),\n\n    path('', views.home),\n    re_path(r'^(?P<tab>home|local|federated)/?$', views.home_tab),\n    re_path(r'^notifications/?', views.notifications_page),\n    re_path(r'^import/?$', views.import_page),\n    re_path(r'^import-status/(\\d+)/?$', views.import_status),\n    re_path(r'^user-edit/?$', views.edit_profile_page),\n\n    # should return a ui view or activitypub json blob as requested\n    # users\n    re_path(r'%s/?$' % user_path, views.user_page),\n    re_path(r'%s\\.json$' % local_user_path, views.user_page),\n    re_path(r'%s/?$' % local_user_path, views.user_page),\n    re_path(r'%s/shelves/?$' % local_user_path, views.user_shelves_page),\n    re_path(r'%s/followers(.json)?/?$' % local_user_path, views.followers_page),\n    re_path(r'%s/following(.json)?/?$' % local_user_path, views.following_page),\n\n    # statuses\n    re_path(r'%s(.json)?/?$' % status_path, views.status_page),\n    re_path(r'%s/activity/?$' % status_path, views.status_page),\n    re_path(r'%s/replies(.json)?/?$' % status_path, views.replies_page),\n\n    # books\n    re_path(r'%s(.json)?/?$' % book_path, views.book_page),\n    re_path(r'%s/edit/?$' % book_path, views.edit_book_page),\n    re_path(r'%s/editions(.json)?/?$' % book_path, views.editions_page),\n\n    re_path(r'^author/(?P<author_id>[\\w\\-]+)(.json)?/?$', views.author_page),\n    re_path(r'^tag/(?P<tag_id>.+)\\.json/?$', views.tag_page),\n    re_path(r'^tag/(?P<tag_id>.+)/?$', views.tag_page),\n    re_path(r'^%s/shelf/(?P<shelf_identifier>[\\w-]+)(.json)?/?$' % \\\n            user_path, views.shelf_page),\n    re_path(r'^%s/shelf/(?P<shelf_identifier>[\\w-]+)(.json)?/?$' % \\\n            local_user_path, views.shelf_page),\n\n    re_path(r'^search/?$', views.search),\n\n    # internal action endpoints\n    re_path(r'^logout/?$', actions.user_logout),\n    re_path(r'^user-login/?$', actions.user_login),\n    re_path(r'^user-register/?$', actions.register),\n    re_path(r'^reset-password-request/?$', actions.password_reset_request),\n    re_path(r'^reset-password/?$', actions.password_reset),\n    re_path(r'^change-password/?$', actions.password_change),\n\n    re_path(r'^edit-profile/?$', actions.edit_profile),\n\n    re_path(r'^import-data/?', actions.import_data),\n    re_path(r'^retry-import/?', actions.retry_import),\n    re_path(r'^resolve-book/?', actions.resolve_book),\n    re_path(r'^edit-book/(?P<book_id>\\d+)/?', actions.edit_book),\n    re_path(r'^upload-cover/(?P<book_id>\\d+)/?', actions.upload_cover),\n    re_path(r'^add-description/(?P<book_id>\\d+)/?', actions.add_description),\n\n    re_path(r'^edit-readthrough/?', actions.edit_readthrough),\n    re_path(r'^delete-readthrough/?', actions.delete_readthrough),\n\n    re_path(r'^rate/?$', actions.rate),\n    re_path(r'^review/?$', actions.review),\n    re_path(r'^quote/?$', actions.quotate),\n    re_path(r'^comment/?$', actions.comment),\n    re_path(r'^tag/?$', actions.tag),\n    re_path(r'^untag/?$', actions.untag),\n    re_path(r'^reply/?$', actions.reply),\n\n    re_path(r'^favorite/(?P<status_id>\\d+)/?$', actions.favorite),\n    re_path(r'^unfavorite/(?P<status_id>\\d+)/?$', actions.unfavorite),\n    re_path(r'^boost/(?P<status_id>\\d+)/?$', actions.boost),\n    re_path(r'^unboost/(?P<status_id>\\d+)/?$', actions.unboost),\n\n    re_path(r'^delete-status/(?P<status_id>\\d+)/?$', actions.delete_status),\n\n    re_path(r'^create-shelf/?$', actions.create_shelf),\n    re_path(r'^edit-shelf/(?P<shelf_id>\\d+)?$', actions.edit_shelf),\n    re_path(r'^delete-shelf/(?P<shelf_id>\\d+)?$', actions.delete_shelf),\n    re_path(r'^shelve/?$', actions.shelve),\n    re_path(r'^unshelve/?$', actions.unshelve),\n    re_path(r'^start-reading/(?P<book_id>\\d+)/?$', actions.start_reading),\n    re_path(r'^finish-reading/(?P<book_id>\\d+)/?$', actions.finish_reading),\n\n    re_path(r'^follow/?$', actions.follow),\n    re_path(r'^unfollow/?$', actions.unfollow),\n    re_path(r'^accept-follow-request/?$', actions.accept_follow_request),\n    re_path(r'^delete-follow-request/?$', actions.delete_follow_request),\n\n    re_path(r'^clear-notifications/?$', actions.clear_notifications),\n\n    re_path(r'^create-invite/?$', actions.create_invite),\n\n] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)\n", "path": "bookwyrm/urls.py"}]}