• 
      

    Custom Admin Emoji Panel (Djblets)

    Review Request #11878 — Created Nov. 20, 2021 and updated

    Information

    Djblets
    release-2.x

    Reviewers

    Adds a ListEditEmojiDictionaryField (inherited from Michelle Aubin's
    ListEditDictionaryField class), which takes in a dictionary of values and
    splits it into a tuple of (key, value1, value2, value3).

    EmojiFileInput class is a subclass of FileInput, which takes in a file
    upload from the user, and saves it into the context variable. In future
    implementations, the get_context() method can also be used to render image
    previews if the file uploaded is a valid image file.

    Unit testing: Unit test suites for ListEditDictionaryField and ListEditField
    Local testing: making sure the app runs property with print() statements.

    Summary ID Author
    ListEditDictionaryField Patch from Michelle Aubin.
    2feb2a1b838640fd4496e505f7877ea5ebafbf72 mxiuwang
    [WIP] Adding custom emojis in admin emoji dashboard.
    1f16add484e311fa95e175dc2310b48efaab08ba mxiuwang
    [WIP] rendering images.
    7cc3931eab59f1db877bba4fe4b27d34bf7fa562 mxiuwang
    [WIP] Render images.
    ad573006dac8d287f15765c2807432943beb0c94 mxiuwang
    Add docstring, code cleanup.
    551239428bb72dbfa77d8921948c04ab12c184c2 mxiuwang
    Add Djblets tests.
    89a570f427670d8ae3bb95aa04466fa3f95bbf8e mxiuwang
    Fix automatically-raised whitespace issues.
    96f4639e280373651b32fb61f8e9c54ebcdbf955 mxiuwang
    Define ListEditEmojiDictionaryField as its own class.
    8c4bd95ad19b9f9e923fec0b5b9ddedd738d74f8 mxiuwang
    Fix suggestions.
    fb858a1db8f16a916ea1351af00163b280ced4f4 mxiuwang
    Render emoji preview image.
    b0afa975bf77e71b0c3527ca4637bea1491f112a mxiuwang
    Fix flake8 suggestions.
    0930dd98450d3286095571053949b2be0a424357 mxiuwang
    Description From Last Updated

    Description needs to wrap with 80 chars I believe

    akim.ruslanovakim.ruslanov

    In testing done, mention what kind of new test was added

    akim.ruslanovakim.ruslanov

    The review request description and summary should also reflect what this commit does, not the work being done in Review …

    chipx86chipx86

    E231 missing whitespace after ','

    reviewbotreviewbot

    E261 at least two spaces before inline comment

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    W291 trailing whitespace

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E261 at least two spaces before inline comment

    reviewbotreviewbot

    E501 line too long (93 > 79 characters)

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    W291 trailing whitespace

    reviewbotreviewbot

    Col: 87 Missing semicolon.

    reviewbotreviewbot

    Col: 62 Missing semicolon.

    reviewbotreviewbot

    W293 blank line contains whitespace

    reviewbotreviewbot

    W293 blank line contains whitespace

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    W293 blank line contains whitespace

    reviewbotreviewbot

    W291 trailing whitespace

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    W291 trailing whitespace

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E261 at least two spaces before inline comment

    reviewbotreviewbot

    E501 line too long (95 > 79 characters)

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E501 line too long (123 > 79 characters)

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    W291 trailing whitespace

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    Col: 87 Missing semicolon.

    reviewbotreviewbot

    Col: 62 Missing semicolon.

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E261 at least two spaces before inline comment

    reviewbotreviewbot

    E501 line too long (95 > 79 characters)

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E501 line too long (123 > 79 characters)

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E131 continuation line unaligned for hanging indent

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    This belongs with the Review Board change, since it's really specific to Review Board's implementation. Djblets should be limited to …

    chipx86chipx86

    Col: 87 Missing semicolon.

    reviewbotreviewbot

    Col: 62 Missing semicolon.

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    W291 trailing whitespace

    reviewbotreviewbot

    E302 expected 2 blank lines, found 1

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    W292 no newline at end of file

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E261 at least two spaces before inline comment

    reviewbotreviewbot

    E501 line too long (95 > 79 characters)

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E501 line too long (123 > 79 characters)

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E131 continuation line unaligned for hanging indent

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    Col: 87 Missing semicolon.

    reviewbotreviewbot

    Col: 62 Missing semicolon.

    reviewbotreviewbot

    E302 expected 2 blank lines, found 1

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    W292 no newline at end of file

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E261 at least two spaces before inline comment

    reviewbotreviewbot

    E501 line too long (95 > 79 characters)

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E501 line too long (123 > 79 characters)

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E131 continuation line unaligned for hanging indent

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E302 expected 2 blank lines, found 1

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    W292 no newline at end of file

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E261 at least two spaces before inline comment

    reviewbotreviewbot

    E501 line too long (95 > 79 characters)

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E501 line too long (123 > 79 characters)

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E131 continuation line unaligned for hanging indent

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    W291 trailing whitespace

    reviewbotreviewbot

    E302 expected 2 blank lines, found 1

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    W292 no newline at end of file

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E261 at least two spaces before inline comment

    reviewbotreviewbot

    E501 line too long (95 > 79 characters)

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E501 line too long (123 > 79 characters)

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E131 continuation line unaligned for hanging indent

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    Col: 87 Missing semicolon.

    reviewbotreviewbot

    Col: 62 Missing semicolon.

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E502 the backslash is redundant between brackets

    reviewbotreviewbot

    E203 whitespace before ','

    reviewbotreviewbot

    E502 the backslash is redundant between brackets

    reviewbotreviewbot

    E127 continuation line over-indented for visual indent

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    E131 continuation line unaligned for hanging indent

    reviewbotreviewbot

    E502 the backslash is redundant between brackets

    reviewbotreviewbot

    E128 continuation line under-indented for visual indent

    reviewbotreviewbot

    E502 the backslash is redundant between brackets

    reviewbotreviewbot

    E126 continuation line over-indented for hanging indent

    reviewbotreviewbot

    E231 missing whitespace after ','

    reviewbotreviewbot

    F401 'django.core.files.storage.get_storage_class' imported but unused

    reviewbotreviewbot

    F401 'django.core.files.storage.DefaultStorage' imported but unused

    reviewbotreviewbot

    F401 'django.utils.html.format_html_join' imported but unused

    reviewbotreviewbot

    F401 'django.utils.html.format_html' imported but unused

    reviewbotreviewbot

    Col: 87 Missing semicolon.

    reviewbotreviewbot

    Col: 62 Missing semicolon.

    reviewbotreviewbot
    Checks run (2 failed)
    flake8 failed.
    JSHint failed.

    flake8

    JSHint

    mxwang
    mxwang
    Review request changed
    Summary:
    ListEditDictionaryField Patch from Michelle Aubin.
    Custom Admin Emoji Panel (Djblets)
    Description:
    ~  

    [WIP] ListEditDictionaryField Patch from Michelle Aubin.

      ~

    Adds a page to the admint panel which allows an admin to upload a custom emoji by uploading a name, shortcode, description, and image. These fields are editable whenever the user re-vists the page. The emoji data is loaded from, and saved into SiteConfiguration, while the image data is loaded from and saved to DefaultStorage.

      +
      +

      +
      +

      +
      +

    Further work that needs to be done:

      + * Enforcing mandatory fields that user must fill out before clicking "Save", so as to not raise an error.
      + * Adding labels to the form fields, and removing the extra "name" field at the very top of the form.
      + * Rendering a preview of the emoji when loading the page (through get_context() in EmojiFileUpload).

    Testing Done:
      +

    Unit testing

      + Local testing

    Commits:
    Summary ID Author
    ListEditDictionaryField Patch from Michelle Aubin.
    2feb2a1b838640fd4496e505f7877ea5ebafbf72 mxiuwang
    ListEditDictionaryField Patch from Michelle Aubin.
    2feb2a1b838640fd4496e505f7877ea5ebafbf72 mxiuwang
    [WIP] Adding custom emojis in admin emoji dashboard.
    1f16add484e311fa95e175dc2310b48efaab08ba mxiuwang
    [WIP] rendering images.
    7cc3931eab59f1db877bba4fe4b27d34bf7fa562 mxiuwang
    [WIP] Render images.
    ad573006dac8d287f15765c2807432943beb0c94 mxiuwang
    Add docstring, code cleanup.
    551239428bb72dbfa77d8921948c04ab12c184c2 mxiuwang
    Add Djblets tests.
    89a570f427670d8ae3bb95aa04466fa3f95bbf8e mxiuwang

    Checks run (2 failed)

    flake8 failed.
    JSHint failed.

    flake8

    JSHint

    akim.ruslanov
    1. 
        
    2. Show all issues

      Description needs to wrap with 80 chars I believe

    3. Show all issues

      In testing done, mention what kind of new test was added

    4. 
        
    mxwang
    Review request changed
    Description:
    ~  

    Adds a page to the admint panel which allows an admin to upload a custom emoji by uploading a name, shortcode, description, and image. These fields are editable whenever the user re-vists the page. The emoji data is loaded from, and saved into SiteConfiguration, while the image data is loaded from and saved to DefaultStorage.

      ~

    Adds a page to the admint panel which allows an admin to upload a custom emoji

      + by uploading a name, shortcode, description, and image. These fields are
      + editable whenever the user re-vists the page. The emoji data is loaded from,
      + and saved into SiteConfiguration, while the image data is loaded from and
      + saved to DefaultStorage.

       
       

       
       

       
       

    Further work that needs to be done:

    ~   * Enforcing mandatory fields that user must fill out before clicking "Save", so as to not raise an error.
    ~   * Adding labels to the form fields, and removing the extra "name" field at the very top of the form.
    ~   * Rendering a preview of the emoji when loading the page (through get_context() in EmojiFileUpload).

      ~ * Adding labels to the form fields, and removing the extra "name" field at the
      ~ very top of the form.
      ~ * Rendering a preview of the emoji when loading the page (through get_context()
      + in EmojiFileUpload).

    Commits:
    Summary ID Author
    ListEditDictionaryField Patch from Michelle Aubin.
    2feb2a1b838640fd4496e505f7877ea5ebafbf72 mxiuwang
    [WIP] Adding custom emojis in admin emoji dashboard.
    1f16add484e311fa95e175dc2310b48efaab08ba mxiuwang
    [WIP] rendering images.
    7cc3931eab59f1db877bba4fe4b27d34bf7fa562 mxiuwang
    [WIP] Render images.
    ad573006dac8d287f15765c2807432943beb0c94 mxiuwang
    Add docstring, code cleanup.
    551239428bb72dbfa77d8921948c04ab12c184c2 mxiuwang
    Add Djblets tests.
    89a570f427670d8ae3bb95aa04466fa3f95bbf8e mxiuwang
    ListEditDictionaryField Patch from Michelle Aubin.
    2feb2a1b838640fd4496e505f7877ea5ebafbf72 mxiuwang
    [WIP] Adding custom emojis in admin emoji dashboard.
    1f16add484e311fa95e175dc2310b48efaab08ba mxiuwang
    [WIP] rendering images.
    7cc3931eab59f1db877bba4fe4b27d34bf7fa562 mxiuwang
    [WIP] Render images.
    ad573006dac8d287f15765c2807432943beb0c94 mxiuwang
    Add docstring, code cleanup.
    551239428bb72dbfa77d8921948c04ab12c184c2 mxiuwang
    Add Djblets tests.
    89a570f427670d8ae3bb95aa04466fa3f95bbf8e mxiuwang
    Fix automatically-raised whitespace issues.
    96f4639e280373651b32fb61f8e9c54ebcdbf955 mxiuwang

    Checks run (2 failed)

    flake8 failed.
    JSHint failed.

    flake8

    JSHint

    mxwang
    mxwang
    chipx86
    1. This change incorporates a lot of things from Michelle Aubin's change. It makes it hard to know what parts should land from her change and what should land from yours. Can you instead rebase your work on top of hers, only post the range of commits for your work, and mark her review request as a dependency (Depends On field)?

    2. djblets/forms/widgets.py (Diff revision 3)
       
       
      Show all issues

      This belongs with the Review Board change, since it's really specific to Review Board's implementation. Djblets should be limited to things that are more generic and reusable.

    3. 
        
    chipx86
    1. 
        
    2. Show all issues

      The review request description and summary should also reflect what this commit does, not the work being done in Review Board. From the point of view of the Djblets code, Review Board "doesn't exist." That's the way to think about it. There's a separation.

    3. 
        
    mxwang
    Review request changed
    Description:
    ~  

    Adds a page to the admin panel which allows an admin to upload a custom emoji

    ~   by uploading a name, shortcode, description, and image. These fields are
    ~   editable whenever the user re-vists the page. The emoji data is loaded from,
      ~

    Adds a ListEditEmojiDictionaryField (inherited from Michelle Aubin's

      ~ ListEditDictionaryField class), which takes in a dictionary of values and
      ~ splits it into a tuple of (key, value1, value2, value3).

    -   and saved into SiteConfiguration, while the image data is loaded from and
    -   saved to DefaultStorage.

       
    ~  

      ~

    EmojiFileInput class is a subclass of ClearableFileInput, which takes in a

      + file upload from the user, and saves it into the context variable. In future
      + implementations, the get_context() method can also be used to render image
      + previews if the file uploaded is a valid image file.

       
       

       
       

    Further work that needs to be done:

    -   * Adding labels to the form fields, and removing the extra "name" field at the
    -   very top of the form.
        * Rendering a preview of the emoji when loading the page (through get_context()
    ~   in EmojiFileUpload).

      ~ in EmojiFileUpload). Right now, the uploaded image file is being passed as a
      + bytestream, but it needs to be passed as a file or image object in order
      + to be rendered.

    Commits:
    Summary ID Author
    ListEditDictionaryField Patch from Michelle Aubin.
    2feb2a1b838640fd4496e505f7877ea5ebafbf72 mxiuwang
    [WIP] Adding custom emojis in admin emoji dashboard.
    1f16add484e311fa95e175dc2310b48efaab08ba mxiuwang
    [WIP] rendering images.
    7cc3931eab59f1db877bba4fe4b27d34bf7fa562 mxiuwang
    [WIP] Render images.
    ad573006dac8d287f15765c2807432943beb0c94 mxiuwang
    Add docstring, code cleanup.
    551239428bb72dbfa77d8921948c04ab12c184c2 mxiuwang
    Add Djblets tests.
    89a570f427670d8ae3bb95aa04466fa3f95bbf8e mxiuwang
    Fix automatically-raised whitespace issues.
    96f4639e280373651b32fb61f8e9c54ebcdbf955 mxiuwang
    ListEditDictionaryField Patch from Michelle Aubin.
    2feb2a1b838640fd4496e505f7877ea5ebafbf72 mxiuwang
    [WIP] Adding custom emojis in admin emoji dashboard.
    1f16add484e311fa95e175dc2310b48efaab08ba mxiuwang
    [WIP] rendering images.
    7cc3931eab59f1db877bba4fe4b27d34bf7fa562 mxiuwang
    [WIP] Render images.
    ad573006dac8d287f15765c2807432943beb0c94 mxiuwang
    Add docstring, code cleanup.
    551239428bb72dbfa77d8921948c04ab12c184c2 mxiuwang
    Add Djblets tests.
    89a570f427670d8ae3bb95aa04466fa3f95bbf8e mxiuwang
    Fix automatically-raised whitespace issues.
    96f4639e280373651b32fb61f8e9c54ebcdbf955 mxiuwang
    Define ListEditEmojiDictionaryField as its own class.
    8c4bd95ad19b9f9e923fec0b5b9ddedd738d74f8 mxiuwang

    Checks run (2 failed)

    flake8 failed.
    JSHint failed.

    flake8

    JSHint

    mxwang
    Review request changed
    Commits:
    Summary ID Author
    ListEditDictionaryField Patch from Michelle Aubin.
    2feb2a1b838640fd4496e505f7877ea5ebafbf72 mxiuwang
    [WIP] Adding custom emojis in admin emoji dashboard.
    1f16add484e311fa95e175dc2310b48efaab08ba mxiuwang
    [WIP] rendering images.
    7cc3931eab59f1db877bba4fe4b27d34bf7fa562 mxiuwang
    [WIP] Render images.
    ad573006dac8d287f15765c2807432943beb0c94 mxiuwang
    Add docstring, code cleanup.
    551239428bb72dbfa77d8921948c04ab12c184c2 mxiuwang
    Add Djblets tests.
    89a570f427670d8ae3bb95aa04466fa3f95bbf8e mxiuwang
    Fix automatically-raised whitespace issues.
    96f4639e280373651b32fb61f8e9c54ebcdbf955 mxiuwang
    Define ListEditEmojiDictionaryField as its own class.
    8c4bd95ad19b9f9e923fec0b5b9ddedd738d74f8 mxiuwang
    [WIP] Adding custom emojis in admin emoji dashboard.
    1f16add484e311fa95e175dc2310b48efaab08ba mxiuwang
    [WIP] rendering images.
    7cc3931eab59f1db877bba4fe4b27d34bf7fa562 mxiuwang
    [WIP] Render images.
    ad573006dac8d287f15765c2807432943beb0c94 mxiuwang
    Add docstring, code cleanup.
    551239428bb72dbfa77d8921948c04ab12c184c2 mxiuwang
    Add Djblets tests.
    89a570f427670d8ae3bb95aa04466fa3f95bbf8e mxiuwang
    Fix automatically-raised whitespace issues.
    96f4639e280373651b32fb61f8e9c54ebcdbf955 mxiuwang
    Define ListEditEmojiDictionaryField as its own class.
    8c4bd95ad19b9f9e923fec0b5b9ddedd738d74f8 mxiuwang

    Checks run (1 failed, 1 succeeded)

    flake8 failed.
    JSHint passed.

    flake8

    mxwang
    Review request changed
    Commits:
    Summary ID Author
    [WIP] Adding custom emojis in admin emoji dashboard.
    1f16add484e311fa95e175dc2310b48efaab08ba mxiuwang
    [WIP] rendering images.
    7cc3931eab59f1db877bba4fe4b27d34bf7fa562 mxiuwang
    [WIP] Render images.
    ad573006dac8d287f15765c2807432943beb0c94 mxiuwang
    Add docstring, code cleanup.
    551239428bb72dbfa77d8921948c04ab12c184c2 mxiuwang
    Add Djblets tests.
    89a570f427670d8ae3bb95aa04466fa3f95bbf8e mxiuwang
    Fix automatically-raised whitespace issues.
    96f4639e280373651b32fb61f8e9c54ebcdbf955 mxiuwang
    Define ListEditEmojiDictionaryField as its own class.
    8c4bd95ad19b9f9e923fec0b5b9ddedd738d74f8 mxiuwang
    [WIP] Adding custom emojis in admin emoji dashboard.
    1f16add484e311fa95e175dc2310b48efaab08ba mxiuwang
    [WIP] rendering images.
    7cc3931eab59f1db877bba4fe4b27d34bf7fa562 mxiuwang
    [WIP] Render images.
    ad573006dac8d287f15765c2807432943beb0c94 mxiuwang
    Add docstring, code cleanup.
    551239428bb72dbfa77d8921948c04ab12c184c2 mxiuwang
    Add Djblets tests.
    89a570f427670d8ae3bb95aa04466fa3f95bbf8e mxiuwang
    Fix automatically-raised whitespace issues.
    96f4639e280373651b32fb61f8e9c54ebcdbf955 mxiuwang
    Define ListEditEmojiDictionaryField as its own class.
    8c4bd95ad19b9f9e923fec0b5b9ddedd738d74f8 mxiuwang
    Fix suggestions.
    fb858a1db8f16a916ea1351af00163b280ced4f4 mxiuwang

    Checks run (1 failed, 1 succeeded)

    flake8 failed.
    JSHint passed.

    flake8

    mxwang
    mxwang
    Review request changed
    Commits:
    Summary ID Author
    [WIP] Adding custom emojis in admin emoji dashboard.
    1f16add484e311fa95e175dc2310b48efaab08ba mxiuwang
    [WIP] rendering images.
    7cc3931eab59f1db877bba4fe4b27d34bf7fa562 mxiuwang
    [WIP] Render images.
    ad573006dac8d287f15765c2807432943beb0c94 mxiuwang
    Add docstring, code cleanup.
    551239428bb72dbfa77d8921948c04ab12c184c2 mxiuwang
    Add Djblets tests.
    89a570f427670d8ae3bb95aa04466fa3f95bbf8e mxiuwang
    Fix automatically-raised whitespace issues.
    96f4639e280373651b32fb61f8e9c54ebcdbf955 mxiuwang
    Define ListEditEmojiDictionaryField as its own class.
    8c4bd95ad19b9f9e923fec0b5b9ddedd738d74f8 mxiuwang
    Fix suggestions.
    fb858a1db8f16a916ea1351af00163b280ced4f4 mxiuwang
    ListEditDictionaryField Patch from Michelle Aubin.
    2feb2a1b838640fd4496e505f7877ea5ebafbf72 mxiuwang
    [WIP] Adding custom emojis in admin emoji dashboard.
    1f16add484e311fa95e175dc2310b48efaab08ba mxiuwang
    [WIP] rendering images.
    7cc3931eab59f1db877bba4fe4b27d34bf7fa562 mxiuwang
    [WIP] Render images.
    ad573006dac8d287f15765c2807432943beb0c94 mxiuwang
    Add docstring, code cleanup.
    551239428bb72dbfa77d8921948c04ab12c184c2 mxiuwang
    Add Djblets tests.
    89a570f427670d8ae3bb95aa04466fa3f95bbf8e mxiuwang
    Fix automatically-raised whitespace issues.
    96f4639e280373651b32fb61f8e9c54ebcdbf955 mxiuwang
    Define ListEditEmojiDictionaryField as its own class.
    8c4bd95ad19b9f9e923fec0b5b9ddedd738d74f8 mxiuwang
    Fix suggestions.
    fb858a1db8f16a916ea1351af00163b280ced4f4 mxiuwang
    Render emoji preview image.
    b0afa975bf77e71b0c3527ca4637bea1491f112a mxiuwang

    Checks run (2 failed)

    flake8 failed.
    JSHint failed.

    flake8

    JSHint

    mxwang
    mxwang
    Review request changed
    Commits:
    Summary ID Author
    ListEditDictionaryField Patch from Michelle Aubin.
    2feb2a1b838640fd4496e505f7877ea5ebafbf72 mxiuwang
    [WIP] Adding custom emojis in admin emoji dashboard.
    1f16add484e311fa95e175dc2310b48efaab08ba mxiuwang
    [WIP] rendering images.
    7cc3931eab59f1db877bba4fe4b27d34bf7fa562 mxiuwang
    [WIP] Render images.
    ad573006dac8d287f15765c2807432943beb0c94 mxiuwang
    Add docstring, code cleanup.
    551239428bb72dbfa77d8921948c04ab12c184c2 mxiuwang
    Add Djblets tests.
    89a570f427670d8ae3bb95aa04466fa3f95bbf8e mxiuwang
    Fix automatically-raised whitespace issues.
    96f4639e280373651b32fb61f8e9c54ebcdbf955 mxiuwang
    Define ListEditEmojiDictionaryField as its own class.
    8c4bd95ad19b9f9e923fec0b5b9ddedd738d74f8 mxiuwang
    Fix suggestions.
    fb858a1db8f16a916ea1351af00163b280ced4f4 mxiuwang
    Render emoji preview image.
    b0afa975bf77e71b0c3527ca4637bea1491f112a mxiuwang
    ListEditDictionaryField Patch from Michelle Aubin.
    2feb2a1b838640fd4496e505f7877ea5ebafbf72 mxiuwang
    [WIP] Adding custom emojis in admin emoji dashboard.
    1f16add484e311fa95e175dc2310b48efaab08ba mxiuwang
    [WIP] rendering images.
    7cc3931eab59f1db877bba4fe4b27d34bf7fa562 mxiuwang
    [WIP] Render images.
    ad573006dac8d287f15765c2807432943beb0c94 mxiuwang
    Add docstring, code cleanup.
    551239428bb72dbfa77d8921948c04ab12c184c2 mxiuwang
    Add Djblets tests.
    89a570f427670d8ae3bb95aa04466fa3f95bbf8e mxiuwang
    Fix automatically-raised whitespace issues.
    96f4639e280373651b32fb61f8e9c54ebcdbf955 mxiuwang
    Define ListEditEmojiDictionaryField as its own class.
    8c4bd95ad19b9f9e923fec0b5b9ddedd738d74f8 mxiuwang
    Fix suggestions.
    fb858a1db8f16a916ea1351af00163b280ced4f4 mxiuwang
    Render emoji preview image.
    b0afa975bf77e71b0c3527ca4637bea1491f112a mxiuwang
    Fix flake8 suggestions.
    0930dd98450d3286095571053949b2be0a424357 mxiuwang

    Checks run (2 failed)

    flake8 failed.
    JSHint failed.

    flake8

    JSHint