prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  Google maps API requests should use an API key
  `For development purposes only` watermark is being shown on our maps as Google has made it mandatory to use an API key to talk to the maps API. 
  
  </issue>
  <code>
  [start of akvo/rsr/context_processors.py]
  1 # -*- coding: utf-8 -*-
  2 """
  3 Akvo RSR is covered by the GNU Affero General Public License.
  4 
  5 See more details in the license.txt file located at the root folder of the
  6 Akvo RSR module. For additional details on the GNU license please see
  7 < http://www.gnu.org/licenses/agpl.html >.
  8 """
  9 
  10 import re
  11 import django
  12 
  13 from django.conf import settings
  14 from django.core.exceptions import DisallowedHost
  15 from django.contrib.sites.models import get_current_site
  16 
  17 
  18 def extra_context(request, protocol="http"):
  19     """Add information to the request context."""
  20     try:
  21         current_site = get_current_site(request)
  22     except DisallowedHost:
  23         current_site = None
  24 
  25     django_version = django.get_version()
  26     debug = getattr(settings, 'DEBUG', False)
  27     deploy_tag = getattr(settings, 'DEPLOY_TAG', 'Unknown')
  28     deploy_branch = getattr(settings, 'DEPLOY_BRANCH', 'Unknown')
  29     deploy_commit_id = getattr(settings, 'DEPLOY_COMMIT_ID', 'Unknown')
  30     deploy_commit_full_id = getattr(settings, 'DEPLOY_COMMIT_FULL_ID', 'Unknown')
  31     sentry_dsn = get_sentry_dsn(settings)
  32 
  33     return dict(
  34         current_site=current_site,
  35         django_version=django_version,
  36         debug=debug,
  37         deploy_tag=deploy_tag,
  38         deploy_branch=deploy_branch,
  39         deploy_commit_id=deploy_commit_id,
  40         deploy_commit_full_id=deploy_commit_full_id,
  41         sentry_dsn=sentry_dsn,
  42     )
  43 
  44 
  45 def get_sentry_dsn(settings):
  46     sentry_dsn = getattr(settings, 'RAVEN_CONFIG', {}).get('dsn', '')
  47     sentry_dsn = re.sub('(:\w*?)@', '@', sentry_dsn)
  48     # Always use https!
  49     sentry_dsn = sentry_dsn.replace('http://', 'https://')
  50     return sentry_dsn
  51 
  52 
  53 def get_current_path_without_lang(request):
  54     """Return current path without lang."""
  55     path = request.get_full_path()
  56     path_bits = path.split('/')
  57     path = '/'.join(path_bits[2:])
  58     return {'current_path_without_lang': path}
  59 
  60 
  61 def extra_pages_context(request):
  62     """Add context information of an RSR Page."""
  63     if request.rsr_page:
  64         page = request.rsr_page
  65         return {
  66             'rsr_page': page,
  67             'favicon': page.favicon,
  68             'logo': page.logo,
  69             'organisation': page.organisation,
  70             'return_url': page.return_url,
  71             'return_url_text': page.custom_return_url_text,
  72             'page_stylesheet': page.stylesheet,
  73             'akvoapp_root_url': '//{}'.format(settings.AKVOAPP_DOMAIN),
  74             'domain_url': '//{}'.format(settings.RSR_DOMAIN),
  75             'no_facebook': not page.facebook_button,
  76             'facebook_app_id': page.facebook_app_id,
  77             'no_twitter': not page.twitter_button,
  78         }
  79 
  80     return {}
  81
  [end of akvo/rsr/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/akvo/rsr/context_processors.py b/akvo/rsr/context_processors.py
  --- a/akvo/rsr/context_processors.py
  +++ b/akvo/rsr/context_processors.py
  @@ -29,6 +29,7 @@
       deploy_commit_id = getattr(settings, 'DEPLOY_COMMIT_ID', 'Unknown')
       deploy_commit_full_id = getattr(settings, 'DEPLOY_COMMIT_FULL_ID', 'Unknown')
       sentry_dsn = get_sentry_dsn(settings)
  +    gmaps_api_key = getattr(settings, 'GOOGLE_MAPS_API_KEY', 'NO_API_KEY')
   
       return dict(
           current_site=current_site,
  @@ -39,6 +40,7 @@
           deploy_commit_id=deploy_commit_id,
           deploy_commit_full_id=deploy_commit_full_id,
           sentry_dsn=sentry_dsn,
  +        gmaps_api_key=gmaps_api_key,
       )
  
verification_info: {"golden_diff": "diff --git a/akvo/rsr/context_processors.py b/akvo/rsr/context_processors.py\n--- a/akvo/rsr/context_processors.py\n+++ b/akvo/rsr/context_processors.py\n@@ -29,6 +29,7 @@\n     deploy_commit_id = getattr(settings, 'DEPLOY_COMMIT_ID', 'Unknown')\n     deploy_commit_full_id = getattr(settings, 'DEPLOY_COMMIT_FULL_ID', 'Unknown')\n     sentry_dsn = get_sentry_dsn(settings)\n+    gmaps_api_key = getattr(settings, 'GOOGLE_MAPS_API_KEY', 'NO_API_KEY')\n \n     return dict(\n         current_site=current_site,\n@@ -39,6 +40,7 @@\n         deploy_commit_id=deploy_commit_id,\n         deploy_commit_full_id=deploy_commit_full_id,\n         sentry_dsn=sentry_dsn,\n+        gmaps_api_key=gmaps_api_key,\n     )\n", "issue": "Google maps API requests should use an API key\n`For development purposes only` watermark is being shown on our maps as Google has made it mandatory to use an API key to talk to the maps API. \n", "before_files": [{"content": "# -*- coding: utf-8 -*-\n\"\"\"\nAkvo RSR is covered by the GNU Affero General Public License.\n\nSee more details in the license.txt file located at the root folder of the\nAkvo RSR module. For additional details on the GNU license please see\n< http://www.gnu.org/licenses/agpl.html >.\n\"\"\"\n\nimport re\nimport django\n\nfrom django.conf import settings\nfrom django.core.exceptions import DisallowedHost\nfrom django.contrib.sites.models import get_current_site\n\n\ndef extra_context(request, protocol=\"http\"):\n    \"\"\"Add information to the request context.\"\"\"\n    try:\n        current_site = get_current_site(request)\n    except DisallowedHost:\n        current_site = None\n\n    django_version = django.get_version()\n    debug = getattr(settings, 'DEBUG', False)\n    deploy_tag = getattr(settings, 'DEPLOY_TAG', 'Unknown')\n    deploy_branch = getattr(settings, 'DEPLOY_BRANCH', 'Unknown')\n    deploy_commit_id = getattr(settings, 'DEPLOY_COMMIT_ID', 'Unknown')\n    deploy_commit_full_id = getattr(settings, 'DEPLOY_COMMIT_FULL_ID', 'Unknown')\n    sentry_dsn = get_sentry_dsn(settings)\n\n    return dict(\n        current_site=current_site,\n        django_version=django_version,\n        debug=debug,\n        deploy_tag=deploy_tag,\n        deploy_branch=deploy_branch,\n        deploy_commit_id=deploy_commit_id,\n        deploy_commit_full_id=deploy_commit_full_id,\n        sentry_dsn=sentry_dsn,\n    )\n\n\ndef get_sentry_dsn(settings):\n    sentry_dsn = getattr(settings, 'RAVEN_CONFIG', {}).get('dsn', '')\n    sentry_dsn = re.sub('(:\\w*?)@', '@', sentry_dsn)\n    # Always use https!\n    sentry_dsn = sentry_dsn.replace('http://', 'https://')\n    return sentry_dsn\n\n\ndef get_current_path_without_lang(request):\n    \"\"\"Return current path without lang.\"\"\"\n    path = request.get_full_path()\n    path_bits = path.split('/')\n    path = '/'.join(path_bits[2:])\n    return {'current_path_without_lang': path}\n\n\ndef extra_pages_context(request):\n    \"\"\"Add context information of an RSR Page.\"\"\"\n    if request.rsr_page:\n        page = request.rsr_page\n        return {\n            'rsr_page': page,\n            'favicon': page.favicon,\n            'logo': page.logo,\n            'organisation': page.organisation,\n            'return_url': page.return_url,\n            'return_url_text': page.custom_return_url_text,\n            'page_stylesheet': page.stylesheet,\n            'akvoapp_root_url': '//{}'.format(settings.AKVOAPP_DOMAIN),\n            'domain_url': '//{}'.format(settings.RSR_DOMAIN),\n            'no_facebook': not page.facebook_button,\n            'facebook_app_id': page.facebook_app_id,\n            'no_twitter': not page.twitter_button,\n        }\n\n    return {}\n", "path": "akvo/rsr/context_processors.py"}]}