prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  Increase width of algorithm result table
  The table on the algorithm results page can become wider than the page container if the name of the scan is very long. The user then has to scroll to the right to see the "Open Result in Viewer" button, which is quite confusing.
  
  ![image](https://user-images.githubusercontent.com/773597/112984872-ba647b00-915f-11eb-9837-560159d3a314.png)
  
  </issue>
  <code>
  [start of app/grandchallenge/core/context_processors.py]
  1 import logging
  2 
  3 from django.conf import settings
  4 from guardian.shortcuts import get_perms
  5 from guardian.utils import get_anonymous_user
  6 
  7 from grandchallenge.blogs.models import Post
  8 from grandchallenge.policies.models import Policy
  9 
  10 logger = logging.getLogger(__name__)
  11 
  12 
  13 def challenge(request):
  14     try:
  15         challenge = request.challenge
  16 
  17         if challenge is None:
  18             return {}
  19 
  20     except AttributeError:
  21         logger.warning(f"Could not get challenge for request: {request}")
  22         return {}
  23 
  24     try:
  25         user = request.user
  26     except AttributeError:
  27         user = get_anonymous_user()
  28 
  29     return {
  30         "challenge": challenge,
  31         "challenge_perms": get_perms(user, challenge),
  32         "user_is_participant": challenge.is_participant(user),
  33         "pages": challenge.page_set.all(),
  34     }
  35 
  36 
  37 def deployment_info(*_, **__):
  38     return {
  39         "google_analytics_id": settings.GOOGLE_ANALYTICS_ID,
  40         "geochart_api_key": settings.GOOGLE_MAPS_API_KEY,
  41         "COMMIT_ID": settings.COMMIT_ID,
  42     }
  43 
  44 
  45 def debug(*_, **__):
  46     return {
  47         "DEBUG": settings.DEBUG,
  48         "ACTSTREAM_ENABLE": settings.ACTSTREAM_ENABLE,
  49     }
  50 
  51 
  52 def sentry_dsn(*_, **__):
  53     return {
  54         "SENTRY_DSN": settings.SENTRY_DSN,
  55         "SENTRY_ENABLE_JS_REPORTING": settings.SENTRY_ENABLE_JS_REPORTING,
  56     }
  57 
  58 
  59 def footer_links(*_, **__):
  60     return {
  61         "policy_pages": Policy.objects.all(),
  62         "blog_posts": Post.objects.filter(published=True),
  63     }
  64
  [end of app/grandchallenge/core/context_processors.py]
  </code>
  
  I need you to solve this issue by generating a single patch file that I can apply directly to this repository using git apply. Please respond with a single patch file in the following format.
  <patch>
  diff --git a/file.py b/file.py
  --- a/file.py
  +++ b/file.py
  @@ -1,27 +1,35 @@
   def euclidean(a, b):
  -    while b:
  -        a, b = b, a % b
  -    return a
  +    if b == 0:
  +        return a
  +    return euclidean(b, a % b)
   
   
   def bresenham(x0, y0, x1, y1):
       points = []
       dx = abs(x1 - x0)
       dy = abs(y1 - y0)
  -    sx = 1 if x0 < x1 else -1
  -    sy = 1 if y0 < y1 else -1
  -    err = dx - dy
  +    x, y = x0, y0
  +    sx = -1 if x0 > x1 else 1
  +    sy = -1 if y0 > y1 else 1
   
  -    while True:
  -        points.append((x0, y0))
  -        if x0 == x1 and y0 == y1:
  -            break
  -        e2 = 2 * err
  -        if e2 > -dy:
  -            err -= dy
  -            x0 += sx
  -        if e2 < dx:
  -            err += dx
  -            y0 += sy
  +    if dx > dy:
  +        err = dx / 2.0
  +        while x != x1:
  +            points.append((x, y))
  +            err -= dy
  +            if err < 0:
  +                y += sy
  +                err += dx
  +            x += sx
  +    else:
  +        err = dy / 2.0
  +        while y != y1:
  +            points.append((x, y))
  +            err -= dx
  +            if err < 0:
  +                x += sx
  +                err += dy
  +            y += sy
  +
  +    points.append((x, y))
       return points
  
  </patch>
golden_diff: diff --git a/app/grandchallenge/core/context_processors.py b/app/grandchallenge/core/context_processors.py
  --- a/app/grandchallenge/core/context_processors.py
  +++ b/app/grandchallenge/core/context_processors.py
  @@ -5,6 +5,7 @@
   from guardian.utils import get_anonymous_user
   
   from grandchallenge.blogs.models import Post
  +from grandchallenge.participants.models import RegistrationRequest
   from grandchallenge.policies.models import Policy
   
   logger = logging.getLogger(__name__)
  @@ -31,6 +32,9 @@
           "challenge_perms": get_perms(user, challenge),
           "user_is_participant": challenge.is_participant(user),
           "pages": challenge.page_set.all(),
  +        "pending_requests": challenge.registrationrequest_set.filter(
  +            status=RegistrationRequest.PENDING
  +        ),
       }
  
