prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  Add separate button for Aalto login (aside Haka login)
  In a recent change (pull request #804 ) Aalto (or other local organization) login button was replaced by general Haka login, that directs user to organization selector, to allow login also using other Haka organization accounts than Aalto. This was an intermediate step (due to difficulties in shibboleth configuration), and a separate button for local organization login should now be added back, as majority of students would be using it, and usually some additional guidance may need to be added, e.g. for open university students to use local organization account instead of other organization.
  
  </issue>
  <code>
  [start of aplus/urls.py]
  1 from django.conf import settings
  2 from django.conf.urls import url, include
  3 from django.contrib import admin
  4 from django.contrib.sitemaps.views import sitemap
  5 from django.urls import path
  6 
  7 import shibboleth_login.urls
  8 import social_django.urls
  9 import userprofile.urls, userprofile.sitemaps
  10 import course.urls, course.long_urls, course.sitemaps
  11 import exercise.urls, exercise.sitemaps
  12 import edit_course.urls
  13 import deviations.urls
  14 import notification.urls
  15 import external_services.urls
  16 import news.urls
  17 import diploma.urls
  18 import apps.urls
  19 import api.urls_v2
  20 import redirect_old_urls.urls
  21 
  22 
  23 admin.autodiscover()
  24 
  25 all_sitemaps = {
  26     **course.sitemaps.all_sitemaps,
  27     **exercise.sitemaps.all_sitemaps,
  28     **userprofile.sitemaps.all_sitemaps,
  29 }
  30 
  31 #  Pay attention to the order the URL patterns will be matched!
  32 urlpatterns = [
  33     url(r'^admin/', admin.site.urls),
  34     url(r'^shibboleth/', include(shibboleth_login.urls)),
  35     url('', include(social_django.urls, namespace='social')),
  36     url(r'^api/v(?P<version>(2))/', include(api.urls_v2)), # why version in url? doc/api_versioning.md
  37     url(r'^accounts/', include(userprofile.urls)),
  38     url(r'^diploma/', include(diploma.urls)),
  39     url(r'^', include(redirect_old_urls.urls)),
  40     url(r'^', include(apps.urls)),
  41     url(r'^', include(news.urls)),
  42     url(r'^', include(external_services.urls)),
  43     url(r'^', include(course.long_urls)),
  44     url(r'^', include(deviations.urls)),
  45     url(r'^', include(edit_course.urls)),
  46     url(r'^', include(notification.urls)),
  47     url(r'^', include(exercise.urls)),
  48     url(r'^', include(course.urls)),
  49     path('sitemap.xml', sitemap, { 'sitemaps': all_sitemaps },
  50         name='django.contrib.sitemaps.views.sitemap'),
  51 ]
  52 
  53 if settings.DEBUG:
  54     import django.views.static
  55     urlpatterns.insert(0, url(r'^media/(?P<path>.*)$', django.views.static.serve,
  56         { 'document_root': settings.MEDIA_ROOT }))
  57
  [end of aplus/urls.py]
  [start of shibboleth_login/urls.py]
  1 from django.conf import settings
  2 from django.conf.urls import url
  3 
  4 from . import views
  5 
  6 
  7 urlpatterns = [
  8     url(r'^login/$', views.login, name="shibboleth-login"),
  9 ]
  10 
  11 if settings.DEBUG:
  12     urlpatterns.append(url(r'^debug/$', views.debug))
  13
  [end of shibboleth_login/urls.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/aplus/urls.py b/aplus/urls.py
  --- a/aplus/urls.py
  +++ b/aplus/urls.py
  @@ -31,7 +31,7 @@
   #  Pay attention to the order the URL patterns will be matched!
   urlpatterns = [
       url(r'^admin/', admin.site.urls),
  -    url(r'^shibboleth/', include(shibboleth_login.urls)),
  +    url(r'^', include(shibboleth_login.urls)),
       url('', include(social_django.urls, namespace='social')),
       url(r'^api/v(?P<version>(2))/', include(api.urls_v2)), # why version in url? doc/api_versioning.md
       url(r'^accounts/', include(userprofile.urls)),
  diff --git a/shibboleth_login/urls.py b/shibboleth_login/urls.py
  --- a/shibboleth_login/urls.py
  +++ b/shibboleth_login/urls.py
  @@ -5,7 +5,8 @@
   
   
   urlpatterns = [
  -    url(r'^login/$', views.login, name="shibboleth-login"),
  +    url(r'^shibboleth/login/$', views.login, name="shibboleth-login"),
  +    url(r'^Shibboleth.sso/haka_login$', views.login, name="haka-login"),
   ]
   
   if settings.DEBUG:
  
verification_info: {"golden_diff": "diff --git a/aplus/urls.py b/aplus/urls.py\n--- a/aplus/urls.py\n+++ b/aplus/urls.py\n@@ -31,7 +31,7 @@\n #  Pay attention to the order the URL patterns will be matched!\n urlpatterns = [\n     url(r'^admin/', admin.site.urls),\n-    url(r'^shibboleth/', include(shibboleth_login.urls)),\n+    url(r'^', include(shibboleth_login.urls)),\n     url('', include(social_django.urls, namespace='social')),\n     url(r'^api/v(?P<version>(2))/', include(api.urls_v2)), # why version in url? doc/api_versioning.md\n     url(r'^accounts/', include(userprofile.urls)),\ndiff --git a/shibboleth_login/urls.py b/shibboleth_login/urls.py\n--- a/shibboleth_login/urls.py\n+++ b/shibboleth_login/urls.py\n@@ -5,7 +5,8 @@\n \n \n urlpatterns = [\n-    url(r'^login/$', views.login, name=\"shibboleth-login\"),\n+    url(r'^shibboleth/login/$', views.login, name=\"shibboleth-login\"),\n+    url(r'^Shibboleth.sso/haka_login$', views.login, name=\"haka-login\"),\n ]\n \n if settings.DEBUG:\n", "issue": "Add separate button for Aalto login (aside Haka login)\nIn a recent change (pull request #804 ) Aalto (or other local organization) login button was replaced by general Haka login, that directs user to organization selector, to allow login also using other Haka organization accounts than Aalto. This was an intermediate step (due to difficulties in shibboleth configuration), and a separate button for local organization login should now be added back, as majority of students would be using it, and usually some additional guidance may need to be added, e.g. for open university students to use local organization account instead of other organization.\n", "before_files": [{"content": "from django.conf import settings\nfrom django.conf.urls import url, include\nfrom django.contrib import admin\nfrom django.contrib.sitemaps.views import sitemap\nfrom django.urls import path\n\nimport shibboleth_login.urls\nimport social_django.urls\nimport userprofile.urls, userprofile.sitemaps\nimport course.urls, course.long_urls, course.sitemaps\nimport exercise.urls, exercise.sitemaps\nimport edit_course.urls\nimport deviations.urls\nimport notification.urls\nimport external_services.urls\nimport news.urls\nimport diploma.urls\nimport apps.urls\nimport api.urls_v2\nimport redirect_old_urls.urls\n\n\nadmin.autodiscover()\n\nall_sitemaps = {\n    **course.sitemaps.all_sitemaps,\n    **exercise.sitemaps.all_sitemaps,\n    **userprofile.sitemaps.all_sitemaps,\n}\n\n#  Pay attention to the order the URL patterns will be matched!\nurlpatterns = [\n    url(r'^admin/', admin.site.urls),\n    url(r'^shibboleth/', include(shibboleth_login.urls)),\n    url('', include(social_django.urls, namespace='social')),\n    url(r'^api/v(?P<version>(2))/', include(api.urls_v2)), # why version in url? doc/api_versioning.md\n    url(r'^accounts/', include(userprofile.urls)),\n    url(r'^diploma/', include(diploma.urls)),\n    url(r'^', include(redirect_old_urls.urls)),\n    url(r'^', include(apps.urls)),\n    url(r'^', include(news.urls)),\n    url(r'^', include(external_services.urls)),\n    url(r'^', include(course.long_urls)),\n    url(r'^', include(deviations.urls)),\n    url(r'^', include(edit_course.urls)),\n    url(r'^', include(notification.urls)),\n    url(r'^', include(exercise.urls)),\n    url(r'^', include(course.urls)),\n    path('sitemap.xml', sitemap, { 'sitemaps': all_sitemaps },\n        name='django.contrib.sitemaps.views.sitemap'),\n]\n\nif settings.DEBUG:\n    import django.views.static\n    urlpatterns.insert(0, url(r'^media/(?P<path>.*)$', django.views.static.serve,\n        { 'document_root': settings.MEDIA_ROOT }))\n", "path": "aplus/urls.py"}, {"content": "from django.conf import settings\nfrom django.conf.urls import url\n\nfrom . import views\n\n\nurlpatterns = [\n    url(r'^login/$', views.login, name=\"shibboleth-login\"),\n]\n\nif settings.DEBUG:\n    urlpatterns.append(url(r'^debug/$', views.debug))\n", "path": "shibboleth_login/urls.py"}]}