prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  Display thumbnails in a modal window when we click on fullscreen
  We can see a lot of GIF in the QGIS changelog. These thumbnails are too small to see so I have to click on the button to see it fullscreen. For now, it redirects to the GIF url like http://changelog.qgis.org/media/images/entries/53f72a9cf1bf32d73eb5174c37e54c60002b9707.gif
  The user needs to use the "previous" button in the web browser to come back to the changelog.
  
  It would be better to implement a javascript modal window to show the GIF and to stay on the URL http://changelog.qgis.org/en/qgis/version/2.16.0/
  
  
  </issue>
  <code>
  [start of django_project/core/settings/project.py]
  1 # coding=utf-8
  2 
  3 """Project level settings.
  4 
  5 Adjust these values as needed but don't commit passwords etc. to any public
  6 repository!
  7 """
  8 
  9 import os  # noqa
  10 from django.utils.translation import ugettext_lazy as _
  11 from .utils import absolute_path
  12 from .contrib import *  # noqa
  13 
  14 # Project apps
  15 INSTALLED_APPS += (
  16     'base',
  17     'changes',
  18     'github_issue',
  19     'vota',
  20 )
  21 
  22 # Due to profile page does not available,
  23 # this will redirect to home page after login
  24 LOGIN_REDIRECT_URL = '/'
  25 
  26 # How many versions to list in each project box
  27 PROJECT_VERSION_LIST_SIZE = 10
  28 
  29 # Set debug to false for production
  30 DEBUG = TEMPLATE_DEBUG = False
  31 
  32 SOUTH_TESTS_MIGRATE = False
  33 
  34 
  35 # Set languages which want to be translated
  36 LANGUAGES = (
  37     ('en', _('English')),
  38     ('af', _('Afrikaans')),
  39     ('id', _('Indonesian')),
  40     ('ko', _('Korean')),
  41 )
  42 
  43 # Set storage path for the translation files
  44 LOCALE_PATHS = (absolute_path('locale'),)
  45 
  46 
  47 MIDDLEWARE_CLASSES = (
  48     # For nav bar generation
  49     'core.custom_middleware.NavContextMiddleware',
  50 ) + MIDDLEWARE_CLASSES
  51 
  52 # Project specific javascript files to be pipelined
  53 # For third party libs like jquery should go in contrib.py
  54 PIPELINE_JS['project'] = {
  55     'source_filenames': (
  56         'js/csrf-ajax.js',
  57         'js/changelog.js',
  58         'js/github-issue.js'
  59     ),
  60     'output_filename': 'js/project.js',
  61 }
  62 
  63 # Project specific css files to be pipelined
  64 # For third party libs like bootstrap should go in contrib.py
  65 PIPELINE_CSS['project'] = {
  66     'source_filenames': (
  67         'css/changelog.css',
  68         'css/form.css',
  69         'css/fonts.css'
  70     ),
  71     'output_filename': 'css/project.css',
  72     'extra_context': {
  73         'media': 'screen, projection',
  74     },
  75 }
  76
  [end of django_project/core/settings/project.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/django_project/core/settings/project.py b/django_project/core/settings/project.py
  --- a/django_project/core/settings/project.py
  +++ b/django_project/core/settings/project.py
  @@ -55,7 +55,8 @@
       'source_filenames': (
           'js/csrf-ajax.js',
           'js/changelog.js',
  -        'js/github-issue.js'
  +        'js/github-issue.js',
  +        'js/entry.js',
       ),
       'output_filename': 'js/project.js',
   }
  
verification_info: {"golden_diff": "diff --git a/django_project/core/settings/project.py b/django_project/core/settings/project.py\n--- a/django_project/core/settings/project.py\n+++ b/django_project/core/settings/project.py\n@@ -55,7 +55,8 @@\n     'source_filenames': (\n         'js/csrf-ajax.js',\n         'js/changelog.js',\n-        'js/github-issue.js'\n+        'js/github-issue.js',\n+        'js/entry.js',\n     ),\n     'output_filename': 'js/project.js',\n }\n", "issue": "Display thumbnails in a modal window when we click on fullscreen\nWe can see a lot of GIF in the QGIS changelog. These thumbnails are too small to see so I have to click on the button to see it fullscreen. For now, it redirects to the GIF url like http://changelog.qgis.org/media/images/entries/53f72a9cf1bf32d73eb5174c37e54c60002b9707.gif\nThe user needs to use the \"previous\" button in the web browser to come back to the changelog.\n\nIt would be better to implement a javascript modal window to show the GIF and to stay on the URL http://changelog.qgis.org/en/qgis/version/2.16.0/\n\n", "before_files": [{"content": "# coding=utf-8\n\n\"\"\"Project level settings.\n\nAdjust these values as needed but don't commit passwords etc. to any public\nrepository!\n\"\"\"\n\nimport os  # noqa\nfrom django.utils.translation import ugettext_lazy as _\nfrom .utils import absolute_path\nfrom .contrib import *  # noqa\n\n# Project apps\nINSTALLED_APPS += (\n    'base',\n    'changes',\n    'github_issue',\n    'vota',\n)\n\n# Due to profile page does not available,\n# this will redirect to home page after login\nLOGIN_REDIRECT_URL = '/'\n\n# How many versions to list in each project box\nPROJECT_VERSION_LIST_SIZE = 10\n\n# Set debug to false for production\nDEBUG = TEMPLATE_DEBUG = False\n\nSOUTH_TESTS_MIGRATE = False\n\n\n# Set languages which want to be translated\nLANGUAGES = (\n    ('en', _('English')),\n    ('af', _('Afrikaans')),\n    ('id', _('Indonesian')),\n    ('ko', _('Korean')),\n)\n\n# Set storage path for the translation files\nLOCALE_PATHS = (absolute_path('locale'),)\n\n\nMIDDLEWARE_CLASSES = (\n    # For nav bar generation\n    'core.custom_middleware.NavContextMiddleware',\n) + MIDDLEWARE_CLASSES\n\n# Project specific javascript files to be pipelined\n# For third party libs like jquery should go in contrib.py\nPIPELINE_JS['project'] = {\n    'source_filenames': (\n        'js/csrf-ajax.js',\n        'js/changelog.js',\n        'js/github-issue.js'\n    ),\n    'output_filename': 'js/project.js',\n}\n\n# Project specific css files to be pipelined\n# For third party libs like bootstrap should go in contrib.py\nPIPELINE_CSS['project'] = {\n    'source_filenames': (\n        'css/changelog.css',\n        'css/form.css',\n        'css/fonts.css'\n    ),\n    'output_filename': 'css/project.css',\n    'extra_context': {\n        'media': 'screen, projection',\n    },\n}\n", "path": "django_project/core/settings/project.py"}]}