prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  Wording change for accept page
  The page for accepting invites to private projects currently is a bit too straight-forward. ;) Let’s add some information
  
  The headline should be changed to: Do you want to join “<project name>” ?
  Then there should be another line underneath the headline set in our standard paragraph text style:
  You were invited by the initiator of the project. If you accept you will be able to participate in the project. If you decline the invitation, you can also ask for membership at a later time.
  
  The English label for the reject button should be changed to “decline”
  The reject button looks strange. I think the button should be styled as a regular red button. Or is the small font-size on purpose?
  
  ![bildschirmfoto 2016-11-22 um 10 08 54](https://cloud.githubusercontent.com/assets/15341015/20517966/c00d3b48-b09d-11e6-8136-e5f91b66a1b1.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: `euth/projects/rules.py`
  Content:
  ```
  1 import rules
  2 from rules.predicates import is_superuser
  3 
  4 from euth.organisations.predicates import is_initiator
  5 
  6 from .predicates import is_live, is_member, is_public
  7 
  8 rules.add_perm('euth_projects.edit_project',
  9                is_superuser | is_initiator)
  10 
  11 
  12 rules.add_perm('projects.view_project',
  13                is_superuser | is_initiator |
  14                ((is_public | is_member) & is_live))
  15
  ```
  
  Path: `euth/projects/views.py`
  Content:
  ```
  1 from django.shortcuts import redirect
  2 from django.views import generic
  3 from rules.contrib import views as rules_views
  4 
  5 from . import mixins, models
  6 
  7 
  8 class ProjectDetailView(rules_views.PermissionRequiredMixin,
  9                         mixins.PhaseDispatchMixin,
  10                         generic.DetailView):
  11 
  12     model = models.Project
  13     permission_required = 'projects.view_project'
  14 
  15     @property
  16     def raise_exception(self):
  17         return self.request.user.is_authenticated()
  18 
  19     def handle_no_permission(self):
  20         """
  21         Check if user clould join
  22         """
  23         membership_impossible = (
  24             not self.request.user.is_authenticated()
  25             or self.project.is_draft
  26             or self.project.has_member(self.request.user)
  27         )
  28 
  29         if membership_impossible:
  30             return super().handle_no_permission()
  31         else:
  32             return self._redirect_membership_request()
  33 
  34     def _redirect_membership_request(self):
  35         return redirect('memberships-request',
  36                         project_slug=self.project.slug)
  37 
  38     @property
  39     def project(self):
  40         """
  41         Emulate ProjectMixin interface for template sharing.
  42         """
  43         return self.get_object()
  44
  ```
  --- 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/euth/projects/rules.py b/euth/projects/rules.py
  --- a/euth/projects/rules.py
  +++ b/euth/projects/rules.py
  @@ -9,6 +9,6 @@
                  is_superuser | is_initiator)
   
   
  -rules.add_perm('projects.view_project',
  +rules.add_perm('euth_projects.view_project',
                  is_superuser | is_initiator |
                  ((is_public | is_member) & is_live))
  diff --git a/euth/projects/views.py b/euth/projects/views.py
  --- a/euth/projects/views.py
  +++ b/euth/projects/views.py
  @@ -10,7 +10,7 @@
                           generic.DetailView):
   
       model = models.Project
  -    permission_required = 'projects.view_project'
  +    permission_required = 'euth_projects.view_project'
   
       @property
       def raise_exception(self):
  
