repo_description: Developer-first error tracking and performance monitoring
repo_topics: apm crash-reporting crash-reports csp-report devops django error-logging error-monitoring fair-source hacktoberfest monitor monitoring python sentry tag-production
code: from functools import wraps
  
  from django.urls import reverse
  
  from social_auth.backends import get_backend
  from social_auth.exceptions import WrongBackend
  
  
  def dsa_view(redirect_name=None):
      """Decorate djangos-social-auth views. Will check and retrieve backend
      or return HttpResponseServerError if backend is not found.
  
          redirect_name parameter is used to build redirect URL used by backend.
      """
  
      def dec(func):
          @wraps(func)
          def wrapper(request, backend, *args, **kwargs):
              if redirect_name:
                  redirect = reverse(redirect_name, args=(backend,))
              else:
                  redirect = request.path
              request.social_auth_backend = get_backend(backend, request, redirect)
              if request.social_auth_backend is None:
                  raise WrongBackend(backend)
              return func(request, request.social_auth_backend, *args, **kwargs)
  
          return wrapper
  
      return dec
  