Redirect some views in read-only mode, hide links to these views

Review Request #8811 - Created March 12, 2017 and updated

Kanghee Park
Review Board
master
8810, 8657, 8648
8861, 8812, 8824, 8847
reviewboard, students

Read-only mode is a setting an admin can enable to prevent writes to
the database. This can be used when the site is under maintenence or
being upgraded. This commit adds a decorator that wraps
login_required. If no arguments are passed into the new
login_required it will behave the same as django's login_required.
If a boolean value for redirect_read_only is set to true, a decorator
that checks whether the user is in read-only mode and should redirect
will be returned.

"New Review Request" and "My Accounts" now redirect to a Read-Only page
and "Register" redirects to "Log-in". Buttons to these pages are
removed for users affected in read-only mode.

  • Check that accessing New Review Request and My Accounts redirects to
    503 page logged in as non-admin in read-only mode
  • Check that accessing Register when logged in or not redirects to the
    log-in page
  • Check that links to New Review/My Accounts/Register are removed for
    non-admins/unauthenticated users
  • Check that submitting Register form when in read-only mode does not
    do any writes
  • 0
  • 0
  • 12
  • 2
  • 14
Description From Last Updated
Review Bot
  1. Tool: Pyflakes
    Processed Files:
        reviewboard/reviews/views.py
        reviewboard/accounts/decorators.py
        reviewboard/accounts/views.py
        reviewboard/urls.py
    
    Ignored Files:
        reviewboard/templates/503.html
        reviewboard/templates/accounts/login.html
        reviewboard/templates/base/_nav_support_menu.html
    
    
    
    Tool: PEP8 Style Checker
    Processed Files:
        reviewboard/reviews/views.py
        reviewboard/accounts/decorators.py
        reviewboard/accounts/views.py
        reviewboard/urls.py
    
    Ignored Files:
        reviewboard/templates/503.html
        reviewboard/templates/accounts/login.html
        reviewboard/templates/base/_nav_support_menu.html
    
    
  2. reviewboard/accounts/decorators.py (Diff revision 1)
     
     
    Col: 80
     E501 line too long (82 > 79 characters)
    
  3. reviewboard/accounts/views.py (Diff revision 1)
     
     
     'django_login_required' imported but unused
    
  4. reviewboard/accounts/views.py (Diff revision 1)
     
     
    Col: 80
     E501 line too long (82 > 79 characters)
    
  5. reviewboard/urls.py (Diff revision 1)
     
     
    Col: 5
     E128 continuation line under-indented for visual indent
    
  6. reviewboard/urls.py (Diff revision 1)
     
     
    Col: 5
     E128 continuation line under-indented for visual indent
    
  7. 
      
Kanghee Park
Review Bot
  1. Tool: Pyflakes
    Processed Files:
        reviewboard/reviews/views.py
        reviewboard/accounts/decorators.py
        reviewboard/accounts/views.py
        reviewboard/urls.py
    
    Ignored Files:
        reviewboard/templates/503.html
        reviewboard/templates/accounts/login.html
        reviewboard/templates/base/_nav_support_menu.html
    
    
    
    Tool: PEP8 Style Checker
    Processed Files:
        reviewboard/reviews/views.py
        reviewboard/accounts/decorators.py
        reviewboard/accounts/views.py
        reviewboard/urls.py
    
    Ignored Files:
        reviewboard/templates/503.html
        reviewboard/templates/accounts/login.html
        reviewboard/templates/base/_nav_support_menu.html
    
    
  2. 
      
Barret Rennie
  1. 
      
  2. reviewboard/accounts/decorators.py (Diff revision 2)
     
     

    Needs Args and Returns. The return type here is callable.

  3. reviewboard/accounts/decorators.py (Diff revision 2)
     
     

    No blank line here.

  4. 
      
