Пример #1
0
    def get_urls(self):
        app_label = self.model._meta.app_label

        self.access_permission = '{app_label}.{codename}'.format(
            app_label=app_label,
            codename=self.model._meta.permissions[0][0]  # First perm codename
        )

        View = self.model.View
        view = View.as_view(admin=self)
        view = user_passes_test(lambda u: u.is_active and u.is_staff)(view)
        view = permission_required(self.access_permission)(view)
        view = login_required(view)

        info = app_label, View.label

        urlpatterns = compat.urlpatterns(
            url(r'^$', view, name='{}_{}'.format(*info)),
            url(r'^$', view, name='{}_{}_changelist'.format(*info)),
        )

        extra_urls = self.model.View(admin=self).get_urls()
        if extra_urls:
            urlpatterns += extra_urls

        return urlpatterns
Пример #2
0
    def view(self, request, *args, **kwargs):
        """ Crear la List View del modelo """
        # Class
        mixins = import_all_mixins() + [DeleteMixin]
        View = get_base_view(BaseDeleteView, mixins, self.site)

        # Set attributes
        view = View.as_view()
        return view(request, *args, **kwargs)
Пример #3
0
    def view(self, request, *args, **kwargs):
        """ Crear la List View del modelo """
        # Class
        mixins = import_all_mixins() + [DetailMixin]
        View = get_base_view(BaseDetailView, mixins, self.site)

        # Set attributes
        View.__bases__ = (*self.site.detail_mixins, *View.__bases__)

        view = View.as_view()
        return view(request, *args, **kwargs)
Пример #4
0
    def test_post_process_urls_adds_decorator(self):
        fake_decorator = mock.Mock()
        fake_decorator.return_value = 'fake_callback'

        application.get_url_decorator = mock.Mock()
        application.get_url_decorator.return_value = fake_decorator

        pattern = url('^$', View.as_view(), name='index')
        processed_patterns = application.post_process_urls([pattern])

        application.get_url_decorator.assert_called_once_with(pattern)
        self.assertEqual(processed_patterns[0].callback, 'fake_callback')
Пример #5
0
    def setUp(self):
        self.user = UserFactory()

        self.authed_view = TemplateView.as_view(template_name='base.html')
        self.authed_view_kwargs = {'authed': True}
        self.anonymous_view = TemplateView.as_view(template_name='base.html')
        self.anonymous_view_kwargs = {'anonymous': True}
        self.other_anonymous_view = View.as_view()
        self.view_kwargs = {
            'authed_view': self.authed_view,
            'authed_view_kwargs': self.authed_view_kwargs,
            'anonymous_view': self.anonymous_view,
            'anonymous_view_kwargs': self.anonymous_view_kwargs}
Пример #6
0
    def view(self, request, *args, **kwargs):
        """ Crear la List View del modelo """
        # Class
        mixins = import_all_mixins() + [CreateMixin]
        View = get_base_view(BaseCreateView, mixins, self.site)

        # Set attributes
        View.form_class = self.site.form_class
        View.fields = self.site.fields

        View.__bases__ = (*self.site.form_mixins, *View.__bases__)
        view = View.as_view()
        return view(request, *args, **kwargs)
Пример #7
0
    def view(self, request, *args, **kwargs):
        """ Crear la List View del modelo """
        # Class
        mixins = import_all_mixins() + [ListMixin]
        View = get_base_view(BaseListView, mixins, self.site)

        # Set attriburtes
        View.queryset = self.site.queryset
        View.paginate_by = self.site.paginate_by

        View.__bases__ = (*self.site.list_mixins, *View.__bases__)

        view = View.as_view()
        return view(request, *args, **kwargs)
Пример #8
0
def assert_status(
    code: int,
    user: settings.AUTH_USER_MODEL,
    view: View,
    challenge: Challenge,
    rf: RequestFactory,
):
    request = rf.get("/rand")
    request.challenge = challenge
    if user is not None:
        request.user = user
    view = view.as_view()
    response = view(request)
    assert response.status_code == code
    return request, response