verification_info: {"golden_diff": "diff --git a/euth/projects/rules.py b/euth/projects/rules.py\n--- a/euth/projects/rules.py\n+++ b/euth/projects/rules.py\n@@ -9,6 +9,6 @@\n                is_superuser | is_initiator)\n \n \n-rules.add_perm('projects.view_project',\n+rules.add_perm('euth_projects.view_project',\n                is_superuser | is_initiator |\n                ((is_public | is_member) & is_live))\ndiff --git a/euth/projects/views.py b/euth/projects/views.py\n--- a/euth/projects/views.py\n+++ b/euth/projects/views.py\n@@ -10,7 +10,7 @@\n                         generic.DetailView):\n \n     model = models.Project\n-    permission_required = 'projects.view_project'\n+    permission_required = 'euth_projects.view_project'\n \n     @property\n     def raise_exception(self):\n", "issue": "Wording change for accept page\nThe page for accepting invites to private projects currently is a bit too straight-forward. ;) Let\u2019s add some information\r\n\r\nThe headline should be changed to: Do you want to join \u201c<project name>\u201d ?\r\nThen there should be another line underneath the headline set in our standard paragraph text style:\r\nYou were invited by the initiator of the project. If you accept you will be able to participate in the project. If you decline the invitation, you can also ask for membership at a later time.\r\n\r\nThe English label for the reject button should be changed to \u201cdecline\u201d\r\nThe reject button looks strange. I think the button should be styled as a regular red button. Or is the small font-size on purpose?\r\n\r\n![bildschirmfoto 2016-11-22 um 10 08 54](https://cloud.githubusercontent.com/assets/15341015/20517966/c00d3b48-b09d-11e6-8136-e5f91b66a1b1.png)\r\n\n", "before_files": [{"content": "import rules\nfrom rules.predicates import is_superuser\n\nfrom euth.organisations.predicates import is_initiator\n\nfrom .predicates import is_live, is_member, is_public\n\nrules.add_perm('euth_projects.edit_project',\n               is_superuser | is_initiator)\n\n\nrules.add_perm('projects.view_project',\n               is_superuser | is_initiator |\n               ((is_public | is_member) & is_live))\n", "path": "euth/projects/rules.py"}, {"content": "from django.shortcuts import redirect\nfrom django.views import generic\nfrom rules.contrib import views as rules_views\n\nfrom . import mixins, models\n\n\nclass ProjectDetailView(rules_views.PermissionRequiredMixin,\n                        mixins.PhaseDispatchMixin,\n                        generic.DetailView):\n\n    model = models.Project\n    permission_required = 'projects.view_project'\n\n    @property\n    def raise_exception(self):\n        return self.request.user.is_authenticated()\n\n    def handle_no_permission(self):\n        \"\"\"\n        Check if user clould join\n        \"\"\"\n        membership_impossible = (\n            not self.request.user.is_authenticated()\n            or self.project.is_draft\n            or self.project.has_member(self.request.user)\n        )\n\n        if membership_impossible:\n            return super().handle_no_permission()\n        else:\n            return self._redirect_membership_request()\n\n    def _redirect_membership_request(self):\n        return redirect('memberships-request',\n                        project_slug=self.project.slug)\n\n    @property\n    def project(self):\n        \"\"\"\n        Emulate ProjectMixin interface for template sharing.\n        \"\"\"\n        return self.get_object()\n", "path": "euth/projects/views.py"}], "after_files": [{"content": "import rules\nfrom rules.predicates import is_superuser\n\nfrom euth.organisations.predicates import is_initiator\n\nfrom .predicates import is_live, is_member, is_public\n\nrules.add_perm('euth_projects.edit_project',\n               is_superuser | is_initiator)\n\n\nrules.add_perm('euth_projects.view_project',\n               is_superuser | is_initiator |\n               ((is_public | is_member) & is_live))\n", "path": "euth/projects/rules.py"}, {"content": "from django.shortcuts import redirect\nfrom django.views import generic\nfrom rules.contrib import views as rules_views\n\nfrom . import mixins, models\n\n\nclass ProjectDetailView(rules_views.PermissionRequiredMixin,\n                        mixins.PhaseDispatchMixin,\n                        generic.DetailView):\n\n    model = models.Project\n    permission_required = 'euth_projects.view_project'\n\n    @property\n    def raise_exception(self):\n        return self.request.user.is_authenticated()\n\n    def handle_no_permission(self):\n        \"\"\"\n        Check if user clould join\n        \"\"\"\n        membership_impossible = (\n            not self.request.user.is_authenticated()\n            or self.project.is_draft\n            or self.project.has_member(self.request.user)\n        )\n\n        if membership_impossible:\n            return super().handle_no_permission()\n        else:\n            return self._redirect_membership_request()\n\n    def _redirect_membership_request(self):\n        return redirect('memberships-request',\n                        project_slug=self.project.slug)\n\n    @property\n    def project(self):\n        \"\"\"\n        Emulate ProjectMixin interface for template sharing.\n        \"\"\"\n        return self.get_object()\n", "path": "euth/projects/views.py"}]}