We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
La demande d'aide sur un contenu ne déclenche rien
**Description du bug**

Cliquez sur un type d'aide dans la sidebar ne semble pas déclencher de demande d'aide.

**Comment reproduire ?**

La liste des étapes qui permet de reproduire le bug :

1. Allez sur le site '...'
2. Connectez vous avec le compte '....'
3. Allez le brouillon d'un contenu (dans mon cas c'était le brouillon d'un contenu déjà publié)
4. Cliquez sur "Repreneur" dans la sidebar et contatez qu'un bref bouton check s'affiche à gauche du texte, puis disparait sans aucune forme de message.

**Comportement attendu**

J'aimerai que le clic sur ce bouton m'informe à minima que ma demande a été prise en compte et que je retrouve mon contenu dans la liste des contenus qui ont besoin d'une aide.

**Capture d'écran**

![Capture d’écran de 2020-07-17 13-36-01](https://user-images.githubusercontent.com/6066015/87782253-7aa86e00-c832-11ea-9719-ba76c075c38e.png)


**Informations techniques**

- OS: Linux
- Navigateur: Brave (Chromium)
- Version/environnement de zds: beta

La demande d'aide sur un contenu ne déclenche rien
**Description du bug**

Cliquez sur un type d'aide dans la sidebar ne semble pas déclencher de demande d'aide.

**Comment reproduire ?**

La liste des étapes qui permet de reproduire le bug :

1. Allez sur le site '...'
2. Connectez vous avec le compte '....'
3. Allez le brouillon d'un contenu (dans mon cas c'était le brouillon d'un contenu déjà publié)
4. Cliquez sur "Repreneur" dans la sidebar et contatez qu'un bref bouton check s'affiche à gauche du texte, puis disparait sans aucune forme de message.

**Comportement attendu**

J'aimerai que le clic sur ce bouton m'informe à minima que ma demande a été prise en compte et que je retrouve mon contenu dans la liste des contenus qui ont besoin d'une aide.

**Capture d'écran**

![Capture d’écran de 2020-07-17 13-36-01](https://user-images.githubusercontent.com/6066015/87782253-7aa86e00-c832-11ea-9719-ba76c075c38e.png)


**Informations techniques**

- OS: Linux
- Navigateur: Brave (Chromium)
- Version/environnement de zds: beta


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `zds/tutorialv2/urls/urls_contents.py`
Content:
```
1 from django.urls import path, re_path
2 from django.views.generic.base import RedirectView
3 
4 from zds.tutorialv2.views.contents import (DisplayContent, CreateContent, EditContent, EditContentLicense,
5                                            DeleteContent, CreateContainer, DisplayContainer, EditContainer,
6                                            CreateExtract, EditExtract,
7                                            DeleteContainerOrExtract, ManageBetaContent, DisplayHistory, DisplayDiff,
8                                            ActivateJSFiddleInContent, MoveChild,
9                                            DownloadContent, UpdateContentWithArchive, CreateContentFromArchive,
10                                            ContentsWithHelps, AddAuthorToContent,
11                                            RemoveAuthorFromContent, WarnTypo, DisplayBetaContent, DisplayBetaContainer,
12                                            ContentOfAuthor, RedirectOldContentOfAuthor, AddContributorToContent,
13                                            RemoveContributorFromContent, ContentOfContributors,
14                                            AddSuggestion, RemoveSuggestion, ChangeHelp, EditContentTags)
15 
16 from zds.tutorialv2.views.published import (SendNoteFormView, UpdateNoteView,
17                                             HideReaction, ShowReaction, SendNoteAlert, SolveNoteAlert, TagsListView,
18                                             FollowContentReaction, FollowNewContent, SendContentAlert,
19                                             SolveContentAlert,
20                                             RequestFeaturedContent, ContentStatisticsView)
21 
22 urlpatterns = [
23     # Flux
24     re_path(r'^flux/rss/$', RedirectView.as_view(pattern_name='publication:feed-rss',
25                                                  permanent=True), name='feed-rss'),
26     re_path(r'^flux/atom/$', RedirectView.as_view(pattern_name='publication:feed-atom',
27                                                   permanent=True), name='feed-atom'),
28 
29     path('voir/<str:username>/',
30          ContentOfAuthor.as_view(
31              type='ALL', context_object_name='contents'),
32          name='find-all'),
33     path('contributions/<str:username>/',
34          ContentOfContributors.as_view(
35              type='ALL', context_object_name='contribution_contents'),
36          name='find-contribution-all'),
37 
38     path('tutoriels/<int:pk>/', RedirectOldContentOfAuthor.as_view(type='TUTORIAL')),
39     path('articles/<int:pk>/', RedirectOldContentOfAuthor.as_view(type='ARTICLE')),
40     path('tribunes/<int:pk>/', RedirectOldContentOfAuthor.as_view(type='OPINION')),
41 
42     re_path(r'^aides/$', ContentsWithHelps.as_view(), name='helps'),
43     re_path(r'^aides/(?P<pk>\d+)/change$', ChangeHelp.as_view(), name='helps-change'),
44     re_path(r'^(?P<pk>\d+)/(?P<slug>.+)/(?P<parent_container_slug>.+)/(?P<container_slug>.+)/$',
45             DisplayContainer.as_view(public_is_prioritary=False),
46             name='view-container'),
47     re_path(r'^(?P<pk>\d+)/(?P<slug>.+)/(?P<container_slug>.+)/$',
48             DisplayContainer.as_view(public_is_prioritary=False),
49             name='view-container'),
50 
51     re_path(r'^(?P<pk>\d+)/(?P<slug>.+)/$', DisplayContent.as_view(public_is_prioritary=False),
52             name='view'),
53 
54     re_path(r'^telecharger/(?P<pk>\d+)/(?P<slug>.+)/$', DownloadContent.as_view(),
55             name='download-zip'),
56 
57     # beta:
58     re_path(r'^beta/(?P<pk>\d+)/(?P<slug>.+)/(?P<parent_container_slug>.+)/(?P<container_slug>.+)/$',
59             DisplayBetaContainer.as_view(public_is_prioritary=False),
60             name='beta-view-container'),
61     re_path(r'^beta/(?P<pk>\d+)/(?P<slug>.+)/(?P<container_slug>.+)/$',
62             DisplayBetaContainer.as_view(public_is_prioritary=False),
63             name='beta-view-container'),
64 
65     re_path(r'^beta/(?P<pk>\d+)/(?P<slug>.+)/$',
66             DisplayBetaContent.as_view(), name='beta-view'),
67 
68     # reactions:
69     re_path(r'^reactions/ajouter/$',
70             SendNoteFormView.as_view(redirection_is_needed=False), name='add-reaction'),
71     re_path(r'^reactions/editer/$',
72             UpdateNoteView.as_view(redirection_is_needed=False), name='update-reaction'),
73     re_path(r'^reactions/cacher/(?P<pk>\d+)/$',
74             HideReaction.as_view(), name='hide-reaction'),
75     re_path(r'^reactions/afficher/(?P<pk>\d+)/$',
76             ShowReaction.as_view(), name='show-reaction'),
77     re_path(r'^reactions/alerter/(?P<pk>\d+)/$',
78             SendNoteAlert.as_view(), name='alert-reaction'),
79     re_path(r'^reactions/resoudre/$',
80             SolveNoteAlert.as_view(), name='resolve-reaction'),
81 
82     # follow:
83     re_path(r'^suivre/(?P<pk>\d+)/reactions/$',
84             FollowContentReaction.as_view(), name='follow-reactions'),
85     re_path(r'^suivre/membres/(?P<pk>\d+)/$',
86             FollowNewContent.as_view(), name='follow'),
87 
88     # request
89     re_path(r'^requete/(?P<pk>\d+)/$', RequestFeaturedContent.as_view(), name='request-featured'),
90 
91     # content alerts:
92     re_path(r'^alerter/(?P<pk>\d+)/$',
93             SendContentAlert.as_view(), name='alert-content'),
94     re_path(r'^resoudre/(?P<pk>\d+)/$',
95             SolveContentAlert.as_view(), name='resolve-content'),
96 
97     # typo:
98     re_path(r'^reactions/typo/$', WarnTypo.as_view(), name='warn-typo'),
99 
100     # create:
101     re_path(r'^nouveau-tutoriel/$',
102             CreateContent.as_view(created_content_type='TUTORIAL'), name='create-tutorial'),
103     re_path(r'^nouvel-article/$',
104             CreateContent.as_view(created_content_type='ARTICLE'), name='create-article'),
105     re_path(r'^nouveau-billet/$',
106             CreateContent.as_view(created_content_type='OPINION'), name='create-opinion'),
107     re_path(r'^nouveau-conteneur/(?P<pk>\d+)/(?P<slug>.+)/(?P<container_slug>.+)/$',
108             CreateContainer.as_view(),
109             name='create-container'),
110     re_path(r'^nouveau-conteneur/(?P<pk>\d+)/(?P<slug>.+)/$',
111             CreateContainer.as_view(),
112             name='create-container'),
113 
114     re_path(r'^nouvelle-section/(?P<pk>\d+)/(?P<slug>.+)/(?P<parent_container_slug>.+)/(?P<container_slug>.+)/$',
115             CreateExtract.as_view(),
116             name='create-extract'),
117     re_path(r'^nouvelle-section/(?P<pk>\d+)/(?P<slug>.+)/(?P<container_slug>.+)/$',
118             CreateExtract.as_view(),
119             name='create-extract'),
120     re_path(r'^nouvelle-section/(?P<pk>\d+)/(?P<slug>.+)/$',
121             CreateExtract.as_view(),
122             name='create-extract'),
123 
124     # edit:
125     re_path(r'^editer-conteneur/(?P<pk>\d+)/(?P<slug>.+)/(?P<parent_container_slug>.+)/'
126             r'(?P<container_slug>.+)/$',
127             EditContainer.as_view(),
128             name='edit-container'),
129     re_path(r'^editer-conteneur/(?P<pk>\d+)/(?P<slug>.+)/(?P<container_slug>.+)/$',
130             EditContainer.as_view(),
131             name='edit-container'),
132 
133     re_path(r'^editer-section/(?P<pk>\d+)/(?P<slug>.+)/(?P<parent_container_slug>.+)/'
134             r'(?P<container_slug>.+)/(?P<extract_slug>.+)/$',
135             EditExtract.as_view(),
136             name='edit-extract'),
137     re_path(r'^editer-section/(?P<pk>\d+)/(?P<slug>.+)/(?P<container_slug>.+)/(?P<extract_slug>.+)/$',
138             EditExtract.as_view(),
139             name='edit-extract'),
140     re_path(r'^editer-section/(?P<pk>\d+)/(?P<slug>.+)/(?P<extract_slug>.+)/$',
141             EditExtract.as_view(),
142             name='edit-extract'),
143 
144     re_path(r'^editer/(?P<pk>\d+)/(?P<slug>.+)/$',
145             EditContent.as_view(), name='edit'),
146     re_path(r'^deplacer/$', MoveChild.as_view(), name='move-element'),
147 
148     re_path(r'^historique/(?P<pk>\d+)/(?P<slug>.+)/$',
149             DisplayHistory.as_view(), name='history'),
150     re_path(r'^comparaison/(?P<pk>\d+)/(?P<slug>.+)/$',
151             DisplayDiff.as_view(), name='diff'),
152     re_path(r'^ajouter-contributeur/(?P<pk>\d+)/$',
153             AddContributorToContent.as_view(), name='add-contributor'),
154     re_path(r'^enlever-contributeur/(?P<pk>\d+)/$',
155             RemoveContributorFromContent.as_view(), name='remove-contributor'),
156     re_path(r'^ajouter-auteur/(?P<pk>\d+)/$',
157             AddAuthorToContent.as_view(), name='add-author'),
158     re_path(r'^enlever-auteur/(?P<pk>\d+)/$',
159             RemoveAuthorFromContent.as_view(), name='remove-author'),
160 
161     # Modify the license
162     re_path(r'^modifier-licence/(?P<pk>\d+)/$', EditContentLicense.as_view(), name='edit-license'),
163 
164     # Modify the tags
165     re_path(r'^modifier-tags/(?P<pk>\d+)/$', EditContentTags.as_view(), name='edit-tags'),
166 
167     # beta:
168     re_path(r'^activer-beta/(?P<pk>\d+)/(?P<slug>.+)/$', ManageBetaContent.as_view(action='set'),
169             name='set-beta'),
170     re_path(r'^desactiver-beta/(?P<pk>\d+)/(?P<slug>.+)/$', ManageBetaContent.as_view(action='inactive'),
171             name='inactive-beta'),
172     re_path(r'^stats/(?P<pk>\d+)/(?P<slug>.+)/$', ContentStatisticsView.as_view(),
173             name='stats-content'),
174     re_path(r'^ajouter-suggestion/(?P<pk>\d+)/$', AddSuggestion.as_view(),
175             name='add-suggestion'),
176     re_path(r'^enlever-suggestion/(?P<pk>\d+)/$',
177             RemoveSuggestion.as_view(), name='remove-suggestion'),
178 
179 
180     # jsfiddle support:
181     re_path(r'activer-js/', ActivateJSFiddleInContent.as_view(),
182             name='activate-jsfiddle'),
183 
184     # delete:
185     re_path(r'^supprimer/(?P<pk>\d+)/(?P<slug>.+)/(?P<parent_container_slug>.+)/(?P<container_slug>.+)/'
186             r'(?P<object_slug>.+)/$',
187             DeleteContainerOrExtract.as_view(),
188             name='delete'),
189     re_path(r'^supprimer/(?P<pk>\d+)/(?P<slug>.+)/(?P<container_slug>.+)/(?P<object_slug>.+)/$',
190             DeleteContainerOrExtract.as_view(),
191             name='delete'),
192     re_path(r'^supprimer/(?P<pk>\d+)/(?P<slug>.+)/(?P<object_slug>.+)/$',
193             DeleteContainerOrExtract.as_view(),
194             name='delete'),
195 
196     re_path(r'^supprimer/(?P<pk>\d+)/(?P<slug>.+)/$',
197             DeleteContent.as_view(), name='delete'),
198 
199     # markdown import
200     re_path(r'^importer/archive/nouveau/$',
201             CreateContentFromArchive.as_view(), name='import-new'),
202     re_path(r'^importer/(?P<pk>\d+)/(?P<slug>.+)/$',
203             UpdateContentWithArchive.as_view(), name='import'),
204 
205     # tags
206     re_path(r'^tags/$', TagsListView.as_view(), name='tags'),
207 
208     re_path(r'^$', RedirectView.as_view(
209         pattern_name='publication:list', permanent=True), name='list'),
210 ]
211
```
--- 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/zds/tutorialv2/urls/urls_contents.py b/zds/tutorialv2/urls/urls_contents.py
--- a/zds/tutorialv2/urls/urls_contents.py
+++ b/zds/tutorialv2/urls/urls_contents.py
@@ -40,7 +40,7 @@
     path('tribunes/<int:pk>/', RedirectOldContentOfAuthor.as_view(type='OPINION')),
 
     re_path(r'^aides/$', ContentsWithHelps.as_view(), name='helps'),
-    re_path(r'^aides/(?P<pk>\d+)/change$', ChangeHelp.as_view(), name='helps-change'),
+    re_path(r'^aides/(?P<pk>\d+)/change/$', ChangeHelp.as_view(), name='helps-change'),
     re_path(r'^(?P<pk>\d+)/(?P<slug>.+)/(?P<parent_container_slug>.+)/(?P<container_slug>.+)/$',
             DisplayContainer.as_view(public_is_prioritary=False),
             name='view-container'),

{"golden_diff": "diff --git a/zds/tutorialv2/urls/urls_contents.py b/zds/tutorialv2/urls/urls_contents.py\n--- a/zds/tutorialv2/urls/urls_contents.py\n+++ b/zds/tutorialv2/urls/urls_contents.py\n@@ -40,7 +40,7 @@\n     path('tribunes/<int:pk>/', RedirectOldContentOfAuthor.as_view(type='OPINION')),\n \n     re_path(r'^aides/$', ContentsWithHelps.as_view(), name='helps'),\n-    re_path(r'^aides/(?P<pk>\\d+)/change$', ChangeHelp.as_view(), name='helps-change'),\n+    re_path(r'^aides/(?P<pk>\\d+)/change/$', ChangeHelp.as_view(), name='helps-change'),\n     re_path(r'^(?P<pk>\\d+)/(?P<slug>.+)/(?P<parent_container_slug>.+)/(?P<container_slug>.+)/$',\n             DisplayContainer.as_view(public_is_prioritary=False),\n             name='view-container'),\n", "issue": "La demande d'aide sur un contenu ne d\u00e9clenche rien\n**Description du bug**\r\n\r\nCliquez sur un type d'aide dans la sidebar ne semble pas d\u00e9clencher de demande d'aide.\r\n\r\n**Comment reproduire ?**\r\n\r\nLa liste des \u00e9tapes qui permet de reproduire le bug :\r\n\r\n1. Allez sur le site '...'\r\n2. Connectez vous avec le compte '....'\r\n3. Allez le brouillon d'un contenu (dans mon cas c'\u00e9tait le brouillon d'un contenu d\u00e9j\u00e0 publi\u00e9)\r\n4. Cliquez sur \"Repreneur\" dans la sidebar et contatez qu'un bref bouton check s'affiche \u00e0 gauche du texte, puis disparait sans aucune forme de message.\r\n\r\n**Comportement attendu**\r\n\r\nJ'aimerai que le clic sur ce bouton m'informe \u00e0 minima que ma demande a \u00e9t\u00e9 prise en compte et que je retrouve mon contenu dans la liste des contenus qui ont besoin d'une aide.\r\n\r\n**Capture d'\u00e9cran**\r\n\r\n![Capture d\u2019\u00e9cran de 2020-07-17 13-36-01](https://user-images.githubusercontent.com/6066015/87782253-7aa86e00-c832-11ea-9719-ba76c075c38e.png)\r\n\r\n\r\n**Informations techniques**\r\n\r\n- OS: Linux\r\n- Navigateur: Brave (Chromium)\r\n- Version/environnement de zds: beta\r\n\nLa demande d'aide sur un contenu ne d\u00e9clenche rien\n**Description du bug**\r\n\r\nCliquez sur un type d'aide dans la sidebar ne semble pas d\u00e9clencher de demande d'aide.\r\n\r\n**Comment reproduire ?**\r\n\r\nLa liste des \u00e9tapes qui permet de reproduire le bug :\r\n\r\n1. Allez sur le site '...'\r\n2. Connectez vous avec le compte '....'\r\n3. Allez le brouillon d'un contenu (dans mon cas c'\u00e9tait le brouillon d'un contenu d\u00e9j\u00e0 publi\u00e9)\r\n4. Cliquez sur \"Repreneur\" dans la sidebar et contatez qu'un bref bouton check s'affiche \u00e0 gauche du texte, puis disparait sans aucune forme de message.\r\n\r\n**Comportement attendu**\r\n\r\nJ'aimerai que le clic sur ce bouton m'informe \u00e0 minima que ma demande a \u00e9t\u00e9 prise en compte et que je retrouve mon contenu dans la liste des contenus qui ont besoin d'une aide.\r\n\r\n**Capture d'\u00e9cran**\r\n\r\n![Capture d\u2019\u00e9cran de 2020-07-17 13-36-01](https://user-images.githubusercontent.com/6066015/87782253-7aa86e00-c832-11ea-9719-ba76c075c38e.png)\r\n\r\n\r\n**Informations techniques**\r\n\r\n- OS: Linux\r\n- Navigateur: Brave (Chromium)\r\n- Version/environnement de zds: beta\r\n\n", "before_files": [{"content": "from django.urls import path, re_path\nfrom django.views.generic.base import RedirectView\n\nfrom zds.tutorialv2.views.contents import (DisplayContent, CreateContent, EditContent, EditContentLicense,\n                                           DeleteContent, CreateContainer, DisplayContainer, EditContainer,\n                                           CreateExtract, EditExtract,\n                                           DeleteContainerOrExtract, ManageBetaContent, DisplayHistory, DisplayDiff,\n                                           ActivateJSFiddleInContent, MoveChild,\n                                           DownloadContent, UpdateContentWithArchive, CreateContentFromArchive,\n                                           ContentsWithHelps, AddAuthorToContent,\n                                           RemoveAuthorFromContent, WarnTypo, DisplayBetaContent, DisplayBetaContainer,\n                                           ContentOfAuthor, RedirectOldContentOfAuthor, AddContributorToContent,\n                                           RemoveContributorFromContent, ContentOfContributors,\n                                           AddSuggestion, RemoveSuggestion, ChangeHelp, EditContentTags)\n\nfrom zds.tutorialv2.views.published import (SendNoteFormView, UpdateNoteView,\n                                            HideReaction, ShowReaction, SendNoteAlert, SolveNoteAlert, TagsListView,\n                                            FollowContentReaction, FollowNewContent, SendContentAlert,\n                                            SolveContentAlert,\n                                            RequestFeaturedContent, ContentStatisticsView)\n\nurlpatterns = [\n    # Flux\n    re_path(r'^flux/rss/$', RedirectView.as_view(pattern_name='publication:feed-rss',\n                                                 permanent=True), name='feed-rss'),\n    re_path(r'^flux/atom/$', RedirectView.as_view(pattern_name='publication:feed-atom',\n                                                  permanent=True), name='feed-atom'),\n\n    path('voir/<str:username>/',\n         ContentOfAuthor.as_view(\n             type='ALL', context_object_name='contents'),\n         name='find-all'),\n    path('contributions/<str:username>/',\n         ContentOfContributors.as_view(\n             type='ALL', context_object_name='contribution_contents'),\n         name='find-contribution-all'),\n\n    path('tutoriels/<int:pk>/', RedirectOldContentOfAuthor.as_view(type='TUTORIAL')),\n    path('articles/<int:pk>/', RedirectOldContentOfAuthor.as_view(type='ARTICLE')),\n    path('tribunes/<int:pk>/', RedirectOldContentOfAuthor.as_view(type='OPINION')),\n\n    re_path(r'^aides/$', ContentsWithHelps.as_view(), name='helps'),\n    re_path(r'^aides/(?P<pk>\\d+)/change$', ChangeHelp.as_view(), name='helps-change'),\n    re_path(r'^(?P<pk>\\d+)/(?P<slug>.+)/(?P<parent_container_slug>.+)/(?P<container_slug>.+)/$',\n            DisplayContainer.as_view(public_is_prioritary=False),\n            name='view-container'),\n    re_path(r'^(?P<pk>\\d+)/(?P<slug>.+)/(?P<container_slug>.+)/$',\n            DisplayContainer.as_view(public_is_prioritary=False),\n            name='view-container'),\n\n    re_path(r'^(?P<pk>\\d+)/(?P<slug>.+)/$', DisplayContent.as_view(public_is_prioritary=False),\n            name='view'),\n\n    re_path(r'^telecharger/(?P<pk>\\d+)/(?P<slug>.+)/$', DownloadContent.as_view(),\n            name='download-zip'),\n\n    # beta:\n    re_path(r'^beta/(?P<pk>\\d+)/(?P<slug>.+)/(?P<parent_container_slug>.+)/(?P<container_slug>.+)/$',\n            DisplayBetaContainer.as_view(public_is_prioritary=False),\n            name='beta-view-container'),\n    re_path(r'^beta/(?P<pk>\\d+)/(?P<slug>.+)/(?P<container_slug>.+)/$',\n            DisplayBetaContainer.as_view(public_is_prioritary=False),\n            name='beta-view-container'),\n\n    re_path(r'^beta/(?P<pk>\\d+)/(?P<slug>.+)/$',\n            DisplayBetaContent.as_view(), name='beta-view'),\n\n    # reactions:\n    re_path(r'^reactions/ajouter/$',\n            SendNoteFormView.as_view(redirection_is_needed=False), name='add-reaction'),\n    re_path(r'^reactions/editer/$',\n            UpdateNoteView.as_view(redirection_is_needed=False), name='update-reaction'),\n    re_path(r'^reactions/cacher/(?P<pk>\\d+)/$',\n            HideReaction.as_view(), name='hide-reaction'),\n    re_path(r'^reactions/afficher/(?P<pk>\\d+)/$',\n            ShowReaction.as_view(), name='show-reaction'),\n    re_path(r'^reactions/alerter/(?P<pk>\\d+)/$',\n            SendNoteAlert.as_view(), name='alert-reaction'),\n    re_path(r'^reactions/resoudre/$',\n            SolveNoteAlert.as_view(), name='resolve-reaction'),\n\n    # follow:\n    re_path(r'^suivre/(?P<pk>\\d+)/reactions/$',\n            FollowContentReaction.as_view(), name='follow-reactions'),\n    re_path(r'^suivre/membres/(?P<pk>\\d+)/$',\n            FollowNewContent.as_view(), name='follow'),\n\n    # request\n    re_path(r'^requete/(?P<pk>\\d+)/$', RequestFeaturedContent.as_view(), name='request-featured'),\n\n    # content alerts:\n    re_path(r'^alerter/(?P<pk>\\d+)/$',\n            SendContentAlert.as_view(), name='alert-content'),\n    re_path(r'^resoudre/(?P<pk>\\d+)/$',\n            SolveContentAlert.as_view(), name='resolve-content'),\n\n    # typo:\n    re_path(r'^reactions/typo/$', WarnTypo.as_view(), name='warn-typo'),\n\n    # create:\n    re_path(r'^nouveau-tutoriel/$',\n            CreateContent.as_view(created_content_type='TUTORIAL'), name='create-tutorial'),\n    re_path(r'^nouvel-article/$',\n            CreateContent.as_view(created_content_type='ARTICLE'), name='create-article'),\n    re_path(r'^nouveau-billet/$',\n            CreateContent.as_view(created_content_type='OPINION'), name='create-opinion'),\n    re_path(r'^nouveau-conteneur/(?P<pk>\\d+)/(?P<slug>.+)/(?P<container_slug>.+)/$',\n            CreateContainer.as_view(),\n            name='create-container'),\n    re_path(r'^nouveau-conteneur/(?P<pk>\\d+)/(?P<slug>.+)/$',\n            CreateContainer.as_view(),\n            name='create-container'),\n\n    re_path(r'^nouvelle-section/(?P<pk>\\d+)/(?P<slug>.+)/(?P<parent_container_slug>.+)/(?P<container_slug>.+)/$',\n            CreateExtract.as_view(),\n            name='create-extract'),\n    re_path(r'^nouvelle-section/(?P<pk>\\d+)/(?P<slug>.+)/(?P<container_slug>.+)/$',\n            CreateExtract.as_view(),\n            name='create-extract'),\n    re_path(r'^nouvelle-section/(?P<pk>\\d+)/(?P<slug>.+)/$',\n            CreateExtract.as_view(),\n            name='create-extract'),\n\n    # edit:\n    re_path(r'^editer-conteneur/(?P<pk>\\d+)/(?P<slug>.+)/(?P<parent_container_slug>.+)/'\n            r'(?P<container_slug>.+)/$',\n            EditContainer.as_view(),\n            name='edit-container'),\n    re_path(r'^editer-conteneur/(?P<pk>\\d+)/(?P<slug>.+)/(?P<container_slug>.+)/$',\n            EditContainer.as_view(),\n            name='edit-container'),\n\n    re_path(r'^editer-section/(?P<pk>\\d+)/(?P<slug>.+)/(?P<parent_container_slug>.+)/'\n            r'(?P<container_slug>.+)/(?P<extract_slug>.+)/$',\n            EditExtract.as_view(),\n            name='edit-extract'),\n    re_path(r'^editer-section/(?P<pk>\\d+)/(?P<slug>.+)/(?P<container_slug>.+)/(?P<extract_slug>.+)/$',\n            EditExtract.as_view(),\n            name='edit-extract'),\n    re_path(r'^editer-section/(?P<pk>\\d+)/(?P<slug>.+)/(?P<extract_slug>.+)/$',\n            EditExtract.as_view(),\n            name='edit-extract'),\n\n    re_path(r'^editer/(?P<pk>\\d+)/(?P<slug>.+)/$',\n            EditContent.as_view(), name='edit'),\n    re_path(r'^deplacer/$', MoveChild.as_view(), name='move-element'),\n\n    re_path(r'^historique/(?P<pk>\\d+)/(?P<slug>.+)/$',\n            DisplayHistory.as_view(), name='history'),\n    re_path(r'^comparaison/(?P<pk>\\d+)/(?P<slug>.+)/$',\n            DisplayDiff.as_view(), name='diff'),\n    re_path(r'^ajouter-contributeur/(?P<pk>\\d+)/$',\n            AddContributorToContent.as_view(), name='add-contributor'),\n    re_path(r'^enlever-contributeur/(?P<pk>\\d+)/$',\n            RemoveContributorFromContent.as_view(), name='remove-contributor'),\n    re_path(r'^ajouter-auteur/(?P<pk>\\d+)/$',\n            AddAuthorToContent.as_view(), name='add-author'),\n    re_path(r'^enlever-auteur/(?P<pk>\\d+)/$',\n            RemoveAuthorFromContent.as_view(), name='remove-author'),\n\n    # Modify the license\n    re_path(r'^modifier-licence/(?P<pk>\\d+)/$', EditContentLicense.as_view(), name='edit-license'),\n\n    # Modify the tags\n    re_path(r'^modifier-tags/(?P<pk>\\d+)/$', EditContentTags.as_view(), name='edit-tags'),\n\n    # beta:\n    re_path(r'^activer-beta/(?P<pk>\\d+)/(?P<slug>.+)/$', ManageBetaContent.as_view(action='set'),\n            name='set-beta'),\n    re_path(r'^desactiver-beta/(?P<pk>\\d+)/(?P<slug>.+)/$', ManageBetaContent.as_view(action='inactive'),\n            name='inactive-beta'),\n    re_path(r'^stats/(?P<pk>\\d+)/(?P<slug>.+)/$', ContentStatisticsView.as_view(),\n            name='stats-content'),\n    re_path(r'^ajouter-suggestion/(?P<pk>\\d+)/$', AddSuggestion.as_view(),\n            name='add-suggestion'),\n    re_path(r'^enlever-suggestion/(?P<pk>\\d+)/$',\n            RemoveSuggestion.as_view(), name='remove-suggestion'),\n\n\n    # jsfiddle support:\n    re_path(r'activer-js/', ActivateJSFiddleInContent.as_view(),\n            name='activate-jsfiddle'),\n\n    # delete:\n    re_path(r'^supprimer/(?P<pk>\\d+)/(?P<slug>.+)/(?P<parent_container_slug>.+)/(?P<container_slug>.+)/'\n            r'(?P<object_slug>.+)/$',\n            DeleteContainerOrExtract.as_view(),\n            name='delete'),\n    re_path(r'^supprimer/(?P<pk>\\d+)/(?P<slug>.+)/(?P<container_slug>.+)/(?P<object_slug>.+)/$',\n            DeleteContainerOrExtract.as_view(),\n            name='delete'),\n    re_path(r'^supprimer/(?P<pk>\\d+)/(?P<slug>.+)/(?P<object_slug>.+)/$',\n            DeleteContainerOrExtract.as_view(),\n            name='delete'),\n\n    re_path(r'^supprimer/(?P<pk>\\d+)/(?P<slug>.+)/$',\n            DeleteContent.as_view(), name='delete'),\n\n    # markdown import\n    re_path(r'^importer/archive/nouveau/$',\n            CreateContentFromArchive.as_view(), name='import-new'),\n    re_path(r'^importer/(?P<pk>\\d+)/(?P<slug>.+)/$',\n            UpdateContentWithArchive.as_view(), name='import'),\n\n    # tags\n    re_path(r'^tags/$', TagsListView.as_view(), name='tags'),\n\n    re_path(r'^$', RedirectView.as_view(\n        pattern_name='publication:list', permanent=True), name='list'),\n]\n", "path": "zds/tutorialv2/urls/urls_contents.py"}], "after_files": [{"content": "from django.urls import path, re_path\nfrom django.views.generic.base import RedirectView\n\nfrom zds.tutorialv2.views.contents import (DisplayContent, CreateContent, EditContent, EditContentLicense,\n                                           DeleteContent, CreateContainer, DisplayContainer, EditContainer,\n                                           CreateExtract, EditExtract,\n                                           DeleteContainerOrExtract, ManageBetaContent, DisplayHistory, DisplayDiff,\n                                           ActivateJSFiddleInContent, MoveChild,\n                                           DownloadContent, UpdateContentWithArchive, CreateContentFromArchive,\n                                           ContentsWithHelps, AddAuthorToContent,\n                                           RemoveAuthorFromContent, WarnTypo, DisplayBetaContent, DisplayBetaContainer,\n                                           ContentOfAuthor, RedirectOldContentOfAuthor, AddContributorToContent,\n                                           RemoveContributorFromContent, ContentOfContributors,\n                                           AddSuggestion, RemoveSuggestion, ChangeHelp, EditContentTags)\n\nfrom zds.tutorialv2.views.published import (SendNoteFormView, UpdateNoteView,\n                                            HideReaction, ShowReaction, SendNoteAlert, SolveNoteAlert, TagsListView,\n                                            FollowContentReaction, FollowNewContent, SendContentAlert,\n                                            SolveContentAlert,\n                                            RequestFeaturedContent, ContentStatisticsView)\n\nurlpatterns = [\n    # Flux\n    re_path(r'^flux/rss/$', RedirectView.as_view(pattern_name='publication:feed-rss',\n                                                 permanent=True), name='feed-rss'),\n    re_path(r'^flux/atom/$', RedirectView.as_view(pattern_name='publication:feed-atom',\n                                                  permanent=True), name='feed-atom'),\n\n    path('voir/<str:username>/',\n         ContentOfAuthor.as_view(\n             type='ALL', context_object_name='contents'),\n         name='find-all'),\n    path('contributions/<str:username>/',\n         ContentOfContributors.as_view(\n             type='ALL', context_object_name='contribution_contents'),\n         name='find-contribution-all'),\n\n    path('tutoriels/<int:pk>/', RedirectOldContentOfAuthor.as_view(type='TUTORIAL')),\n    path('articles/<int:pk>/', RedirectOldContentOfAuthor.as_view(type='ARTICLE')),\n    path('tribunes/<int:pk>/', RedirectOldContentOfAuthor.as_view(type='OPINION')),\n\n    re_path(r'^aides/$', ContentsWithHelps.as_view(), name='helps'),\n    re_path(r'^aides/(?P<pk>\\d+)/change/$', ChangeHelp.as_view(), name='helps-change'),\n    re_path(r'^(?P<pk>\\d+)/(?P<slug>.+)/(?P<parent_container_slug>.+)/(?P<container_slug>.+)/$',\n            DisplayContainer.as_view(public_is_prioritary=False),\n            name='view-container'),\n    re_path(r'^(?P<pk>\\d+)/(?P<slug>.+)/(?P<container_slug>.+)/$',\n            DisplayContainer.as_view(public_is_prioritary=False),\n            name='view-container'),\n\n    re_path(r'^(?P<pk>\\d+)/(?P<slug>.+)/$', DisplayContent.as_view(public_is_prioritary=False),\n            name='view'),\n\n    re_path(r'^telecharger/(?P<pk>\\d+)/(?P<slug>.+)/$', DownloadContent.as_view(),\n            name='download-zip'),\n\n    # beta:\n    re_path(r'^beta/(?P<pk>\\d+)/(?P<slug>.+)/(?P<parent_container_slug>.+)/(?P<container_slug>.+)/$',\n            DisplayBetaContainer.as_view(public_is_prioritary=False),\n            name='beta-view-container'),\n    re_path(r'^beta/(?P<pk>\\d+)/(?P<slug>.+)/(?P<container_slug>.+)/$',\n            DisplayBetaContainer.as_view(public_is_prioritary=False),\n            name='beta-view-container'),\n\n    re_path(r'^beta/(?P<pk>\\d+)/(?P<slug>.+)/$',\n            DisplayBetaContent.as_view(), name='beta-view'),\n\n    # reactions:\n    re_path(r'^reactions/ajouter/$',\n            SendNoteFormView.as_view(redirection_is_needed=False), name='add-reaction'),\n    re_path(r'^reactions/editer/$',\n            UpdateNoteView.as_view(redirection_is_needed=False), name='update-reaction'),\n    re_path(r'^reactions/cacher/(?P<pk>\\d+)/$',\n            HideReaction.as_view(), name='hide-reaction'),\n    re_path(r'^reactions/afficher/(?P<pk>\\d+)/$',\n            ShowReaction.as_view(), name='show-reaction'),\n    re_path(r'^reactions/alerter/(?P<pk>\\d+)/$',\n            SendNoteAlert.as_view(), name='alert-reaction'),\n    re_path(r'^reactions/resoudre/$',\n            SolveNoteAlert.as_view(), name='resolve-reaction'),\n\n    # follow:\n    re_path(r'^suivre/(?P<pk>\\d+)/reactions/$',\n            FollowContentReaction.as_view(), name='follow-reactions'),\n    re_path(r'^suivre/membres/(?P<pk>\\d+)/$',\n            FollowNewContent.as_view(), name='follow'),\n\n    # request\n    re_path(r'^requete/(?P<pk>\\d+)/$', RequestFeaturedContent.as_view(), name='request-featured'),\n\n    # content alerts:\n    re_path(r'^alerter/(?P<pk>\\d+)/$',\n            SendContentAlert.as_view(), name='alert-content'),\n    re_path(r'^resoudre/(?P<pk>\\d+)/$',\n            SolveContentAlert.as_view(), name='resolve-content'),\n\n    # typo:\n    re_path(r'^reactions/typo/$', WarnTypo.as_view(), name='warn-typo'),\n\n    # create:\n    re_path(r'^nouveau-tutoriel/$',\n            CreateContent.as_view(created_content_type='TUTORIAL'), name='create-tutorial'),\n    re_path(r'^nouvel-article/$',\n            CreateContent.as_view(created_content_type='ARTICLE'), name='create-article'),\n    re_path(r'^nouveau-billet/$',\n            CreateContent.as_view(created_content_type='OPINION'), name='create-opinion'),\n    re_path(r'^nouveau-conteneur/(?P<pk>\\d+)/(?P<slug>.+)/(?P<container_slug>.+)/$',\n            CreateContainer.as_view(),\n            name='create-container'),\n    re_path(r'^nouveau-conteneur/(?P<pk>\\d+)/(?P<slug>.+)/$',\n            CreateContainer.as_view(),\n            name='create-container'),\n\n    re_path(r'^nouvelle-section/(?P<pk>\\d+)/(?P<slug>.+)/(?P<parent_container_slug>.+)/(?P<container_slug>.+)/$',\n            CreateExtract.as_view(),\n            name='create-extract'),\n    re_path(r'^nouvelle-section/(?P<pk>\\d+)/(?P<slug>.+)/(?P<container_slug>.+)/$',\n            CreateExtract.as_view(),\n            name='create-extract'),\n    re_path(r'^nouvelle-section/(?P<pk>\\d+)/(?P<slug>.+)/$',\n            CreateExtract.as_view(),\n            name='create-extract'),\n\n    # edit:\n    re_path(r'^editer-conteneur/(?P<pk>\\d+)/(?P<slug>.+)/(?P<parent_container_slug>.+)/'\n            r'(?P<container_slug>.+)/$',\n            EditContainer.as_view(),\n            name='edit-container'),\n    re_path(r'^editer-conteneur/(?P<pk>\\d+)/(?P<slug>.+)/(?P<container_slug>.+)/$',\n            EditContainer.as_view(),\n            name='edit-container'),\n\n    re_path(r'^editer-section/(?P<pk>\\d+)/(?P<slug>.+)/(?P<parent_container_slug>.+)/'\n            r'(?P<container_slug>.+)/(?P<extract_slug>.+)/$',\n            EditExtract.as_view(),\n            name='edit-extract'),\n    re_path(r'^editer-section/(?P<pk>\\d+)/(?P<slug>.+)/(?P<container_slug>.+)/(?P<extract_slug>.+)/$',\n            EditExtract.as_view(),\n            name='edit-extract'),\n    re_path(r'^editer-section/(?P<pk>\\d+)/(?P<slug>.+)/(?P<extract_slug>.+)/$',\n            EditExtract.as_view(),\n            name='edit-extract'),\n\n    re_path(r'^editer/(?P<pk>\\d+)/(?P<slug>.+)/$',\n            EditContent.as_view(), name='edit'),\n    re_path(r'^deplacer/$', MoveChild.as_view(), name='move-element'),\n\n    re_path(r'^historique/(?P<pk>\\d+)/(?P<slug>.+)/$',\n            DisplayHistory.as_view(), name='history'),\n    re_path(r'^comparaison/(?P<pk>\\d+)/(?P<slug>.+)/$',\n            DisplayDiff.as_view(), name='diff'),\n    re_path(r'^ajouter-contributeur/(?P<pk>\\d+)/$',\n            AddContributorToContent.as_view(), name='add-contributor'),\n    re_path(r'^enlever-contributeur/(?P<pk>\\d+)/$',\n            RemoveContributorFromContent.as_view(), name='remove-contributor'),\n    re_path(r'^ajouter-auteur/(?P<pk>\\d+)/$',\n            AddAuthorToContent.as_view(), name='add-author'),\n    re_path(r'^enlever-auteur/(?P<pk>\\d+)/$',\n            RemoveAuthorFromContent.as_view(), name='remove-author'),\n\n    # Modify the license\n    re_path(r'^modifier-licence/(?P<pk>\\d+)/$', EditContentLicense.as_view(), name='edit-license'),\n\n    # Modify the tags\n    re_path(r'^modifier-tags/(?P<pk>\\d+)/$', EditContentTags.as_view(), name='edit-tags'),\n\n    # beta:\n    re_path(r'^activer-beta/(?P<pk>\\d+)/(?P<slug>.+)/$', ManageBetaContent.as_view(action='set'),\n            name='set-beta'),\n    re_path(r'^desactiver-beta/(?P<pk>\\d+)/(?P<slug>.+)/$', ManageBetaContent.as_view(action='inactive'),\n            name='inactive-beta'),\n    re_path(r'^stats/(?P<pk>\\d+)/(?P<slug>.+)/$', ContentStatisticsView.as_view(),\n            name='stats-content'),\n    re_path(r'^ajouter-suggestion/(?P<pk>\\d+)/$', AddSuggestion.as_view(),\n            name='add-suggestion'),\n    re_path(r'^enlever-suggestion/(?P<pk>\\d+)/$',\n            RemoveSuggestion.as_view(), name='remove-suggestion'),\n\n\n    # jsfiddle support:\n    re_path(r'activer-js/', ActivateJSFiddleInContent.as_view(),\n            name='activate-jsfiddle'),\n\n    # delete:\n    re_path(r'^supprimer/(?P<pk>\\d+)/(?P<slug>.+)/(?P<parent_container_slug>.+)/(?P<container_slug>.+)/'\n            r'(?P<object_slug>.+)/$',\n            DeleteContainerOrExtract.as_view(),\n            name='delete'),\n    re_path(r'^supprimer/(?P<pk>\\d+)/(?P<slug>.+)/(?P<container_slug>.+)/(?P<object_slug>.+)/$',\n            DeleteContainerOrExtract.as_view(),\n            name='delete'),\n    re_path(r'^supprimer/(?P<pk>\\d+)/(?P<slug>.+)/(?P<object_slug>.+)/$',\n            DeleteContainerOrExtract.as_view(),\n            name='delete'),\n\n    re_path(r'^supprimer/(?P<pk>\\d+)/(?P<slug>.+)/$',\n            DeleteContent.as_view(), name='delete'),\n\n    # markdown import\n    re_path(r'^importer/archive/nouveau/$',\n            CreateContentFromArchive.as_view(), name='import-new'),\n    re_path(r'^importer/(?P<pk>\\d+)/(?P<slug>.+)/$',\n            UpdateContentWithArchive.as_view(), name='import'),\n\n    # tags\n    re_path(r'^tags/$', TagsListView.as_view(), name='tags'),\n\n    re_path(r'^$', RedirectView.as_view(\n        pattern_name='publication:list', permanent=True), name='list'),\n]\n", "path": "zds/tutorialv2/urls/urls_contents.py"}]}