Пример #9
0
    def test_post_process_urls_adds_decorator(self):
        def fake_callback():
            pass

        fake_decorator = mock.Mock()
        fake_decorator.return_value = fake_callback

        self.myapp.get_url_decorator = mock.Mock()
        self.myapp.get_url_decorator.return_value = fake_decorator

        pattern = path('', View.as_view(), name='index')
        processed_patterns = self.myapp.post_process_urls([pattern])

        self.myapp.get_url_decorator.assert_called_once_with(pattern)
        self.assertEqual(processed_patterns[0].callback, fake_callback)
Пример #10
0
    def view(self, request, *args, **kwargs):
        """ Crear la List View del modelo """
        # Class
        mixins = import_all_mixins() + [UpdateMixin]
        if self.site.inlines and isinstance(self.site.inlines, dict):
            FormsetMixin = import_mixin('FormsetMixin')
            class InlineMixin(FormsetMixin):
                formsets = self.site.inlines
            mixins += [InlineMixin]

        View = get_base_view(BaseUpdateView, mixins, self.get_site())

        # Set attribures
        View.form_class = self.site.form_class
        View.fields = self.site.fields

        View.__bases__ = (*self.site.form_mixins, *View.__bases__)

        view = View.as_view()
        return view(request, *args, **kwargs)
Пример #11
0
    def view(self, request, *args, **kwargs):
        """Crear la List View del modelo"""
        # Class
        mixins = import_all_mixins() + [UpdateMixin]
        if self.site.inlines and isinstance(self.site.inlines,
                                            (list, tuple, dict)):
            InlinesMixin = import_mixin("InlinesMixin")

            class Inlines(InlinesMixin):
                inlines = self.site.inlines

            mixins += [Inlines]

        View = get_base_view(BaseUpdateView, mixins, self.get_site())

        # Set attribures
        View.form_class = self.site.form_class
        View.fields = self.site.fields
        if self.site.update_mixins:
            View.__bases__ = (*self.site.update_mixins, *View.__bases__)
        else:
            View.__bases__ = (*self.site.form_mixins, *View.__bases__)
        view = View.as_view()
        return view(request, *args, **kwargs)
Пример #12
0
def assert_status(
    code: int,
    user: settings.AUTH_USER_MODEL,
    view: View,
    challenge: Challenge,
    rf: RequestFactory,
):
    request = rf.get("/rand")
    request.challenge = challenge

    if user is not None:
        request.user = user

    view = view.as_view()

    if code == 403:
        with pytest.raises(PermissionDenied):
            view(request)
        response = None
    else:
        response = view(request)
        assert response.status_code == code

    return request, response
Пример #13
0
def assert_status(
    code: int,
    user: settings.AUTH_USER_MODEL,
    view: View,
    challenge: Challenge,
    rf: RequestFactory,
):
    request = rf.get("/rand")
    request.challenge = challenge

    if user is not None:
        request.user = user

    view = view.as_view()

    if code == 403:
        with pytest.raises(PermissionDenied):
            view(request)
        response = None
    else:
        response = view(request)
        assert response.status_code == code

    return request, response
Пример #14
0
 def dynamic_url_pattern(cls):
     url_pattern = url("^test$", View.as_view(), name="test-view")
     url_pattern.allow_cdn = False
     return url_pattern
Пример #15
0
"""
URLs for filebrowser in TinyMCE
"""
from django.conf.urls import url
from django.conf.urls import patterns
from django.views.generic import View

from zinnia_tinymce.views import RemoveFileView
from zinnia_tinymce.views import FileBrowserView
from zinnia_tinymce.views import FileBrowserCallBackView


urlpatterns = patterns(
    '',
    url(r'^$',
        View.as_view(),
        name='tinymce-filebrowser-dispatch'),
    url(r'^callback.js$',
        FileBrowserCallBackView.as_view(),
        name='tinymce-filebrowser-callback'),
    url(r'^(?P<file_type>\w+)/$',
        FileBrowserView.as_view(),
        name='tinymce-filebrowser'),
    url(r'^(?P<file_type>\w+)/remove/(?P<pk>\d+)/$',
        RemoveFileView.as_view(),
        name='tinymce-filebrowser-remove')
)
Пример #16
0
 def get_extra_urls(self):
     return patterns('',
         url(r'^login/$',
             View.as_view(),
             name='login'),
     )
