コード例 #1
0
ファイル: views.py プロジェクト: dimagi/commcare-hq
def server_error(request, template_name='500.html'):
    """
    500 error handler.
    """
    urlname = resolve(request.path).url_name
    submission_urls = [
        'receiver_secure_post',
        'receiver_secure_post_with_app_id',
        'receiver_post_with_app_id'
    ]
    if urlname in submission_urls + ['app_aware_restore']:
        return HttpResponse(status=500)

    domain = get_domain_from_url(request.path) or ''

    # hat tip: http://www.arthurkoziel.com/2009/01/15/passing-mediaurl-djangos-500-error-view/
    t = loader.get_template(template_name)
    type, exc, tb = sys.exc_info()

    traceback_text = format_traceback_the_way_python_does(type, exc, tb)
    traceback_key = uuid.uuid4().hex
    cache.cache.set(traceback_key, traceback_text, 60*60)

    return HttpResponseServerError(t.render(
        context={
            'MEDIA_URL': settings.MEDIA_URL,
            'STATIC_URL': settings.STATIC_URL,
            'domain': domain,
            '500traceback': traceback_key,
        },
        request=request,
    ))
コード例 #2
0
ファイル: views.py プロジェクト: dimagi/commcare-hq
def logout(req):
    referer = req.META.get('HTTP_REFERER')
    domain = get_domain_from_url(urlparse(referer).path) if referer else None

    # we don't actually do anything with the response here:
    django_logout(req, **{"template_name": settings.BASE_TEMPLATE})

    if referer and domain:
        domain_login_url = reverse('domain_login', kwargs={'domain': domain})
        return HttpResponseRedirect('%s' % domain_login_url)
    else:
        return HttpResponseRedirect(reverse('login'))
コード例 #3
0
ファイル: views.py プロジェクト: rameshganne/commcare-hq
def logout(req, default_domain_redirect='domain_login'):
    referer = req.META.get('HTTP_REFERER')
    domain = get_domain_from_url(urlparse(referer).path) if referer else None

    # we don't actually do anything with the response here:
    LogoutView.as_view(template_name=settings.BASE_TEMPLATE)(req)

    if referer and domain:
        domain_login_url = reverse(default_domain_redirect,
                                   kwargs={'domain': domain})
        return HttpResponseRedirect('%s' % domain_login_url)
    else:
        return HttpResponseRedirect(reverse('login'))
コード例 #4
0
def jserror(request):
    agent = request.META.get('HTTP_USER_AGENT', None)
    os = browser_name = browser_version = bot = TAG_UNKNOWN
    if agent:
        parsed_agent = httpagentparser.detect(agent)
        bot = parsed_agent.get('bot', False)
        if 'os' in parsed_agent:
            os = parsed_agent['os'].get('name', TAG_UNKNOWN)

        if 'browser' in parsed_agent:
            browser_version = parsed_agent['browser'].get(
                'version', TAG_UNKNOWN)
            browser_name = parsed_agent['browser'].get('name', TAG_UNKNOWN)

    url = request.POST.get('page', None)
    domain = None
    if url:
        path = urlparse(url).path
        if path:
            domain = get_domain_from_url(path)
    domain = domain or '_unknown'

    metrics_counter('commcare.jserror.count',
                    tags={
                        'os': os,
                        'browser_version': browser_version,
                        'browser_name': browser_name,
                        'url': sanitize_url(url),
                        'bot': bot,
                        'domain': domain,
                    })

    notify_error(message=f'[JS] {request.POST.get("message")}',
                 details={
                     'message': request.POST.get('message'),
                     'domain': domain,
                     'page': url,
                     'file': request.POST.get('file'),
                     'line': request.POST.get('line'),
                     'stack': request.POST.get('stack'),
                     'meta': {
                         'os': os,
                         'browser_version': browser_version,
                         'browser_name': browser_name,
                         'bot': bot,
                     }
                 })

    return HttpResponse('')
