| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 | from django.conf.urls import urlfrom django.contrib import messagesfrom django.core.urlresolvers import reversefrom django.http import HttpResponsefrom django.shortcuts import redirectfrom jet.dashboard.dashboard_modules.yandex_metrika import YandexMetrikaClientfrom jet.dashboard.models import UserDashboardModulefrom jet.dashboard import dashboardfrom django.utils.translation import ugettext_lazy as _def yandex_metrika_grant_view(request, pk):    client = YandexMetrikaClient()    return redirect(client.get_oauth_authorize_url(pk))def yandex_metrika_revoke_view(request, pk):    try:        module = UserDashboardModule.objects.get(pk=pk)        module.pop_settings(('access_token', 'expires_in', 'token_type', 'counter'))        return redirect(reverse('jet-dashboard:update_module', kwargs={'pk': module.pk}))    except UserDashboardModule.DoesNotExist:        return HttpResponse(_('Module not found'))def yandex_metrika_callback_view(request):    try:        state = request.GET['state']        code = request.GET['code']        module = UserDashboardModule.objects.get(pk=state)        client = YandexMetrikaClient()        result, exception = client.oath_token_request(code)        if result is None:            messages.error(request, _('API request failed.'))        else:            module.update_settings(result)        return redirect(reverse('jet-dashboard:update_module', kwargs={'pk': module.pk}))    except KeyError:        return HttpResponse(_('Bad arguments'))    except UserDashboardModule.DoesNotExist:        return HttpResponse(_('Module not found'))dashboard.urls.register_urls([    url(        r'^yandex-metrika/grant/(?P<pk>\d+)/$',        yandex_metrika_grant_view,        name='yandex-metrika-grant'    ),    url(        r'^yandex-metrika/revoke/(?P<pk>\d+)/$',        yandex_metrika_revoke_view,        name='yandex-metrika-revoke'    ),    url(        r'^yandex-metrika/callback/$',        yandex_metrika_callback_view,        name='yandex-metrika-callback'    ),])
 |