Пример #17
0
 def static_url_pattern(cls):
     return url("^test$", View.as_view(), name="test-view")
Пример #18
0
    path("admin/", admin.site.urls),
    path("api/", include(enhydris_api_urls)),
    path(
        "stations/d/<int:pk>/",
        RedirectView.as_view(pattern_name="station_detail", permanent=True),
    ),
    path("timeseries/d/<int:pk>/",
         views.OldTimeseriesDetailRedirectView.as_view()),
    # For the following, see ticket #181
    path("timeseries/data/", views_old.timeseries_data,
         name="timeseries_data"),
    path("_nested_admin/", include("nested_admin.urls")),
]

# A view that does nothing, that will be used in some fake patterns below
_null_view = View.as_view()

# When a user registers, an email is sent, containing a link that the user has to click
# in order to confirm the email. In order to create that link, django-rest-auth uses
# reverse("account_confirm_email"). So we include that in the urlpatterns, although it's
# not actually being used and should not be served by Django. The web server should be
# configured to route that URL to the front-end, which should then POST to the
# verify-email API endpoint in order to perform the actual verification.
urlpatterns += [
    path("confirm-email/<str:key>/", _null_view, name="account_confirm_email")
]

# When a user registers, django-allauth runs reverse("account_email_verification_sent")
# in order to redirect to a page that says "We sent an email verification, click the
# link in that email". In our case, registration is done by POST to an API endpoint,
# which merely responds with "201". However, because something in django-allauth or in
Пример #19
0
# -*- coding: utf-8 -*-
from copy import copy

from django.conf.urls import include as django_include
from django.conf.urls import url
from django.views.generic import View
from django_js_reverse.tests.helper import is_django_ver_gte_2
from django_js_reverse.views import urls_js

try:
    from django.urls import path
except ImportError:
    pass

dummy_view = View.as_view()

