We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Cannot make other users admin on the website
**Describe the bug**
For the moment, there is no way to promote an user to be an admin. One has to do it in the "./bw-dev shell"

**To Reproduce**
Steps to reproduce the behavior:
1. Go to 'Admin' and then the page of the user you want to promote
2. Promote the user and save
3. The "promoted user" logins in
4. Nope, not promoted

**Expected behavior**
The logged in promoted user should see the admin panel.


--- 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/views/user_admin.py`
Content:
```
1 """ manage user """
2 from django.contrib.auth.decorators import login_required, permission_required
3 from django.core.paginator import Paginator
4 from django.shortcuts import get_object_or_404
5 from django.template.response import TemplateResponse
6 from django.utils.decorators import method_decorator
7 from django.views import View
8 
9 from bookwyrm import forms, models
10 from bookwyrm.settings import PAGE_LENGTH
11 
12 
13 # pylint: disable= no-self-use
14 @method_decorator(login_required, name="dispatch")
15 @method_decorator(
16     permission_required("bookwyrm.moderate_users", raise_exception=True),
17     name="dispatch",
18 )
19 class UserAdminList(View):
20     """admin view of users on this server"""
21 
22     def get(self, request):
23         """list of users"""
24         filters = {}
25         server = request.GET.get("server")
26         if server:
27             server = models.FederatedServer.objects.filter(server_name=server).first()
28             filters["federated_server"] = server
29             filters["federated_server__isnull"] = False
30         username = request.GET.get("username")
31         if username:
32             filters["username__icontains"] = username
33         scope = request.GET.get("scope")
34         if scope:
35             filters["local"] = scope == "local"
36 
37         users = models.User.objects.filter(**filters)
38 
39         sort = request.GET.get("sort", "-created_date")
40         sort_fields = [
41             "created_date",
42             "last_active_date",
43             "username",
44             "federated_server__server_name",
45             "is_active",
46         ]
47         if sort in sort_fields + ["-{:s}".format(f) for f in sort_fields]:
48             users = users.order_by(sort)
49 
50         paginated = Paginator(users, PAGE_LENGTH)
51         data = {
52             "users": paginated.get_page(request.GET.get("page")),
53             "sort": sort,
54             "server": server,
55         }
56         return TemplateResponse(request, "user_admin/user_admin.html", data)
57 
58 
59 @method_decorator(login_required, name="dispatch")
60 @method_decorator(
61     permission_required("bookwyrm.moderate_users", raise_exception=True),
62     name="dispatch",
63 )
64 class UserAdmin(View):
65     """moderate an individual user"""
66 
67     def get(self, request, user):
68         """user view"""
69         user = get_object_or_404(models.User, id=user)
70         data = {"user": user, "group_form": forms.UserGroupForm()}
71         return TemplateResponse(request, "user_admin/user.html", data)
72 
73     def post(self, request, user):
74         """update user group"""
75         user = get_object_or_404(models.User, id=user)
76         form = forms.UserGroupForm(request.POST, instance=user)
77         if form.is_valid():
78             form.save()
79         data = {"user": user, "group_form": form}
80         return TemplateResponse(request, "user_admin/user.html", data)
81
```
--- 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/views/user_admin.py b/bookwyrm/views/user_admin.py
--- a/bookwyrm/views/user_admin.py
+++ b/bookwyrm/views/user_admin.py
@@ -13,7 +13,7 @@
 # pylint: disable= no-self-use
 @method_decorator(login_required, name="dispatch")
 @method_decorator(
-    permission_required("bookwyrm.moderate_users", raise_exception=True),
+    permission_required("bookwyrm.moderate_user", raise_exception=True),
     name="dispatch",
 )
 class UserAdminList(View):

{"golden_diff": "diff --git a/bookwyrm/views/user_admin.py b/bookwyrm/views/user_admin.py\n--- a/bookwyrm/views/user_admin.py\n+++ b/bookwyrm/views/user_admin.py\n@@ -13,7 +13,7 @@\n # pylint: disable= no-self-use\n @method_decorator(login_required, name=\"dispatch\")\n @method_decorator(\n-    permission_required(\"bookwyrm.moderate_users\", raise_exception=True),\n+    permission_required(\"bookwyrm.moderate_user\", raise_exception=True),\n     name=\"dispatch\",\n )\n class UserAdminList(View):\n", "issue": "Cannot make other users admin on the website\n**Describe the bug**\r\nFor the moment, there is no way to promote an user to be an admin. One has to do it in the \"./bw-dev shell\"\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n1. Go to 'Admin' and then the page of the user you want to promote\r\n2. Promote the user and save\r\n3. The \"promoted user\" logins in\r\n4. Nope, not promoted\r\n\r\n**Expected behavior**\r\nThe logged in promoted user should see the admin panel.\r\n\n", "before_files": [{"content": "\"\"\" manage user \"\"\"\nfrom django.contrib.auth.decorators import login_required, permission_required\nfrom django.core.paginator import Paginator\nfrom django.shortcuts import get_object_or_404\nfrom django.template.response import TemplateResponse\nfrom django.utils.decorators import method_decorator\nfrom django.views import View\n\nfrom bookwyrm import forms, models\nfrom bookwyrm.settings import PAGE_LENGTH\n\n\n# pylint: disable= no-self-use\n@method_decorator(login_required, name=\"dispatch\")\n@method_decorator(\n    permission_required(\"bookwyrm.moderate_users\", raise_exception=True),\n    name=\"dispatch\",\n)\nclass UserAdminList(View):\n    \"\"\"admin view of users on this server\"\"\"\n\n    def get(self, request):\n        \"\"\"list of users\"\"\"\n        filters = {}\n        server = request.GET.get(\"server\")\n        if server:\n            server = models.FederatedServer.objects.filter(server_name=server).first()\n            filters[\"federated_server\"] = server\n            filters[\"federated_server__isnull\"] = False\n        username = request.GET.get(\"username\")\n        if username:\n            filters[\"username__icontains\"] = username\n        scope = request.GET.get(\"scope\")\n        if scope:\n            filters[\"local\"] = scope == \"local\"\n\n        users = models.User.objects.filter(**filters)\n\n        sort = request.GET.get(\"sort\", \"-created_date\")\n        sort_fields = [\n            \"created_date\",\n            \"last_active_date\",\n            \"username\",\n            \"federated_server__server_name\",\n            \"is_active\",\n        ]\n        if sort in sort_fields + [\"-{:s}\".format(f) for f in sort_fields]:\n            users = users.order_by(sort)\n\n        paginated = Paginator(users, PAGE_LENGTH)\n        data = {\n            \"users\": paginated.get_page(request.GET.get(\"page\")),\n            \"sort\": sort,\n            \"server\": server,\n        }\n        return TemplateResponse(request, \"user_admin/user_admin.html\", data)\n\n\n@method_decorator(login_required, name=\"dispatch\")\n@method_decorator(\n    permission_required(\"bookwyrm.moderate_users\", raise_exception=True),\n    name=\"dispatch\",\n)\nclass UserAdmin(View):\n    \"\"\"moderate an individual user\"\"\"\n\n    def get(self, request, user):\n        \"\"\"user view\"\"\"\n        user = get_object_or_404(models.User, id=user)\n        data = {\"user\": user, \"group_form\": forms.UserGroupForm()}\n        return TemplateResponse(request, \"user_admin/user.html\", data)\n\n    def post(self, request, user):\n        \"\"\"update user group\"\"\"\n        user = get_object_or_404(models.User, id=user)\n        form = forms.UserGroupForm(request.POST, instance=user)\n        if form.is_valid():\n            form.save()\n        data = {\"user\": user, \"group_form\": form}\n        return TemplateResponse(request, \"user_admin/user.html\", data)\n", "path": "bookwyrm/views/user_admin.py"}], "after_files": [{"content": "\"\"\" manage user \"\"\"\nfrom django.contrib.auth.decorators import login_required, permission_required\nfrom django.core.paginator import Paginator\nfrom django.shortcuts import get_object_or_404\nfrom django.template.response import TemplateResponse\nfrom django.utils.decorators import method_decorator\nfrom django.views import View\n\nfrom bookwyrm import forms, models\nfrom bookwyrm.settings import PAGE_LENGTH\n\n\n# pylint: disable= no-self-use\n@method_decorator(login_required, name=\"dispatch\")\n@method_decorator(\n    permission_required(\"bookwyrm.moderate_user\", raise_exception=True),\n    name=\"dispatch\",\n)\nclass UserAdminList(View):\n    \"\"\"admin view of users on this server\"\"\"\n\n    def get(self, request):\n        \"\"\"list of users\"\"\"\n        filters = {}\n        server = request.GET.get(\"server\")\n        if server:\n            server = models.FederatedServer.objects.filter(server_name=server).first()\n            filters[\"federated_server\"] = server\n            filters[\"federated_server__isnull\"] = False\n        username = request.GET.get(\"username\")\n        if username:\n            filters[\"username__icontains\"] = username\n        scope = request.GET.get(\"scope\")\n        if scope:\n            filters[\"local\"] = scope == \"local\"\n\n        users = models.User.objects.filter(**filters)\n\n        sort = request.GET.get(\"sort\", \"-created_date\")\n        sort_fields = [\n            \"created_date\",\n            \"last_active_date\",\n            \"username\",\n            \"federated_server__server_name\",\n            \"is_active\",\n        ]\n        if sort in sort_fields + [\"-{:s}\".format(f) for f in sort_fields]:\n            users = users.order_by(sort)\n\n        paginated = Paginator(users, PAGE_LENGTH)\n        data = {\n            \"users\": paginated.get_page(request.GET.get(\"page\")),\n            \"sort\": sort,\n            \"server\": server,\n        }\n        return TemplateResponse(request, \"user_admin/user_admin.html\", data)\n\n\n@method_decorator(login_required, name=\"dispatch\")\n@method_decorator(\n    permission_required(\"bookwyrm.moderate_users\", raise_exception=True),\n    name=\"dispatch\",\n)\nclass UserAdmin(View):\n    \"\"\"moderate an individual user\"\"\"\n\n    def get(self, request, user):\n        \"\"\"user view\"\"\"\n        user = get_object_or_404(models.User, id=user)\n        data = {\"user\": user, \"group_form\": forms.UserGroupForm()}\n        return TemplateResponse(request, \"user_admin/user.html\", data)\n\n    def post(self, request, user):\n        \"\"\"update user group\"\"\"\n        user = get_object_or_404(models.User, id=user)\n        form = forms.UserGroupForm(request.POST, instance=user)\n        if form.is_valid():\n            form.save()\n        data = {\"user\": user, \"group_form\": form}\n        return TemplateResponse(request, \"user_admin/user.html\", data)\n", "path": "bookwyrm/views/user_admin.py"}]}