We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Separer les differentes actions d'edition d'un groupe en plusieurs pages
Il faudrait diviser les actions des pages d'edition en plusieurs sous pages

- [ ] Convertir les pages pour utiliser le template update base
- [ ] Mettre les membres dans une nouvelle page

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `server/apps/group/views.py`
Content:
```
1 from django.shortcuts import redirect, render
2 from django.views.generic import DetailView, UpdateView, ListView, View
3 from .models import Club, Group, NamedMembership
4 from .forms import NamedMembershipClubFormset
5 from django.contrib import messages
6 from django.contrib.auth.decorators import login_required
7 from django.views.decorators.http import require_http_methods
8 from django.contrib.auth.mixins import UserPassesTestMixin
9 
10 from apps.student.models import Student
11 from apps.event.models import Event
12 
13 from apps.event.forms import EventGroupFormSet
14 
15 class ListClubView(ListView):
16     model = Club
17     template_name = 'group/club_list.html'
18 
19 
20 class UpdateClubView(UpdateView):
21     model = Club
22     template_name = 'group/club_update.html'
23     fields = ['description', 'admins', 'logo']
24     def get_context_data(self, **kwargs):
25         context = super().get_context_data(**kwargs)
26         memberships = NamedMembership.objects.filter(group=self.object)
27         membersForm = NamedMembershipClubFormset(queryset=memberships)
28         context['members'] = membersForm
29         return context
30 
31 class UpdateClubEventsView(UserPassesTestMixin, View):
32     template_name = 'group/club_events_update.html'
33     def test_func(self):
34         group = Group.get_group_by_slug(self.kwargs['group_slug'])
35         return group.is_admin(self.request.user)
36     def get_context_data(self, **kwargs):
37         context = {}
38         context['object'] = Group.get_group_by_slug(kwargs['group_slug'])
39         context['events'] = Event.objects.filter(group=kwargs['group_slug'])
40         context['form'] = EventGroupFormSet(queryset=context['events'])
41         return context
42 
43     def get(self, request, group_slug):
44         return render(request, self.template_name, context=self.get_context_data(group_slug=group_slug))
45 
46     def post(self, request,  group_slug):
47         return edit_events(request, group_slug)
48 
49     def delete(self, request, group_slug, event_id):
50         print('Hello')
51         event = Event.objects.delete(group=group_slug, id=event_id)
52         return redirect('group:update-events')
53 
54 class DetailClubView(DetailView):
55     model = Club
56     template_name = 'group/club_detail.html'
57     def get_context_data(self, **kwargs):
58         context = super().get_context_data(**kwargs)
59         members = NamedMembership.objects.filter(group=self.object)
60         context['members'] = members
61         return context
62 
63 @login_required
64 def add_member(request, group_slug, student_id):
65     """Add a user to a club"""
66     group = Group.get_group_by_slug(group_slug)
67     student = Student.objects.get(id=student_id)
68     if isinstance(Club, group):
69         NamedMembership.objects.create(student=student, group=group)
70 
71 
72 @require_http_methods(['POST'])
73 @login_required
74 def edit_named_memberships(request, pk):
75     club = Club.objects.get(pk=pk)
76     form = NamedMembershipClubFormset(request.POST)
77     if form.is_valid():
78         members = form.save(commit=False)
79         for member in members:
80             member.group = club
81             member.save()
82         for  member in form.deleted_objects:
83             member.delete()
84         messages.success(request, 'Membres modifies')
85         return redirect('group:update', pk)
86     else:
87         messages.warning(request, form.errors)
88         return redirect('group:update', pk)
89 
90 
91 @login_required
92 def edit_events(request, group_slug):
93     group = Group.get_group_by_slug(group_slug)
94     form = EventGroupFormSet(request.POST)
95     if form.is_valid():
96         events = form.save(commit=False)
97         # Link each event to the group
98         for event in events:
99             event.group = group.slug
100             event.save()
101         # Delete  missing events
102         for  event in form.deleted_objects:
103             event.delete()
104         messages.success(request, 'Events  modifies')
105         return redirect('group:update-events', group_slug)
106     else:
107         messages.warning(request, form.errors)
108         return redirect('group:update-events', group_slug)
109
```

