Add a decorator that makes a view require a feature

Review Request #9007 — Created June 9, 2017 and submitted

Information

Djblets
release-0.10.x

Reviewers

The @feature_required(f) decorator makes the decorated view require
the f feature to be enabled to be executed. Otherwise a backup view
will be called, which by default returns a 404 Not Found error. This
view may be customized by the caller to return any sort of response.

  • Tested this with an upcoming patch for RB.
  • Ran unit tests.
Description From Last Updated

This needs unit tests.

chipx86chipx86

W293 blank line contains whitespace

reviewbotreviewbot

W293 blank line contains whitespace

reviewbotreviewbot

Thinking we may want to allow for a little more flexibility in what's returned here. A 404 might be appropriate …

chipx86chipx86
Checks run (1 failed, 1 succeeded)
flake8 failed.
JSHint passed.

flake8

brennie
chipx86
  1. 
      
  2. Show all issues

    This needs unit tests.

  3. djblets/features/decorators.py (Diff revision 2)
     
     
    Show all issues

    Thinking we may want to allow for a little more flexibility in what's returned here. A 404 might be appropriate for a lot of things, but a 403 might be for others. It might also be really nice to allow some other thing to be returned (redirect, custom page with instructions on requesting access to the thing, etc.).

    How about letting feature_required take a not_enabled_view argument that defaults to lambda *args, **kwargs: HttpResponseNotFound()? Then callers could leave it at the default to get a 404, or could override the behavior to return whatever they want.

  4. 
      
brennie
brennie
david
  1. Ship It!
  2. 
      
brennie
Review request changed
Status:
Completed
Change Summary:
Pushed to release-0.10.x (e6511ad)