Kanghee Park
Review Bot
  1. Tool: Pyflakes
    Processed Files:
        reviewboard/reviews/views.py
        reviewboard/accounts/decorators.py
        reviewboard/accounts/views.py
        reviewboard/urls.py
    
    Ignored Files:
        reviewboard/templates/503.html
        reviewboard/templates/accounts/login.html
        reviewboard/templates/base/_nav_support_menu.html
    
    
    
    Tool: PEP8 Style Checker
    Processed Files:
        reviewboard/reviews/views.py
        reviewboard/accounts/decorators.py
        reviewboard/accounts/views.py
        reviewboard/urls.py
    
    Ignored Files:
        reviewboard/templates/503.html
        reviewboard/templates/accounts/login.html
        reviewboard/templates/base/_nav_support_menu.html
    
    
  2. 
      
Barret Rennie
  1. Just a few nits.

  2. Mind wrapping your description & testing done at 72 characters?

  3. reviewboard/accounts/decorators.py (Diff revision 3)
     
     

    No blank line here.

  4. reviewboard/accounts/decorators.py (Diff revision 3)
     
     

    No blank line here.

  5. reviewboard/accounts/views.py (Diff revision 3)
     
     
     
     

    We prefer to use a hanging indent here. Reformat as:

    if (auth_backends[0].supports_registration and
        siteconfig.get('auth_enable_registration') and
        not siteconfig.get('site_read_only')):
    

    Also, mind changing that other string to single quotes?

  6. reviewboard/accounts/views.py (Diff revision 3)
     
     

    The request arg is not used, so I don't think we need to have it here. It can live in *args.

  7. reviewboard/urls.py (Diff revision 3)
     
     

    Comments should end with a period.

  8. 
      
Kanghee Park
Review request changed

Description:

~  

Read-only mode is a setting an admin can enable to prevent writes to the database. This can be used when the site is under maintenence or being upgraded. This commit adds a decorator that wraps login_required. If no arguments are passed into the new login_required it will behave the same as django's login_required. If a boolean value for redirect_read_only is set to true, a decorator that checks whether the user is in read-only mode and redirect apprpriately will be returned.

  ~

Read-only mode is a setting an admin can enable to prevent writes to

  + the database. This can be used when the site is under maintenence or
  + being upgraded. This commit adds a decorator that wraps
  + login_required. If no arguments are passed into the new
  + login_required it will behave the same as django's login_required.
  + If a boolean value for redirect_read_only is set to true, a decorator
  + that checks whether the user is in read-only mode and should redirect
  + will be returned.

   
~  

"New Review Request" and "My Accounts" now redirect to a Read-Only page and "Register" redirects to "Log-in". Buttons to these pages are removed for users affected in read-only mode.

  ~

"New Review Request" and "My Accounts" now redirect to a Read-Only page

  + and "Register" redirects to "Log-in". Buttons to these pages are
  + removed for users affected in read-only mode.

Testing Done:

~  

Check that accessing New Review Request and My Accounts redirects to 503 page logged in as non-admin in read-only mode

~   Check that accessing Register when logged in or not redirects to the log-in page
~   Check that links to New Review/My Accounts/Register are removed for non-admins/unauthenticated users
~   Check that submitting Register form when in read-only mode does not do any writes

  ~
  • Check that accessing New Review Request and My Accounts redirects to
    503 page logged in as non-admin in read-only mode
  ~
  • Check that accessing Register when logged in or not redirects to the
    log-in page
  ~
  • Check that links to New Review/My Accounts/Register are removed for
    non-admins/unauthenticated users
  ~
  • Check that submitting Register form when in read-only mode does not
    do any writes

Diff:

Revision 4 (+92 -8)

Show changes

Checks run (1 failed, 1 succeeded, 1 failed with error)

JSHint passed.
PEP8 Style Checker internal error.
Pyflakes failed.

Pyflakes

Kanghee Park
Review request changed

Checks run (2 succeeded, 1 failed with error)

JSHint passed.
PEP8 Style Checker internal error.
Pyflakes passed.
Loading...