• 
      

    Fix rendering new widgets in admin dashboard

    Review Request #10165 — Created Sept. 22, 2018 and submitted — Latest diff uploaded

    Information

    Review Board
    master
    61483f7...

    Reviewers

    The dashboard on /admin/ crashed when a brand new widget was added
    to the page. The expected output is that the new widget, whether
    it's a primary or secondary widget, should appear on the dashboard
    with the other widgets.

    This was because there was a check to find the new widgets position,
    before it actually had been given one. This raised a KeyError,
    which crashed the page.

    I added some .get() checks, so that if the widget position is not in
    the dictionary, a None value is returned.

    I also refactored code on how new widgets are rendered in the
    dashboard, so that the dashboard() function in admin/views.py
    is much easier to read.

    I ran all tests using
    ./tests/runtests.py and no errors resulted.

    I also used the JS-tests on /js-tests/, and there were no issues.

    I created a Unit Test class named WidgetTests, that can be run
    with ./tests/runtests.py reviewboard.admin.tests:WidgetTests.
    This test checks that adding a new primary widget and a new secondary
    widget on the dashboard does not raise a KeyError, and gives the two
    widgets a position.