verification_info: {"golden_diff": "diff --git a/app/grandchallenge/core/context_processors.py b/app/grandchallenge/core/context_processors.py\n--- a/app/grandchallenge/core/context_processors.py\n+++ b/app/grandchallenge/core/context_processors.py\n@@ -5,6 +5,7 @@\n from guardian.utils import get_anonymous_user\n \n from grandchallenge.blogs.models import Post\n+from grandchallenge.participants.models import RegistrationRequest\n from grandchallenge.policies.models import Policy\n \n logger = logging.getLogger(__name__)\n@@ -31,6 +32,9 @@\n         \"challenge_perms\": get_perms(user, challenge),\n         \"user_is_participant\": challenge.is_participant(user),\n         \"pages\": challenge.page_set.all(),\n+        \"pending_requests\": challenge.registrationrequest_set.filter(\n+            status=RegistrationRequest.PENDING\n+        ),\n     }\n", "issue": "Increase width of algorithm result table\nThe table on the algorithm results page can become wider than the page container if the name of the scan is very long. The user then has to scroll to the right to see the \"Open Result in Viewer\" button, which is quite confusing.\r\n\r\n![image](https://user-images.githubusercontent.com/773597/112984872-ba647b00-915f-11eb-9837-560159d3a314.png)\n", "before_files": [{"content": "import logging\n\nfrom django.conf import settings\nfrom guardian.shortcuts import get_perms\nfrom guardian.utils import get_anonymous_user\n\nfrom grandchallenge.blogs.models import Post\nfrom grandchallenge.policies.models import Policy\n\nlogger = logging.getLogger(__name__)\n\n\ndef challenge(request):\n    try:\n        challenge = request.challenge\n\n        if challenge is None:\n            return {}\n\n    except AttributeError:\n        logger.warning(f\"Could not get challenge for request: {request}\")\n        return {}\n\n    try:\n        user = request.user\n    except AttributeError:\n        user = get_anonymous_user()\n\n    return {\n        \"challenge\": challenge,\n        \"challenge_perms\": get_perms(user, challenge),\n        \"user_is_participant\": challenge.is_participant(user),\n        \"pages\": challenge.page_set.all(),\n    }\n\n\ndef deployment_info(*_, **__):\n    return {\n        \"google_analytics_id\": settings.GOOGLE_ANALYTICS_ID,\n        \"geochart_api_key\": settings.GOOGLE_MAPS_API_KEY,\n        \"COMMIT_ID\": settings.COMMIT_ID,\n    }\n\n\ndef debug(*_, **__):\n    return {\n        \"DEBUG\": settings.DEBUG,\n        \"ACTSTREAM_ENABLE\": settings.ACTSTREAM_ENABLE,\n    }\n\n\ndef sentry_dsn(*_, **__):\n    return {\n        \"SENTRY_DSN\": settings.SENTRY_DSN,\n        \"SENTRY_ENABLE_JS_REPORTING\": settings.SENTRY_ENABLE_JS_REPORTING,\n    }\n\n\ndef footer_links(*_, **__):\n    return {\n        \"policy_pages\": Policy.objects.all(),\n        \"blog_posts\": Post.objects.filter(published=True),\n    }\n", "path": "app/grandchallenge/core/context_processors.py"}]}