コード例 #5
0
ファイル: views.py プロジェクト: SEL-Columbia/commcare-hq
def server_error(request, template_name='500.html'):
    """
    500 error handler.
    """

    domain = get_domain_from_url(request.path) or ''


    # hat tip: http://www.arthurkoziel.com/2009/01/15/passing-mediaurl-djangos-500-error-view/
    t = loader.get_template(template_name)
    return HttpResponseServerError(t.render(RequestContext(request,
        {'MEDIA_URL': settings.MEDIA_URL,
         'STATIC_URL': settings.STATIC_URL,
         'domain': domain
        })))
コード例 #6
0
ファイル: views.py プロジェクト: SEL-Columbia/commcare-hq
def logout(req):
    referer = req.META.get('HTTP_REFERER')
    domain = get_domain_from_url(urlparse(referer).path) if referer else None

    # we don't actually do anything with the response here:
    django_logout(req, **{"template_name": settings.BASE_TEMPLATE})
    
    if referer and domain and is_mobile_url(referer):
        mobile_mainnav_url = reverse('custom_project_report_dispatcher', args=[domain, 'mobile/mainnav'])
        mobile_login_url = reverse('domain_mobile_login', kwargs={'domain': domain})
        return HttpResponseRedirect('%s?next=%s' % (mobile_login_url, mobile_mainnav_url))
    elif referer and domain:
        domain_login_url = reverse('domain_login', kwargs={'domain': domain})
        return HttpResponseRedirect('%s' % domain_login_url)
    else:
        return HttpResponseRedirect(reverse('login'))
コード例 #7
0
ファイル: views.py プロジェクト: NoahCarnahan/commcare-hq
def logout(req, template_name="hqwebapp/loggedout.html"):
    referer = req.META.get('HTTP_REFERER')
    domain = get_domain_from_url(urlparse(referer).path) if referer else None

    req.base_template = settings.BASE_TEMPLATE
    response = django_logout(req, **{"template_name": template_name})
    
    if referer and domain and is_mobile_url(referer):
        mobile_mainnav_url = reverse('custom_project_report_dispatcher', args=[domain, 'mobile/mainnav'])
        mobile_login_url = reverse('domain_mobile_login', kwargs={'domain': domain})
        return HttpResponseRedirect('%s?next=%s' % (mobile_login_url, mobile_mainnav_url))
    elif referer and domain:
        domain_login_url = reverse('domain_login', kwargs={'domain': domain})
        return HttpResponseRedirect('%s' % domain_login_url)
    else:
        return HttpResponseRedirect(reverse('login'))
コード例 #8
0
def logout(req):
    referer = req.META.get('HTTP_REFERER')
    domain = get_domain_from_url(urlparse(referer).path) if referer else None

    # we don't actually do anything with the response here:
    django_logout(req, **{"template_name": settings.BASE_TEMPLATE})

    if referer and domain and is_mobile_url(referer):
        mobile_mainnav_url = reverse('custom_project_report_dispatcher', args=[domain, 'mobile/mainnav'])
        mobile_login_url = reverse('domain_mobile_login', kwargs={'domain': domain})
        return HttpResponseRedirect('%s?next=%s' % (mobile_login_url, mobile_mainnav_url))
    elif referer and domain:
        domain_login_url = reverse('domain_login', kwargs={'domain': domain})
        return HttpResponseRedirect('%s' % domain_login_url)
    else:
        return HttpResponseRedirect(reverse('login'))
コード例 #9
0
def server_error(request, template_name='500.html'):
    """
    500 error handler.
    """

    domain = get_domain_from_url(request.path) or ''

    # hat tip: http://www.arthurkoziel.com/2009/01/15/passing-mediaurl-djangos-500-error-view/
    t = loader.get_template(template_name)
    return HttpResponseServerError(
        t.render(
            RequestContext(
                request, {
                    'MEDIA_URL': settings.MEDIA_URL,
                    'STATIC_URL': settings.STATIC_URL,
                    'domain': domain
                })))
