geonode.decorators

Attributes

logger

Functions

on_ogc_backend(backend_package)

Decorator for function specific to a certain ogc backend.

view_or_basicauth(view, request, test_func[, realm])

This is a helper function used by both 'logged_in_or_basicauth' and

view_decorator(fdec[, subclass])

Change a function decorator into a view decorator.

view_or_apiauth(view, request, test_func, *args, **kwargs)

This is a helper function used by both 'logged_in_or_basicauth' and

has_perm_or_basicauth(perm[, realm])

This is similar to the above decorator 'logged_in_or_basicauth'

superuser_only(function)

Restricts access to the view for superusers only.

check_keyword_write_perms(function)

superuser_protected(function)

Decorator that forces a view to be accessible by SUPERUSERS only.

whitelist_protected(function)

Decorator that forces a view to be accessible by WHITE_LISTED IPs only.

logged_in_or_basicauth([realm])

A simple decorator that requires a user to be logged in. If they are not

logged_in_or_apiauth()

superuser_or_apiauth()

dump_func_name(func)

Module Contents

geonode.decorators.logger[source]
geonode.decorators.on_ogc_backend(backend_package)[source]

Decorator for function specific to a certain ogc backend.

This decorator will wrap function so it only gets executed if the specified ogc backend is currently used. If not, the function will just be skipped.

Useful to decorate features/tests that only available for specific backend.

geonode.decorators.view_or_basicauth(view, request, test_func, realm='', *args, **kwargs)[source]

This is a helper function used by both ‘logged_in_or_basicauth’ and ‘has_perm_or_basicauth’ that does the nitty of determining if they are already logged in or if they have provided proper http-authorization and returning the view if all goes well, otherwise responding with a 401.

geonode.decorators.view_decorator(fdec, subclass=False)[source]

Change a function decorator into a view decorator.

https://github.com/lqc/django/tree/cbvdecoration_ticket14512

geonode.decorators.view_or_apiauth(view, request, test_func, *args, **kwargs)[source]

This is a helper function used by both ‘logged_in_or_basicauth’ and ‘has_perm_or_basicauth’ that does the nitty of determining if they are already logged in or if they have provided proper http-authorization and returning the view if all goes well, otherwise responding with a 401.

geonode.decorators.has_perm_or_basicauth(perm, realm='')[source]

This is similar to the above decorator ‘logged_in_or_basicauth’ except that it requires the logged in user to have a specific permission.

Use:

@logged_in_or_basicauth(‘asforums.view_forumcollection’) def your_view: …

geonode.decorators.superuser_only(function)[source]

Restricts access to the view for superusers only.

Usage:

To restrict a view to superusers, use the @superuser_only decorator as follows:

@superuser_only
def my_view(request):
    ...

Or use it in URL patterns:

urlpatterns = [
    path('foobar/<str:param>', superuser_only(my_view)),
]
geonode.decorators.check_keyword_write_perms(function)[source]
geonode.decorators.superuser_protected(function)[source]

Decorator that forces a view to be accessible by SUPERUSERS only.

geonode.decorators.whitelist_protected(function)[source]

Decorator that forces a view to be accessible by WHITE_LISTED IPs only.

geonode.decorators.logged_in_or_basicauth(realm='')[source]

A simple decorator that requires a user to be logged in. If they are not logged in the request is examined for a ‘authorization’ header.

If the header is present it is tested for basic authentication and the user is logged in with the provided credentials.

If the header is not present a http 401 is sent back to the requestor to provide credentials.

The purpose of this is that in several django projects I have needed several specific views that need to support basic authentication, yet the web site as a whole used django’s provided authentication.

The uses for this are for urls that are access programmatically such as by rss feed readers, yet the view requires a user to be logged in. Many rss readers support supplying the authentication credentials via http basic auth (and they do NOT support a redirect to a form where they post a username/password.)

Use is simple:

@logged_in_or_basicauth()
def your_view:
    ...

You can provide the name of the realm to ask for authentication within.

geonode.decorators.logged_in_or_apiauth()[source]
geonode.decorators.superuser_or_apiauth()[source]
geonode.decorators.dump_func_name(func)[source]