Path: `server/apps/group/urls.py`
Content:
```
1 from django.conf.urls import url
2 from django.urls import path
3 
4 from .views import *
5 
6 app_name = 'group'
7 
8 urlpatterns = [
9     path('<slug:pk>/', DetailClubView.as_view(), name='detail'),
10     path('<slug:pk>/edit', UpdateClubView.as_view(), name='update'),
11     path('<slug:group_slug>/member/add/<slug:user_id>', add_member, name='add-member'),
12     path('<slug:pk>/members/edit', edit_named_memberships, name='editNamedMemberships'),
13     path('', ListClubView.as_view(), name='list'),
14     path('<slug:group_slug>/events/edit', UpdateClubEventsView.as_view(), name='update-events')
15 ]
```
--- 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/server/apps/group/urls.py b/server/apps/group/urls.py
--- a/server/apps/group/urls.py
+++ b/server/apps/group/urls.py
@@ -9,7 +9,7 @@
     path('<slug:pk>/', DetailClubView.as_view(), name='detail'),
     path('<slug:pk>/edit', UpdateClubView.as_view(), name='update'),
     path('<slug:group_slug>/member/add/<slug:user_id>', add_member, name='add-member'),
-    path('<slug:pk>/members/edit', edit_named_memberships, name='editNamedMemberships'),
     path('', ListClubView.as_view(), name='list'),
-    path('<slug:group_slug>/events/edit', UpdateClubEventsView.as_view(), name='update-events')
+    path('<slug:group_slug>/events/edit', UpdateGroupEventsView.as_view(), name='update-events'),
+    path('<slug:group_slug>/members/edit', UpdateGroupMembersView.as_view(), name='update-members')
 ]
\ No newline at end of file
diff --git a/server/apps/group/views.py b/server/apps/group/views.py
--- a/server/apps/group/views.py
+++ b/server/apps/group/views.py
@@ -21,14 +21,8 @@
     model = Club
     template_name = 'group/club_update.html'
     fields = ['description', 'admins', 'logo']
-    def get_context_data(self, **kwargs):
-        context = super().get_context_data(**kwargs)
-        memberships = NamedMembership.objects.filter(group=self.object)
-        membersForm = NamedMembershipClubFormset(queryset=memberships)
-        context['members'] = membersForm
-        return context
 
-class UpdateClubEventsView(UserPassesTestMixin, View):
+class UpdateGroupEventsView(UserPassesTestMixin, View):
     template_name = 'group/club_events_update.html'
     def test_func(self):
         group = Group.get_group_by_slug(self.kwargs['group_slug'])
@@ -46,10 +40,29 @@
     def post(self, request,  group_slug):
         return edit_events(request, group_slug)
 
-    def delete(self, request, group_slug, event_id):
-        print('Hello')
-        event = Event.objects.delete(group=group_slug, id=event_id)
-        return redirect('group:update-events')
+
+class UpdateGroupMembersView(UserPassesTestMixin, View):
+    template_name = 'group/club_members_update.html'
+    def test_func(self):
+        group = Group.get_group_by_slug(self.kwargs['group_slug'])
+        return group.is_admin(self.request.user)
+
+    def get_context_data(self, **kwargs):
+        context = {}
+        context['object'] = Group.get_group_by_slug(kwargs['group_slug'])
+        if isinstance(context['object'], Club):
+            memberships = NamedMembership.objects.filter(group=context['object'])
+            membersForm = NamedMembershipClubFormset(queryset=memberships)
+            context['members'] = membersForm
+        return context
+
+    def get(self, request, group_slug):
+        return render(request, self.template_name, context=self.get_context_data(group_slug=group_slug))
+    
+    def post(self, request,  group_slug):
+        return edit_named_memberships(request, group_slug)
+
+
 
 class DetailClubView(DetailView):
     model = Club
@@ -71,8 +84,8 @@
 
 @require_http_methods(['POST'])
 @login_required
-def edit_named_memberships(request, pk):
-    club = Club.objects.get(pk=pk)
+def edit_named_memberships(request, group_slug):
+    club = Club.objects.filter(slug=group_slug).first()
     form = NamedMembershipClubFormset(request.POST)
     if form.is_valid():
         members = form.save(commit=False)
@@ -82,10 +95,10 @@
         for  member in form.deleted_objects:
             member.delete()
         messages.success(request, 'Membres modifies')
-        return redirect('group:update', pk)
+        return redirect('group:update', club.id)
     else:
         messages.warning(request, form.errors)
-        return redirect('group:update', pk)
+        return redirect('group:update', club.id)
 
 
 @login_required