コード例 #10
0
def logout(req, template_name="hqwebapp/loggedout.html"):
    referer = req.META.get('HTTP_REFERER')
    domain = get_domain_from_url(urlparse(referer).path) if referer else None

    req.base_template = settings.BASE_TEMPLATE
    response = django_logout(req, **{"template_name": template_name})

    if referer and domain and is_mobile_url(referer):
        mobile_mainnav_url = reverse('custom_project_report_dispatcher',
                                     args=[domain, 'mobile/mainnav'])
        mobile_login_url = reverse('domain_mobile_login',
                                   kwargs={'domain': domain})
        return HttpResponseRedirect('%s?next=%s' %
                                    (mobile_login_url, mobile_mainnav_url))
    elif referer and domain:
        domain_login_url = reverse('domain_login', kwargs={'domain': domain})
        return HttpResponseRedirect('%s' % domain_login_url)
    else:
        return HttpResponseRedirect(reverse('login'))
コード例 #11
0
ファイル: views.py プロジェクト: saketkanth/commcare-hq
def server_error(request, template_name='500.html'):
    """
    500 error handler.
    """

    domain = get_domain_from_url(request.path) or ''

    # hat tip: http://www.arthurkoziel.com/2009/01/15/passing-mediaurl-djangos-500-error-view/
    t = loader.get_template(template_name)
    type, exc, tb = sys.exc_info()

    traceback_text = ''.join(traceback.format_tb(tb))
    traceback_key = uuid.uuid4().hex
    cache.cache.set(traceback_key, traceback_text, 60*60)

    return HttpResponseServerError(t.render(RequestContext(request,
        {'MEDIA_URL': settings.MEDIA_URL,
         'STATIC_URL': settings.STATIC_URL,
         'domain': domain,
         '500traceback': traceback_key,
        })))
コード例 #12
0
def server_error(request, template_name='500.html'):
    """
    500 error handler.
    """

    domain = get_domain_from_url(request.path) or ''

    # hat tip: http://www.arthurkoziel.com/2009/01/15/passing-mediaurl-djangos-500-error-view/
    t = loader.get_template(template_name)
    type, exc, tb = sys.exc_info()

    traceback_text = ''.join(traceback.format_tb(tb))
    traceback_key = uuid.uuid4().hex
    cache.cache.set(traceback_key, traceback_text, 60*60)

    return HttpResponseServerError(t.render(RequestContext(request,
        {'MEDIA_URL': settings.MEDIA_URL,
         'STATIC_URL': settings.STATIC_URL,
         'domain': domain,
         '500traceback': traceback_key,
        })))
コード例 #13
0
ファイル: views.py プロジェクト: marionumza/commcare-hq
def server_error(request, template_name='500.html'):
    """
    500 error handler.
    """
    urlname = resolve(request.path).url_name
    submission_urls = [
        'receiver_secure_post', 'receiver_secure_post_with_app_id',
        'receiver_post_with_app_id'
    ]
    if urlname in submission_urls + ['app_aware_restore']:
        return HttpResponse(status=500)

    domain = get_domain_from_url(request.path) or ''

    # hat tip: http://www.arthurkoziel.com/2009/01/15/passing-mediaurl-djangos-500-error-view/
    t = loader.get_template(template_name)
    type, exc, tb = sys.exc_info()

    traceback_text = format_traceback_the_way_python_does(type, exc, tb)
    traceback_key = uuid.uuid4().hex
    cache.cache.set(traceback_key, traceback_text, 60 * 60)

    if settings.UNIT_TESTING:
        # Explicitly don't render the 500 page during unit tests to prevent
        # obfuscating errors in templatetags / context processor. More context here:
        # https://github.com/dimagi/commcare-hq/pull/25835#discussion_r343997006
        return HttpResponse(status=500)

    return HttpResponseServerError(
        t.render(
            context={
                'MEDIA_URL': settings.MEDIA_URL,
                'STATIC_URL': settings.STATIC_URL,
                'domain': domain,
                '500traceback': traceback_key,
                'sentry_event_id': last_event_id(),
            },
            request=request,
        ))
コード例 #14
0
 def domain(self):
     from corehq.apps.domain.utils import get_domain_from_url
     return get_domain_from_url(self.request_path)
コード例 #15
0
ファイル: export.py プロジェクト: caktus/commcare-hq
 def domain(self):
     return get_domain_from_url(self.path)
コード例 #16
0
ファイル: models.py プロジェクト: kkrampa/commcare-hq
 def domain(self):
     from corehq.apps.domain.utils import get_domain_from_url
     return get_domain_from_url(self.request_path)