• 
      

    [OAuth2Provider] Append OAuth2 token management page to API Token management for account preference

    Review Request #7941 — Created Feb. 3, 2016 and discarded

    Information

    Review Board
    master

    Reviewers

    User need a page to manage list of all OAuth2 tokens that have been authorized.
    The OAuth2 managment is added as an extension to the current API token management page
    However, it stay as a separete dialog box to be clear

    Manualy tested on browser


    Description From Last Updated

    "Return", not "Get". This also needs to be in the proper doc format, providing a Returns: section. See https://www.reviewboard.org/docs/codebase/dev/docs/writing-codebase-docs/#standard-documentation-format

    chipx86chipx86

    Most of this can be combined into a single statement without losing readability. Given my suggestion below, I'd say keep …

    chipx86chipx86

    Fetching the application relation for each token will result in a lot of queries. We want to fetch them in …

    chipx86chipx86

    Can you move these (and GroupsForm) so that they're in alphabetical order? By the way, I keep running across code …

    chipx86chipx86

    Space before { Same below.

    chipx86chipx86

    These rules are all the same. You can combine them. (Is the first one meant to do that, or meant …

    chipx86chipx86

    2 space indentation.

    chipx86chipx86

    You'll need a "Model Attributes:" section. See https://www.reviewboard.org/docs/codebase/dev/docs/writing-codebase-docs/#documenting-models (Note that other models don't have this yet. We're working on standardizing …

    chipx86chipx86

    Trailing commas in JavaScript will break some browsers.

    chipx86chipx86

    We don't want to hard-code URLs in JavaScript, so the Python side must be responsible for passing in the URLs …

    chipx86chipx86

    This should go first, and should do .apply(this, arguments) instead of .call(this).

    chipx86chipx86

    No trailing comma.

    chipx86chipx86

    No trailing comma.

    chipx86chipx86

    No trailing comma.

    chipx86chipx86

    Missing a period.

    chipx86chipx86

    No trailing comma.

    chipx86chipx86

    No trailing comma.

    chipx86chipx86

    We shouldn't be inserting buttons here. Instead, we should register actions. That way, the UI is consistent, and we don't …

    chipx86chipx86

    No trailing comma.

    chipx86chipx86

    The second line here should be removed.

    chipx86chipx86

    Blank line between these.

    chipx86chipx86

    Space after if. We can't check the text of the button, because we need to localize text. We need to …

    chipx86chipx86

    Each user-visible string needs to be localized by doing: gettext('Show scopes')

    chipx86chipx86

    We should only query these once.

    chipx86chipx86

    This should be called template, and should use _.template.

    chipx86chipx86

    No trailing comma.

    chipx86chipx86

    Needs a "Returns:" section.

    chipx86chipx86

    Blank line should go after the load, not before.

    chipx86chipx86

    1 space indentation for HTML.

    chipx86chipx86

    In some places, we say "OAuth2." In others, "OAuth 2." We'll need to be sure we're consistent everywhere. (I prefer …

    chipx86chipx86

    Similar comments to my other change, in terms of wording, and that this doesn't return a list. Also, missing a …

    chipx86chipx86

    I mention this in a previous review, but we use 2 space indentation in .less files.

    chipx86chipx86

    "string", lowercase.

    chipx86chipx86

    Blank line between these. Missing periods.

    chipx86chipx86

    "Initialize." Same comment as this chagne's parent's review about "Returns" vs "Return", "Initializes" vs "Initialize", etc. Only for functions/methods, though. …

    chipx86chipx86

    "object", lowercase. Same below.

    chipx86chipx86

    "Scopes" needs to be localized.

    chipx86chipx86

    Same comments as my previous review. Strings wrapped in gettext() cannot wrap.

    chipx86chipx86

    render functions must return this, for chaining. This should also be documented.

    chipx86chipx86

    Two blank lines between these.

    chipx86chipx86

    Needs docs. So do the functions.

    chipx86chipx86

    I don't think OAuth2 tokens have a policy concept, do they? Maybe I'll find this out in one of the …

    chipx86chipx86

    Missing trailing comma.

    brenniebrennie

    object, not dict.

    brenniebrennie

    This should be isExpired. JS properties all use camelCase.

    brenniebrennie

    /**

    brenniebrennie

    /** * Return API URL to access the resource. * * Extended description here. * * Returns: * string: ... …

    brenniebrennie
    reviewbot
    1. Tool: Pyflakes
      Processed Files:
          reviewboard/oauth2/urls.py
          reviewboard/accounts/pages.py
          reviewboard/accounts/forms/pages.py
          reviewboard/staticbundles.py
      
      Ignored Files:
          reviewboard/templates/oauth2_provider/authorized-token-delete.html
          reviewboard/static/rb/js/accountPrefsPage/views/oauth2TokensView.js
          reviewboard/static/rb/css/pages/my-account.less
      
      
      
      Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/oauth2/urls.py
          reviewboard/accounts/pages.py
          reviewboard/accounts/forms/pages.py
          reviewboard/staticbundles.py
      
      Ignored Files:
          reviewboard/templates/oauth2_provider/authorized-token-delete.html
          reviewboard/static/rb/js/accountPrefsPage/views/oauth2TokensView.js
          reviewboard/static/rb/css/pages/my-account.less
      
      
    2. 
        
    LE
    chipx86
    1. 
        
    2. reviewboard/accounts/forms/pages.py (Diff revision 1)
       
       
      Show all issues

      "Return", not "Get".

      This also needs to be in the proper doc format, providing a Returns: section. See https://www.reviewboard.org/docs/codebase/dev/docs/writing-codebase-docs/#standard-documentation-format

    3. reviewboard/accounts/forms/pages.py (Diff revision 1)
       
       
       
       
       
       
       
       
       
       
      Show all issues

      Most of this can be combined into a single statement without losing readability. Given my suggestion below, I'd say keep the query separate, but merge the serialized bits.

    4. reviewboard/accounts/forms/pages.py (Diff revision 1)
       
       
       
      Show all issues

      Fetching the application relation for each token will result in a lot of queries. We want to fetch them in the initial query above, so you'll want to do:

      oauth2_tokens = self.user.accesstoken_set.select_related('application')
      
    5. reviewboard/accounts/pages.py (Diff revision 1)
       
       
       
       
       
      Show all issues

      Can you move these (and GroupsForm) so that they're in alphabetical order?

      By the way, I keep running across code that has come from another of your changes, but I'm having trouble tracking which review request it comes from. For instance, OAuth2AppListForm. Can you make sure that every review request has the Depends On field set appropriately?

    6. Show all issues

      Space before {

      Same below.

    7. reviewboard/static/rb/css/pages/my-account.less (Diff revision 1)
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
      Show all issues

      These rules are all the same. You can combine them.

      (Is the first one meant to do that, or meant to apply only to elements with both of those classes?)

    8. Show all issues

      2 space indentation.

    9. Show all issues

      You'll need a "Model Attributes:" section. See https://www.reviewboard.org/docs/codebase/dev/docs/writing-codebase-docs/#documenting-models

      (Note that other models don't have this yet. We're working on standardizing on this format.)

    10. Show all issues

      Trailing commas in JavaScript will break some browsers.

    11. Show all issues

      We don't want to hard-code URLs in JavaScript, so the Python side must be responsible for passing in the URLs that are needed.

    12. Show all issues

      This should go first, and should do .apply(this, arguments) instead of .call(this).

    13. Show all issues

      No trailing comma.

    14. Show all issues

      No trailing comma.

    15. Show all issues

      No trailing comma.

    16. Show all issues

      Missing a period.

    17. Show all issues

      No trailing comma.

    18. Show all issues

      No trailing comma.

    19. reviewboard/static/rb/js/accountPrefsPage/views/oauth2TokensView.js (Diff revision 1)
       
       
       
       
       
       
       
       
       
       
       
       
      Show all issues

      We shouldn't be inserting buttons here. Instead, we should register actions. That way, the UI is consistent, and we don't have to inject custom HTML here.

      1. I remove the toogle button for now

    20. Show all issues

      No trailing comma.

    21. Show all issues

      The second line here should be removed.

    22. Show all issues

      Blank line between these.

    23. Show all issues

      Space after if.

      We can't check the text of the button, because we need to localize text. We need to track the state instead.

    24. Show all issues

      Each user-visible string needs to be localized by doing: gettext('Show scopes')

      1. I removed the scope toogle button for now

    25. Show all issues

      We should only query these once.

      1. I removed the scope toogle button for now

    26. Show all issues

      This should be called template, and should use _.template.

    27. Show all issues

      No trailing comma.

    28. Show all issues

      Needs a "Returns:" section.

    29. Show all issues

      Blank line should go after the load, not before.

    30. Show all issues

      1 space indentation for HTML.

    31. 
        
    LE
    reviewbot
    1. Tool: Pyflakes
      Processed Files:
          reviewboard/accounts/pages.py
          reviewboard/accounts/forms/pages.py
          reviewboard/staticbundles.py
      
      Ignored Files:
          reviewboard/static/rb/js/accountPrefsPage/views/oauth2TokensView.js
          reviewboard/static/rb/js/resources/models/oauth2TokenModel.js
          reviewboard/static/rb/css/pages/my-account.less
      
      
      
      Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/accounts/pages.py
          reviewboard/accounts/forms/pages.py
          reviewboard/staticbundles.py
      
      Ignored Files:
          reviewboard/static/rb/js/accountPrefsPage/views/oauth2TokensView.js
          reviewboard/static/rb/js/resources/models/oauth2TokenModel.js
          reviewboard/static/rb/css/pages/my-account.less
      
      
    2. 
        
    LE
    reviewbot
    1. Tool: Pyflakes
      Processed Files:
          reviewboard/accounts/pages.py
          reviewboard/accounts/forms/pages.py
          reviewboard/staticbundles.py
      
      Ignored Files:
          reviewboard/static/rb/js/accountPrefsPage/views/oauth2TokensView.js
          reviewboard/static/rb/js/resources/models/oauth2TokenModel.js
          reviewboard/static/rb/css/pages/my-account.less
      
      
      
      Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/accounts/pages.py
          reviewboard/accounts/forms/pages.py
          reviewboard/staticbundles.py
      
      Ignored Files:
          reviewboard/static/rb/js/accountPrefsPage/views/oauth2TokensView.js
          reviewboard/static/rb/js/resources/models/oauth2TokenModel.js
          reviewboard/static/rb/css/pages/my-account.less
      
      
    2. 
        
    chipx86
    1. 
        
    2. reviewboard/accounts/forms/pages.py (Diff revision 3)
       
       
      Show all issues

      In some places, we say "OAuth2." In others, "OAuth 2." We'll need to be sure we're consistent everywhere. (I prefer "OAuth2".)

      1. Ops, "OAuth 2" cases must be mistakes. I like "OAuth2" and use "OAuth2" everywhere else.

    3. reviewboard/accounts/forms/pages.py (Diff revision 3)
       
       
       
       
       
       
      Show all issues

      Similar comments to my other change, in terms of wording, and that this doesn't return a list.

      Also, missing a period. Same with ones below.

    4. reviewboard/static/rb/css/pages/my-account.less (Diff revision 3)
       
       
       
       
       
      Show all issues

      I mention this in a previous review, but we use 2 space indentation in .less files.

    5. Show all issues

      "string", lowercase.

    6. Show all issues

      Blank line between these.

      Missing periods.

    7. Show all issues

      "Initialize."

      Same comment as this chagne's parent's review about "Returns" vs "Return", "Initializes" vs "Initialize", etc.

      Only for functions/methods, though. Not classes.

    8. Show all issues

      "object", lowercase.

      Same below.

    9. Show all issues

      "Scopes" needs to be localized.

    10. Show all issues

      Same comments as my previous review. Strings wrapped in gettext() cannot wrap.

    11. Show all issues

      render functions must return this, for chaining. This should also be documented.

    12. Show all issues

      Two blank lines between these.

    13. Show all issues

      Needs docs.

      So do the functions.

    14. Show all issues

      I don't think OAuth2 tokens have a policy concept, do they? Maybe I'll find this out in one of the other changes. The API tokens have policy, because that's a concept we created.

      1. Copy and paste from API token. Removed

    15. 
        
    LE
    reviewbot
    1. Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/accounts/pages.py
          reviewboard/accounts/forms/pages.py
          reviewboard/staticbundles.py
      
      Ignored Files:
          reviewboard/static/rb/js/accountPrefsPage/views/oauth2TokensView.js
          reviewboard/static/rb/js/resources/models/oauth2TokenModel.js
          reviewboard/static/rb/css/pages/my-account.less
      
      
      
      Tool: Pyflakes
      Processed Files:
          reviewboard/accounts/pages.py
          reviewboard/accounts/forms/pages.py
          reviewboard/staticbundles.py
      
      Ignored Files:
          reviewboard/static/rb/js/accountPrefsPage/views/oauth2TokensView.js
          reviewboard/static/rb/js/resources/models/oauth2TokenModel.js
          reviewboard/static/rb/css/pages/my-account.less
      
      
    2. 
        
    brennie
    1. 
        
    2. reviewboard/accounts/forms/pages.py (Diff revision 4)
       
       
      Show all issues

      Missing trailing comma.

    3. Show all issues

      object, not dict.

    4. Show all issues

      This should be isExpired. JS properties all use camelCase.

    5. Show all issues

      /**

    6. Show all issues

      /**
       * Return API URL to access the resource.
       *
       * Extended description here.
       *
       * Returns:
       *     string: ...
       */
      

      Same for other doc comments

    7. 
        
    brennie
    Review request changed
    Status:
    Discarded