{"golden_diff": "diff --git a/server/apps/group/urls.py b/server/apps/group/urls.py\n--- a/server/apps/group/urls.py\n+++ b/server/apps/group/urls.py\n@@ -9,7 +9,7 @@\n     path('<slug:pk>/', DetailClubView.as_view(), name='detail'),\n     path('<slug:pk>/edit', UpdateClubView.as_view(), name='update'),\n     path('<slug:group_slug>/member/add/<slug:user_id>', add_member, name='add-member'),\n-    path('<slug:pk>/members/edit', edit_named_memberships, name='editNamedMemberships'),\n     path('', ListClubView.as_view(), name='list'),\n-    path('<slug:group_slug>/events/edit', UpdateClubEventsView.as_view(), name='update-events')\n+    path('<slug:group_slug>/events/edit', UpdateGroupEventsView.as_view(), name='update-events'),\n+    path('<slug:group_slug>/members/edit', UpdateGroupMembersView.as_view(), name='update-members')\n ]\n\\ No newline at end of file\ndiff --git a/server/apps/group/views.py b/server/apps/group/views.py\n--- a/server/apps/group/views.py\n+++ b/server/apps/group/views.py\n@@ -21,14 +21,8 @@\n     model = Club\n     template_name = 'group/club_update.html'\n     fields = ['description', 'admins', 'logo']\n-    def get_context_data(self, **kwargs):\n-        context = super().get_context_data(**kwargs)\n-        memberships = NamedMembership.objects.filter(group=self.object)\n-        membersForm = NamedMembershipClubFormset(queryset=memberships)\n-        context['members'] = membersForm\n-        return context\n \n-class UpdateClubEventsView(UserPassesTestMixin, View):\n+class UpdateGroupEventsView(UserPassesTestMixin, View):\n     template_name = 'group/club_events_update.html'\n     def test_func(self):\n         group = Group.get_group_by_slug(self.kwargs['group_slug'])\n@@ -46,10 +40,29 @@\n     def post(self, request,  group_slug):\n         return edit_events(request, group_slug)\n \n-    def delete(self, request, group_slug, event_id):\n-        print('Hello')\n-        event = Event.objects.delete(group=group_slug, id=event_id)\n-        return redirect('group:update-events')\n+\n+class UpdateGroupMembersView(UserPassesTestMixin, View):\n+    template_name = 'group/club_members_update.html'\n+    def test_func(self):\n+        group = Group.get_group_by_slug(self.kwargs['group_slug'])\n+        return group.is_admin(self.request.user)\n+\n+    def get_context_data(self, **kwargs):\n+        context = {}\n+        context['object'] = Group.get_group_by_slug(kwargs['group_slug'])\n+        if isinstance(context['object'], Club):\n+            memberships = NamedMembership.objects.filter(group=context['object'])\n+            membersForm = NamedMembershipClubFormset(queryset=memberships)\n+            context['members'] = membersForm\n+        return context\n+\n+    def get(self, request, group_slug):\n+        return render(request, self.template_name, context=self.get_context_data(group_slug=group_slug))\n+    \n+    def post(self, request,  group_slug):\n+        return edit_named_memberships(request, group_slug)\n+\n+\n \n class DetailClubView(DetailView):\n     model = Club\n@@ -71,8 +84,8 @@\n \n @require_http_methods(['POST'])\n @login_required\n-def edit_named_memberships(request, pk):\n-    club = Club.objects.get(pk=pk)\n+def edit_named_memberships(request, group_slug):\n+    club = Club.objects.filter(slug=group_slug).first()\n     form = NamedMembershipClubFormset(request.POST)\n     if form.is_valid():\n         members = form.save(commit=False)\n@@ -82,10 +95,10 @@\n         for  member in form.deleted_objects:\n             member.delete()\n         messages.success(request, 'Membres modifies')\n-        return redirect('group:update', pk)\n+        return redirect('group:update', club.id)\n     else:\n         messages.warning(request, form.errors)\n-        return redirect('group:update', pk)\n+        return redirect('group:update', club.id)\n \n \n @login_required\n", "issue": "Separer les differentes actions d'edition d'un groupe en plusieurs pages\nIl faudrait diviser les actions des pages d'edition en plusieurs sous pages\r\n\r\n- [ ] Convertir les pages pour utiliser le template update base\r\n- [ ] Mettre les membres dans une nouvelle page\n", "before_files": [{"content": "from django.shortcuts import redirect, render\nfrom django.views.generic import DetailView, UpdateView, ListView, View\nfrom .models import Club, Group, NamedMembership\nfrom .forms import NamedMembershipClubFormset\nfrom django.contrib import messages\nfrom django.contrib.auth.decorators import login_required\nfrom django.views.decorators.http import require_http_methods\nfrom django.contrib.auth.mixins import UserPassesTestMixin\n\nfrom apps.student.models import Student\nfrom apps.event.models import Event\n\nfrom apps.event.forms import EventGroupFormSet\n\nclass ListClubView(ListView):\n    model = Club\n    template_name = 'group/club_list.html'\n\n\nclass UpdateClubView(UpdateView):\n    model = Club\n    template_name = 'group/club_update.html'\n    fields = ['description', 'admins', 'logo']\n    def get_context_data(self, **kwargs):\n        context = super().get_context_data(**kwargs)\n        memberships = NamedMembership.objects.filter(group=self.object)\n        membersForm = NamedMembershipClubFormset(queryset=memberships)\n        context['members'] = membersForm\n        return context\n\nclass UpdateClubEventsView(UserPassesTestMixin, View):\n    template_name = 'group/club_events_update.html'\n    def test_func(self):\n        group = Group.get_group_by_slug(self.kwargs['group_slug'])\n        return group.is_admin(self.request.user)\n    def get_context_data(self, **kwargs):\n        context = {}\n        context['object'] = Group.get_group_by_slug(kwargs['group_slug'])\n        context['events'] = Event.objects.filter(group=kwargs['group_slug'])\n        context['form'] = EventGroupFormSet(queryset=context['events'])\n        return context\n\n    def get(self, request, group_slug):\n        return render(request, self.template_name, context=self.get_context_data(group_slug=group_slug))\n\n    def post(self, request,  group_slug):\n        return edit_events(request, group_slug)\n\n    def delete(self, request, group_slug, event_id):\n        print('Hello')\n        event = Event.objects.delete(group=group_slug, id=event_id)\n        return redirect('group:update-events')\n\nclass DetailClubView(DetailView):\n    model = Club\n    template_name = 'group/club_detail.html'\n    def get_context_data(self, **kwargs):\n        context = super().get_context_data(**kwargs)\n        members = NamedMembership.objects.filter(group=self.object)\n        context['members'] = members\n        return context\n\n@login_required\ndef add_member(request, group_slug, student_id):\n    \"\"\"Add a user to a club\"\"\"\n    group = Group.get_group_by_slug(group_slug)\n    student = Student.objects.get(id=student_id)\n    if isinstance(Club, group):\n        NamedMembership.objects.create(student=student, group=group)\n\n\n@require_http_methods(['POST'])\n@login_required\ndef edit_named_memberships(request, pk):\n    club = Club.objects.get(pk=pk)\n    form = NamedMembershipClubFormset(request.POST)\n    if form.is_valid():\n        members = form.save(commit=False)\n        for member in members:\n            member.group = club\n            member.save()\n        for  member in form.deleted_objects:\n            member.delete()\n        messages.success(request, 'Membres modifies')\n        return redirect('group:update', pk)\n    else:\n        messages.warning(request, form.errors)\n        return redirect('group:update', pk)\n\n\n@login_required\ndef edit_events(request, group_slug):\n    group = Group.get_group_by_slug(group_slug)\n    form = EventGroupFormSet(request.POST)\n    if form.is_valid():\n        events = form.save(commit=False)\n        # Link each event to the group\n        for event in events:\n            event.group = group.slug\n            event.save()\n        # Delete  missing events\n        for  event in form.deleted_objects:\n            event.delete()\n        messages.success(request, 'Events  modifies')\n        return redirect('group:update-events', group_slug)\n    else:\n        messages.warning(request, form.errors)\n        return redirect('group:update-events', group_slug)\n", "path": "server/apps/group/views.py"}, {"content": "from django.conf.urls import url\nfrom django.urls import path\n\nfrom .views import *\n\napp_name = 'group'\n\nurlpatterns = [\n    path('<slug:pk>/', DetailClubView.as_view(), name='detail'),\n    path('<slug:pk>/edit', UpdateClubView.as_view(), name='update'),\n    path('<slug:group_slug>/member/add/<slug:user_id>', add_member, name='add-member'),\n    path('<slug:pk>/members/edit', edit_named_memberships, name='editNamedMemberships'),\n    path('', ListClubView.as_view(), name='list'),\n    path('<slug:group_slug>/events/edit', UpdateClubEventsView.as_view(), name='update-events')\n]", "path": "server/apps/group/urls.py"}], "after_files": [{"content": "from django.shortcuts import redirect, render\nfrom django.views.generic import DetailView, UpdateView, ListView, View\nfrom .models import Club, Group, NamedMembership\nfrom .forms import NamedMembershipClubFormset\nfrom django.contrib import messages\nfrom django.contrib.auth.decorators import login_required\nfrom django.views.decorators.http import require_http_methods\nfrom django.contrib.auth.mixins import UserPassesTestMixin\n\nfrom apps.student.models import Student\nfrom apps.event.models import Event\n\nfrom apps.event.forms import EventGroupFormSet\n\nclass ListClubView(ListView):\n    model = Club\n    template_name = 'group/club_list.html'\n\n\nclass UpdateClubView(UpdateView):\n    model = Club\n    template_name = 'group/club_update.html'\n    fields = ['description', 'admins', 'logo']\n\nclass UpdateGroupEventsView(UserPassesTestMixin, View):\n    template_name = 'group/club_events_update.html'\n    def test_func(self):\n        group = Group.get_group_by_slug(self.kwargs['group_slug'])\n        return group.is_admin(self.request.user)\n    def get_context_data(self, **kwargs):\n        context = {}\n        context['object'] = Group.get_group_by_slug(kwargs['group_slug'])\n        context['events'] = Event.objects.filter(group=kwargs['group_slug'])\n        context['form'] = EventGroupFormSet(queryset=context['events'])\n        return context\n\n    def get(self, request, group_slug):\n        return render(request, self.template_name, context=self.get_context_data(group_slug=group_slug))\n\n    def post(self, request,  group_slug):\n        return edit_events(request, group_slug)\n\n\nclass UpdateGroupMembersView(UserPassesTestMixin, View):\n    template_name = 'group/club_members_update.html'\n    def test_func(self):\n        group = Group.get_group_by_slug(self.kwargs['group_slug'])\n        return group.is_admin(self.request.user)\n\n    def get_context_data(self, **kwargs):\n        context = {}\n        context['object'] = Group.get_group_by_slug(kwargs['group_slug'])\n        if isinstance(context['object'], Club):\n            memberships = NamedMembership.objects.filter(group=context['object'])\n            membersForm = NamedMembershipClubFormset(queryset=memberships)\n            context['members'] = membersForm\n        return context\n\n    def get(self, request, group_slug):\n        return render(request, self.template_name, context=self.get_context_data(group_slug=group_slug))\n    \n    def post(self, request,  group_slug):\n        return edit_named_memberships(request, group_slug)\n\n\n\nclass DetailClubView(DetailView):\n    model = Club\n    template_name = 'group/club_detail.html'\n    def get_context_data(self, **kwargs):\n        context = super().get_context_data(**kwargs)\n        members = NamedMembership.objects.filter(group=self.object)\n        context['members'] = members\n        return context\n\n@login_required\ndef add_member(request, group_slug, student_id):\n    \"\"\"Add a user to a club\"\"\"\n    group = Group.get_group_by_slug(group_slug)\n    student = Student.objects.get(id=student_id)\n    if isinstance(Club, group):\n        NamedMembership.objects.create(student=student, group=group)\n\n\n@require_http_methods(['POST'])\n@login_required\ndef edit_named_memberships(request, group_slug):\n    club = Club.objects.filter(slug=group_slug).first()\n    form = NamedMembershipClubFormset(request.POST)\n    if form.is_valid():\n        members = form.save(commit=False)\n        for member in members:\n            member.group = club\n            member.save()\n        for  member in form.deleted_objects:\n            member.delete()\n        messages.success(request, 'Membres modifies')\n        return redirect('group:update', club.id)\n    else:\n        messages.warning(request, form.errors)\n        return redirect('group:update', club.id)\n\n\n@login_required\ndef edit_events(request, group_slug):\n    group = Group.get_group_by_slug(group_slug)\n    form = EventGroupFormSet(request.POST)\n    if form.is_valid():\n        events = form.save(commit=False)\n        # Link each event to the group\n        for event in events:\n            event.group = group.slug\n            event.save()\n        # Delete  missing events\n        for  event in form.deleted_objects:\n            event.delete()\n        messages.success(request, 'Events  modifies')\n        return redirect('group:update-events', group_slug)\n    else:\n        messages.warning(request, form.errors)\n        return redirect('group:update-events', group_slug)\n", "path": "server/apps/group/views.py"}, {"content": "from django.conf.urls import url\nfrom django.urls import path\n\nfrom .views import *\n\napp_name = 'group'\n\nurlpatterns = [\n    path('<slug:pk>/', DetailClubView.as_view(), name='detail'),\n    path('<slug:pk>/edit', UpdateClubView.as_view(), name='update'),\n    path('<slug:group_slug>/member/add/<slug:user_id>', add_member, name='add-member'),\n    path('', ListClubView.as_view(), name='list'),\n    path('<slug:group_slug>/events/edit', UpdateGroupEventsView.as_view(), name='update-events'),\n    path('<slug:group_slug>/members/edit', UpdateGroupMembersView.as_view(), name='update-members')\n]", "path": "server/apps/group/urls.py"}]}