basic_patterns = [
    url(r'^jsreverse/$', urls_js, name='js_reverse'),

    # test urls
    url(r'^test_no_url_args/$', dummy_view, name='test_no_url_args'),
    url(r'^test_script/$',
        dummy_view,
        name='</script><script>console.log(&amp;)</script><!--'),
    url(r'^test_one_url_args/(?P<arg_one>[-\w]+)/$',
        dummy_view,
        name='test_one_url_args'),
    url(r'^test_two_url_args/(?P<arg_one>[-\w]+)-(?P<arg_two>[-\w]+)/$',
        dummy_view,
        name='test_two_url_args'),
    url(r'^test_optional_url_arg/(?:1_(?P<arg_one>[-\w]+)-)?2_(?P<arg_two>[-\w]+)/$',
Пример #20
0
 def dynamic_url_pattern(cls):
     url_pattern = url('^test$', View.as_view(), name='test-view')
     url_pattern.allow_cdn = False
     return url_pattern
Пример #21
0
    ApproveAPIToggle,
    ApproveAPIToggleComment,
    DeleteQuestionAPIToggle,
    DeleteCommentAPIToggle,
    SortQuestionsAPI,
    candidate_detail_view,
    candidates_view,
    edit_candidate_view,
    admin_view,
)

app_name = 'portal'

urlpatterns = [
    path('', index, name='index'),
    re_path('^(?P<pk>[0-9]+)/$', View.as_view(), name='question'),
    re_path('^api/(?P<pk>[0-9]+)/upvote/$',
            UpvoteAPIToggle.as_view(),
            name='api-upvote'),
    re_path('^api/(?P<pk>[0-9]+)/downvote/$',
            DownvoteAPIToggle.as_view(),
            name='api-downvote'),
    re_path('^api/(?P<pk>[0-9]+)/upvote-comment/$',
            UpvoteAPIToggleComment.as_view(),
            name='api-upvote-comment'),
    re_path('^api/(?P<pk>[0-9]+)/downvote-comment/$',
            DownvoteAPIToggleComment.as_view(),
            name='api-downvote-comment'),
    re_path('^(?P<pk>[0-9]+)/answer/$', answer_view, name='answer'),
    re_path('^(?P<pk>[0-9]+)/comment/$', comment_view, name='comment'),
    re_path('^api/(?P<pk>[0-9]+)/approve/$',
Пример #22
0
from django.conf.urls import url
from django.views.generic import View

urlpatterns = [
    url(r"^(?P<year>\d{4})/(?P<month>\d{1,2})/$", View.as_view(), name="monthly"),
    url(r"^(?P<year>\d{4})/(?P<month>\d{1,2})/(?P<day>\d{1,2})/$", View.as_view(), name="daily"),
]
Пример #23
0
"""URLs for the test app."""
from django.conf.urls.defaults import patterns, url
from django.http import HttpResponse
from django.views.generic import View

from django_libs import views

View.get = lambda req, *args, **kwargs: HttpResponse('SUCCESS!')
authed_view = View.as_view()
authed_view_kwargs = {'authed': True}
anonymous_view = View.as_view()
anonymous_view_kwargs = {'anonymous': True}


urlpatterns = patterns(
    '',
    url(r'^$', views.HybridView.as_view(
        authed_view=authed_view,
        authed_view_kwargs=authed_view_kwargs,
        anonymous_view=anonymous_view,
        anonymous_view_kwargs=anonymous_view_kwargs,
        ), name='dummy_hybrid'),
    url(r'^update-session/$', views.UpdateSessionAJAXView,
        name='update_session'),
    url(r'^prototype/(?P<template_path>.*)$',
        views.RapidPrototypingView.as_view(),
        name='prototype')
)
Пример #24
0
# -*- coding: utf-8 -*-

from django.conf.urls import url
from django.views.generic import View

urlpatterns = [
    url(r'foo$', View.as_view(), name="foo"),
]
Пример #25
0
from django.conf.urls import url
from django.views.generic import View

urlpatterns = [
    url(r'^test_changed_urlconf/$',
        View.as_view(),
        name='test_changed_urlconf'),
]
Пример #26
0
from django.conf.urls import patterns, include, url
from django.views.generic import View
from django.contrib import admin

admin.autodiscover()

urlpatterns = patterns('',
    url("foo/$", View.as_view(), name="foo"),
    url(r'^', include('staff.urls')),
    url(r'^admin/', include(admin.site.urls)),
)
Пример #27
0
        views.InstrumentDetail.as_view(),
        name="instrument_detail",
    ),
    path(
        "stations/<int:station_id>/timeseries/<int:pk>/",
        views.TimeseriesDetail.as_view(),
        name="timeseries_detail",
    ),
    path("admin/", admin.site.urls),
    path("api/", include(enhydris_api_urls)),
    # For the following, see ticket #181
    path("timeseries/data/", views_old.timeseries_data, name="timeseries_data"),
]

# A view that does nothing, that will be used in some fake patterns below
_null_view = View.as_view()

# When a user registers, an email is sent, containing a link that the user has to click
# in order to confirm the email. In order to create that link, django-rest-auth uses
# reverse("account_confirm_email"). So we include that in the urlpatterns, although it's
# not actually being used and should not be served by Django. The web server should be
# configured to route that URL to the front-end, which should then POST to the
# verify-email API endpoint in order to perform the actual verification.
urlpatterns += [
    path("confirm-email/<str:key>/", _null_view, name="account_confirm_email")
]

# When a user registers, django-allauth runs reverse("account_email_verification_sent")
# in order to redirect to a page that says "We sent an email verification, click the
# link in that email". In our case, registration is done by POST to an API endpoint,
# which merely responds with "201". However, because something in django-allauth or in
Пример #28
0
from django.conf.urls import url
from django.views.generic import View

urlpatterns = [
    url(r'^test_changed_urlconf/$', View.as_view(), name='test_changed_urlconf'),
]
Пример #29
0
from django.conf.urls import url
from django.views.generic import View

urlpatterns = [
    url(r'^simple/action/$', View.as_view(), name='simpleAction'),
]
Пример #30
0
from django.conf.urls import patterns, include, url

# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
# admin.autodiscover()

from django.views.generic import View

urlpatterns = patterns('',

    url(r'^$', View.as_view(), name='sitemap'),
    # url(r'^example/', include('example.foo.urls')),

    # Uncomment the admin/doc line below to enable admin documentation:
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
    # url(r'^admin/', include(admin.site.urls)),
)
Пример #31
0
"""URLs for the test app."""
from django.conf.urls import patterns, url
from django.http import HttpResponse
from django.views.generic import View

from django_libs import views

View.get = lambda req, *args, **kwargs: HttpResponse('SUCCESS!')
authed_view = View.as_view()
authed_view_kwargs = {'authed': True}
anonymous_view = View.as_view()
anonymous_view_kwargs = {'anonymous': True}

urlpatterns = patterns(
    '',
    url(r'^$',
        views.HybridView.as_view(
            authed_view=authed_view,
            authed_view_kwargs=authed_view_kwargs,
            anonymous_view=anonymous_view,
            anonymous_view_kwargs=anonymous_view_kwargs,
        ),
        name='dummy_hybrid'),
    url(r'^update-session/$',
        views.UpdateSessionAJAXView,
        name='update_session'),
    url(r'^update-cookie/$', views.UpdateCookieAJAXView, name='update_cookie'),
    url(r'^prototype/(?P<template_path>.*)$',
        views.RapidPrototypingView.as_view(),
        name='prototype'))
Пример #32
0
from django.conf.urls import include, url
from django.views.generic import View
from django.contrib import admin

admin.autodiscover()

urlpatterns = [
    url("foo/$", View.as_view(), name="foo"),
    url(r'^', include('staff.urls')),
    url(r'^admin/', admin.site.urls),
]
Пример #33
0
 def test_get_url_decorator_fetches_correct_perms(self, mock_permissions_required):
     pattern = url('^$', View.as_view(), name='index')
     application.get_url_decorator(pattern)
     mock_permissions_required.assert_called_once_with('is_staff', login_url=None)
Пример #34
0
# -*- coding: utf-8 -*-

from django.conf.urls import patterns, include, url
from django.views.generic import View


urlpatterns = patterns('',
    url(r'foo$', View.as_view(), name="foo"),
)
Пример #35
0
from django.conf.urls import patterns, url
from django.views.generic import View


urlpatterns = patterns(
    '',
    url(r'^simple/action/$', View.as_view(), name='simpleAction'),
)
Пример #36
0
from django.conf.urls import patterns, include, url
from django.views.generic import View

urlpatterns = patterns(
    '',
    url(r'^test_view/$', View.as_view(), name="main"),
)
Пример #37
0
from django.conf.urls import patterns, url
from django.views.generic import View

urlpatterns = patterns(
    '',
    url('', View.as_view()),
)
Пример #38
0
# -*- coding: utf-8
from __future__ import unicode_literals, absolute_import

from django.conf.urls import url
from django.views.generic import View

urlpatterns = [
    url(r'^simple/$', View.as_view(), name='simple'),
    url(r'^multiple/$', View.as_view(), name='multiple'),
    url(r'^simple/action/$', View.as_view(), name='simple-action'),
    url(r'^multiple/action/$', View.as_view(), name='multiple-action'),
    url(r'^other/action/$', View.as_view(), name='other-action'),
    url(r'^detailed/action/(?P<pk>[0-9]+)/$',
        View.as_view(),
        name='detailed-action')
]
Пример #39
0
 def static_url_pattern(cls):
     return url('^test$', View.as_view(), name='test-view')
 def test_success(self):
     assert is_api_view(IndexView.as_view())
     assert not is_api_view(View.as_view())
Пример #41
0
from django.conf.urls import patterns, url
from django.views.generic import View

urlpatterns = patterns('', 
        url(r'^(?P<pk>[\w\d]+)/module/$', View.as_view(), name='module')
)
Пример #42
0
from django.conf.urls import patterns, include, url
from django.views.generic import View

urlpatterns = patterns('',
    url(r'^test_view/$', View.as_view(), name="main"),
)