prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  user front end: make username in idea list bold
  **URL:** https://meinberlin-dev.liqd.net/projekte/brainstorming-2/
  **user:** any
  **expected behaviour:** 
  **behaviour:** better distinguish username and date of creation/editing. e.g. by making the username bolt as we do in idea detail view
  **important screensize:**
  **device & browser:** 
  **Comment/Question:** 
  
  
  
  Screenshot?
  <img width="639" alt="Bildschirmfoto 2021-12-16 um 12 14 35" src="https://user-images.githubusercontent.com/35491681/146361740-cf6915cf-bef4-497d-83f5-6e8cf1154ddb.png">
  
  
  testing 5024: filter bar above list on smaller screens
  **URL:** https://meinberlin-dev.liqd.net/projekte/burgerhaushalt-spandau/?mode=list
  **user:** any
  **expected behaviour:**
  **behaviour:** on screens smaller than 1200: list/map switch, sorting and filter don't look the same as old list, although old list also doesn't look good between around 850 and 1100 
  **important screensize:**
  **device & browser:** 
  **Comment/Question:** or should we change that when touching the filter again? not sure though when that will be so maybe now make it look good?
  
  Screenshot?
  
  <img width="439" alt="Bildschirmfoto 2021-12-20 um 18 03 19" src="https://user-images.githubusercontent.com/35491681/146957441-4e6c4f98-609e-4d85-a21b-a7d2b6964909.png">
  
  
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `meinberlin/apps/budgeting/api.py`
  Content:
  ```
  1 from django.utils.translation import get_language
  2 from django.utils.translation import gettext_lazy as _
  3 from django_filters.rest_framework import DjangoFilterBackend
  4 from rest_framework import mixins
  5 from rest_framework import viewsets
  6 from rest_framework.filters import OrderingFilter
  7 from rest_framework.pagination import PageNumberPagination
  8 
  9 from adhocracy4.api.mixins import ModuleMixin
  10 from adhocracy4.api.permissions import ViewSetRulesPermission
  11 from adhocracy4.categories import get_category_icon_url
  12 from adhocracy4.categories import has_icons
  13 from adhocracy4.categories.models import Category
  14 from meinberlin.apps.contrib.filters import IdeaCategoryFilterBackend
  15 from meinberlin.apps.votes.api import VotingTokenInfoMixin
  16 
  17 from .models import Proposal
  18 from .serializers import ProposalSerializer
  19 
  20 
  21 # To be changed to a more general IdeaPagination, when using
  22 # pagination via rest api for more idea lists
  23 class ProposalPagination(PageNumberPagination):
  24     page_size = 15
  25 
  26     def get_paginated_response(self, data):
  27         response = super(ProposalPagination, self).get_paginated_response(data)
  28         response.data['page_size'] = self.page_size
  29         response.data['page_count'] = self.page.paginator.num_pages
  30         return response
  31 
  32 
  33 class LocaleInfoMixin:
  34     def list(self, request, *args, **kwargs):
  35         response = super().list(request, args, kwargs)
  36         response.data['locale'] = get_language()
  37         return response
  38 
  39 
  40 class ProposalFilterInfoMixin(ModuleMixin):
  41     def list(self, request, *args, **kwargs):
  42         """Add the filter information to the data of the Proposal API.
  43 
  44         Needs to be used with rest_framework.mixins.ListModelMixin
  45         """
  46         filters = {}
  47 
  48         ordering_choices = [('-created', _('Most recent')), ]
  49         if self.module.has_feature('rate', Proposal):
  50             ordering_choices += ('-positive_rating_count', _('Most popular')),
  51         ordering_choices += ('-comment_count', _('Most commented')),
  52 
  53         filters['ordering'] = {
  54             'label': _('Ordering'),
  55             'choices': ordering_choices,
  56             'default': '-created',
  57         }
  58 
  59         categories = Category.objects.filter(
  60             module=self.module
  61         )
  62         if categories:
  63             category_choices = [('', _('All')), ]
  64             if has_icons(self.module):
  65                 category_icons = []
  66             for category in categories:
  67                 category_choices += (str(category.pk), category.name),
  68                 if has_icons(self.module):
  69                     icon_name = getattr(category, 'icon', None)
  70                     icon_url = get_category_icon_url(icon_name)
  71                     category_icons += (str(category.pk), icon_url),
  72 
  73             filters['category'] = {
  74                 'label': _('Category'),
  75                 'choices': category_choices,
  76             }
  77             if has_icons(self.module):
  78                 filters['category']['icons'] = category_icons
  79 
  80         filters['is_archived'] = {
  81             'label': _('Archived'),
  82             'choices': [
  83                 ('', _('All')),
  84                 ('false', _('No')),
  85                 ('true', _('Yes')),
  86             ],
  87             'default': 'false',
  88         }
  89 
  90         response = super().list(request, args, kwargs)
  91         response.data['filters'] = filters
  92         return response
  93 
  94 
  95 class ProposalViewSet(ProposalFilterInfoMixin,
  96                       LocaleInfoMixin,
  97                       VotingTokenInfoMixin,
  98                       mixins.ListModelMixin,
  99                       viewsets.GenericViewSet,
  100                       ):
  101 
  102     pagination_class = ProposalPagination
  103     serializer_class = ProposalSerializer
  104     permission_classes = (ViewSetRulesPermission,)
  105     filter_backends = (DjangoFilterBackend,
  106                        OrderingFilter,
  107                        IdeaCategoryFilterBackend,)
  108     filter_fields = ('is_archived', 'category',)
  109     ordering_fields = ('created',
  110                        'comment_count',
  111                        'positive_rating_count',)
  112 
  113     def get_permission_object(self):
  114         return self.module
  115 
  116     def get_queryset(self):
  117         proposals = Proposal.objects\
  118             .filter(module=self.module) \
  119             .annotate_comment_count() \
  120             .annotate_positive_rating_count() \
  121             .annotate_negative_rating_count() \
  122             .order_by('-created')
  123         return proposals
  124
  ```
  --- 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()
  
  ```
  
golden_diff: diff --git a/meinberlin/apps/budgeting/api.py b/meinberlin/apps/budgeting/api.py
  --- a/meinberlin/apps/budgeting/api.py
  +++ b/meinberlin/apps/budgeting/api.py
  @@ -45,17 +45,6 @@
           """
           filters = {}
   
  -        ordering_choices = [('-created', _('Most recent')), ]
  -        if self.module.has_feature('rate', Proposal):
  -            ordering_choices += ('-positive_rating_count', _('Most popular')),
  -        ordering_choices += ('-comment_count', _('Most commented')),
  -
  -        filters['ordering'] = {
  -            'label': _('Ordering'),
  -            'choices': ordering_choices,
  -            'default': '-created',
  -        }
  -
           categories = Category.objects.filter(
               module=self.module
           )
  @@ -87,6 +76,17 @@
               'default': 'false',
           }
   
  +        ordering_choices = [('-created', _('Most recent')), ]
  +        if self.module.has_feature('rate', Proposal):
  +            ordering_choices += ('-positive_rating_count', _('Most popular')),
  +        ordering_choices += ('-comment_count', _('Most commented')),
  +
  +        filters['ordering'] = {
  +            'label': _('Ordering'),
  +            'choices': ordering_choices,
  +            'default': '-created',
  +        }
  +
           response = super().list(request, args, kwargs)
           response.data['filters'] = filters
           return response
  
verification_info: {"golden_diff": "diff --git a/meinberlin/apps/budgeting/api.py b/meinberlin/apps/budgeting/api.py\n--- a/meinberlin/apps/budgeting/api.py\n+++ b/meinberlin/apps/budgeting/api.py\n@@ -45,17 +45,6 @@\n         \"\"\"\n         filters = {}\n \n-        ordering_choices = [('-created', _('Most recent')), ]\n-        if self.module.has_feature('rate', Proposal):\n-            ordering_choices += ('-positive_rating_count', _('Most popular')),\n-        ordering_choices += ('-comment_count', _('Most commented')),\n-\n-        filters['ordering'] = {\n-            'label': _('Ordering'),\n-            'choices': ordering_choices,\n-            'default': '-created',\n-        }\n-\n         categories = Category.objects.filter(\n             module=self.module\n         )\n@@ -87,6 +76,17 @@\n             'default': 'false',\n         }\n \n+        ordering_choices = [('-created', _('Most recent')), ]\n+        if self.module.has_feature('rate', Proposal):\n+            ordering_choices += ('-positive_rating_count', _('Most popular')),\n+        ordering_choices += ('-comment_count', _('Most commented')),\n+\n+        filters['ordering'] = {\n+            'label': _('Ordering'),\n+            'choices': ordering_choices,\n+            'default': '-created',\n+        }\n+\n         response = super().list(request, args, kwargs)\n         response.data['filters'] = filters\n         return response\n", "issue": "user front end: make username in idea list bold\n**URL:** https://meinberlin-dev.liqd.net/projekte/brainstorming-2/\r\n**user:** any\r\n**expected behaviour:** \r\n**behaviour:** better distinguish username and date of creation/editing. e.g. by making the username bolt as we do in idea detail view\r\n**important screensize:**\r\n**device & browser:** \r\n**Comment/Question:** \r\n\r\n\r\n\r\nScreenshot?\r\n<img width=\"639\" alt=\"Bildschirmfoto 2021-12-16 um 12 14 35\" src=\"https://user-images.githubusercontent.com/35491681/146361740-cf6915cf-bef4-497d-83f5-6e8cf1154ddb.png\">\r\n\r\n\ntesting 5024: filter bar above list on smaller screens\n**URL:** https://meinberlin-dev.liqd.net/projekte/burgerhaushalt-spandau/?mode=list\r\n**user:** any\r\n**expected behaviour:**\r\n**behaviour:** on screens smaller than 1200: list/map switch, sorting and filter don't look the same as old list, although old list also doesn't look good between around 850 and 1100 \r\n**important screensize:**\r\n**device & browser:** \r\n**Comment/Question:** or should we change that when touching the filter again? not sure though when that will be so maybe now make it look good?\r\n\r\nScreenshot?\r\n\r\n<img width=\"439\" alt=\"Bildschirmfoto 2021-12-20 um 18 03 19\" src=\"https://user-images.githubusercontent.com/35491681/146957441-4e6c4f98-609e-4d85-a21b-a7d2b6964909.png\">\r\n\r\n\n", "before_files": [{"content": "from django.utils.translation import get_language\nfrom django.utils.translation import gettext_lazy as _\nfrom django_filters.rest_framework import DjangoFilterBackend\nfrom rest_framework import mixins\nfrom rest_framework import viewsets\nfrom rest_framework.filters import OrderingFilter\nfrom rest_framework.pagination import PageNumberPagination\n\nfrom adhocracy4.api.mixins import ModuleMixin\nfrom adhocracy4.api.permissions import ViewSetRulesPermission\nfrom adhocracy4.categories import get_category_icon_url\nfrom adhocracy4.categories import has_icons\nfrom adhocracy4.categories.models import Category\nfrom meinberlin.apps.contrib.filters import IdeaCategoryFilterBackend\nfrom meinberlin.apps.votes.api import VotingTokenInfoMixin\n\nfrom .models import Proposal\nfrom .serializers import ProposalSerializer\n\n\n# To be changed to a more general IdeaPagination, when using\n# pagination via rest api for more idea lists\nclass ProposalPagination(PageNumberPagination):\n    page_size = 15\n\n    def get_paginated_response(self, data):\n        response = super(ProposalPagination, self).get_paginated_response(data)\n        response.data['page_size'] = self.page_size\n        response.data['page_count'] = self.page.paginator.num_pages\n        return response\n\n\nclass LocaleInfoMixin:\n    def list(self, request, *args, **kwargs):\n        response = super().list(request, args, kwargs)\n        response.data['locale'] = get_language()\n        return response\n\n\nclass ProposalFilterInfoMixin(ModuleMixin):\n    def list(self, request, *args, **kwargs):\n        \"\"\"Add the filter information to the data of the Proposal API.\n\n        Needs to be used with rest_framework.mixins.ListModelMixin\n        \"\"\"\n        filters = {}\n\n        ordering_choices = [('-created', _('Most recent')), ]\n        if self.module.has_feature('rate', Proposal):\n            ordering_choices += ('-positive_rating_count', _('Most popular')),\n        ordering_choices += ('-comment_count', _('Most commented')),\n\n        filters['ordering'] = {\n            'label': _('Ordering'),\n            'choices': ordering_choices,\n            'default': '-created',\n        }\n\n        categories = Category.objects.filter(\n            module=self.module\n        )\n        if categories:\n            category_choices = [('', _('All')), ]\n            if has_icons(self.module):\n                category_icons = []\n            for category in categories:\n                category_choices += (str(category.pk), category.name),\n                if has_icons(self.module):\n                    icon_name = getattr(category, 'icon', None)\n                    icon_url = get_category_icon_url(icon_name)\n                    category_icons += (str(category.pk), icon_url),\n\n            filters['category'] = {\n                'label': _('Category'),\n                'choices': category_choices,\n            }\n            if has_icons(self.module):\n                filters['category']['icons'] = category_icons\n\n        filters['is_archived'] = {\n            'label': _('Archived'),\n            'choices': [\n                ('', _('All')),\n                ('false', _('No')),\n                ('true', _('Yes')),\n            ],\n            'default': 'false',\n        }\n\n        response = super().list(request, args, kwargs)\n        response.data['filters'] = filters\n        return response\n\n\nclass ProposalViewSet(ProposalFilterInfoMixin,\n                      LocaleInfoMixin,\n                      VotingTokenInfoMixin,\n                      mixins.ListModelMixin,\n                      viewsets.GenericViewSet,\n                      ):\n\n    pagination_class = ProposalPagination\n    serializer_class = ProposalSerializer\n    permission_classes = (ViewSetRulesPermission,)\n    filter_backends = (DjangoFilterBackend,\n                       OrderingFilter,\n                       IdeaCategoryFilterBackend,)\n    filter_fields = ('is_archived', 'category',)\n    ordering_fields = ('created',\n                       'comment_count',\n                       'positive_rating_count',)\n\n    def get_permission_object(self):\n        return self.module\n\n    def get_queryset(self):\n        proposals = Proposal.objects\\\n            .filter(module=self.module) \\\n            .annotate_comment_count() \\\n            .annotate_positive_rating_count() \\\n            .annotate_negative_rating_count() \\\n            .order_by('-created')\n        return proposals\n", "path": "meinberlin/apps/budgeting/api.py"}], "after_files": [{"content": "from django.utils.translation import get_language\nfrom django.utils.translation import gettext_lazy as _\nfrom django_filters.rest_framework import DjangoFilterBackend\nfrom rest_framework import mixins\nfrom rest_framework import viewsets\nfrom rest_framework.filters import OrderingFilter\nfrom rest_framework.pagination import PageNumberPagination\n\nfrom adhocracy4.api.mixins import ModuleMixin\nfrom adhocracy4.api.permissions import ViewSetRulesPermission\nfrom adhocracy4.categories import get_category_icon_url\nfrom adhocracy4.categories import has_icons\nfrom adhocracy4.categories.models import Category\nfrom meinberlin.apps.contrib.filters import IdeaCategoryFilterBackend\nfrom meinberlin.apps.votes.api import VotingTokenInfoMixin\n\nfrom .models import Proposal\nfrom .serializers import ProposalSerializer\n\n\n# To be changed to a more general IdeaPagination, when using\n# pagination via rest api for more idea lists\nclass ProposalPagination(PageNumberPagination):\n    page_size = 15\n\n    def get_paginated_response(self, data):\n        response = super(ProposalPagination, self).get_paginated_response(data)\n        response.data['page_size'] = self.page_size\n        response.data['page_count'] = self.page.paginator.num_pages\n        return response\n\n\nclass LocaleInfoMixin:\n    def list(self, request, *args, **kwargs):\n        response = super().list(request, args, kwargs)\n        response.data['locale'] = get_language()\n        return response\n\n\nclass ProposalFilterInfoMixin(ModuleMixin):\n    def list(self, request, *args, **kwargs):\n        \"\"\"Add the filter information to the data of the Proposal API.\n\n        Needs to be used with rest_framework.mixins.ListModelMixin\n        \"\"\"\n        filters = {}\n\n        categories = Category.objects.filter(\n            module=self.module\n        )\n        if categories:\n            category_choices = [('', _('All')), ]\n            if has_icons(self.module):\n                category_icons = []\n            for category in categories:\n                category_choices += (str(category.pk), category.name),\n                if has_icons(self.module):\n                    icon_name = getattr(category, 'icon', None)\n                    icon_url = get_category_icon_url(icon_name)\n                    category_icons += (str(category.pk), icon_url),\n\n            filters['category'] = {\n                'label': _('Category'),\n                'choices': category_choices,\n            }\n            if has_icons(self.module):\n                filters['category']['icons'] = category_icons\n\n        filters['is_archived'] = {\n            'label': _('Archived'),\n            'choices': [\n                ('', _('All')),\n                ('false', _('No')),\n                ('true', _('Yes')),\n            ],\n            'default': 'false',\n        }\n\n        ordering_choices = [('-created', _('Most recent')), ]\n        if self.module.has_feature('rate', Proposal):\n            ordering_choices += ('-positive_rating_count', _('Most popular')),\n        ordering_choices += ('-comment_count', _('Most commented')),\n\n        filters['ordering'] = {\n            'label': _('Ordering'),\n            'choices': ordering_choices,\n            'default': '-created',\n        }\n\n        response = super().list(request, args, kwargs)\n        response.data['filters'] = filters\n        return response\n\n\nclass ProposalViewSet(ProposalFilterInfoMixin,\n                      LocaleInfoMixin,\n                      VotingTokenInfoMixin,\n                      mixins.ListModelMixin,\n                      viewsets.GenericViewSet,\n                      ):\n\n    pagination_class = ProposalPagination\n    serializer_class = ProposalSerializer\n    permission_classes = (ViewSetRulesPermission,)\n    filter_backends = (DjangoFilterBackend,\n                       OrderingFilter,\n                       IdeaCategoryFilterBackend,)\n    filter_fields = ('is_archived', 'category',)\n    ordering_fields = ('created',\n                       'comment_count',\n                       'positive_rating_count',)\n\n    def get_permission_object(self):\n        return self.module\n\n    def get_queryset(self):\n        proposals = Proposal.objects\\\n            .filter(module=self.module) \\\n            .annotate_comment_count() \\\n            .annotate_positive_rating_count() \\\n            .annotate_negative_rating_count() \\\n            .order_by('-created')\n        return proposals\n", "path": "meinberlin/apps/budgeting/api.py"}]}