prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  Configurable logo url and favicon
  It would be nice to have a configurable logo in the config file like you did for the name of pootle site (`POOTLE_TITLE`) instead of creating a custom template or editing the css of the default one.
  
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `pootle/apps/pootle_misc/context_processors.py`
  Content:
  ```
  1 # -*- coding: utf-8 -*-
  2 #
  3 # Copyright (C) Pootle contributors.
  4 #
  5 # This file is a part of the Pootle project. It is distributed under the GPL3
  6 # or later license. See the LICENSE file for a copy of the license and the
  7 # AUTHORS file for copyright and authorship information.
  8 
  9 from django.conf import settings
  10 
  11 from pootle.core.markup import get_markup_filter_name
  12 from pootle_project.models import Project
  13 from staticpages.models import LegalPage
  14 
  15 
  16 def _agreement_context(request):
  17     """Returns whether the agreement box should be displayed or not."""
  18     request_path = request.META['PATH_INFO']
  19     nocheck = filter(lambda x: request_path.startswith(x),
  20                      settings.POOTLE_LEGALPAGE_NOCHECK_PREFIXES)
  21 
  22     if (request.user.is_authenticated and not nocheck and
  23         LegalPage.objects.has_pending_agreement(request.user)):
  24         return True
  25 
  26     return False
  27 
  28 
  29 def _get_social_auth_providers(request):
  30     if 'allauth.socialaccount' not in settings.INSTALLED_APPS:
  31         return []
  32 
  33     from allauth.socialaccount import providers
  34     return [{'name': provider.name, 'url': provider.get_login_url(request)}
  35             for provider in providers.registry.get_list()]
  36 
  37 
  38 def pootle_context(request):
  39     """Exposes settings to templates."""
  40     # FIXME: maybe we should expose relevant settings only?
  41 
  42     return {
  43         'settings': {
  44             'POOTLE_CUSTOM_LOGO': getattr(settings, "POOTLE_CUSTOM_LOGO", ""),
  45             'POOTLE_TITLE': settings.POOTLE_TITLE,
  46             'POOTLE_INSTANCE_ID': settings.POOTLE_INSTANCE_ID,
  47             'POOTLE_CONTACT_ENABLED': (settings.POOTLE_CONTACT_ENABLED and
  48                                        settings.POOTLE_CONTACT_EMAIL),
  49             'POOTLE_MARKUP_FILTER': get_markup_filter_name(),
  50             'POOTLE_SIGNUP_ENABLED': settings.POOTLE_SIGNUP_ENABLED,
  51             'SCRIPT_NAME': settings.SCRIPT_NAME,
  52             'POOTLE_CACHE_TIMEOUT': settings.POOTLE_CACHE_TIMEOUT,
  53             'DEBUG': settings.DEBUG,
  54         },
  55         'custom': settings.POOTLE_CUSTOM_TEMPLATE_CONTEXT,
  56         'ALL_PROJECTS': Project.objects.cached_dict(request.user),
  57         'SOCIAL_AUTH_PROVIDERS': _get_social_auth_providers(request),
  58         'display_agreement': _agreement_context(request),
  59     }
  60
  ```
  --- 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/pootle/apps/pootle_misc/context_processors.py b/pootle/apps/pootle_misc/context_processors.py
  --- a/pootle/apps/pootle_misc/context_processors.py
  +++ b/pootle/apps/pootle_misc/context_processors.py
  @@ -43,6 +43,7 @@
           'settings': {
               'POOTLE_CUSTOM_LOGO': getattr(settings, "POOTLE_CUSTOM_LOGO", ""),
               'POOTLE_TITLE': settings.POOTLE_TITLE,
  +            'POOTLE_FAVICONS_PATH': settings.POOTLE_FAVICONS_PATH,
               'POOTLE_INSTANCE_ID': settings.POOTLE_INSTANCE_ID,
               'POOTLE_CONTACT_ENABLED': (settings.POOTLE_CONTACT_ENABLED and
                                          settings.POOTLE_CONTACT_EMAIL),
  
verification_info: {"golden_diff": "diff --git a/pootle/apps/pootle_misc/context_processors.py b/pootle/apps/pootle_misc/context_processors.py\n--- a/pootle/apps/pootle_misc/context_processors.py\n+++ b/pootle/apps/pootle_misc/context_processors.py\n@@ -43,6 +43,7 @@\n         'settings': {\n             'POOTLE_CUSTOM_LOGO': getattr(settings, \"POOTLE_CUSTOM_LOGO\", \"\"),\n             'POOTLE_TITLE': settings.POOTLE_TITLE,\n+            'POOTLE_FAVICONS_PATH': settings.POOTLE_FAVICONS_PATH,\n             'POOTLE_INSTANCE_ID': settings.POOTLE_INSTANCE_ID,\n             'POOTLE_CONTACT_ENABLED': (settings.POOTLE_CONTACT_ENABLED and\n                                        settings.POOTLE_CONTACT_EMAIL),\n", "issue": "Configurable logo url and favicon\nIt would be nice to have a configurable logo in the config file like you did for the name of pootle site (`POOTLE_TITLE`) instead of creating a custom template or editing the css of the default one.\n\n", "before_files": [{"content": "# -*- coding: utf-8 -*-\n#\n# Copyright (C) Pootle contributors.\n#\n# This file is a part of the Pootle project. It is distributed under the GPL3\n# or later license. See the LICENSE file for a copy of the license and the\n# AUTHORS file for copyright and authorship information.\n\nfrom django.conf import settings\n\nfrom pootle.core.markup import get_markup_filter_name\nfrom pootle_project.models import Project\nfrom staticpages.models import LegalPage\n\n\ndef _agreement_context(request):\n    \"\"\"Returns whether the agreement box should be displayed or not.\"\"\"\n    request_path = request.META['PATH_INFO']\n    nocheck = filter(lambda x: request_path.startswith(x),\n                     settings.POOTLE_LEGALPAGE_NOCHECK_PREFIXES)\n\n    if (request.user.is_authenticated and not nocheck and\n        LegalPage.objects.has_pending_agreement(request.user)):\n        return True\n\n    return False\n\n\ndef _get_social_auth_providers(request):\n    if 'allauth.socialaccount' not in settings.INSTALLED_APPS:\n        return []\n\n    from allauth.socialaccount import providers\n    return [{'name': provider.name, 'url': provider.get_login_url(request)}\n            for provider in providers.registry.get_list()]\n\n\ndef pootle_context(request):\n    \"\"\"Exposes settings to templates.\"\"\"\n    # FIXME: maybe we should expose relevant settings only?\n\n    return {\n        'settings': {\n            'POOTLE_CUSTOM_LOGO': getattr(settings, \"POOTLE_CUSTOM_LOGO\", \"\"),\n            'POOTLE_TITLE': settings.POOTLE_TITLE,\n            'POOTLE_INSTANCE_ID': settings.POOTLE_INSTANCE_ID,\n            'POOTLE_CONTACT_ENABLED': (settings.POOTLE_CONTACT_ENABLED and\n                                       settings.POOTLE_CONTACT_EMAIL),\n            'POOTLE_MARKUP_FILTER': get_markup_filter_name(),\n            'POOTLE_SIGNUP_ENABLED': settings.POOTLE_SIGNUP_ENABLED,\n            'SCRIPT_NAME': settings.SCRIPT_NAME,\n            'POOTLE_CACHE_TIMEOUT': settings.POOTLE_CACHE_TIMEOUT,\n            'DEBUG': settings.DEBUG,\n        },\n        'custom': settings.POOTLE_CUSTOM_TEMPLATE_CONTEXT,\n        'ALL_PROJECTS': Project.objects.cached_dict(request.user),\n        'SOCIAL_AUTH_PROVIDERS': _get_social_auth_providers(request),\n        'display_agreement': _agreement_context(request),\n    }\n", "path": "pootle/apps/pootle_misc/context_processors.py"}], "after_files": [{"content": "# -*- coding: utf-8 -*-\n#\n# Copyright (C) Pootle contributors.\n#\n# This file is a part of the Pootle project. It is distributed under the GPL3\n# or later license. See the LICENSE file for a copy of the license and the\n# AUTHORS file for copyright and authorship information.\n\nfrom django.conf import settings\n\nfrom pootle.core.markup import get_markup_filter_name\nfrom pootle_project.models import Project\nfrom staticpages.models import LegalPage\n\n\ndef _agreement_context(request):\n    \"\"\"Returns whether the agreement box should be displayed or not.\"\"\"\n    request_path = request.META['PATH_INFO']\n    nocheck = filter(lambda x: request_path.startswith(x),\n                     settings.POOTLE_LEGALPAGE_NOCHECK_PREFIXES)\n\n    if (request.user.is_authenticated and not nocheck and\n        LegalPage.objects.has_pending_agreement(request.user)):\n        return True\n\n    return False\n\n\ndef _get_social_auth_providers(request):\n    if 'allauth.socialaccount' not in settings.INSTALLED_APPS:\n        return []\n\n    from allauth.socialaccount import providers\n    return [{'name': provider.name, 'url': provider.get_login_url(request)}\n            for provider in providers.registry.get_list()]\n\n\ndef pootle_context(request):\n    \"\"\"Exposes settings to templates.\"\"\"\n    # FIXME: maybe we should expose relevant settings only?\n\n    return {\n        'settings': {\n            'POOTLE_CUSTOM_LOGO': getattr(settings, \"POOTLE_CUSTOM_LOGO\", \"\"),\n            'POOTLE_TITLE': settings.POOTLE_TITLE,\n            'POOTLE_FAVICONS_PATH': settings.POOTLE_FAVICONS_PATH,\n            'POOTLE_INSTANCE_ID': settings.POOTLE_INSTANCE_ID,\n            'POOTLE_CONTACT_ENABLED': (settings.POOTLE_CONTACT_ENABLED and\n                                       settings.POOTLE_CONTACT_EMAIL),\n            'POOTLE_MARKUP_FILTER': get_markup_filter_name(),\n            'POOTLE_SIGNUP_ENABLED': settings.POOTLE_SIGNUP_ENABLED,\n            'SCRIPT_NAME': settings.SCRIPT_NAME,\n            'POOTLE_CACHE_TIMEOUT': settings.POOTLE_CACHE_TIMEOUT,\n            'DEBUG': settings.DEBUG,\n        },\n        'custom': settings.POOTLE_CUSTOM_TEMPLATE_CONTEXT,\n        'ALL_PROJECTS': Project.objects.cached_dict(request.user),\n        'SOCIAL_AUTH_PROVIDERS': _get_social_auth_providers(request),\n        'display_agreement': _agreement_context(request),\n    }\n", "path": "pootle/apps/pootle_misc/context_processors.py"}]}